; 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.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::map.361" = type { %"class.std::_Rb_tree.362" }
%"class.std::_Rb_tree.362" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::vector<const Assimp::FBX::AnimationCurveNode *>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::vector<const Assimp::FBX::AnimationCurveNode *>>>, 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>, std::vector<const Assimp::FBX::AnimationCurveNode *>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::vector<const Assimp::FBX::AnimationCurveNode *>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.366" = type { %"class.std::_Rb_tree.367" }
%"class.std::_Rb_tree.367" = type { %"struct.std::_Rb_tree<const Assimp::FBX::AnimationCurveNode *, std::pair<const Assimp::FBX::AnimationCurveNode *const, const Assimp::FBX::AnimationLayer *>, std::_Select1st<std::pair<const Assimp::FBX::AnimationCurveNode *const, const Assimp::FBX::AnimationLayer *>>, std::less<const Assimp::FBX::AnimationCurveNode *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const Assimp::FBX::AnimationCurveNode *, std::pair<const Assimp::FBX::AnimationCurveNode *const, const Assimp::FBX::AnimationLayer *>, std::_Select1st<std::pair<const Assimp::FBX::AnimationCurveNode *const, const Assimp::FBX::AnimationLayer *>>, std::less<const Assimp::FBX::AnimationCurveNode *>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.372" = type { %"class.std::_Rb_tree.373" }
%"class.std::_Rb_tree.373" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::map<long, morphKeyData *> *>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::map<long, morphKeyData *> *>>, 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>, std::map<long, morphKeyData *> *>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::map<long, morphKeyData *> *>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.__gnu_cxx::__normal_iterator.377" = type { ptr }
%"class.std::vector.378" = type { %"struct.std::_Vector_base.379" }
%"struct.std::_Vector_base.379" = type { %"struct.std::_Vector_base<const Assimp::FBX::AnimationCurveNode *, std::allocator<const Assimp::FBX::AnimationCurveNode *>>::_Vector_impl" }
%"struct.std::_Vector_base<const Assimp::FBX::AnimationCurveNode *, std::allocator<const Assimp::FBX::AnimationCurveNode *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const Assimp::FBX::AnimationCurveNode *, std::allocator<const Assimp::FBX::AnimationCurveNode *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const Assimp::FBX::AnimationCurveNode *, std::allocator<const Assimp::FBX::AnimationCurveNode *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.383" = type { ptr }
%"class.std::vector.389" = type { %"struct.std::_Vector_base.390" }
%"struct.std::_Vector_base.390" = type { %"struct.std::_Vector_base<aiNodeAnim *, std::allocator<aiNodeAnim *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiNodeAnim *, std::allocator<aiNodeAnim *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiNodeAnim *, std::allocator<aiNodeAnim *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiNodeAnim *, std::allocator<aiNodeAnim *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::_Rb_tree_iterator.394" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.397" = type { ptr }
%"struct.Assimp::FBX::Util::delete_fun.398" = type { i8 }
%"struct.std::_Rb_tree_iterator.399" = type { ptr }
%"struct.std::_Rb_tree_iterator.408" = 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" }
%"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.aiAnimation = type { %struct.aiString, double, double, i32, ptr, i32, ptr, i32, ptr }
%struct.aiString = type { i32, [1024 x i8] }
%"struct.std::pair.395" = type { %"class.std::__cxx11::basic_string", %"class.std::vector.378" }
%"struct.std::pair.400" = type { %"class.std::__cxx11::basic_string", ptr }
%struct.aiMeshMorphAnim = type { %struct.aiString, i32, ptr }
%struct.aiMeshMorphKey = type <{ double, ptr, ptr, i32, [4 x i8] }>
%"struct.std::pair.409" = type { i64, ptr }
%struct.morphKeyData = type { %"class.std::vector.190", %"class.std::vector.264" }
%"class.std::vector.190" = type { %"struct.std::_Vector_base.191" }
%"struct.std::_Vector_base.191" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.264" = type { %"struct.std::_Vector_base.265" }
%"struct.std::_Vector_base.265" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.aiNodeAnim = type { %struct.aiString, i32, ptr, i32, ptr, i32, ptr, i32, i32 }
%struct.aiVectorKey = type { double, %class.aiVector3t, i32 }
%class.aiVector3t = type { float, float, float }
%struct.aiQuatKey = type <{ double, %class.aiQuaterniont, i32, [4 x i8] }>
%class.aiQuaterniont = type { float, float, float, float }

@_ZTIN6Assimp3FBX6ObjectE = external dso_local constant { ptr, ptr }, align 8
@_ZTIN6Assimp3FBX5ModelE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.5 = external hidden unnamed_addr constant [119 x i8], align 1
@_ZTISt9exception = external constant ptr
@.str.191 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.192 = external hidden unnamed_addr constant [12 x i8], align 1
@__const._ZN6Assimp3FBX12FBXConverter21ConvertAnimationStackERKNS0_14AnimationStackE.prop_whitelist = external hidden unnamed_addr constant [4 x ptr], align 16
@.str.194 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.195 = external hidden unnamed_addr constant [5 x i8], align 1
@_ZTIN6Assimp3FBX17BlendShapeChannelE = external constant ptr
@.str.196 = external hidden unnamed_addr constant [44 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: nounwind willreturn memory(read)
declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) #2

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

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

declare ptr @__cxa_begin_catch(ptr)

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #4

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #5

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #6 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)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter11FixNodeNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(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)) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Assimp3FBX6Object4NameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(56)) #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #6 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) #8

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #10

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.uadd.with.overflow.i64(i64, i64) #10

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #11

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

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

declare void @__cxa_rethrow()

declare void @__cxa_end_catch()

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp3FBX12FBXConverter21ConvertAnimationStackERKNS0_14AnimationStackE(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(96) %1) #7 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::map.361", align 8
  %16 = alloca %"class.std::map.366", align 8
  %17 = alloca [4 x ptr], align 16
  %18 = alloca %"class.std::map.372", align 8
  %19 = alloca ptr, align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.377", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.377", align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca %"class.std::vector.378", align 8
  %25 = alloca ptr, align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca ptr, align 8
  %33 = alloca %"class.std::vector.389", align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i8, align 1
  %39 = alloca ptr, align 8
  %40 = alloca %"struct.std::_Rb_tree_iterator.394", align 8
  %41 = alloca %"struct.std::_Rb_tree_iterator.394", align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.397", align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator.397", align 8
  %46 = alloca %"struct.Assimp::FBX::Util::delete_fun.398", align 1
  %47 = alloca %"struct.Assimp::FBX::Util::delete_fun.398", align 1
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.397", align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.397", align 8
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca ptr, align 8
  %53 = alloca %"struct.std::_Rb_tree_iterator.399", align 8
  %54 = alloca %"struct.std::_Rb_tree_iterator.399", align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca i32, align 4
  %58 = alloca ptr, align 8
  %59 = alloca i32, align 4
  %60 = alloca ptr, align 8
  %61 = alloca %"struct.std::_Rb_tree_iterator.408", align 8
  %62 = alloca %"struct.std::_Rb_tree_iterator.408", align 8
  %63 = alloca ptr, align 8
  %64 = alloca ptr, align 8
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca i32, align 4
  %70 = alloca ptr, align 8
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca ptr, align 8
  %76 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %77 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #13
  %78 = load ptr, ptr %4, align 8, !tbaa !5
  %79 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX14AnimationStack6LayersEv(ptr noundef nonnull align 8 dereferenceable(96) %78)
  store ptr %79, ptr %5, align 8, !tbaa !5
  %80 = load ptr, ptr %5, align 8, !tbaa !5
  %81 = call noundef zeroext i1 @_ZNKSt6vectorIPKN6Assimp3FBX14AnimationLayerESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %80) #13
  br i1 %81, label %82, label %83

82:                                               ; preds = %2
  store i32 1, ptr %6, align 4
  br label %768

83:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #13
  %84 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 1096) #14
  call void @_ZN11aiAnimationC2Ev(ptr noundef nonnull align 8 dereferenceable(1096) %84) #13
  store ptr %84, ptr %7, align 8, !tbaa !5
  %85 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %77, i32 0, i32 4
  call void @_ZNSt6vectorIP11aiAnimationSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %85, ptr noundef nonnull align 8 dereferenceable(8) %7)
  call void @llvm.lifetime.start.p0(i64 32, ptr %8) #13
  %86 = load ptr, ptr %4, align 8, !tbaa !5
  %87 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Assimp3FBX6Object4NameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(56) %86)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %87)
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #13
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0, i64 noundef 16)
          to label %88 unwind label %94

88:                                               ; preds = %83
  %89 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef @.str.191)
          to label %90 unwind label %98

90:                                               ; preds = %88
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #13
  br i1 %89, label %91, label %107

91:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #13
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 16, i64 noundef -1)
          to label %92 unwind label %103

92:                                               ; preds = %91
  %93 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %12) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #13
  br label %128

94:                                               ; preds = %83
  %95 = landingpad { ptr, i32 }
          cleanup
  %96 = extractvalue { ptr, i32 } %95, 0
  store ptr %96, ptr %10, align 8
  %97 = extractvalue { ptr, i32 } %95, 1
  store i32 %97, ptr %11, align 4
  br label %102

98:                                               ; preds = %88
  %99 = landingpad { ptr, i32 }
          cleanup
  %100 = extractvalue { ptr, i32 } %99, 0
  store ptr %100, ptr %10, align 8
  %101 = extractvalue { ptr, i32 } %99, 1
  store i32 %101, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #13
  br label %102

102:                                              ; preds = %98, %94
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #13
  br label %775

103:                                              ; preds = %91
  %104 = landingpad { ptr, i32 }
          cleanup
  %105 = extractvalue { ptr, i32 } %104, 0
  store ptr %105, ptr %10, align 8
  %106 = extractvalue { ptr, i32 } %104, 1
  store i32 %106, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #13
  br label %775

107:                                              ; preds = %90
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #13
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0, i64 noundef 11)
          to label %108 unwind label %114

108:                                              ; preds = %107
  %109 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef @.str.192)
          to label %110 unwind label %118

110:                                              ; preds = %108
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #13
  br i1 %109, label %111, label %127

111:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #13
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 11, i64 noundef -1)
          to label %112 unwind label %123

112:                                              ; preds = %111
  %113 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %14) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #13
  br label %127

114:                                              ; preds = %107
  %115 = landingpad { ptr, i32 }
          cleanup
  %116 = extractvalue { ptr, i32 } %115, 0
  store ptr %116, ptr %10, align 8
  %117 = extractvalue { ptr, i32 } %115, 1
  store i32 %117, ptr %11, align 4
  br label %122

118:                                              ; preds = %108
  %119 = landingpad { ptr, i32 }
          cleanup
  %120 = extractvalue { ptr, i32 } %119, 0
  store ptr %120, ptr %10, align 8
  %121 = extractvalue { ptr, i32 } %119, 1
  store i32 %121, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #13
  br label %122

122:                                              ; preds = %118, %114
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #13
  br label %775

123:                                              ; preds = %111
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %10, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #13
  br label %775

127:                                              ; preds = %112, %110
  br label %128

128:                                              ; preds = %127, %92
  %129 = load ptr, ptr %7, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.aiAnimation, ptr %129, i32 0, i32 0
  invoke void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %130, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %131 unwind label %142

131:                                              ; preds = %128
  call void @llvm.lifetime.start.p0(i64 48, ptr %15) #13
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISB_EESt4lessIS5_ESaISt4pairIKS5_SD_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %15) #13
  call void @llvm.lifetime.start.p0(i64 48, ptr %16) #13
  call void @_ZNSt3mapIPKN6Assimp3FBX18AnimationCurveNodeEPKNS1_14AnimationLayerESt4lessIS4_ESaISt4pairIKS4_S7_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %17, ptr align 16 @__const._ZN6Assimp3FBX12FBXConverter21ConvertAnimationStackERKNS0_14AnimationStackE.prop_whitelist, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 48, ptr %18) #13
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS_IlP12morphKeyDataSt4lessIlESaISt4pairIKlS7_EEES8_IS5_ESaISA_IKS5_SF_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #13
  %132 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %132, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #13
  %133 = load ptr, ptr %19, align 8, !tbaa !5
  %134 = call ptr @_ZNKSt6vectorIPKN6Assimp3FBX14AnimationLayerESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %133) #13
  %135 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.377", ptr %20, i32 0, i32 0
  store ptr %134, ptr %135, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #13
  %136 = load ptr, ptr %19, align 8, !tbaa !5
  %137 = call ptr @_ZNKSt6vectorIPKN6Assimp3FBX14AnimationLayerESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %136) #13
  %138 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.377", ptr %21, i32 0, i32 0
  store ptr %137, ptr %138, align 8
  br label %139

139:                                              ; preds = %257, %131
  %140 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPKN6Assimp3FBX14AnimationLayerESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #13
  br i1 %140, label %146, label %141

141:                                              ; preds = %139
  store i32 2, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #13
  br label %261

142:                                              ; preds = %128
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %10, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %11, align 4
  br label %775

146:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #13
  %147 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPKN6Assimp3FBX14AnimationLayerESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #13
  %148 = load ptr, ptr %147, align 8, !tbaa !5
  store ptr %148, ptr %22, align 8, !tbaa !5
  %149 = load ptr, ptr %22, align 8, !tbaa !5
  %150 = icmp ne ptr %149, null
  br i1 %150, label %153, label %151

151:                                              ; preds = %146
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.194, ptr noundef @.str.5, i32 noundef 2672)
          to label %152 unwind label %168

152:                                              ; preds = %151
  br label %153

153:                                              ; preds = %152, %146
  %154 = phi i1 [ true, %146 ], [ false, %152 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #13
  %155 = load ptr, ptr %22, align 8, !tbaa !5
  %156 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  invoke void @_ZNK6Assimp3FBX14AnimationLayer5NodesEPKPKcm(ptr dead_on_unwind writable sret(%"class.std::vector.378") align 8 %24, ptr noundef nonnull align 8 dereferenceable(80) %155, ptr noundef %156, i64 noundef 4)
          to label %157 unwind label %172

157:                                              ; preds = %153
  store ptr %24, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #13
  %158 = load ptr, ptr %23, align 8, !tbaa !5
  store ptr %158, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #13
  %159 = load ptr, ptr %25, align 8, !tbaa !5
  %160 = call ptr @_ZNKSt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %159) #13
  %161 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.383", ptr %26, i32 0, i32 0
  store ptr %160, ptr %161, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #13
  %162 = load ptr, ptr %25, align 8, !tbaa !5
  %163 = call ptr @_ZNKSt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %162) #13
  %164 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.383", ptr %27, i32 0, i32 0
  store ptr %163, ptr %164, align 8
  br label %165

165:                                              ; preds = %252, %157
  %166 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPKN6Assimp3FBX18AnimationCurveNodeESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #13
  br i1 %166, label %176, label %167

167:                                              ; preds = %165
  store i32 4, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #13
  br label %256

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

172:                                              ; preds = %153
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %10, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %11, align 4
  br label %259

176:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #13
  %177 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPKN6Assimp3FBX18AnimationCurveNodeESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #13
  %178 = load ptr, ptr %177, align 8, !tbaa !5
  store ptr %178, ptr %28, align 8, !tbaa !5
  %179 = load ptr, ptr %28, align 8, !tbaa !5
  %180 = icmp ne ptr %179, null
  br i1 %180, label %183, label %181

181:                                              ; preds = %176
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.195, ptr noundef @.str.5, i32 noundef 2675)
          to label %182 unwind label %191

182:                                              ; preds = %181
  br label %183

183:                                              ; preds = %182, %176
  %184 = phi i1 [ true, %176 ], [ false, %182 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #13
  %185 = load ptr, ptr %28, align 8, !tbaa !5
  %186 = invoke noundef ptr @_ZNK6Assimp3FBX18AnimationCurveNode6TargetEv(ptr noundef nonnull align 8 dereferenceable(168) %185)
          to label %187 unwind label %195

187:                                              ; preds = %183
  %188 = icmp eq ptr %186, null
  br i1 %188, label %199, label %189

189:                                              ; preds = %187
  %190 = call ptr @__dynamic_cast(ptr %186, ptr @_ZTIN6Assimp3FBX6ObjectE, ptr @_ZTIN6Assimp3FBX5ModelE, i64 0) #13
  br label %200

191:                                              ; preds = %181
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %10, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %11, align 4
  br label %255

195:                                              ; preds = %183
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %10, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %11, align 4
  br label %254

199:                                              ; preds = %187
  br label %200

200:                                              ; preds = %199, %189
  %201 = phi ptr [ %190, %189 ], [ null, %199 ]
  store ptr %201, ptr %29, align 8, !tbaa !5
  %202 = load ptr, ptr %29, align 8, !tbaa !5
  %203 = icmp ne ptr %202, null
  br i1 %203, label %204, label %225

204:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #13
  %205 = load ptr, ptr %29, align 8, !tbaa !5
  %206 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Assimp3FBX6Object4NameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(56) %205)
          to label %207 unwind label %216

207:                                              ; preds = %204
  invoke void @_ZN6Assimp3FBX12FBXConverter11FixNodeNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(489) %77, ptr noundef nonnull align 8 dereferenceable(32) %206)
          to label %208 unwind label %216

208:                                              ; preds = %207
  store ptr %31, ptr %30, align 8, !tbaa !5
  %209 = load ptr, ptr %30, align 8, !tbaa !5
  %210 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISB_EESt4lessIS5_ESaISt4pairIKS5_SD_EEEixERSH_(ptr noundef nonnull align 8 dereferenceable(48) %15, ptr noundef nonnull align 8 dereferenceable(32) %209)
          to label %211 unwind label %220

211:                                              ; preds = %208
  invoke void @_ZNSt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaIS4_EE9push_backERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %210, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %212 unwind label %220

212:                                              ; preds = %211
  %213 = load ptr, ptr %22, align 8, !tbaa !5
  %214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapIPKN6Assimp3FBX18AnimationCurveNodeEPKNS1_14AnimationLayerESt4lessIS4_ESaISt4pairIKS4_S7_EEEixERSB_(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %215 unwind label %220

215:                                              ; preds = %212
  store ptr %213, ptr %214, align 8, !tbaa !5
  store i32 5, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #13
  br label %246

216:                                              ; preds = %207, %204
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %10, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %11, align 4
  br label %224

220:                                              ; preds = %212, %211, %208
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %10, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #13
  br label %224

224:                                              ; preds = %220, %216
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #13
  br label %254

225:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #13
  %226 = load ptr, ptr %28, align 8, !tbaa !5
  %227 = invoke noundef ptr @_ZNK6Assimp3FBX18AnimationCurveNode6TargetEv(ptr noundef nonnull align 8 dereferenceable(168) %226)
          to label %228 unwind label %232

228:                                              ; preds = %225
  %229 = icmp eq ptr %227, null
  br i1 %229, label %236, label %230

230:                                              ; preds = %228
  %231 = call ptr @__dynamic_cast(ptr %227, ptr @_ZTIN6Assimp3FBX6ObjectE, ptr @_ZTIN6Assimp3FBX17BlendShapeChannelE, i64 0) #13
  br label %237

232:                                              ; preds = %241, %225
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %10, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #13
  br label %254

236:                                              ; preds = %228
  br label %237

237:                                              ; preds = %236, %230
  %238 = phi ptr [ %231, %230 ], [ null, %236 ]
  store ptr %238, ptr %32, align 8, !tbaa !5
  %239 = load ptr, ptr %32, align 8, !tbaa !5
  %240 = icmp ne ptr %239, null
  br i1 %240, label %241, label %245

241:                                              ; preds = %237
  %242 = load ptr, ptr %32, align 8, !tbaa !5
  %243 = load ptr, ptr %28, align 8, !tbaa !5
  invoke void @_ZN6Assimp3FBX12FBXConverter21ProcessMorphAnimDatasEPSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS2_IlP12morphKeyDataSt4lessIlESaISt4pairIKlSA_EEESB_IS8_ESaISD_IKS8_SI_EEEPKNS0_17BlendShapeChannelEPKNS0_18AnimationCurveNodeE(ptr noundef nonnull align 8 dereferenceable(489) %77, ptr noundef %18, ptr noundef %242, ptr noundef %243)
          to label %244 unwind label %232

244:                                              ; preds = %241
  br label %245

245:                                              ; preds = %244, %237
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #13
  store i32 0, ptr %6, align 4
  br label %246

246:                                              ; preds = %245, %215
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #13
  %247 = load i32, ptr %6, align 4
  switch i32 %247, label %249 [
    i32 0, label %248
  ]

248:                                              ; preds = %246
  store i32 0, ptr %6, align 4
  br label %249

249:                                              ; preds = %248, %246
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #13
  %250 = load i32, ptr %6, align 4
  switch i32 %250, label %784 [
    i32 0, label %251
    i32 5, label %252
  ]

251:                                              ; preds = %249
  br label %252

252:                                              ; preds = %251, %249
  %253 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPKN6Assimp3FBX18AnimationCurveNodeESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #13
  br label %165

254:                                              ; preds = %232, %224, %195
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #13
  br label %255

255:                                              ; preds = %254, %191
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #13
  call void @_ZNSt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #13
  br label %259

256:                                              ; preds = %167
  call void @_ZNSt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #13
  br label %257

257:                                              ; preds = %256
  %258 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPKN6Assimp3FBX14AnimationLayerESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #13
  br label %139

259:                                              ; preds = %255, %172
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #13
  br label %260

260:                                              ; preds = %259, %168
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #13
  br label %774

261:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 24, ptr %33) #13
  call void @_ZNSt6vectorIP10aiNodeAnimSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #13
  store double 1.000000e+10, ptr %34, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #13
  store double -1.000000e+10, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #13
  %262 = load ptr, ptr %4, align 8, !tbaa !5
  %263 = invoke noundef i64 @_ZNK6Assimp3FBX14AnimationStack10LocalStartEv(ptr noundef nonnull align 8 dereferenceable(96) %262)
          to label %264 unwind label %279

264:                                              ; preds = %261
  store i64 %263, ptr %36, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #13
  %265 = load ptr, ptr %4, align 8, !tbaa !5
  %266 = invoke noundef i64 @_ZNK6Assimp3FBX14AnimationStack9LocalStopEv(ptr noundef nonnull align 8 dereferenceable(96) %265)
          to label %267 unwind label %283

267:                                              ; preds = %264
  store i64 %266, ptr %37, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #13
  %268 = load i64, ptr %36, align 8, !tbaa !11
  %269 = icmp ne i64 %268, 0
  br i1 %269, label %273, label %270

270:                                              ; preds = %267
  %271 = load i64, ptr %37, align 8, !tbaa !11
  %272 = icmp ne i64 %271, 0
  br label %273

273:                                              ; preds = %270, %267
  %274 = phi i1 [ true, %267 ], [ %272, %270 ]
  %275 = zext i1 %274 to i8
  store i8 %275, ptr %38, align 1, !tbaa !13
  %276 = load i8, ptr %38, align 1, !tbaa !13, !range !15, !noundef !16
  %277 = trunc i8 %276 to i1
  br i1 %277, label %287, label %278

278:                                              ; preds = %273
  store i64 -9223372036854755807, ptr %36, align 8, !tbaa !11
  store i64 9223372036854755807, ptr %37, align 8, !tbaa !11
  br label %287

279:                                              ; preds = %261
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %10, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %11, align 4
  br label %773

283:                                              ; preds = %264
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %10, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %11, align 4
  br label %772

287:                                              ; preds = %278, %273
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #13
  store ptr %15, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #13
  %288 = load ptr, ptr %39, align 8, !tbaa !5
  %289 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISB_EESt4lessIS5_ESaISt4pairIKS5_SD_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %288) #13
  %290 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.394", ptr %40, i32 0, i32 0
  store ptr %289, ptr %290, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #13
  %291 = load ptr, ptr %39, align 8, !tbaa !5
  %292 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISB_EESt4lessIS5_ESaISt4pairIKS5_SD_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %291) #13
  %293 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.394", ptr %41, i32 0, i32 0
  store ptr %292, ptr %293, align 8
  br label %294

294:                                              ; preds = %306, %287
  %295 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISD_EEEESJ_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %41) #13
  br i1 %295, label %297, label %296

296:                                              ; preds = %294
  store i32 6, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #13
  br label %328

297:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #13
  %298 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISD_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #13
  store ptr %298, ptr %42, align 8, !tbaa !5
  %299 = load ptr, ptr %42, align 8, !tbaa !5
  %300 = getelementptr inbounds %"struct.std::pair.395", ptr %299, i32 0, i32 0
  %301 = load ptr, ptr %42, align 8, !tbaa !5
  %302 = getelementptr inbounds %"struct.std::pair.395", ptr %301, i32 0, i32 1
  %303 = load i64, ptr %36, align 8, !tbaa !11
  %304 = load i64, ptr %37, align 8, !tbaa !11
  invoke void @_ZN6Assimp3FBX12FBXConverter22GenerateNodeAnimationsERSt6vectorIP10aiNodeAnimSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_IPKNS0_18AnimationCurveNodeESaISI_EERKSt3mapISI_PKNS0_14AnimationLayerESt4lessISI_ESaISt4pairIKSI_SQ_EEEllRdS10_(ptr noundef nonnull align 8 dereferenceable(489) %77, ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(32) %300, ptr noundef nonnull align 8 dereferenceable(24) %302, ptr noundef nonnull align 8 dereferenceable(48) %16, i64 noundef %303, i64 noundef %304, ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %305 unwind label %308

305:                                              ; preds = %297
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #13
  br label %306

306:                                              ; preds = %305
  %307 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISD_EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #13
  br label %294

308:                                              ; preds = %297
  %309 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %310 = extractvalue { ptr, i32 } %309, 0
  store ptr %310, ptr %10, align 8
  %311 = extractvalue { ptr, i32 } %309, 1
  store i32 %311, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #13
  br label %312

312:                                              ; preds = %308
  %313 = load i32, ptr %11, align 4
  %314 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9exception) #13
  %315 = icmp eq i32 %313, %314
  br i1 %315, label %316, label %771

316:                                              ; preds = %312
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #13
  %317 = load ptr, ptr %10, align 8
  %318 = call ptr @__cxa_begin_catch(ptr %317) #13
  store ptr %318, ptr %43, align 8
  %319 = call ptr @_ZNSt6vectorIP10aiNodeAnimSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #13
  %320 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.397", ptr %44, i32 0, i32 0
  store ptr %319, ptr %320, align 8
  %321 = call ptr @_ZNSt6vectorIP10aiNodeAnimSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #13
  %322 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.397", ptr %45, i32 0, i32 0
  store ptr %321, ptr %322, align 8
  %323 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.397", ptr %44, i32 0, i32 0
  %324 = load ptr, ptr %323, align 8
  %325 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.397", ptr %45, i32 0, i32 0
  %326 = load ptr, ptr %325, align 8
  invoke void @_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPP10aiNodeAnimSt6vectorIS3_SaIS3_EEEEN6Assimp3FBX4Util10delete_funIS2_EEET0_T_SF_SE_(ptr %324, ptr %326)
          to label %327 unwind label %329

327:                                              ; preds = %316
  invoke void @__cxa_rethrow() #15
          to label %784 unwind label %329

328:                                              ; preds = %296
  br label %334

329:                                              ; preds = %327, %316
  %330 = landingpad { ptr, i32 }
          cleanup
  %331 = extractvalue { ptr, i32 } %330, 0
  store ptr %331, ptr %10, align 8
  %332 = extractvalue { ptr, i32 } %330, 1
  store i32 %332, ptr %11, align 4
  invoke void @__cxa_end_catch()
          to label %333 unwind label %781

333:                                              ; preds = %329
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #13
  br label %771

334:                                              ; preds = %328
  %335 = call noundef i64 @_ZNKSt6vectorIP10aiNodeAnimSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #13
  %336 = icmp ne i64 %335, 0
  br i1 %336, label %340, label %337

337:                                              ; preds = %334
  %338 = call noundef i64 @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS_IlP12morphKeyDataSt4lessIlESaISt4pairIKlS7_EEES8_IS5_ESaISA_IKS5_SF_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %18) #13
  %339 = icmp ne i64 %338, 0
  br i1 %339, label %340, label %598

340:                                              ; preds = %337, %334
  %341 = call noundef i64 @_ZNKSt6vectorIP10aiNodeAnimSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #13
  %342 = icmp ne i64 %341, 0
  br i1 %342, label %343, label %374

343:                                              ; preds = %340
  %344 = call noundef i64 @_ZNKSt6vectorIP10aiNodeAnimSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #13
  %345 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %344, i64 8)
  %346 = extractvalue { i64, i1 } %345, 1
  %347 = extractvalue { i64, i1 } %345, 0
  %348 = select i1 %346, i64 -1, i64 %347
  %349 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %348) #14
          to label %350 unwind label %370

350:                                              ; preds = %343
  call void @llvm.memset.p0.i64(ptr align 8 %349, i8 0, i64 %348, i1 false)
  %351 = load ptr, ptr %7, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.aiAnimation, ptr %351, i32 0, i32 4
  store ptr %349, ptr %352, align 8, !tbaa !17
  %353 = call noundef i64 @_ZNKSt6vectorIP10aiNodeAnimSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #13
  %354 = trunc i64 %353 to i32
  %355 = load ptr, ptr %7, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.aiAnimation, ptr %355, i32 0, i32 3
  store i32 %354, ptr %356, align 8, !tbaa !21
  %357 = call ptr @_ZNSt6vectorIP10aiNodeAnimSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #13
  %358 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.397", ptr %48, i32 0, i32 0
  store ptr %357, ptr %358, align 8
  %359 = call ptr @_ZNSt6vectorIP10aiNodeAnimSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #13
  %360 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.397", ptr %49, i32 0, i32 0
  store ptr %359, ptr %360, align 8
  %361 = load ptr, ptr %7, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.aiAnimation, ptr %361, i32 0, i32 4
  %363 = load ptr, ptr %362, align 8, !tbaa !17
  %364 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.397", ptr %48, i32 0, i32 0
  %365 = load ptr, ptr %364, align 8
  %366 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.397", ptr %49, i32 0, i32 0
  %367 = load ptr, ptr %366, align 8
  %368 = invoke noundef ptr @_ZSt11swap_rangesIN9__gnu_cxx17__normal_iteratorIPP10aiNodeAnimSt6vectorIS3_SaIS3_EEEES4_ET0_T_SA_S9_(ptr %365, ptr %367, ptr noundef %363)
          to label %369 unwind label %370

369:                                              ; preds = %350
  br label %374

370:                                              ; preds = %602, %350, %343
  %371 = landingpad { ptr, i32 }
          cleanup
  %372 = extractvalue { ptr, i32 } %371, 0
  store ptr %372, ptr %10, align 8
  %373 = extractvalue { ptr, i32 } %371, 1
  store i32 %373, ptr %11, align 4
  br label %771

374:                                              ; preds = %369, %340
  %375 = call noundef i64 @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS_IlP12morphKeyDataSt4lessIlESaISt4pairIKlS7_EEES8_IS5_ESaISA_IKS5_SF_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %18) #13
  %376 = icmp ne i64 %375, 0
  br i1 %376, label %377, label %597

377:                                              ; preds = %374
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #13
  %378 = call noundef i64 @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS_IlP12morphKeyDataSt4lessIlESaISt4pairIKlS7_EEES8_IS5_ESaISA_IKS5_SF_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %18) #13
  %379 = trunc i64 %378 to i32
  store i32 %379, ptr %50, align 4, !tbaa !22
  %380 = load i32, ptr %50, align 4, !tbaa !22
  %381 = zext i32 %380 to i64
  %382 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %381, i64 8)
  %383 = extractvalue { i64, i1 } %382, 1
  %384 = extractvalue { i64, i1 } %382, 0
  %385 = select i1 %383, i64 -1, i64 %384
  %386 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %385) #14
          to label %387 unwind label %402

387:                                              ; preds = %377
  %388 = load ptr, ptr %7, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.aiAnimation, ptr %388, i32 0, i32 8
  store ptr %386, ptr %389, align 8, !tbaa !23
  %390 = load i32, ptr %50, align 4, !tbaa !22
  %391 = load ptr, ptr %7, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.aiAnimation, ptr %391, i32 0, i32 7
  store i32 %390, ptr %392, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #13
  store i32 0, ptr %51, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #13
  store ptr %18, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #13
  %393 = load ptr, ptr %52, align 8, !tbaa !5
  %394 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS_IlP12morphKeyDataSt4lessIlESaISt4pairIKlS7_EEES8_IS5_ESaISA_IKS5_SF_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %393) #13
  %395 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.399", ptr %53, i32 0, i32 0
  store ptr %394, ptr %395, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #13
  %396 = load ptr, ptr %52, align 8, !tbaa !5
  %397 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS_IlP12morphKeyDataSt4lessIlESaISt4pairIKlS7_EEES8_IS5_ESaISA_IKS5_SF_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %396) #13
  %398 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.399", ptr %54, i32 0, i32 0
  store ptr %397, ptr %398, align 8
  br label %399

399:                                              ; preds = %592, %387
  %400 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt3mapIlP12morphKeyDataSt4lessIlESaIS0_IKlSA_EEEEESL_(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %54) #13
  br i1 %400, label %406, label %401

401:                                              ; preds = %399
  store i32 8, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #13
  br label %595

402:                                              ; preds = %377
  %403 = landingpad { ptr, i32 }
          cleanup
  %404 = extractvalue { ptr, i32 } %403, 0
  store ptr %404, ptr %10, align 8
  %405 = extractvalue { ptr, i32 } %403, 1
  store i32 %405, ptr %11, align 4
  br label %596

406:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #13
  %407 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt3mapIlP12morphKeyDataSt4lessIlESaIS0_IKlSA_EEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %53) #13
  store ptr %407, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #13
  %408 = load ptr, ptr %55, align 8, !tbaa !5
  %409 = getelementptr inbounds %"struct.std::pair.400", ptr %408, i32 0, i32 1
  %410 = load ptr, ptr %409, align 8, !tbaa !25
  store ptr %410, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #13
  %411 = load ptr, ptr %56, align 8, !tbaa !5
  %412 = call noundef i64 @_ZNKSt3mapIlP12morphKeyDataSt4lessIlESaISt4pairIKlS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %411) #13
  %413 = trunc i64 %412 to i32
  store i32 %413, ptr %57, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #13
  %414 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 1040) #14
          to label %415 unwind label %457

415:                                              ; preds = %406
  call void @_ZN15aiMeshMorphAnimC2Ev(ptr noundef nonnull align 8 dereferenceable(1040) %414) #13
  store ptr %414, ptr %58, align 8, !tbaa !5
  %416 = load ptr, ptr %58, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.aiMeshMorphAnim, ptr %416, i32 0, i32 0
  %418 = load ptr, ptr %55, align 8, !tbaa !5
  %419 = getelementptr inbounds %"struct.std::pair.400", ptr %418, i32 0, i32 0
  invoke void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %417, ptr noundef nonnull align 8 dereferenceable(32) %419)
          to label %420 unwind label %457

420:                                              ; preds = %415
  %421 = load i32, ptr %57, align 4, !tbaa !22
  %422 = load ptr, ptr %58, align 8, !tbaa !5
  %423 = getelementptr inbounds %struct.aiMeshMorphAnim, ptr %422, i32 0, i32 1
  store i32 %421, ptr %423, align 4, !tbaa !29
  %424 = load i32, ptr %57, align 4, !tbaa !22
  %425 = zext i32 %424 to i64
  %426 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %425, i64 32)
  %427 = extractvalue { i64, i1 } %426, 1
  %428 = extractvalue { i64, i1 } %426, 0
  %429 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %428, i64 8)
  %430 = extractvalue { i64, i1 } %429, 1
  %431 = or i1 %427, %430
  %432 = extractvalue { i64, i1 } %429, 0
  %433 = select i1 %431, i64 -1, i64 %432
  %434 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %433) #14
          to label %435 unwind label %457

435:                                              ; preds = %420
  store i64 %425, ptr %434, align 16
  %436 = getelementptr inbounds i8, ptr %434, i64 8
  %437 = icmp eq i64 %425, 0
  br i1 %437, label %444, label %438

438:                                              ; preds = %435
  %439 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %436, i64 %425
  br label %440

440:                                              ; preds = %440, %438
  %441 = phi ptr [ %436, %438 ], [ %442, %440 ]
  call void @_ZN14aiMeshMorphKeyC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %441) #13
  %442 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %441, i64 1
  %443 = icmp eq ptr %442, %439
  br i1 %443, label %444, label %440

444:                                              ; preds = %440, %435
  %445 = load ptr, ptr %58, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.aiMeshMorphAnim, ptr %445, i32 0, i32 2
  store ptr %436, ptr %446, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #13
  store i32 0, ptr %59, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #13
  %447 = load ptr, ptr %56, align 8, !tbaa !5
  store ptr %447, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #13
  %448 = load ptr, ptr %60, align 8, !tbaa !5
  %449 = call ptr @_ZNSt3mapIlP12morphKeyDataSt4lessIlESaISt4pairIKlS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %448) #13
  %450 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.408", ptr %61, i32 0, i32 0
  store ptr %449, ptr %450, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #13
  %451 = load ptr, ptr %60, align 8, !tbaa !5
  %452 = call ptr @_ZNSt3mapIlP12morphKeyDataSt4lessIlESaISt4pairIKlS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %451) #13
  %453 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.408", ptr %62, i32 0, i32 0
  store ptr %452, ptr %453, align 8
  br label %454

454:                                              ; preds = %580, %444
  %455 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKlP12morphKeyDataEES7_(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %62) #13
  br i1 %455, label %461, label %456

456:                                              ; preds = %454
  store i32 10, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #13
  br label %583

457:                                              ; preds = %420, %415, %406
  %458 = landingpad { ptr, i32 }
          cleanup
  %459 = extractvalue { ptr, i32 } %458, 0
  store ptr %459, ptr %10, align 8
  %460 = extractvalue { ptr, i32 } %458, 1
  store i32 %460, ptr %11, align 4
  br label %594

461:                                              ; preds = %454
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #13
  %462 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKlP12morphKeyDataEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %61) #13
  store ptr %462, ptr %63, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #13
  %463 = load ptr, ptr %63, align 8, !tbaa !5
  %464 = getelementptr inbounds %"struct.std::pair.409", ptr %463, i32 0, i32 1
  %465 = load ptr, ptr %464, align 8, !tbaa !32
  store ptr %465, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #13
  %466 = load ptr, ptr %64, align 8, !tbaa !5
  %467 = getelementptr inbounds %struct.morphKeyData, ptr %466, i32 0, i32 0
  %468 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %467) #13
  %469 = trunc i64 %468 to i32
  store i32 %469, ptr %65, align 4, !tbaa !22
  %470 = load i32, ptr %65, align 4, !tbaa !22
  %471 = load ptr, ptr %58, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.aiMeshMorphAnim, ptr %471, i32 0, i32 2
  %473 = load ptr, ptr %472, align 8, !tbaa !31
  %474 = load i32, ptr %59, align 4, !tbaa !22
  %475 = zext i32 %474 to i64
  %476 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %473, i64 %475
  %477 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %476, i32 0, i32 3
  store i32 %470, ptr %477, align 8, !tbaa !34
  %478 = load i32, ptr %65, align 4, !tbaa !22
  %479 = zext i32 %478 to i64
  %480 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %479, i64 4)
  %481 = extractvalue { i64, i1 } %480, 1
  %482 = extractvalue { i64, i1 } %480, 0
  %483 = select i1 %481, i64 -1, i64 %482
  %484 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %483) #14
          to label %485 unwind label %528

485:                                              ; preds = %461
  %486 = load ptr, ptr %58, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.aiMeshMorphAnim, ptr %486, i32 0, i32 2
  %488 = load ptr, ptr %487, align 8, !tbaa !31
  %489 = load i32, ptr %59, align 4, !tbaa !22
  %490 = zext i32 %489 to i64
  %491 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %488, i64 %490
  %492 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %491, i32 0, i32 1
  store ptr %484, ptr %492, align 8, !tbaa !36
  %493 = load i32, ptr %65, align 4, !tbaa !22
  %494 = zext i32 %493 to i64
  %495 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %494, i64 8)
  %496 = extractvalue { i64, i1 } %495, 1
  %497 = extractvalue { i64, i1 } %495, 0
  %498 = select i1 %496, i64 -1, i64 %497
  %499 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %498) #14
          to label %500 unwind label %528

500:                                              ; preds = %485
  %501 = load ptr, ptr %58, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.aiMeshMorphAnim, ptr %501, i32 0, i32 2
  %503 = load ptr, ptr %502, align 8, !tbaa !31
  %504 = load i32, ptr %59, align 4, !tbaa !22
  %505 = zext i32 %504 to i64
  %506 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %503, i64 %505
  %507 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %506, i32 0, i32 2
  store ptr %499, ptr %507, align 8, !tbaa !37
  %508 = load ptr, ptr %63, align 8, !tbaa !5
  %509 = getelementptr inbounds %"struct.std::pair.409", ptr %508, i32 0, i32 0
  %510 = load i64, ptr %509, align 8, !tbaa !38
  %511 = sitofp i64 %510 to double
  %512 = fdiv double %511, 0x422581D1AF600000
  %513 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %77, i32 0, i32 14
  %514 = load double, ptr %513, align 8, !tbaa !39
  %515 = fmul double %512, %514
  %516 = load ptr, ptr %58, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.aiMeshMorphAnim, ptr %516, i32 0, i32 2
  %518 = load ptr, ptr %517, align 8, !tbaa !31
  %519 = load i32, ptr %59, align 4, !tbaa !22
  %520 = zext i32 %519 to i64
  %521 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %518, i64 %520
  %522 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %521, i32 0, i32 0
  store double %515, ptr %522, align 8, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #13
  store i32 0, ptr %66, align 4, !tbaa !22
  br label %523

523:                                              ; preds = %570, %500
  %524 = load i32, ptr %66, align 4, !tbaa !22
  %525 = load i32, ptr %65, align 4, !tbaa !22
  %526 = icmp ult i32 %524, %525
  br i1 %526, label %532, label %527

527:                                              ; preds = %523
  store i32 12, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #13
  br label %577

528:                                              ; preds = %485, %461
  %529 = landingpad { ptr, i32 }
          cleanup
  %530 = extractvalue { ptr, i32 } %529, 0
  store ptr %530, ptr %10, align 8
  %531 = extractvalue { ptr, i32 } %529, 1
  store i32 %531, ptr %11, align 4
  br label %582

532:                                              ; preds = %523
  %533 = load ptr, ptr %64, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.morphKeyData, ptr %533, i32 0, i32 0
  %535 = load i32, ptr %66, align 4, !tbaa !22
  %536 = zext i32 %535 to i64
  %537 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %534, i64 noundef %536)
          to label %538 unwind label %573

538:                                              ; preds = %532
  %539 = load i32, ptr %537, align 4, !tbaa !22
  %540 = load ptr, ptr %58, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.aiMeshMorphAnim, ptr %540, i32 0, i32 2
  %542 = load ptr, ptr %541, align 8, !tbaa !31
  %543 = load i32, ptr %59, align 4, !tbaa !22
  %544 = zext i32 %543 to i64
  %545 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %542, i64 %544
  %546 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %545, i32 0, i32 1
  %547 = load ptr, ptr %546, align 8, !tbaa !36
  %548 = load i32, ptr %66, align 4, !tbaa !22
  %549 = zext i32 %548 to i64
  %550 = getelementptr inbounds i32, ptr %547, i64 %549
  store i32 %539, ptr %550, align 4, !tbaa !22
  %551 = load ptr, ptr %64, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.morphKeyData, ptr %551, i32 0, i32 1
  %553 = load i32, ptr %66, align 4, !tbaa !22
  %554 = zext i32 %553 to i64
  %555 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %552, i64 noundef %554)
          to label %556 unwind label %573

556:                                              ; preds = %538
  %557 = load float, ptr %555, align 4, !tbaa !98
  %558 = fpext float %557 to double
  %559 = load ptr, ptr %58, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.aiMeshMorphAnim, ptr %559, i32 0, i32 2
  %561 = load ptr, ptr %560, align 8, !tbaa !31
  %562 = load i32, ptr %59, align 4, !tbaa !22
  %563 = zext i32 %562 to i64
  %564 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %561, i64 %563
  %565 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %564, i32 0, i32 2
  %566 = load ptr, ptr %565, align 8, !tbaa !37
  %567 = load i32, ptr %66, align 4, !tbaa !22
  %568 = zext i32 %567 to i64
  %569 = getelementptr inbounds double, ptr %566, i64 %568
  store double %558, ptr %569, align 8, !tbaa !9
  br label %570

570:                                              ; preds = %556
  %571 = load i32, ptr %66, align 4, !tbaa !22
  %572 = add i32 %571, 1
  store i32 %572, ptr %66, align 4, !tbaa !22
  br label %523, !llvm.loop !100

573:                                              ; preds = %538, %532
  %574 = landingpad { ptr, i32 }
          cleanup
  %575 = extractvalue { ptr, i32 } %574, 0
  store ptr %575, ptr %10, align 8
  %576 = extractvalue { ptr, i32 } %574, 1
  store i32 %576, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #13
  br label %582

577:                                              ; preds = %527
  %578 = load i32, ptr %59, align 4, !tbaa !22
  %579 = add i32 %578, 1
  store i32 %579, ptr %59, align 4, !tbaa !22
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #13
  br label %580

580:                                              ; preds = %577
  %581 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKlP12morphKeyDataEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %61) #13
  br label %454

582:                                              ; preds = %573, %528
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #13
  br label %594

583:                                              ; preds = %456
  %584 = load ptr, ptr %58, align 8, !tbaa !5
  %585 = load ptr, ptr %7, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.aiAnimation, ptr %585, i32 0, i32 8
  %587 = load ptr, ptr %586, align 8, !tbaa !23
  %588 = load i32, ptr %51, align 4, !tbaa !22
  %589 = add i32 %588, 1
  store i32 %589, ptr %51, align 4, !tbaa !22
  %590 = zext i32 %588 to i64
  %591 = getelementptr inbounds ptr, ptr %587, i64 %590
  store ptr %584, ptr %591, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #13
  br label %592

592:                                              ; preds = %583
  %593 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt3mapIlP12morphKeyDataSt4lessIlESaIS0_IKlSA_EEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %53) #13
  br label %399

594:                                              ; preds = %582, %457
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #13
  br label %596

595:                                              ; preds = %401
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #13
  br label %597

596:                                              ; preds = %594, %402
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #13
  br label %771

597:                                              ; preds = %595, %374
  br label %605

598:                                              ; preds = %337
  %599 = load ptr, ptr %7, align 8, !tbaa !5
  %600 = icmp eq ptr %599, null
  br i1 %600, label %602, label %601

601:                                              ; preds = %598
  call void @_ZN11aiAnimationD2Ev(ptr noundef nonnull align 8 dereferenceable(1096) %599) #13
  call void @_ZdlPvm(ptr noundef %599, i64 noundef 1096) #16
  br label %602

602:                                              ; preds = %601, %598
  %603 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %77, i32 0, i32 4
  call void @_ZNSt6vectorIP11aiAnimationSaIS1_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %603) #13
  invoke void @_ZN6Assimp12LogFunctionsINS_11FBXImporterEE7LogInfoIJRA44_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvDpOT_(ptr noundef nonnull align 1 dereferenceable(44) @.str.196, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %604 unwind label %370

604:                                              ; preds = %602
  store i32 1, ptr %6, align 4
  br label %767

605:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #13
  %606 = load i8, ptr %38, align 1, !tbaa !13, !range !15, !noundef !16
  %607 = trunc i8 %606 to i1
  br i1 %607, label %608, label %615

608:                                              ; preds = %605
  %609 = load i64, ptr %36, align 8, !tbaa !11
  %610 = sitofp i64 %609 to double
  %611 = fdiv double %610, 0x422581D1AF600000
  %612 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %77, i32 0, i32 14
  %613 = load double, ptr %612, align 8, !tbaa !39
  %614 = fmul double %611, %613
  br label %617

615:                                              ; preds = %605
  %616 = load double, ptr %34, align 8, !tbaa !9
  br label %617

617:                                              ; preds = %615, %608
  %618 = phi double [ %614, %608 ], [ %616, %615 ]
  store double %618, ptr %67, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #13
  %619 = load i8, ptr %38, align 1, !tbaa !13, !range !15, !noundef !16
  %620 = trunc i8 %619 to i1
  br i1 %620, label %621, label %628

621:                                              ; preds = %617
  %622 = load i64, ptr %37, align 8, !tbaa !11
  %623 = sitofp i64 %622 to double
  %624 = fdiv double %623, 0x422581D1AF600000
  %625 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %77, i32 0, i32 14
  %626 = load double, ptr %625, align 8, !tbaa !39
  %627 = fmul double %624, %626
  br label %630

628:                                              ; preds = %617
  %629 = load double, ptr %35, align 8, !tbaa !9
  br label %630

630:                                              ; preds = %628, %621
  %631 = phi double [ %627, %621 ], [ %629, %628 ]
  store double %631, ptr %68, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #13
  store i32 0, ptr %69, align 4, !tbaa !22
  br label %632

632:                                              ; preds = %713, %630
  %633 = load i32, ptr %69, align 4, !tbaa !22
  %634 = load ptr, ptr %7, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.aiAnimation, ptr %634, i32 0, i32 3
  %636 = load i32, ptr %635, align 8, !tbaa !21
  %637 = icmp ult i32 %633, %636
  br i1 %637, label %639, label %638

638:                                              ; preds = %632
  store i32 15, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #13
  br label %716

639:                                              ; preds = %632
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #13
  %640 = load ptr, ptr %7, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.aiAnimation, ptr %640, i32 0, i32 4
  %642 = load ptr, ptr %641, align 8, !tbaa !17
  %643 = load i32, ptr %69, align 4, !tbaa !22
  %644 = zext i32 %643 to i64
  %645 = getelementptr inbounds ptr, ptr %642, i64 %644
  %646 = load ptr, ptr %645, align 8, !tbaa !5
  store ptr %646, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #13
  store i32 0, ptr %71, align 4, !tbaa !22
  br label %647

647:                                              ; preds = %665, %639
  %648 = load i32, ptr %71, align 4, !tbaa !22
  %649 = load ptr, ptr %70, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.aiNodeAnim, ptr %649, i32 0, i32 1
  %651 = load i32, ptr %650, align 4, !tbaa !102
  %652 = icmp ult i32 %648, %651
  br i1 %652, label %654, label %653

653:                                              ; preds = %647
  store i32 18, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #13
  br label %668

654:                                              ; preds = %647
  %655 = load double, ptr %67, align 8, !tbaa !9
  %656 = load ptr, ptr %70, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.aiNodeAnim, ptr %656, i32 0, i32 2
  %658 = load ptr, ptr %657, align 8, !tbaa !105
  %659 = load i32, ptr %71, align 4, !tbaa !22
  %660 = zext i32 %659 to i64
  %661 = getelementptr inbounds %struct.aiVectorKey, ptr %658, i64 %660
  %662 = getelementptr inbounds %struct.aiVectorKey, ptr %661, i32 0, i32 0
  %663 = load double, ptr %662, align 8, !tbaa !106
  %664 = fsub double %663, %655
  store double %664, ptr %662, align 8, !tbaa !106
  br label %665

665:                                              ; preds = %654
  %666 = load i32, ptr %71, align 4, !tbaa !22
  %667 = add i32 %666, 1
  store i32 %667, ptr %71, align 4, !tbaa !22
  br label %647, !llvm.loop !110

668:                                              ; preds = %653
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #13
  store i32 0, ptr %72, align 4, !tbaa !22
  br label %669

669:                                              ; preds = %687, %668
  %670 = load i32, ptr %72, align 4, !tbaa !22
  %671 = load ptr, ptr %70, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.aiNodeAnim, ptr %671, i32 0, i32 3
  %673 = load i32, ptr %672, align 8, !tbaa !111
  %674 = icmp ult i32 %670, %673
  br i1 %674, label %676, label %675

675:                                              ; preds = %669
  store i32 21, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #13
  br label %690

676:                                              ; preds = %669
  %677 = load double, ptr %67, align 8, !tbaa !9
  %678 = load ptr, ptr %70, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.aiNodeAnim, ptr %678, i32 0, i32 4
  %680 = load ptr, ptr %679, align 8, !tbaa !112
  %681 = load i32, ptr %72, align 4, !tbaa !22
  %682 = zext i32 %681 to i64
  %683 = getelementptr inbounds %struct.aiQuatKey, ptr %680, i64 %682
  %684 = getelementptr inbounds %struct.aiQuatKey, ptr %683, i32 0, i32 0
  %685 = load double, ptr %684, align 8, !tbaa !113
  %686 = fsub double %685, %677
  store double %686, ptr %684, align 8, !tbaa !113
  br label %687

687:                                              ; preds = %676
  %688 = load i32, ptr %72, align 4, !tbaa !22
  %689 = add i32 %688, 1
  store i32 %689, ptr %72, align 4, !tbaa !22
  br label %669, !llvm.loop !116

690:                                              ; preds = %675
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #13
  store i32 0, ptr %73, align 4, !tbaa !22
  br label %691

691:                                              ; preds = %709, %690
  %692 = load i32, ptr %73, align 4, !tbaa !22
  %693 = load ptr, ptr %70, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.aiNodeAnim, ptr %693, i32 0, i32 5
  %695 = load i32, ptr %694, align 8, !tbaa !117
  %696 = icmp ult i32 %692, %695
  br i1 %696, label %698, label %697

697:                                              ; preds = %691
  store i32 24, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #13
  br label %712

698:                                              ; preds = %691
  %699 = load double, ptr %67, align 8, !tbaa !9
  %700 = load ptr, ptr %70, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.aiNodeAnim, ptr %700, i32 0, i32 6
  %702 = load ptr, ptr %701, align 8, !tbaa !118
  %703 = load i32, ptr %73, align 4, !tbaa !22
  %704 = zext i32 %703 to i64
  %705 = getelementptr inbounds %struct.aiVectorKey, ptr %702, i64 %704
  %706 = getelementptr inbounds %struct.aiVectorKey, ptr %705, i32 0, i32 0
  %707 = load double, ptr %706, align 8, !tbaa !106
  %708 = fsub double %707, %699
  store double %708, ptr %706, align 8, !tbaa !106
  br label %709

709:                                              ; preds = %698
  %710 = load i32, ptr %73, align 4, !tbaa !22
  %711 = add i32 %710, 1
  store i32 %711, ptr %73, align 4, !tbaa !22
  br label %691, !llvm.loop !119

712:                                              ; preds = %697
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #13
  br label %713

713:                                              ; preds = %712
  %714 = load i32, ptr %69, align 4, !tbaa !22
  %715 = add i32 %714, 1
  store i32 %715, ptr %69, align 4, !tbaa !22
  br label %632, !llvm.loop !120

716:                                              ; preds = %638
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #13
  store i32 0, ptr %74, align 4, !tbaa !22
  br label %717

717:                                              ; preds = %754, %716
  %718 = load i32, ptr %74, align 4, !tbaa !22
  %719 = load ptr, ptr %7, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.aiAnimation, ptr %719, i32 0, i32 7
  %721 = load i32, ptr %720, align 8, !tbaa !24
  %722 = icmp ult i32 %718, %721
  br i1 %722, label %724, label %723

723:                                              ; preds = %717
  store i32 27, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #13
  br label %757

724:                                              ; preds = %717
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #13
  %725 = load ptr, ptr %7, align 8, !tbaa !5
  %726 = getelementptr inbounds %struct.aiAnimation, ptr %725, i32 0, i32 8
  %727 = load ptr, ptr %726, align 8, !tbaa !23
  %728 = load i32, ptr %74, align 4, !tbaa !22
  %729 = zext i32 %728 to i64
  %730 = getelementptr inbounds ptr, ptr %727, i64 %729
  %731 = load ptr, ptr %730, align 8, !tbaa !5
  store ptr %731, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #13
  store i32 0, ptr %76, align 4, !tbaa !22
  br label %732

732:                                              ; preds = %750, %724
  %733 = load i32, ptr %76, align 4, !tbaa !22
  %734 = load ptr, ptr %75, align 8, !tbaa !5
  %735 = getelementptr inbounds %struct.aiMeshMorphAnim, ptr %734, i32 0, i32 1
  %736 = load i32, ptr %735, align 4, !tbaa !29
  %737 = icmp ult i32 %733, %736
  br i1 %737, label %739, label %738

738:                                              ; preds = %732
  store i32 30, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #13
  br label %753

739:                                              ; preds = %732
  %740 = load double, ptr %67, align 8, !tbaa !9
  %741 = load ptr, ptr %75, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.aiMeshMorphAnim, ptr %741, i32 0, i32 2
  %743 = load ptr, ptr %742, align 8, !tbaa !31
  %744 = load i32, ptr %76, align 4, !tbaa !22
  %745 = zext i32 %744 to i64
  %746 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %743, i64 %745
  %747 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %746, i32 0, i32 0
  %748 = load double, ptr %747, align 8, !tbaa !97
  %749 = fsub double %748, %740
  store double %749, ptr %747, align 8, !tbaa !97
  br label %750

750:                                              ; preds = %739
  %751 = load i32, ptr %76, align 4, !tbaa !22
  %752 = add i32 %751, 1
  store i32 %752, ptr %76, align 4, !tbaa !22
  br label %732, !llvm.loop !121

753:                                              ; preds = %738
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #13
  br label %754

754:                                              ; preds = %753
  %755 = load i32, ptr %74, align 4, !tbaa !22
  %756 = add i32 %755, 1
  store i32 %756, ptr %74, align 4, !tbaa !22
  br label %717, !llvm.loop !122

757:                                              ; preds = %723
  %758 = load double, ptr %68, align 8, !tbaa !9
  %759 = load double, ptr %67, align 8, !tbaa !9
  %760 = fsub double %758, %759
  %761 = load ptr, ptr %7, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.aiAnimation, ptr %761, i32 0, i32 1
  store double %760, ptr %762, align 8, !tbaa !123
  %763 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %77, i32 0, i32 14
  %764 = load double, ptr %763, align 8, !tbaa !39
  %765 = load ptr, ptr %7, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.aiAnimation, ptr %765, i32 0, i32 2
  store double %764, ptr %766, align 8, !tbaa !124
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #13
  store i32 0, ptr %6, align 4
  br label %767

767:                                              ; preds = %757, %604
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #13
  call void @_ZNSt6vectorIP10aiNodeAnimSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #13
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS_IlP12morphKeyDataSt4lessIlESaISt4pairIKlS7_EEES8_IS5_ESaISA_IKS5_SF_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr %18) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #13
  call void @_ZNSt3mapIPKN6Assimp3FBX18AnimationCurveNodeEPKNS1_14AnimationLayerESt4lessIS4_ESaISt4pairIKS4_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr %16) #13
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISB_EESt4lessIS5_ESaISt4pairIKS5_SD_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %15) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr %15) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #13
  br label %768

768:                                              ; preds = %767, %82
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #13
  %769 = load i32, ptr %6, align 4
  switch i32 %769, label %784 [
    i32 0, label %770
    i32 1, label %770
  ]

770:                                              ; preds = %768, %768
  ret void

771:                                              ; preds = %596, %370, %333, %312
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #13
  br label %772

772:                                              ; preds = %771, %283
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #13
  br label %773

773:                                              ; preds = %772, %279
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #13
  call void @_ZNSt6vectorIP10aiNodeAnimSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #13
  br label %774

774:                                              ; preds = %773, %260
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS_IlP12morphKeyDataSt4lessIlESaISt4pairIKlS7_EEES8_IS5_ESaISA_IKS5_SF_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr %18) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #13
  call void @_ZNSt3mapIPKN6Assimp3FBX18AnimationCurveNodeEPKNS1_14AnimationLayerESt4lessIS4_ESaISt4pairIKS4_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr %16) #13
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISB_EESt4lessIS5_ESaISt4pairIKS5_SD_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %15) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr %15) #13
  br label %775

775:                                              ; preds = %774, %142, %123, %122, %103, %102
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #13
  br label %776

776:                                              ; preds = %775
  %777 = load ptr, ptr %10, align 8
  %778 = load i32, ptr %11, align 4
  %779 = insertvalue { ptr, i32 } poison, ptr %777, 0
  %780 = insertvalue { ptr, i32 } %779, i32 %778, 1
  resume { ptr, i32 } %780

781:                                              ; preds = %329
  %782 = landingpad { ptr, i32 }
          catch ptr null
  %783 = extractvalue { ptr, i32 } %782, 0
  call void @__clang_call_terminate(ptr %783) #17
  unreachable

784:                                              ; preds = %768, %327, %249
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX14AnimationStack6LayersEv(ptr noundef nonnull align 8 dereferenceable(96)) #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorIPKN6Assimp3FBX14AnimationLayerESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) #6 align 2

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

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

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

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

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

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

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

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

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

declare void @_ZNK6Assimp3FBX14AnimationLayer5NodesEPKPKcm(ptr dead_on_unwind writable sret(%"class.std::vector.378") align 8, ptr noundef nonnull align 8 dereferenceable(80), ptr noundef, i64 noundef) #9

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6Assimp3FBX18AnimationCurveNode6TargetEv(ptr noundef nonnull align 8 dereferenceable(168)) #6 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter21ProcessMorphAnimDatasEPSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS2_IlP12morphKeyDataSt4lessIlESaISt4pairIKlSA_EEESB_IS8_ESaISD_IKS8_SI_EEEPKNS0_17BlendShapeChannelEPKNS0_18AnimationCurveNodeE(ptr noundef nonnull align 8 dereferenceable(489), ptr noundef, ptr noundef, ptr noundef) #7 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK6Assimp3FBX14AnimationStack10LocalStartEv(ptr noundef nonnull align 8 dereferenceable(96)) #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK6Assimp3FBX14AnimationStack9LocalStopEv(ptr noundef nonnull align 8 dereferenceable(96)) #7 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISD_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter22GenerateNodeAnimationsERSt6vectorIP10aiNodeAnimSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_IPKNS0_18AnimationCurveNodeESaISI_EERKSt3mapISI_PKNS0_14AnimationLayerESt4lessISI_ESaISt4pairIKSI_SQ_EEEllRdS10_(ptr noundef nonnull align 8 dereferenceable(489), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(48), i64 noundef, i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #7 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPP10aiNodeAnimSt6vectorIS3_SaIS3_EEEEN6Assimp3FBX4Util10delete_funIS2_EEET0_T_SF_SE_(ptr, ptr) #7

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZSt11swap_rangesIN9__gnu_cxx17__normal_iteratorIPP10aiNodeAnimSt6vectorIS3_SaIS3_EEEES4_ET0_T_SA_S9_(ptr, ptr, ptr noundef) #7

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt3mapIlP12morphKeyDataSt4lessIlESaIS0_IKlSA_EEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #6 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nounwind willreturn memory(read) }
attributes #3 = { noinline noreturn nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress 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 = { 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #9 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #11 = { 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 #12 = { nounwind memory(none) }
attributes #13 = { nounwind }
attributes #14 = { builtin allocsize(0) }
attributes #15 = { noreturn }
attributes #16 = { builtin nounwind }
attributes #17 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{i8 0, i8 2}
!16 = !{}
!17 = !{!18, !6, i64 1056}
!18 = !{!"_ZTS11aiAnimation", !19, i64 0, !10, i64 1032, !10, i64 1040, !20, i64 1048, !6, i64 1056, !20, i64 1064, !6, i64 1072, !20, i64 1080, !6, i64 1088}
!19 = !{!"_ZTS8aiString", !20, i64 0, !7, i64 4}
!20 = !{!"int", !7, i64 0}
!21 = !{!18, !20, i64 1048}
!22 = !{!20, !20, i64 0}
!23 = !{!18, !6, i64 1088}
!24 = !{!18, !20, i64 1080}
!25 = !{!26, !6, i64 32}
!26 = !{!"_ZTSSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt3mapIlP12morphKeyDataSt4lessIlESaIS_IKlS9_EEEE", !27, i64 0, !6, i64 32}
!27 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !28, i64 0, !12, i64 8, !7, i64 16}
!28 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!29 = !{!30, !20, i64 1028}
!30 = !{!"_ZTS15aiMeshMorphAnim", !19, i64 0, !20, i64 1028, !6, i64 1032}
!31 = !{!30, !6, i64 1032}
!32 = !{!33, !6, i64 8}
!33 = !{!"_ZTSSt4pairIKlP12morphKeyDataE", !12, i64 0, !6, i64 8}
!34 = !{!35, !20, i64 24}
!35 = !{!"_ZTS14aiMeshMorphKey", !10, i64 0, !6, i64 8, !6, i64 16, !20, i64 24}
!36 = !{!35, !6, i64 8}
!37 = !{!35, !6, i64 16}
!38 = !{!33, !12, i64 0}
!39 = !{!40, !10, i64 440}
!40 = !{!"_ZTSN6Assimp3FBX12FBXConverterE", !20, i64 0, !41, i64 8, !45, i64 32, !49, i64 56, !53, i64 80, !57, i64 104, !61, i64 128, !65, i64 152, !73, i64 200, !78, i64 248, !83, i64 296, !83, i64 344, !88, i64 392, !10, i64 440, !93, i64 448, !6, i64 472, !6, i64 480, !14, i64 488}
!41 = !{!"_ZTSSt6vectorIP6aiMeshSaIS1_EE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseIP6aiMeshSaIS1_EE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIP6aiMeshSaIS1_EE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIP6aiMeshSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!45 = !{!"_ZTSSt6vectorIP10aiMaterialSaIS1_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseIP10aiMaterialSaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIP10aiMaterialSaIS1_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIP10aiMaterialSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!49 = !{!"_ZTSSt6vectorIP11aiAnimationSaIS1_EE", !50, i64 0}
!50 = !{!"_ZTSSt12_Vector_baseIP11aiAnimationSaIS1_EE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseIP11aiAnimationSaIS1_EE12_Vector_implE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseIP11aiAnimationSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!53 = !{!"_ZTSSt6vectorIP7aiLightSaIS1_EE", !54, i64 0}
!54 = !{!"_ZTSSt12_Vector_baseIP7aiLightSaIS1_EE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIP7aiLightSaIS1_EE12_Vector_implE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIP7aiLightSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!57 = !{!"_ZTSSt6vectorIP8aiCameraSaIS1_EE", !58, i64 0}
!58 = !{!"_ZTSSt12_Vector_baseIP8aiCameraSaIS1_EE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIP8aiCameraSaIS1_EE12_Vector_implE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseIP8aiCameraSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!61 = !{!"_ZTSSt6vectorIP9aiTextureSaIS1_EE", !62, i64 0}
!62 = !{!"_ZTSSt12_Vector_baseIP9aiTextureSaIS1_EE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseIP9aiTextureSaIS1_EE12_Vector_implE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseIP9aiTextureSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!65 = !{!"_ZTSSt3mapIPKN6Assimp3FBX8MaterialEjSt4lessIS4_ESaISt4pairIKS4_jEEE", !66, i64 0}
!66 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX8MaterialESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE", !67, i64 0}
!67 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX8MaterialESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !68, i64 0, !70, i64 8}
!68 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX8MaterialEEE", !69, i64 0}
!69 = !{!"_ZTSSt4lessIPKN6Assimp3FBX8MaterialEE"}
!70 = !{!"_ZTSSt15_Rb_tree_header", !71, i64 0, !12, i64 32}
!71 = !{!"_ZTSSt18_Rb_tree_node_base", !72, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!72 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!73 = !{!"_ZTSSt3mapIPKN6Assimp3FBX5VideoEjSt4lessIS4_ESaISt4pairIKS4_jEEE", !74, i64 0}
!74 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX5VideoESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE", !75, i64 0}
!75 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX5VideoESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !76, i64 0, !70, i64 8}
!76 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX5VideoEEE", !77, i64 0}
!77 = !{!"_ZTSSt4lessIPKN6Assimp3FBX5VideoEE"}
!78 = !{!"_ZTSSt3mapIPKN6Assimp3FBX8GeometryESt6vectorIjSaIjEESt4lessIS4_ESaISt4pairIKS4_S7_EEE", !79, i64 0}
!79 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX8GeometryESt4pairIKS4_St6vectorIjSaIjEEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE", !80, i64 0}
!80 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX8GeometryESt4pairIKS4_St6vectorIjSaIjEEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !81, i64 0, !70, i64 8}
!81 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX8GeometryEEE", !82, i64 0}
!82 = !{!"_ZTSSt4lessIPKN6Assimp3FBX8GeometryEE"}
!83 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE", !84, i64 0}
!84 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !85, i64 0}
!85 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !86, i64 0, !70, i64 8}
!86 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !87, i64 0}
!87 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!88 = !{!"_ZTSSt3mapIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP6aiBoneSt4lessIS6_ESaISt4pairIS6_S8_EEE", !89, i64 0}
!89 = !{!"_ZTSSt8_Rb_treeIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIS6_P6aiBoneESt10_Select1stISA_ESt4lessIS6_ESaISA_EE", !90, i64 0}
!90 = !{!"_ZTSNSt8_Rb_treeIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIS6_P6aiBoneESt10_Select1stISA_ESt4lessIS6_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !91, i64 0, !70, i64 8}
!91 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !92, i64 0}
!92 = !{!"_ZTSSt4lessIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!93 = !{!"_ZTSSt6vectorIP10aiSkeletonSaIS1_EE", !94, i64 0}
!94 = !{!"_ZTSSt12_Vector_baseIP10aiSkeletonSaIS1_EE", !95, i64 0}
!95 = !{!"_ZTSNSt12_Vector_baseIP10aiSkeletonSaIS1_EE12_Vector_implE", !96, i64 0}
!96 = !{!"_ZTSNSt12_Vector_baseIP10aiSkeletonSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!97 = !{!35, !10, i64 0}
!98 = !{!99, !99, i64 0}
!99 = !{!"float", !7, i64 0}
!100 = distinct !{!100, !101}
!101 = !{!"llvm.loop.mustprogress"}
!102 = !{!103, !20, i64 1028}
!103 = !{!"_ZTS10aiNodeAnim", !19, i64 0, !20, i64 1028, !6, i64 1032, !20, i64 1040, !6, i64 1048, !20, i64 1056, !6, i64 1064, !104, i64 1072, !104, i64 1076}
!104 = !{!"_ZTS15aiAnimBehaviour", !7, i64 0}
!105 = !{!103, !6, i64 1032}
!106 = !{!107, !10, i64 0}
!107 = !{!"_ZTS11aiVectorKey", !10, i64 0, !108, i64 8, !109, i64 20}
!108 = !{!"_ZTS10aiVector3tIfE", !99, i64 0, !99, i64 4, !99, i64 8}
!109 = !{!"_ZTS19aiAnimInterpolation", !7, i64 0}
!110 = distinct !{!110, !101}
!111 = !{!103, !20, i64 1040}
!112 = !{!103, !6, i64 1048}
!113 = !{!114, !10, i64 0}
!114 = !{!"_ZTS9aiQuatKey", !10, i64 0, !115, i64 8, !109, i64 24}
!115 = !{!"_ZTS13aiQuaterniontIfE", !99, i64 0, !99, i64 4, !99, i64 8, !99, i64 12}
!116 = distinct !{!116, !101}
!117 = !{!103, !20, i64 1056}
!118 = !{!103, !6, i64 1064}
!119 = distinct !{!119, !101}
!120 = distinct !{!120, !101}
!121 = distinct !{!121, !101}
!122 = distinct !{!122, !101}
!123 = !{!18, !10, i64 1032}
!124 = !{!18, !10, i64 1040}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::map.361" = type { %"class.std::_Rb_tree.362" }
%"class.std::_Rb_tree.362" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::vector<const Assimp::FBX::AnimationCurveNode *>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::vector<const Assimp::FBX::AnimationCurveNode *>>>, 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>, std::vector<const Assimp::FBX::AnimationCurveNode *>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::vector<const Assimp::FBX::AnimationCurveNode *>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.366" = type { %"class.std::_Rb_tree.367" }
%"class.std::_Rb_tree.367" = type { %"struct.std::_Rb_tree<const Assimp::FBX::AnimationCurveNode *, std::pair<const Assimp::FBX::AnimationCurveNode *const, const Assimp::FBX::AnimationLayer *>, std::_Select1st<std::pair<const Assimp::FBX::AnimationCurveNode *const, const Assimp::FBX::AnimationLayer *>>, std::less<const Assimp::FBX::AnimationCurveNode *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const Assimp::FBX::AnimationCurveNode *, std::pair<const Assimp::FBX::AnimationCurveNode *const, const Assimp::FBX::AnimationLayer *>, std::_Select1st<std::pair<const Assimp::FBX::AnimationCurveNode *const, const Assimp::FBX::AnimationLayer *>>, std::less<const Assimp::FBX::AnimationCurveNode *>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.372" = type { %"class.std::_Rb_tree.373" }
%"class.std::_Rb_tree.373" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::map<long, morphKeyData *> *>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::map<long, morphKeyData *> *>>, 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>, std::map<long, morphKeyData *> *>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::map<long, morphKeyData *> *>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.__gnu_cxx::__normal_iterator.377" = type { ptr }
%"class.std::vector.378" = type { %"struct.std::_Vector_base.379" }
%"struct.std::_Vector_base.379" = type { %"struct.std::_Vector_base<const Assimp::FBX::AnimationCurveNode *, std::allocator<const Assimp::FBX::AnimationCurveNode *>>::_Vector_impl" }
%"struct.std::_Vector_base<const Assimp::FBX::AnimationCurveNode *, std::allocator<const Assimp::FBX::AnimationCurveNode *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const Assimp::FBX::AnimationCurveNode *, std::allocator<const Assimp::FBX::AnimationCurveNode *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const Assimp::FBX::AnimationCurveNode *, std::allocator<const Assimp::FBX::AnimationCurveNode *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.383" = type { ptr }
%"class.std::vector.389" = type { %"struct.std::_Vector_base.390" }
%"struct.std::_Vector_base.390" = type { %"struct.std::_Vector_base<aiNodeAnim *, std::allocator<aiNodeAnim *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiNodeAnim *, std::allocator<aiNodeAnim *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiNodeAnim *, std::allocator<aiNodeAnim *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiNodeAnim *, std::allocator<aiNodeAnim *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::_Rb_tree_iterator.394" = type { ptr }
%"struct.std::_Rb_tree_iterator.399" = type { ptr }
%"struct.std::_Rb_tree_iterator.408" = type { ptr }
%struct.aiMeshMorphKey = type <{ double, ptr, ptr, i32, [4 x i8] }>
%struct.aiVectorKey = type { double, %class.aiVector3t, i32 }
%class.aiVector3t = type { float, float, float }
%struct.aiQuatKey = type <{ double, %class.aiQuaterniont, i32, [4 x i8] }>
%class.aiQuaterniont = type { float, float, float, float }

@_ZTIN6Assimp3FBX6ObjectE = external dso_local constant { ptr, ptr }, align 8
@_ZTIN6Assimp3FBX5ModelE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.5 = external hidden unnamed_addr constant [119 x i8], align 1
@_ZTISt9exception = external constant ptr
@.str.191 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.192 = external hidden unnamed_addr constant [12 x i8], align 1
@__const._ZN6Assimp3FBX12FBXConverter21ConvertAnimationStackERKNS0_14AnimationStackE.prop_whitelist = external hidden unnamed_addr constant [4 x ptr], align 16
@.str.194 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.195 = external hidden unnamed_addr constant [5 x i8], align 1
@_ZTIN6Assimp3FBX17BlendShapeChannelE = external constant ptr
@.str.196 = external hidden unnamed_addr constant [44 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

; 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 nofree nounwind willreturn memory(read)
declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) local_unnamed_addr #2

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

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

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #4

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #6 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 #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter11FixNodeNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(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)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Assimp3FBX6Object4NameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #6 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) #8

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #4

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #10

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

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

declare void @__cxa_rethrow() local_unnamed_addr

declare void @__cxa_end_catch() local_unnamed_addr

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp3FBX12FBXConverter21ConvertAnimationStackERKNS0_14AnimationStackE(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(96) %1) local_unnamed_addr #7 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::map.361", align 8
  %10 = alloca %"class.std::map.366", align 8
  %11 = alloca [4 x ptr], align 16
  %12 = alloca %"class.std::map.372", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.377", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.377", align 8
  %15 = alloca %"class.std::vector.378", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %18 = alloca ptr, align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::vector.389", align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca %"struct.std::_Rb_tree_iterator.394", align 8
  %24 = alloca %"struct.std::_Rb_tree_iterator.394", align 8
  %25 = alloca %"struct.std::_Rb_tree_iterator.399", align 8
  %26 = alloca %"struct.std::_Rb_tree_iterator.399", align 8
  %27 = alloca %"struct.std::_Rb_tree_iterator.408", align 8
  %28 = alloca %"struct.std::_Rb_tree_iterator.408", align 8
  %29 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX14AnimationStack6LayersEv(ptr noundef nonnull align 8 dereferenceable(96) %1)
  %30 = tail call noundef zeroext i1 @_ZNKSt6vectorIPKN6Assimp3FBX14AnimationLayerESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #12
  br i1 %30, label %418, label %31

31:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #12
  %32 = tail call noalias noundef nonnull dereferenceable(1096) ptr @_Znwm(i64 noundef 1096) #13
  tail call void @_ZN11aiAnimationC2Ev(ptr noundef nonnull align 8 dereferenceable(1096) %32) #12
  store ptr %32, ptr %3, align 8, !tbaa !5
  %33 = getelementptr inbounds i8, ptr %0, i64 56
  call void @_ZNSt6vectorIP11aiAnimationSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(8) %3)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #12
  %34 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Assimp3FBX6Object4NameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(56) %1)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %34)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #12
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 0, i64 noundef 16)
          to label %35 unwind label %40

35:                                               ; preds = %31
  %36 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.191)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #12
  br i1 %36, label %37, label %48

37:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #12
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 16, i64 noundef -1)
          to label %38 unwind label %44

38:                                               ; preds = %37
  %39 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %6) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #12
  br label %62

40:                                               ; preds = %31
  %41 = landingpad { ptr, i32 }
          cleanup
  %42 = extractvalue { ptr, i32 } %41, 0
  %43 = extractvalue { ptr, i32 } %41, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #12
  br label %421

44:                                               ; preds = %37
  %45 = landingpad { ptr, i32 }
          cleanup
  %46 = extractvalue { ptr, i32 } %45, 0
  %47 = extractvalue { ptr, i32 } %45, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #12
  br label %421

48:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #12
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 0, i64 noundef 11)
          to label %49 unwind label %54

49:                                               ; preds = %48
  %50 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.192)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #12
  br i1 %50, label %51, label %62

51:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #12
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 11, i64 noundef -1)
          to label %52 unwind label %58

52:                                               ; preds = %51
  %53 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #12
  br label %62

54:                                               ; preds = %48
  %55 = landingpad { ptr, i32 }
          cleanup
  %56 = extractvalue { ptr, i32 } %55, 0
  %57 = extractvalue { ptr, i32 } %55, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #12
  br label %421

58:                                               ; preds = %51
  %59 = landingpad { ptr, i32 }
          cleanup
  %60 = extractvalue { ptr, i32 } %59, 0
  %61 = extractvalue { ptr, i32 } %59, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #12
  br label %421

62:                                               ; preds = %49, %52, %38
  %63 = load ptr, ptr %3, align 8, !tbaa !5
  call void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %63, ptr noundef nonnull align 8 dereferenceable(32) %4)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %9) #12
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISB_EESt4lessIS5_ESaISt4pairIKS5_SD_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %9) #12
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %10) #12
  call void @_ZNSt3mapIPKN6Assimp3FBX18AnimationCurveNodeEPKNS1_14AnimationLayerESt4lessIS4_ESaISt4pairIKS4_S7_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %10) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %11, ptr noundef nonnull align 16 dereferenceable(32) @__const._ZN6Assimp3FBX12FBXConverter21ConvertAnimationStackERKNS0_14AnimationStackE.prop_whitelist, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %12) #12
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS_IlP12morphKeyDataSt4lessIlESaISt4pairIKlS7_EEES8_IS5_ESaISA_IKS5_SF_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #12
  %64 = call ptr @_ZNKSt6vectorIPKN6Assimp3FBX14AnimationLayerESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #12
  store ptr %64, ptr %13, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #12
  %65 = call ptr @_ZNKSt6vectorIPKN6Assimp3FBX14AnimationLayerESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #12
  store ptr %65, ptr %14, align 8
  %66 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPKN6Assimp3FBX14AnimationLayerESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #12
  br i1 %66, label %.lr.ph174, label %._crit_edge175

._crit_edge175:                                   ; preds = %._crit_edge, %62
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #12
  call void @_ZNSt6vectorIP10aiNodeAnimSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #12
  store double 1.000000e+10, ptr %21, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #12
  store double -1.000000e+10, ptr %22, align 8, !tbaa !9
  %67 = invoke noundef i64 @_ZNK6Assimp3FBX14AnimationStack10LocalStartEv(ptr noundef nonnull align 8 dereferenceable(96) %1)
          to label %118 unwind label %125

.lr.ph174:                                        ; preds = %62, %._crit_edge
  %68 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPKN6Assimp3FBX14AnimationLayerESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #12
  %69 = load ptr, ptr %68, align 8, !tbaa !5
  %.not156 = icmp eq ptr %69, null
  br i1 %.not156, label %70, label %71

70:                                               ; preds = %.lr.ph174
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.194, ptr noundef nonnull @.str.5, i32 noundef 2672)
          to label %71 unwind label %78

71:                                               ; preds = %70, %.lr.ph174
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #12
  invoke void @_ZNK6Assimp3FBX14AnimationLayer5NodesEPKPKcm(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.378") align 8 %15, ptr noundef nonnull align 8 dereferenceable(80) %69, ptr noundef nonnull %11, i64 noundef 4)
          to label %72 unwind label %80

72:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #12
  %73 = call ptr @_ZNKSt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  store ptr %73, ptr %16, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #12
  %74 = call ptr @_ZNKSt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  store ptr %74, ptr %17, align 8
  %75 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPKN6Assimp3FBX18AnimationCurveNodeESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #12
  br i1 %75, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %.thread168, %72
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #12
  call void @_ZNSt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #12
  %76 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPKN6Assimp3FBX14AnimationLayerESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #12
  %77 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPKN6Assimp3FBX14AnimationLayerESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #12
  br i1 %77, label %.lr.ph174, label %._crit_edge175

78:                                               ; preds = %70
  %79 = landingpad { ptr, i32 }
          cleanup
  br label %117

80:                                               ; preds = %71
  %81 = landingpad { ptr, i32 }
          cleanup
  br label %117

.lr.ph:                                           ; preds = %72, %.thread168
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #12
  %82 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPKN6Assimp3FBX18AnimationCurveNodeESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #12
  %83 = load ptr, ptr %82, align 8, !tbaa !5
  store ptr %83, ptr %18, align 8, !tbaa !5
  %.not157 = icmp eq ptr %83, null
  br i1 %.not157, label %84, label %85

84:                                               ; preds = %.lr.ph
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.195, ptr noundef nonnull @.str.5, i32 noundef 2675)
          to label %._crit_edge247 unwind label %89

._crit_edge247:                                   ; preds = %84
  %.pre = load ptr, ptr %18, align 8, !tbaa !5
  br label %85

85:                                               ; preds = %._crit_edge247, %.lr.ph
  %86 = phi ptr [ %.pre, %._crit_edge247 ], [ %83, %.lr.ph ]
  %87 = call noundef ptr @_ZNK6Assimp3FBX18AnimationCurveNode6TargetEv(ptr noundef nonnull align 8 dereferenceable(168) %86)
  %88 = icmp eq ptr %87, null
  br i1 %88, label %.thread, label %91

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

91:                                               ; preds = %85
  %92 = call ptr @__dynamic_cast(ptr nonnull %87, ptr nonnull @_ZTIN6Assimp3FBX6ObjectE, ptr nonnull @_ZTIN6Assimp3FBX5ModelE, i64 0) #12
  %.not158 = icmp eq ptr %92, null
  br i1 %.not158, label %.thread, label %93

93:                                               ; preds = %91
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #12
  %94 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Assimp3FBX6Object4NameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(56) %92)
  invoke void @_ZN6Assimp3FBX12FBXConverter11FixNodeNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(32) %94)
          to label %95 unwind label %101

95:                                               ; preds = %93
  %96 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISB_EESt4lessIS5_ESaISt4pairIKS5_SD_EEEixERSH_(ptr noundef nonnull align 8 dereferenceable(48) %9, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %97 unwind label %103

97:                                               ; preds = %95
  invoke void @_ZNSt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaIS4_EE9push_backERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %96, ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %98 unwind label %103

98:                                               ; preds = %97
  %99 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapIPKN6Assimp3FBX18AnimationCurveNodeEPKNS1_14AnimationLayerESt4lessIS4_ESaISt4pairIKS4_S7_EEEixERSB_(ptr noundef nonnull align 8 dereferenceable(48) %10, ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %100 unwind label %103

100:                                              ; preds = %98
  store ptr %69, ptr %99, align 8, !tbaa !5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #12
  br label %.thread168

101:                                              ; preds = %93
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %116

103:                                              ; preds = %98, %97, %95
  %104 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #12
  br label %116

.thread:                                          ; preds = %85, %91
  %105 = load ptr, ptr %18, align 8, !tbaa !5
  %106 = call noundef ptr @_ZNK6Assimp3FBX18AnimationCurveNode6TargetEv(ptr noundef nonnull align 8 dereferenceable(168) %105)
  %107 = icmp eq ptr %106, null
  br i1 %107, label %.thread168, label %110

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

110:                                              ; preds = %.thread
  %111 = call ptr @__dynamic_cast(ptr nonnull %106, ptr nonnull @_ZTIN6Assimp3FBX6ObjectE, ptr nonnull @_ZTIN6Assimp3FBX17BlendShapeChannelE, i64 0) #12
  %.not159 = icmp eq ptr %111, null
  br i1 %.not159, label %.thread168, label %112

112:                                              ; preds = %110
  %113 = load ptr, ptr %18, align 8, !tbaa !5
  invoke void @_ZN6Assimp3FBX12FBXConverter21ProcessMorphAnimDatasEPSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS2_IlP12morphKeyDataSt4lessIlESaISt4pairIKlSA_EEESB_IS8_ESaISD_IKS8_SI_EEEPKNS0_17BlendShapeChannelEPKNS0_18AnimationCurveNodeE(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull %12, ptr noundef nonnull %111, ptr noundef %113)
          to label %.thread168 unwind label %108

.thread168:                                       ; preds = %.thread, %110, %112, %100
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #12
  %114 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPKN6Assimp3FBX18AnimationCurveNodeESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #12
  %115 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPKN6Assimp3FBX18AnimationCurveNodeESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #12
  br i1 %115, label %.lr.ph, label %._crit_edge

116:                                              ; preds = %108, %103, %101, %89
  %.pn160.pn.pn = phi { ptr, i32 } [ %90, %89 ], [ %109, %108 ], [ %104, %103 ], [ %102, %101 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #12
  call void @_ZNSt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #12
  br label %117

117:                                              ; preds = %80, %116, %78
  %.pn160.pn.pn.pn.pn = phi { ptr, i32 } [ %79, %78 ], [ %.pn160.pn.pn, %116 ], [ %81, %80 ]
  %.4 = extractvalue { ptr, i32 } %.pn160.pn.pn.pn.pn, 0
  %.4128 = extractvalue { ptr, i32 } %.pn160.pn.pn.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #12
  br label %420

118:                                              ; preds = %._crit_edge175
  %119 = invoke noundef i64 @_ZNK6Assimp3FBX14AnimationStack9LocalStopEv(ptr noundef nonnull align 8 dereferenceable(96) %1)
          to label %120 unwind label %129

120:                                              ; preds = %118
  %121 = or i64 %119, %67
  %.not = icmp eq i64 %121, 0
  %spec.select = select i1 %.not, i64 9223372036854755807, i64 %119
  %spec.select166 = select i1 %.not, i64 -9223372036854755807, i64 %67
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #12
  %122 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISB_EESt4lessIS5_ESaISt4pairIKS5_SD_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %9) #12
  store ptr %122, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #12
  %123 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISB_EESt4lessIS5_ESaISt4pairIKS5_SD_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %9) #12
  store ptr %123, ptr %24, align 8
  %124 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISD_EEEESJ_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  br i1 %124, label %.lr.ph177, label %._crit_edge178

125:                                              ; preds = %._crit_edge175
  %126 = landingpad { ptr, i32 }
          cleanup
  %127 = extractvalue { ptr, i32 } %126, 0
  %128 = extractvalue { ptr, i32 } %126, 1
  br label %419

129:                                              ; preds = %118
  %130 = landingpad { ptr, i32 }
          cleanup
  %131 = extractvalue { ptr, i32 } %130, 0
  %132 = extractvalue { ptr, i32 } %130, 1
  br label %419

._crit_edge178:                                   ; preds = %136, %120
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #12
  %133 = call noundef i64 @_ZNKSt6vectorIP10aiNodeAnimSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  %.not149 = icmp eq i64 %133, 0
  br i1 %.not149, label %155, label %157

.lr.ph177:                                        ; preds = %120, %136
  %134 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISD_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #12
  %135 = getelementptr inbounds i8, ptr %134, i64 32
  invoke void @_ZN6Assimp3FBX12FBXConverter22GenerateNodeAnimationsERSt6vectorIP10aiNodeAnimSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_IPKNS0_18AnimationCurveNodeESaISI_EERKSt3mapISI_PKNS0_14AnimationLayerESt4lessISI_ESaISt4pairIKSI_SQ_EEEllRdS10_(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(32) %134, ptr noundef nonnull align 8 dereferenceable(24) %135, ptr noundef nonnull align 8 dereferenceable(48) %10, i64 noundef %spec.select166, i64 noundef %spec.select, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %136 unwind label %139

136:                                              ; preds = %.lr.ph177
  %137 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISD_EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #12
  %138 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISD_EEEESJ_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  br i1 %138, label %.lr.ph177, label %._crit_edge178

139:                                              ; preds = %.lr.ph177
  %140 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %141 = extractvalue { ptr, i32 } %140, 0
  %142 = extractvalue { ptr, i32 } %140, 1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #12
  %143 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #12
  %144 = icmp eq i32 %142, %143
  br i1 %144, label %145, label %419

145:                                              ; preds = %139
  %146 = call ptr @__cxa_begin_catch(ptr %141) #12
  %147 = call ptr @_ZNSt6vectorIP10aiNodeAnimSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  %148 = call ptr @_ZNSt6vectorIP10aiNodeAnimSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  invoke void @_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPP10aiNodeAnimSt6vectorIS3_SaIS3_EEEEN6Assimp3FBX4Util10delete_funIS2_EEET0_T_SF_SE_(ptr %147, ptr %148)
          to label %149 unwind label %150

149:                                              ; preds = %145
  invoke void @__cxa_rethrow() #14
          to label %427 unwind label %150

150:                                              ; preds = %149, %145
  %151 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %152 unwind label %424

152:                                              ; preds = %150
  %153 = extractvalue { ptr, i32 } %151, 1
  %154 = extractvalue { ptr, i32 } %151, 0
  br label %419

155:                                              ; preds = %._crit_edge178
  %156 = call noundef i64 @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS_IlP12morphKeyDataSt4lessIlESaISt4pairIKlS7_EEES8_IS5_ESaISA_IKS5_SF_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %12) #12
  %.not150 = icmp eq i64 %156, 0
  br i1 %.not150, label %286, label %157

157:                                              ; preds = %155, %._crit_edge178
  %158 = call noundef i64 @_ZNKSt6vectorIP10aiNodeAnimSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  %.not151 = icmp eq i64 %158, 0
  br i1 %.not151, label %182, label %159

159:                                              ; preds = %157
  %160 = call noundef i64 @_ZNKSt6vectorIP10aiNodeAnimSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  %161 = icmp ugt i64 %160, 2305843009213693951
  %162 = shl nuw i64 %160, 3
  %163 = select i1 %161, i64 -1, i64 %162
  %164 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %163) #13
          to label %165 unwind label %178

165:                                              ; preds = %159
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %164, i8 0, i64 %163, i1 false)
  %166 = load ptr, ptr %3, align 8, !tbaa !5
  %167 = getelementptr inbounds i8, ptr %166, i64 1056
  store ptr %164, ptr %167, align 8, !tbaa !11
  %168 = call noundef i64 @_ZNKSt6vectorIP10aiNodeAnimSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  %169 = trunc i64 %168 to i32
  %170 = load ptr, ptr %3, align 8, !tbaa !5
  %171 = getelementptr inbounds i8, ptr %170, i64 1048
  store i32 %169, ptr %171, align 8, !tbaa !15
  %172 = call ptr @_ZNSt6vectorIP10aiNodeAnimSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  %173 = call ptr @_ZNSt6vectorIP10aiNodeAnimSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  %174 = load ptr, ptr %3, align 8, !tbaa !5
  %175 = getelementptr inbounds i8, ptr %174, i64 1056
  %176 = load ptr, ptr %175, align 8, !tbaa !11
  %177 = invoke noundef ptr @_ZSt11swap_rangesIN9__gnu_cxx17__normal_iteratorIPP10aiNodeAnimSt6vectorIS3_SaIS3_EEEES4_ET0_T_SA_S9_(ptr %172, ptr %173, ptr noundef %176)
          to label %182 unwind label %178

178:                                              ; preds = %290, %165, %159
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  %181 = extractvalue { ptr, i32 } %179, 1
  br label %419

182:                                              ; preds = %165, %157
  %183 = call noundef i64 @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS_IlP12morphKeyDataSt4lessIlESaISt4pairIKlS7_EEES8_IS5_ESaISA_IKS5_SF_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %12) #12
  %.not152 = icmp eq i64 %183, 0
  br i1 %.not152, label %291, label %184

184:                                              ; preds = %182
  %185 = call noundef i64 @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS_IlP12morphKeyDataSt4lessIlESaISt4pairIKlS7_EEES8_IS5_ESaISA_IKS5_SF_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %12) #12
  %186 = shl i64 %185, 3
  %187 = and i64 %186, 34359738360
  %188 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %187) #13
          to label %189 unwind label %198

189:                                              ; preds = %184
  %190 = trunc i64 %185 to i32
  %191 = load ptr, ptr %3, align 8, !tbaa !5
  %192 = getelementptr inbounds i8, ptr %191, i64 1088
  store ptr %188, ptr %192, align 8, !tbaa !16
  %193 = getelementptr inbounds i8, ptr %191, i64 1080
  store i32 %190, ptr %193, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #12
  %194 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS_IlP12morphKeyDataSt4lessIlESaISt4pairIKlS7_EEES8_IS5_ESaISA_IKS5_SF_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %12) #12
  store ptr %194, ptr %25, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #12
  %195 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS_IlP12morphKeyDataSt4lessIlESaISt4pairIKlS7_EEES8_IS5_ESaISA_IKS5_SF_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %12) #12
  store ptr %195, ptr %26, align 8
  %196 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt3mapIlP12morphKeyDataSt4lessIlESaIS0_IKlSA_EEEEESL_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #12
  br i1 %196, label %.lr.ph189, label %._crit_edge190

.lr.ph189:                                        ; preds = %189
  %197 = getelementptr inbounds i8, ptr %0, i64 440
  br label %200

._crit_edge190:                                   ; preds = %._crit_edge186, %189
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #12
  br label %291

198:                                              ; preds = %184
  %199 = landingpad { ptr, i32 }
          cleanup
  br label %285

200:                                              ; preds = %.lr.ph189, %._crit_edge186
  %.0140187 = phi i32 [ 0, %.lr.ph189 ], [ %229, %._crit_edge186 ]
  %201 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt3mapIlP12morphKeyDataSt4lessIlESaIS0_IKlSA_EEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #12
  %202 = getelementptr inbounds i8, ptr %201, i64 32
  %203 = load ptr, ptr %202, align 8, !tbaa !18
  %204 = call noundef i64 @_ZNKSt3mapIlP12morphKeyDataSt4lessIlESaISt4pairIKlS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %203) #12
  %205 = invoke noalias noundef nonnull dereferenceable(1040) ptr @_Znwm(i64 noundef 1040) #13
          to label %206 unwind label %234

206:                                              ; preds = %200
  %207 = trunc i64 %204 to i32
  call void @_ZN15aiMeshMorphAnimC2Ev(ptr noundef nonnull align 8 dereferenceable(1040) %205) #12
  call void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %205, ptr noundef nonnull align 8 dereferenceable(32) %201)
  %208 = getelementptr inbounds i8, ptr %205, i64 1028
  store i32 %207, ptr %208, align 4, !tbaa !23
  %209 = and i64 %204, 4294967295
  %210 = shl nuw nsw i64 %209, 5
  %211 = or disjoint i64 %210, 8
  %212 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %211) #13
          to label %213 unwind label %234

213:                                              ; preds = %206
  store i64 %209, ptr %212, align 16
  %214 = getelementptr inbounds i8, ptr %212, i64 8
  %215 = icmp eq i64 %209, 0
  br i1 %215, label %.loopexit, label %216

216:                                              ; preds = %213
  %217 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %214, i64 %209
  br label %218

218:                                              ; preds = %218, %216
  %219 = phi ptr [ %214, %216 ], [ %220, %218 ]
  call void @_ZN14aiMeshMorphKeyC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %219) #12
  %220 = getelementptr inbounds i8, ptr %219, i64 32
  %221 = icmp eq ptr %220, %217
  br i1 %221, label %.loopexit, label %218

.loopexit:                                        ; preds = %218, %213
  %222 = getelementptr inbounds i8, ptr %205, i64 1032
  store ptr %214, ptr %222, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #12
  %223 = call ptr @_ZNSt3mapIlP12morphKeyDataSt4lessIlESaISt4pairIKlS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %203) #12
  store ptr %223, ptr %27, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #12
  %224 = call ptr @_ZNSt3mapIlP12morphKeyDataSt4lessIlESaISt4pairIKlS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %203) #12
  store ptr %224, ptr %28, align 8
  %225 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKlP12morphKeyDataEES7_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #12
  br i1 %225, label %.lr.ph185, label %._crit_edge186

._crit_edge186:                                   ; preds = %._crit_edge182, %.loopexit
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #12
  %226 = load ptr, ptr %3, align 8, !tbaa !5
  %227 = getelementptr inbounds i8, ptr %226, i64 1088
  %228 = load ptr, ptr %227, align 8, !tbaa !16
  %229 = add i32 %.0140187, 1
  %230 = zext i32 %.0140187 to i64
  %231 = getelementptr inbounds ptr, ptr %228, i64 %230
  store ptr %205, ptr %231, align 8, !tbaa !5
  %232 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt3mapIlP12morphKeyDataSt4lessIlESaIS0_IKlSA_EEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #12
  %233 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt3mapIlP12morphKeyDataSt4lessIlESaIS0_IKlSA_EEEEESL_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #12
  br i1 %233, label %200, label %._crit_edge190

234:                                              ; preds = %206, %200
  %235 = landingpad { ptr, i32 }
          cleanup
  br label %284

.lr.ph185:                                        ; preds = %.loopexit, %._crit_edge182
  %.0141183 = phi i32 [ %260, %._crit_edge182 ], [ 0, %.loopexit ]
  %236 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKlP12morphKeyDataEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #12
  %237 = getelementptr inbounds i8, ptr %236, i64 8
  %238 = load ptr, ptr %237, align 8, !tbaa !26
  %239 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %238) #12
  %240 = trunc i64 %239 to i32
  %241 = load ptr, ptr %222, align 8, !tbaa !25
  %242 = zext i32 %.0141183 to i64
  %243 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %241, i64 %242, i32 3
  store i32 %240, ptr %243, align 8, !tbaa !28
  %244 = and i64 %239, 4294967295
  %245 = shl nuw nsw i64 %244, 2
  %246 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %245) #13
          to label %247 unwind label %263

247:                                              ; preds = %.lr.ph185
  %248 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %241, i64 %242, i32 1
  store ptr %246, ptr %248, align 8, !tbaa !30
  %249 = shl nuw nsw i64 %244, 3
  %250 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %249) #13
          to label %251 unwind label %263

251:                                              ; preds = %247
  %252 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %241, i64 %242, i32 2
  store ptr %250, ptr %252, align 8, !tbaa !31
  %253 = load i64, ptr %236, align 8, !tbaa !32
  %254 = sitofp i64 %253 to double
  %255 = fdiv double %254, 0x422581D1AF600000
  %256 = load double, ptr %197, align 8, !tbaa !33
  %257 = fmul double %256, %255
  %258 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %241, i64 %242
  store double %257, ptr %258, align 8, !tbaa !92
  %.not209 = icmp eq i32 %240, 0
  br i1 %.not209, label %._crit_edge182, label %.lr.ph181

.lr.ph181:                                        ; preds = %251
  %259 = getelementptr inbounds i8, ptr %238, i64 24
  %wide.trip.count = and i64 %239, 4294967295
  br label %265

._crit_edge182:                                   ; preds = %274, %251
  %260 = add i32 %.0141183, 1
  %261 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKlP12morphKeyDataEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #12
  %262 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKlP12morphKeyDataEES7_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #12
  br i1 %262, label %.lr.ph185, label %._crit_edge186

263:                                              ; preds = %247, %.lr.ph185
  %264 = landingpad { ptr, i32 }
          cleanup
  br label %283

265:                                              ; preds = %.lr.ph181, %274
  %indvars.iv = phi i64 [ 0, %.lr.ph181 ], [ %indvars.iv.next, %274 ]
  %266 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %238, i64 noundef %indvars.iv)
          to label %267 unwind label %281

267:                                              ; preds = %265
  %268 = load i32, ptr %266, align 4, !tbaa !93
  %269 = load ptr, ptr %222, align 8, !tbaa !25
  %270 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %269, i64 %242, i32 1
  %271 = load ptr, ptr %270, align 8, !tbaa !30
  %272 = getelementptr inbounds i32, ptr %271, i64 %indvars.iv
  store i32 %268, ptr %272, align 4, !tbaa !93
  %273 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %259, i64 noundef %indvars.iv)
          to label %274 unwind label %281

274:                                              ; preds = %267
  %275 = load float, ptr %273, align 4, !tbaa !94
  %276 = fpext float %275 to double
  %277 = load ptr, ptr %222, align 8, !tbaa !25
  %278 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %277, i64 %242, i32 2
  %279 = load ptr, ptr %278, align 8, !tbaa !31
  %280 = getelementptr inbounds double, ptr %279, i64 %indvars.iv
  store double %276, ptr %280, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge182, label %265, !llvm.loop !96

281:                                              ; preds = %267, %265
  %282 = landingpad { ptr, i32 }
          cleanup
  br label %283

283:                                              ; preds = %281, %263
  %.pn = phi { ptr, i32 } [ %282, %281 ], [ %264, %263 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #12
  br label %284

284:                                              ; preds = %283, %234
  %.pn.pn = phi { ptr, i32 } [ %.pn, %283 ], [ %235, %234 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #12
  br label %285

285:                                              ; preds = %284, %198
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %284 ], [ %199, %198 ]
  %.7 = extractvalue { ptr, i32 } %.pn.pn.pn, 0
  %.7131 = extractvalue { ptr, i32 } %.pn.pn.pn, 1
  br label %419

286:                                              ; preds = %155
  %287 = load ptr, ptr %3, align 8, !tbaa !5
  %288 = icmp eq ptr %287, null
  br i1 %288, label %290, label %289

289:                                              ; preds = %286
  call void @_ZN11aiAnimationD2Ev(ptr noundef nonnull align 8 dereferenceable(1096) %287) #12
  call void @_ZdlPvm(ptr noundef nonnull %287, i64 noundef 1096) #15
  br label %290

290:                                              ; preds = %289, %286
  call void @_ZNSt6vectorIP11aiAnimationSaIS1_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #12
  invoke void @_ZN6Assimp12LogFunctionsINS_11FBXImporterEE7LogInfoIJRA44_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvDpOT_(ptr noundef nonnull align 1 dereferenceable(44) @.str.196, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %417 unwind label %178

291:                                              ; preds = %182, %._crit_edge190
  br i1 %.not, label %301, label %292

292:                                              ; preds = %291
  %293 = insertelement <2 x i64> poison, i64 %119, i64 0
  %294 = insertelement <2 x i64> %293, i64 %67, i64 1
  %295 = sitofp <2 x i64> %294 to <2 x double>
  %296 = getelementptr inbounds i8, ptr %0, i64 440
  %297 = load <2 x double>, ptr %296, align 8
  %298 = fdiv <2 x double> %295, <double 0x422581D1AF600000, double 0x422581D1AF600000>
  %299 = shufflevector <2 x double> %297, <2 x double> poison, <2 x i32> zeroinitializer
  %300 = fmul <2 x double> %298, %299
  br label %306

301:                                              ; preds = %291
  %302 = load double, ptr %21, align 8, !tbaa !9
  %303 = load double, ptr %22, align 8, !tbaa !9
  %304 = insertelement <2 x double> poison, double %303, i64 0
  %305 = insertelement <2 x double> %304, double %302, i64 1
  br label %306

306:                                              ; preds = %301, %292
  %307 = phi <2 x double> [ %300, %292 ], [ %305, %301 ]
  %308 = load ptr, ptr %3, align 8, !tbaa !5
  %309 = getelementptr inbounds i8, ptr %308, i64 1048
  %310 = load i32, ptr %309, align 8, !tbaa !15
  %.not210 = icmp eq i32 %310, 0
  br i1 %.not210, label %.preheader, label %.lr.ph201

.lr.ph201:                                        ; preds = %306
  %311 = getelementptr inbounds i8, ptr %308, i64 1056
  %312 = load ptr, ptr %311, align 8, !tbaa !11
  %wide.trip.count235 = zext i32 %310 to i64
  %313 = extractelement <2 x double> %307, i64 1
  %314 = extractelement <2 x double> %307, i64 1
  %315 = extractelement <2 x double> %307, i64 1
  br label %321

.preheader:                                       ; preds = %._crit_edge198, %306
  %316 = getelementptr inbounds i8, ptr %308, i64 1080
  %317 = load i32, ptr %316, align 8, !tbaa !17
  %.not214 = icmp eq i32 %317, 0
  br i1 %.not214, label %._crit_edge208, label %.lr.ph207

.lr.ph207:                                        ; preds = %.preheader
  %318 = getelementptr inbounds i8, ptr %308, i64 1088
  %319 = load ptr, ptr %318, align 8, !tbaa !16
  %wide.trip.count245 = zext i32 %317 to i64
  %320 = extractelement <2 x double> %307, i64 1
  br label %393

321:                                              ; preds = %.lr.ph201, %._crit_edge198
  %indvars.iv232 = phi i64 [ 0, %.lr.ph201 ], [ %indvars.iv.next233, %._crit_edge198 ]
  %322 = getelementptr inbounds ptr, ptr %312, i64 %indvars.iv232
  %323 = load ptr, ptr %322, align 8, !tbaa !5
  %324 = getelementptr inbounds i8, ptr %323, i64 1028
  %325 = load i32, ptr %324, align 4, !tbaa !98
  %.not211 = icmp eq i32 %325, 0
  br i1 %.not211, label %.preheader172, label %.lr.ph193

.lr.ph193:                                        ; preds = %321
  %326 = getelementptr inbounds i8, ptr %323, i64 1032
  %327 = load ptr, ptr %326, align 8, !tbaa !101
  %wide.trip.count220 = zext i32 %325 to i64
  %xtraiter = and i64 %wide.trip.count220, 3
  %328 = icmp ult i32 %325, 4
  br i1 %328, label %.preheader172.loopexit.unr-lcssa, label %.lr.ph193.new

.lr.ph193.new:                                    ; preds = %.lr.ph193
  %unroll_iter = and i64 %wide.trip.count220, 4294967292
  br label %337

.preheader172.loopexit.unr-lcssa:                 ; preds = %337, %.lr.ph193
  %indvars.iv217.unr = phi i64 [ 0, %.lr.ph193 ], [ %indvars.iv.next218.3, %337 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader172, label %.epil.preheader

.epil.preheader:                                  ; preds = %.preheader172.loopexit.unr-lcssa, %.epil.preheader
  %indvars.iv217.epil = phi i64 [ %indvars.iv.next218.epil, %.epil.preheader ], [ %indvars.iv217.unr, %.preheader172.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %.preheader172.loopexit.unr-lcssa ]
  %329 = getelementptr inbounds %struct.aiVectorKey, ptr %327, i64 %indvars.iv217.epil
  %330 = load double, ptr %329, align 8, !tbaa !102
  %331 = fsub double %330, %313
  store double %331, ptr %329, align 8, !tbaa !102
  %indvars.iv.next218.epil = add nuw nsw i64 %indvars.iv217.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.preheader172, label %.epil.preheader, !llvm.loop !106

.preheader172:                                    ; preds = %.preheader172.loopexit.unr-lcssa, %.epil.preheader, %321
  %332 = getelementptr inbounds i8, ptr %323, i64 1040
  %333 = load i32, ptr %332, align 8, !tbaa !108
  %.not212 = icmp eq i32 %333, 0
  br i1 %.not212, label %.preheader171, label %.lr.ph195

.lr.ph195:                                        ; preds = %.preheader172
  %334 = getelementptr inbounds i8, ptr %323, i64 1048
  %335 = load ptr, ptr %334, align 8, !tbaa !109
  %wide.trip.count225 = zext i32 %333 to i64
  %xtraiter249 = and i64 %wide.trip.count225, 3
  %336 = icmp ult i32 %333, 4
  br i1 %336, label %.preheader171.loopexit.unr-lcssa, label %.lr.ph195.new

.lr.ph195.new:                                    ; preds = %.lr.ph195
  %unroll_iter252 = and i64 %wide.trip.count225, 4294967292
  br label %358

337:                                              ; preds = %337, %.lr.ph193.new
  %indvars.iv217 = phi i64 [ 0, %.lr.ph193.new ], [ %indvars.iv.next218.3, %337 ]
  %niter = phi i64 [ 0, %.lr.ph193.new ], [ %niter.next.3, %337 ]
  %338 = getelementptr inbounds %struct.aiVectorKey, ptr %327, i64 %indvars.iv217
  %339 = load double, ptr %338, align 8, !tbaa !102
  %340 = fsub double %339, %313
  store double %340, ptr %338, align 8, !tbaa !102
  %indvars.iv.next218 = or disjoint i64 %indvars.iv217, 1
  %341 = getelementptr inbounds %struct.aiVectorKey, ptr %327, i64 %indvars.iv.next218
  %342 = load double, ptr %341, align 8, !tbaa !102
  %343 = fsub double %342, %313
  store double %343, ptr %341, align 8, !tbaa !102
  %indvars.iv.next218.1 = or disjoint i64 %indvars.iv217, 2
  %344 = getelementptr inbounds %struct.aiVectorKey, ptr %327, i64 %indvars.iv.next218.1
  %345 = load double, ptr %344, align 8, !tbaa !102
  %346 = fsub double %345, %313
  store double %346, ptr %344, align 8, !tbaa !102
  %indvars.iv.next218.2 = or disjoint i64 %indvars.iv217, 3
  %347 = getelementptr inbounds %struct.aiVectorKey, ptr %327, i64 %indvars.iv.next218.2
  %348 = load double, ptr %347, align 8, !tbaa !102
  %349 = fsub double %348, %313
  store double %349, ptr %347, align 8, !tbaa !102
  %indvars.iv.next218.3 = add nuw nsw i64 %indvars.iv217, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.preheader172.loopexit.unr-lcssa, label %337, !llvm.loop !110

.preheader171.loopexit.unr-lcssa:                 ; preds = %358, %.lr.ph195
  %indvars.iv222.unr = phi i64 [ 0, %.lr.ph195 ], [ %indvars.iv.next223.3, %358 ]
  %lcmp.mod251.not = icmp eq i64 %xtraiter249, 0
  br i1 %lcmp.mod251.not, label %.preheader171, label %.epil.preheader248

.epil.preheader248:                               ; preds = %.preheader171.loopexit.unr-lcssa, %.epil.preheader248
  %indvars.iv222.epil = phi i64 [ %indvars.iv.next223.epil, %.epil.preheader248 ], [ %indvars.iv222.unr, %.preheader171.loopexit.unr-lcssa ]
  %epil.iter250 = phi i64 [ %epil.iter250.next, %.epil.preheader248 ], [ 0, %.preheader171.loopexit.unr-lcssa ]
  %350 = getelementptr inbounds %struct.aiQuatKey, ptr %335, i64 %indvars.iv222.epil
  %351 = load double, ptr %350, align 8, !tbaa !111
  %352 = fsub double %351, %314
  store double %352, ptr %350, align 8, !tbaa !111
  %indvars.iv.next223.epil = add nuw nsw i64 %indvars.iv222.epil, 1
  %epil.iter250.next = add i64 %epil.iter250, 1
  %epil.iter250.cmp.not = icmp eq i64 %epil.iter250.next, %xtraiter249
  br i1 %epil.iter250.cmp.not, label %.preheader171, label %.epil.preheader248, !llvm.loop !114

.preheader171:                                    ; preds = %.preheader171.loopexit.unr-lcssa, %.epil.preheader248, %.preheader172
  %353 = getelementptr inbounds i8, ptr %323, i64 1056
  %354 = load i32, ptr %353, align 8, !tbaa !115
  %.not213 = icmp eq i32 %354, 0
  br i1 %.not213, label %._crit_edge198, label %.lr.ph197

.lr.ph197:                                        ; preds = %.preheader171
  %355 = getelementptr inbounds i8, ptr %323, i64 1064
  %356 = load ptr, ptr %355, align 8, !tbaa !116
  %wide.trip.count230 = zext i32 %354 to i64
  %xtraiter255 = and i64 %wide.trip.count230, 3
  %357 = icmp ult i32 %354, 4
  br i1 %357, label %._crit_edge198.loopexit.unr-lcssa, label %.lr.ph197.new

.lr.ph197.new:                                    ; preds = %.lr.ph197
  %unroll_iter258 = and i64 %wide.trip.count230, 4294967292
  br label %374

358:                                              ; preds = %358, %.lr.ph195.new
  %indvars.iv222 = phi i64 [ 0, %.lr.ph195.new ], [ %indvars.iv.next223.3, %358 ]
  %niter253 = phi i64 [ 0, %.lr.ph195.new ], [ %niter253.next.3, %358 ]
  %359 = getelementptr inbounds %struct.aiQuatKey, ptr %335, i64 %indvars.iv222
  %360 = load double, ptr %359, align 8, !tbaa !111
  %361 = fsub double %360, %314
  store double %361, ptr %359, align 8, !tbaa !111
  %indvars.iv.next223 = or disjoint i64 %indvars.iv222, 1
  %362 = getelementptr inbounds %struct.aiQuatKey, ptr %335, i64 %indvars.iv.next223
  %363 = load double, ptr %362, align 8, !tbaa !111
  %364 = fsub double %363, %314
  store double %364, ptr %362, align 8, !tbaa !111
  %indvars.iv.next223.1 = or disjoint i64 %indvars.iv222, 2
  %365 = getelementptr inbounds %struct.aiQuatKey, ptr %335, i64 %indvars.iv.next223.1
  %366 = load double, ptr %365, align 8, !tbaa !111
  %367 = fsub double %366, %314
  store double %367, ptr %365, align 8, !tbaa !111
  %indvars.iv.next223.2 = or disjoint i64 %indvars.iv222, 3
  %368 = getelementptr inbounds %struct.aiQuatKey, ptr %335, i64 %indvars.iv.next223.2
  %369 = load double, ptr %368, align 8, !tbaa !111
  %370 = fsub double %369, %314
  store double %370, ptr %368, align 8, !tbaa !111
  %indvars.iv.next223.3 = add nuw nsw i64 %indvars.iv222, 4
  %niter253.next.3 = add i64 %niter253, 4
  %niter253.ncmp.3 = icmp eq i64 %niter253.next.3, %unroll_iter252
  br i1 %niter253.ncmp.3, label %.preheader171.loopexit.unr-lcssa, label %358, !llvm.loop !117

._crit_edge198.loopexit.unr-lcssa:                ; preds = %374, %.lr.ph197
  %indvars.iv227.unr = phi i64 [ 0, %.lr.ph197 ], [ %indvars.iv.next228.3, %374 ]
  %lcmp.mod257.not = icmp eq i64 %xtraiter255, 0
  br i1 %lcmp.mod257.not, label %._crit_edge198, label %.epil.preheader254

.epil.preheader254:                               ; preds = %._crit_edge198.loopexit.unr-lcssa, %.epil.preheader254
  %indvars.iv227.epil = phi i64 [ %indvars.iv.next228.epil, %.epil.preheader254 ], [ %indvars.iv227.unr, %._crit_edge198.loopexit.unr-lcssa ]
  %epil.iter256 = phi i64 [ %epil.iter256.next, %.epil.preheader254 ], [ 0, %._crit_edge198.loopexit.unr-lcssa ]
  %371 = getelementptr inbounds %struct.aiVectorKey, ptr %356, i64 %indvars.iv227.epil
  %372 = load double, ptr %371, align 8, !tbaa !102
  %373 = fsub double %372, %315
  store double %373, ptr %371, align 8, !tbaa !102
  %indvars.iv.next228.epil = add nuw nsw i64 %indvars.iv227.epil, 1
  %epil.iter256.next = add i64 %epil.iter256, 1
  %epil.iter256.cmp.not = icmp eq i64 %epil.iter256.next, %xtraiter255
  br i1 %epil.iter256.cmp.not, label %._crit_edge198, label %.epil.preheader254, !llvm.loop !118

._crit_edge198:                                   ; preds = %._crit_edge198.loopexit.unr-lcssa, %.epil.preheader254, %.preheader171
  %indvars.iv.next233 = add nuw nsw i64 %indvars.iv232, 1
  %exitcond236.not = icmp eq i64 %indvars.iv.next233, %wide.trip.count235
  br i1 %exitcond236.not, label %.preheader, label %321, !llvm.loop !119

374:                                              ; preds = %374, %.lr.ph197.new
  %indvars.iv227 = phi i64 [ 0, %.lr.ph197.new ], [ %indvars.iv.next228.3, %374 ]
  %niter259 = phi i64 [ 0, %.lr.ph197.new ], [ %niter259.next.3, %374 ]
  %375 = getelementptr inbounds %struct.aiVectorKey, ptr %356, i64 %indvars.iv227
  %376 = load double, ptr %375, align 8, !tbaa !102
  %377 = fsub double %376, %315
  store double %377, ptr %375, align 8, !tbaa !102
  %indvars.iv.next228 = or disjoint i64 %indvars.iv227, 1
  %378 = getelementptr inbounds %struct.aiVectorKey, ptr %356, i64 %indvars.iv.next228
  %379 = load double, ptr %378, align 8, !tbaa !102
  %380 = fsub double %379, %315
  store double %380, ptr %378, align 8, !tbaa !102
  %indvars.iv.next228.1 = or disjoint i64 %indvars.iv227, 2
  %381 = getelementptr inbounds %struct.aiVectorKey, ptr %356, i64 %indvars.iv.next228.1
  %382 = load double, ptr %381, align 8, !tbaa !102
  %383 = fsub double %382, %315
  store double %383, ptr %381, align 8, !tbaa !102
  %indvars.iv.next228.2 = or disjoint i64 %indvars.iv227, 3
  %384 = getelementptr inbounds %struct.aiVectorKey, ptr %356, i64 %indvars.iv.next228.2
  %385 = load double, ptr %384, align 8, !tbaa !102
  %386 = fsub double %385, %315
  store double %386, ptr %384, align 8, !tbaa !102
  %indvars.iv.next228.3 = add nuw nsw i64 %indvars.iv227, 4
  %niter259.next.3 = add i64 %niter259, 4
  %niter259.ncmp.3 = icmp eq i64 %niter259.next.3, %unroll_iter258
  br i1 %niter259.ncmp.3, label %._crit_edge198.loopexit.unr-lcssa, label %374, !llvm.loop !120

._crit_edge208:                                   ; preds = %._crit_edge205, %.preheader
  %shift = shufflevector <2 x double> %307, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %387 = fsub <2 x double> %307, %shift
  %388 = extractelement <2 x double> %387, i64 0
  %389 = getelementptr inbounds i8, ptr %308, i64 1032
  store double %388, ptr %389, align 8, !tbaa !121
  %390 = getelementptr inbounds i8, ptr %0, i64 440
  %391 = load double, ptr %390, align 8, !tbaa !33
  %392 = getelementptr inbounds i8, ptr %308, i64 1040
  store double %391, ptr %392, align 8, !tbaa !122
  br label %417

393:                                              ; preds = %.lr.ph207, %._crit_edge205
  %indvars.iv242 = phi i64 [ 0, %.lr.ph207 ], [ %indvars.iv.next243, %._crit_edge205 ]
  %394 = getelementptr inbounds ptr, ptr %319, i64 %indvars.iv242
  %395 = load ptr, ptr %394, align 8, !tbaa !5
  %396 = getelementptr inbounds i8, ptr %395, i64 1028
  %397 = load i32, ptr %396, align 4, !tbaa !23
  %.not215 = icmp eq i32 %397, 0
  br i1 %.not215, label %._crit_edge205, label %.lr.ph204

.lr.ph204:                                        ; preds = %393
  %398 = getelementptr inbounds i8, ptr %395, i64 1032
  %399 = load ptr, ptr %398, align 8, !tbaa !25
  %wide.trip.count240 = zext i32 %397 to i64
  %xtraiter261 = and i64 %wide.trip.count240, 3
  %400 = icmp ult i32 %397, 4
  br i1 %400, label %._crit_edge205.loopexit.unr-lcssa, label %.lr.ph204.new

.lr.ph204.new:                                    ; preds = %.lr.ph204
  %unroll_iter264 = and i64 %wide.trip.count240, 4294967292
  br label %404

._crit_edge205.loopexit.unr-lcssa:                ; preds = %404, %.lr.ph204
  %indvars.iv237.unr = phi i64 [ 0, %.lr.ph204 ], [ %indvars.iv.next238.3, %404 ]
  %lcmp.mod263.not = icmp eq i64 %xtraiter261, 0
  br i1 %lcmp.mod263.not, label %._crit_edge205, label %.epil.preheader260

.epil.preheader260:                               ; preds = %._crit_edge205.loopexit.unr-lcssa, %.epil.preheader260
  %indvars.iv237.epil = phi i64 [ %indvars.iv.next238.epil, %.epil.preheader260 ], [ %indvars.iv237.unr, %._crit_edge205.loopexit.unr-lcssa ]
  %epil.iter262 = phi i64 [ %epil.iter262.next, %.epil.preheader260 ], [ 0, %._crit_edge205.loopexit.unr-lcssa ]
  %401 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %399, i64 %indvars.iv237.epil
  %402 = load double, ptr %401, align 8, !tbaa !92
  %403 = fsub double %402, %320
  store double %403, ptr %401, align 8, !tbaa !92
  %indvars.iv.next238.epil = add nuw nsw i64 %indvars.iv237.epil, 1
  %epil.iter262.next = add i64 %epil.iter262, 1
  %epil.iter262.cmp.not = icmp eq i64 %epil.iter262.next, %xtraiter261
  br i1 %epil.iter262.cmp.not, label %._crit_edge205, label %.epil.preheader260, !llvm.loop !123

._crit_edge205:                                   ; preds = %._crit_edge205.loopexit.unr-lcssa, %.epil.preheader260, %393
  %indvars.iv.next243 = add nuw nsw i64 %indvars.iv242, 1
  %exitcond246.not = icmp eq i64 %indvars.iv.next243, %wide.trip.count245
  br i1 %exitcond246.not, label %._crit_edge208, label %393, !llvm.loop !124

404:                                              ; preds = %404, %.lr.ph204.new
  %indvars.iv237 = phi i64 [ 0, %.lr.ph204.new ], [ %indvars.iv.next238.3, %404 ]
  %niter265 = phi i64 [ 0, %.lr.ph204.new ], [ %niter265.next.3, %404 ]
  %405 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %399, i64 %indvars.iv237
  %406 = load double, ptr %405, align 8, !tbaa !92
  %407 = fsub double %406, %320
  store double %407, ptr %405, align 8, !tbaa !92
  %indvars.iv.next238 = or disjoint i64 %indvars.iv237, 1
  %408 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %399, i64 %indvars.iv.next238
  %409 = load double, ptr %408, align 8, !tbaa !92
  %410 = fsub double %409, %320
  store double %410, ptr %408, align 8, !tbaa !92
  %indvars.iv.next238.1 = or disjoint i64 %indvars.iv237, 2
  %411 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %399, i64 %indvars.iv.next238.1
  %412 = load double, ptr %411, align 8, !tbaa !92
  %413 = fsub double %412, %320
  store double %413, ptr %411, align 8, !tbaa !92
  %indvars.iv.next238.2 = or disjoint i64 %indvars.iv237, 3
  %414 = getelementptr inbounds %struct.aiMeshMorphKey, ptr %399, i64 %indvars.iv.next238.2
  %415 = load double, ptr %414, align 8, !tbaa !92
  %416 = fsub double %415, %320
  store double %416, ptr %414, align 8, !tbaa !92
  %indvars.iv.next238.3 = add nuw nsw i64 %indvars.iv237, 4
  %niter265.next.3 = add i64 %niter265, 4
  %niter265.ncmp.3 = icmp eq i64 %niter265.next.3, %unroll_iter264
  br i1 %niter265.ncmp.3, label %._crit_edge205.loopexit.unr-lcssa, label %404, !llvm.loop !125

417:                                              ; preds = %290, %._crit_edge208
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #12
  call void @_ZNSt6vectorIP10aiNodeAnimSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #12
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS_IlP12morphKeyDataSt4lessIlESaISt4pairIKlS7_EEES8_IS5_ESaISA_IKS5_SF_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #12
  call void @_ZNSt3mapIPKN6Assimp3FBX18AnimationCurveNodeEPKNS1_14AnimationLayerESt4lessIS4_ESaISt4pairIKS4_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %10) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %10) #12
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISB_EESt4lessIS5_ESaISt4pairIKS5_SD_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %9) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #12
  br label %418

418:                                              ; preds = %2, %417
  ret void

419:                                              ; preds = %129, %285, %178, %152, %139, %125
  %.10134 = phi i32 [ %128, %125 ], [ %132, %129 ], [ %153, %152 ], [ %142, %139 ], [ %.7131, %285 ], [ %181, %178 ]
  %.10 = phi ptr [ %127, %125 ], [ %131, %129 ], [ %154, %152 ], [ %141, %139 ], [ %.7, %285 ], [ %180, %178 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #12
  call void @_ZNSt6vectorIP10aiNodeAnimSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #12
  br label %420

420:                                              ; preds = %419, %117
  %.11135 = phi i32 [ %.4128, %117 ], [ %.10134, %419 ]
  %.11 = phi ptr [ %.4, %117 ], [ %.10, %419 ]
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS_IlP12morphKeyDataSt4lessIlESaISt4pairIKlS7_EEES8_IS5_ESaISA_IKS5_SF_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #12
  call void @_ZNSt3mapIPKN6Assimp3FBX18AnimationCurveNodeEPKNS1_14AnimationLayerESt4lessIS4_ESaISt4pairIKS4_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %10) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %10) #12
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISB_EESt4lessIS5_ESaISt4pairIKS5_SD_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %9) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) #12
  br label %421

421:                                              ; preds = %420, %58, %54, %44, %40
  %.12136 = phi i32 [ %.11135, %420 ], [ %47, %44 ], [ %61, %58 ], [ %57, %54 ], [ %43, %40 ]
  %.12 = phi ptr [ %.11, %420 ], [ %46, %44 ], [ %60, %58 ], [ %56, %54 ], [ %42, %40 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #12
  %422 = insertvalue { ptr, i32 } poison, ptr %.12, 0
  %423 = insertvalue { ptr, i32 } %422, i32 %.12136, 1
  resume { ptr, i32 } %423

424:                                              ; preds = %150
  %425 = landingpad { ptr, i32 }
          catch ptr null
  %426 = extractvalue { ptr, i32 } %425, 0
  call void @__clang_call_terminate(ptr %426) #16
  unreachable

427:                                              ; preds = %149
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX14AnimationStack6LayersEv(ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorIPKN6Assimp3FBX14AnimationLayerESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

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

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

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

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

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

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

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

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

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

declare void @_ZNK6Assimp3FBX14AnimationLayer5NodesEPKPKcm(ptr dead_on_unwind writable sret(%"class.std::vector.378") align 8, ptr noundef nonnull align 8 dereferenceable(80), ptr noundef, i64 noundef) local_unnamed_addr #9

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6Assimp3FBX18AnimationCurveNode6TargetEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #6 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter21ProcessMorphAnimDatasEPSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS2_IlP12morphKeyDataSt4lessIlESaISt4pairIKlSA_EEESB_IS8_ESaISD_IKS8_SI_EEEPKNS0_17BlendShapeChannelEPKNS0_18AnimationCurveNodeE(ptr noundef nonnull align 8 dereferenceable(489), ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #7 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK6Assimp3FBX14AnimationStack10LocalStartEv(ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK6Assimp3FBX14AnimationStack9LocalStopEv(ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #7 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISD_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter22GenerateNodeAnimationsERSt6vectorIP10aiNodeAnimSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_IPKNS0_18AnimationCurveNodeESaISI_EERKSt3mapISI_PKNS0_14AnimationLayerESt4lessISI_ESaISt4pairIKSI_SQ_EEEllRdS10_(ptr noundef nonnull align 8 dereferenceable(489), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(48), i64 noundef, i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #7 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPP10aiNodeAnimSt6vectorIS3_SaIS3_EEEEN6Assimp3FBX4Util10delete_funIS2_EEET0_T_SF_SE_(ptr, ptr) local_unnamed_addr #7

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZSt11swap_rangesIN9__gnu_cxx17__normal_iteratorIPP10aiNodeAnimSt6vectorIS3_SaIS3_EEEES4_ET0_T_SA_S9_(ptr, ptr, ptr noundef) local_unnamed_addr #7

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt3mapIlP12morphKeyDataSt4lessIlESaIS0_IKlSA_EEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6 align 2

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIP11aiAnimationSaIS1_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

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

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nofree nounwind willreturn memory(read) }
attributes #3 = { noinline noreturn nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress 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 = { 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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #9 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { 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 #11 = { nofree nosync nounwind memory(none) }
attributes #12 = { nounwind }
attributes #13 = { builtin allocsize(0) }
attributes #14 = { noreturn }
attributes #15 = { builtin nounwind }
attributes #16 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !6, i64 1056}
!12 = !{!"_ZTS11aiAnimation", !13, i64 0, !10, i64 1032, !10, i64 1040, !14, i64 1048, !6, i64 1056, !14, i64 1064, !6, i64 1072, !14, i64 1080, !6, i64 1088}
!13 = !{!"_ZTS8aiString", !14, i64 0, !7, i64 4}
!14 = !{!"int", !7, i64 0}
!15 = !{!12, !14, i64 1048}
!16 = !{!12, !6, i64 1088}
!17 = !{!12, !14, i64 1080}
!18 = !{!19, !6, i64 32}
!19 = !{!"_ZTSSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt3mapIlP12morphKeyDataSt4lessIlESaIS_IKlS9_EEEE", !20, i64 0, !6, i64 32}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !21, i64 0, !22, i64 8, !7, i64 16}
!21 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!22 = !{!"long", !7, i64 0}
!23 = !{!24, !14, i64 1028}
!24 = !{!"_ZTS15aiMeshMorphAnim", !13, i64 0, !14, i64 1028, !6, i64 1032}
!25 = !{!24, !6, i64 1032}
!26 = !{!27, !6, i64 8}
!27 = !{!"_ZTSSt4pairIKlP12morphKeyDataE", !22, i64 0, !6, i64 8}
!28 = !{!29, !14, i64 24}
!29 = !{!"_ZTS14aiMeshMorphKey", !10, i64 0, !6, i64 8, !6, i64 16, !14, i64 24}
!30 = !{!29, !6, i64 8}
!31 = !{!29, !6, i64 16}
!32 = !{!27, !22, i64 0}
!33 = !{!34, !10, i64 440}
!34 = !{!"_ZTSN6Assimp3FBX12FBXConverterE", !14, i64 0, !35, i64 8, !39, i64 32, !43, i64 56, !47, i64 80, !51, i64 104, !55, i64 128, !59, i64 152, !67, i64 200, !72, i64 248, !77, i64 296, !77, i64 344, !82, i64 392, !10, i64 440, !87, i64 448, !6, i64 472, !6, i64 480, !91, i64 488}
!35 = !{!"_ZTSSt6vectorIP6aiMeshSaIS1_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIP6aiMeshSaIS1_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIP6aiMeshSaIS1_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIP6aiMeshSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!39 = !{!"_ZTSSt6vectorIP10aiMaterialSaIS1_EE", !40, i64 0}
!40 = !{!"_ZTSSt12_Vector_baseIP10aiMaterialSaIS1_EE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIP10aiMaterialSaIS1_EE12_Vector_implE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIP10aiMaterialSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!43 = !{!"_ZTSSt6vectorIP11aiAnimationSaIS1_EE", !44, i64 0}
!44 = !{!"_ZTSSt12_Vector_baseIP11aiAnimationSaIS1_EE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIP11aiAnimationSaIS1_EE12_Vector_implE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIP11aiAnimationSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!47 = !{!"_ZTSSt6vectorIP7aiLightSaIS1_EE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseIP7aiLightSaIS1_EE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIP7aiLightSaIS1_EE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIP7aiLightSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!51 = !{!"_ZTSSt6vectorIP8aiCameraSaIS1_EE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseIP8aiCameraSaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIP8aiCameraSaIS1_EE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIP8aiCameraSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!55 = !{!"_ZTSSt6vectorIP9aiTextureSaIS1_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseIP9aiTextureSaIS1_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIP9aiTextureSaIS1_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIP9aiTextureSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!59 = !{!"_ZTSSt3mapIPKN6Assimp3FBX8MaterialEjSt4lessIS4_ESaISt4pairIKS4_jEEE", !60, i64 0}
!60 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX8MaterialESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE", !61, i64 0}
!61 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX8MaterialESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !62, i64 0, !64, i64 8}
!62 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX8MaterialEEE", !63, i64 0}
!63 = !{!"_ZTSSt4lessIPKN6Assimp3FBX8MaterialEE"}
!64 = !{!"_ZTSSt15_Rb_tree_header", !65, i64 0, !22, i64 32}
!65 = !{!"_ZTSSt18_Rb_tree_node_base", !66, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!66 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!67 = !{!"_ZTSSt3mapIPKN6Assimp3FBX5VideoEjSt4lessIS4_ESaISt4pairIKS4_jEEE", !68, i64 0}
!68 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX5VideoESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE", !69, i64 0}
!69 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX5VideoESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !70, i64 0, !64, i64 8}
!70 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX5VideoEEE", !71, i64 0}
!71 = !{!"_ZTSSt4lessIPKN6Assimp3FBX5VideoEE"}
!72 = !{!"_ZTSSt3mapIPKN6Assimp3FBX8GeometryESt6vectorIjSaIjEESt4lessIS4_ESaISt4pairIKS4_S7_EEE", !73, i64 0}
!73 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX8GeometryESt4pairIKS4_St6vectorIjSaIjEEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE", !74, i64 0}
!74 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX8GeometryESt4pairIKS4_St6vectorIjSaIjEEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !75, i64 0, !64, i64 8}
!75 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX8GeometryEEE", !76, i64 0}
!76 = !{!"_ZTSSt4lessIPKN6Assimp3FBX8GeometryEE"}
!77 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE", !78, i64 0}
!78 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !79, i64 0}
!79 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !80, i64 0, !64, i64 8}
!80 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !81, i64 0}
!81 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!82 = !{!"_ZTSSt3mapIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP6aiBoneSt4lessIS6_ESaISt4pairIS6_S8_EEE", !83, i64 0}
!83 = !{!"_ZTSSt8_Rb_treeIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIS6_P6aiBoneESt10_Select1stISA_ESt4lessIS6_ESaISA_EE", !84, i64 0}
!84 = !{!"_ZTSNSt8_Rb_treeIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIS6_P6aiBoneESt10_Select1stISA_ESt4lessIS6_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !85, i64 0, !64, i64 8}
!85 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !86, i64 0}
!86 = !{!"_ZTSSt4lessIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!87 = !{!"_ZTSSt6vectorIP10aiSkeletonSaIS1_EE", !88, i64 0}
!88 = !{!"_ZTSSt12_Vector_baseIP10aiSkeletonSaIS1_EE", !89, i64 0}
!89 = !{!"_ZTSNSt12_Vector_baseIP10aiSkeletonSaIS1_EE12_Vector_implE", !90, i64 0}
!90 = !{!"_ZTSNSt12_Vector_baseIP10aiSkeletonSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!91 = !{!"bool", !7, i64 0}
!92 = !{!29, !10, i64 0}
!93 = !{!14, !14, i64 0}
!94 = !{!95, !95, i64 0}
!95 = !{!"float", !7, i64 0}
!96 = distinct !{!96, !97}
!97 = !{!"llvm.loop.mustprogress"}
!98 = !{!99, !14, i64 1028}
!99 = !{!"_ZTS10aiNodeAnim", !13, i64 0, !14, i64 1028, !6, i64 1032, !14, i64 1040, !6, i64 1048, !14, i64 1056, !6, i64 1064, !100, i64 1072, !100, i64 1076}
!100 = !{!"_ZTS15aiAnimBehaviour", !7, i64 0}
!101 = !{!99, !6, i64 1032}
!102 = !{!103, !10, i64 0}
!103 = !{!"_ZTS11aiVectorKey", !10, i64 0, !104, i64 8, !105, i64 20}
!104 = !{!"_ZTS10aiVector3tIfE", !95, i64 0, !95, i64 4, !95, i64 8}
!105 = !{!"_ZTS19aiAnimInterpolation", !7, i64 0}
!106 = distinct !{!106, !107}
!107 = !{!"llvm.loop.unroll.disable"}
!108 = !{!99, !14, i64 1040}
!109 = !{!99, !6, i64 1048}
!110 = distinct !{!110, !97}
!111 = !{!112, !10, i64 0}
!112 = !{!"_ZTS9aiQuatKey", !10, i64 0, !113, i64 8, !105, i64 24}
!113 = !{!"_ZTS13aiQuaterniontIfE", !95, i64 0, !95, i64 4, !95, i64 8, !95, i64 12}
!114 = distinct !{!114, !107}
!115 = !{!99, !14, i64 1056}
!116 = !{!99, !6, i64 1064}
!117 = distinct !{!117, !97}
!118 = distinct !{!118, !107}
!119 = distinct !{!119, !97}
!120 = distinct !{!120, !97}
!121 = !{!12, !10, i64 1032}
!122 = !{!12, !10, i64 1040}
!123 = distinct !{!123, !107}
!124 = distinct !{!124, !97}
!125 = distinct !{!125, !97}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass