; LLVM IR from zeux/meshoptimizer :: gltf (write)

; 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::vector.58" = type { %"struct.std::_Vector_base.59" }
%"struct.std::_Vector_base.59" = type { %"struct.std::_Vector_base<const Track *, std::allocator<const Track *>>::_Vector_impl" }
%"struct.std::_Vector_base<const Track *, std::allocator<const Track *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const Track *, std::allocator<const Track *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const Track *, std::allocator<const Track *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%struct.StreamFormat = type { i32, i32, i8, i64, i32 }
%struct.Animation = type { ptr, float, i32, %"class.std::vector.63" }
%"class.std::vector.63" = type { %"struct.std::_Vector_base.64" }
%"struct.std::_Vector_base.64" = type { %"struct.std::_Vector_base<Track, std::allocator<Track>>::_Vector_impl" }
%"struct.std::_Vector_base<Track, std::allocator<Track>>::_Vector_impl" = type { %"struct.std::_Vector_base<Track, std::allocator<Track>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Track, std::allocator<Track>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.Track = type { ptr, i32, i8, i8, i64, i32, %"class.std::vector.28", %"class.std::vector.43" }
%"class.std::vector.28" = type { %"struct.std::_Vector_base.29" }
%"struct.std::_Vector_base.29" = 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 }
%"class.std::vector.43" = type { %"struct.std::_Vector_base.44" }
%"struct.std::_Vector_base.44" = type { %"struct.std::_Vector_base<Attr, std::allocator<Attr>>::_Vector_impl" }
%"struct.std::_Vector_base<Attr, std::allocator<Attr>>::_Vector_impl" = type { %"struct.std::_Vector_base<Attr, std::allocator<Attr>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Attr, std::allocator<Attr>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.cgltf_data = type { i32, ptr, %struct.cgltf_asset, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, ptr, i64, ptr, i64, %struct.cgltf_extras, i64, ptr, ptr, i64, ptr, i64, ptr, i64, ptr, i64, %struct.cgltf_memory_options, %struct.cgltf_file_options }
%struct.cgltf_asset = type { ptr, ptr, ptr, ptr, %struct.cgltf_extras, i64, ptr }
%struct.cgltf_extras = type { i64, i64, ptr }
%struct.cgltf_memory_options = type { ptr, ptr, ptr }
%struct.cgltf_file_options = type { ptr, ptr, ptr }
%struct.NodeInfo = type { i32, i8, i8, i32, i32, %"class.std::vector.53", i8, i64, ptr }
%"class.std::vector.53" = type { %"struct.std::_Vector_base.54" }
%"struct.std::_Vector_base.54" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.Settings = type { i32, i32, i32, i32, i8, i8, i8, i8, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, float, float, i8, i8, i8, float, i32, i8, i8, i8, i8, i8, [4 x float], [4 x i32], [4 x i32], [4 x i32], i32, i8, i8, i8, i8, i32 }
%struct.BufferView = type { i32, i32, i32, i64, i32, %"class.std::__cxx11::basic_string", i64 }

@.str.13 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [2 x i8], align 1
@stderr = external global ptr, align 8
@.str.88 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [66 x i8], align 1
@__PRETTY_FUNCTION__._Z14writeAnimationRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorI10BufferViewSaIS7_EES5_RmRK9AnimationmP10cgltf_dataRKS6_I8NodeInfoSaISH_EERK8Settings = external hidden unnamed_addr constant [177 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [3 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_Z13animationPath25cgltf_animation_path_type(i32 noundef) #0

declare void @_Z5commaRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) #1

declare void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #1

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #4

declare void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) #1

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL13writeAccessorRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm10cgltf_type20cgltf_component_typebmPKfS9_m(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef, i64 noundef, i32 noundef, i32 noundef, i1 noundef zeroext, i64 noundef, ptr noundef, ptr noundef, i64 noundef) #2

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z14writeAnimationRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorI10BufferViewSaIS7_EES5_RmRK9AnimationmP10cgltf_dataRKS6_I8NodeInfoSaISH_EERK8Settings(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 noundef %5, ptr noundef %6, ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 4 dereferenceable(148) %8) #2 personality ptr @__gxx_personality_v0 {
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i64, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca %"class.std::vector.58", align 8
  %20 = alloca i64, align 8
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca i8, align 1
  %28 = alloca i8, align 1
  %29 = alloca i64, align 8
  %30 = alloca ptr, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i8, align 1
  %34 = alloca float, align 4
  %35 = alloca float, align 4
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca ptr, align 8
  %44 = alloca i64, align 8
  %45 = alloca ptr, align 8
  %46 = alloca i8, align 1
  %47 = alloca i32, align 4
  %48 = alloca i64, align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %struct.StreamFormat, align 8
  %51 = alloca i32, align 4
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca ptr, align 8
  %56 = alloca i64, align 8
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store i64 %5, ptr %15, align 8, !tbaa !9
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  store ptr %8, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #7
  call void @_ZNSt6vectorIPK5TrackSaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %57

57:                                               ; preds = %108, %9
  %58 = load i64, ptr %20, align 8, !tbaa !9
  %59 = load ptr, ptr %14, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.Animation, ptr %59, i32 0, i32 3
  %61 = call noundef i64 @_ZNKSt6vectorI5TrackSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %60) #7
  %62 = icmp ult i64 %58, %61
  br i1 %62, label %64, label %63

63:                                               ; preds = %57
  store i32 2, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  br label %115

64:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %65 = load ptr, ptr %14, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.Animation, ptr %65, i32 0, i32 3
  %67 = load i64, ptr %20, align 8, !tbaa !9
  %68 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNKSt6vectorI5TrackSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %67) #7
  store ptr %68, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %69 = load ptr, ptr %17, align 8, !tbaa !5
  %70 = load ptr, ptr %22, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.Track, ptr %70, i32 0, i32 0
  %72 = load ptr, ptr %71, align 8, !tbaa !11
  %73 = load ptr, ptr %16, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.cgltf_data, ptr %73, i32 0, i32 25
  %75 = load ptr, ptr %74, align 8, !tbaa !24
  %76 = ptrtoint ptr %72 to i64
  %77 = ptrtoint ptr %75 to i64
  %78 = sub i64 %76, %77
  %79 = sdiv exact i64 %78, 264
  %80 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt6vectorI8NodeInfoSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %69, i64 noundef %79) #7
  store ptr %80, ptr %23, align 8, !tbaa !5
  %81 = load ptr, ptr %23, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.NodeInfo, ptr %81, i32 0, i32 1
  %83 = load i8, ptr %82, align 4, !tbaa !31, !range !38, !noundef !39
  %84 = trunc i8 %83 to i1
  br i1 %84, label %86, label %85

85:                                               ; preds = %64
  store i32 4, ptr %21, align 4
  br label %105

86:                                               ; preds = %64
  %87 = load ptr, ptr %18, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.Settings, ptr %87, i32 0, i32 12
  %89 = load i8, ptr %88, align 4, !tbaa !40, !range !38, !noundef !39
  %90 = trunc i8 %89 to i1
  br i1 %90, label %102, label %91

91:                                               ; preds = %86
  %92 = load ptr, ptr %23, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.NodeInfo, ptr %92, i32 0, i32 3
  %94 = load i32, ptr %93, align 8, !tbaa !43
  %95 = load ptr, ptr %22, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.Track, ptr %95, i32 0, i32 1
  %97 = load i32, ptr %96, align 8, !tbaa !44
  %98 = shl i32 1, %97
  %99 = and i32 %94, %98
  %100 = icmp eq i32 %99, 0
  br i1 %100, label %101, label %102

101:                                              ; preds = %91
  store i32 4, ptr %21, align 4
  br label %105

102:                                              ; preds = %91, %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %103 = load ptr, ptr %22, align 8, !tbaa !5
  store ptr %103, ptr %24, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPK5TrackSaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %104 unwind label %111

104:                                              ; preds = %102
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  store i32 0, ptr %21, align 4
  br label %105

105:                                              ; preds = %104, %101, %85
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  %106 = load i32, ptr %21, align 4
  switch i32 %106, label %635 [
    i32 0, label %107
    i32 4, label %108
  ]

107:                                              ; preds = %105
  br label %108

108:                                              ; preds = %107, %105
  %109 = load i64, ptr %20, align 8, !tbaa !9
  %110 = add i64 %109, 1
  store i64 %110, ptr %20, align 8, !tbaa !9
  br label %57, !llvm.loop !45

111:                                              ; preds = %102
  %112 = landingpad { ptr, i32 }
          cleanup
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %25, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  br label %629

115:                                              ; preds = %63
  %116 = call noundef zeroext i1 @_ZNKSt6vectorIPK5TrackSaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  br i1 %116, label %117, label %133

117:                                              ; preds = %115
  %118 = load ptr, ptr @stderr, align 8, !tbaa !5
  %119 = load i64, ptr %15, align 8, !tbaa !9
  %120 = trunc i64 %119 to i32
  %121 = load ptr, ptr %14, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.Animation, ptr %121, i32 0, i32 0
  %123 = load ptr, ptr %122, align 8, !tbaa !47
  %124 = icmp ne ptr %123, null
  br i1 %124, label %125, label %129

125:                                              ; preds = %117
  %126 = load ptr, ptr %14, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.Animation, ptr %126, i32 0, i32 0
  %128 = load ptr, ptr %127, align 8, !tbaa !47
  br label %130

129:                                              ; preds = %117
  br label %130

130:                                              ; preds = %129, %125
  %131 = phi ptr [ %128, %125 ], [ @.str.13, %129 ]
  %132 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %118, ptr noundef @.str.88, i32 noundef %120, ptr noundef %131) #7
  store i32 1, ptr %21, align 4
  br label %622

133:                                              ; preds = %115
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #7
  store i8 0, ptr %27, align 1, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #7
  store i8 0, ptr %28, align 1, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  store i64 0, ptr %29, align 8, !tbaa !9
  br label %134

134:                                              ; preds = %214, %133
  %135 = load i64, ptr %29, align 8, !tbaa !9
  %136 = call noundef i64 @_ZNKSt6vectorIPK5TrackSaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  %137 = icmp ult i64 %135, %136
  br i1 %137, label %139, label %138

138:                                              ; preds = %134
  store i32 5, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  br label %217

139:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %140 = load i64, ptr %29, align 8, !tbaa !9
  %141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPK5TrackSaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %140) #7
  %142 = load ptr, ptr %141, align 8, !tbaa !5
  store ptr %142, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %143 = load ptr, ptr %30, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.Track, ptr %143, i32 0, i32 5
  %145 = load i32, ptr %144, align 8, !tbaa !54
  %146 = icmp eq i32 %145, 2
  %147 = zext i1 %146 to i64
  %148 = select i1 %146, i32 3, i32 1
  %149 = sext i32 %148 to i64
  store i64 %149, ptr %31, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %150 = load ptr, ptr %30, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.Track, ptr %150, i32 0, i32 2
  %152 = load i8, ptr %151, align 4, !tbaa !55, !range !38, !noundef !39
  %153 = trunc i8 %152 to i1
  br i1 %153, label %154, label %155

154:                                              ; preds = %139
  br label %170

155:                                              ; preds = %139
  %156 = load ptr, ptr %30, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.Track, ptr %156, i32 0, i32 6
  %158 = call noundef zeroext i1 @_ZNKSt6vectorIfSaIfEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %157) #7
  br i1 %158, label %159, label %164

159:                                              ; preds = %155
  %160 = load ptr, ptr %14, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.Animation, ptr %160, i32 0, i32 2
  %162 = load i32, ptr %161, align 4, !tbaa !56
  %163 = sext i32 %162 to i64
  br label %168

164:                                              ; preds = %155
  %165 = load ptr, ptr %30, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.Track, ptr %165, i32 0, i32 6
  %167 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %166) #7
  br label %168

168:                                              ; preds = %164, %159
  %169 = phi i64 [ %163, %159 ], [ %167, %164 ]
  br label %170

170:                                              ; preds = %168, %154
  %171 = phi i64 [ 1, %154 ], [ %169, %168 ]
  store i64 %171, ptr %32, align 8, !tbaa !9
  %172 = load ptr, ptr %30, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.Track, ptr %172, i32 0, i32 7
  %174 = call noundef i64 @_ZNKSt6vectorI4AttrSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %173) #7
  %175 = load i64, ptr %31, align 8, !tbaa !9
  %176 = load ptr, ptr %30, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.Track, ptr %176, i32 0, i32 4
  %178 = load i64, ptr %177, align 8, !tbaa !57
  %179 = mul i64 %175, %178
  %180 = load i64, ptr %32, align 8, !tbaa !9
  %181 = mul i64 %179, %180
  %182 = icmp eq i64 %174, %181
  br i1 %182, label %183, label %184

183:                                              ; preds = %170
  br label %186

184:                                              ; preds = %170
  call void @__assert_fail(ptr noundef @.str.89, ptr noundef @.str.28, i32 noundef 1424, ptr noundef @__PRETTY_FUNCTION__._Z14writeAnimationRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorI10BufferViewSaIS7_EES5_RmRK9AnimationmP10cgltf_dataRKS6_I8NodeInfoSaISH_EERK8Settings) #8
  unreachable

185:                                              ; No predecessors!
  br label %186

186:                                              ; preds = %185, %183
  %187 = load i8, ptr %27, align 1, !tbaa !53, !range !38, !noundef !39
  %188 = trunc i8 %187 to i1
  br i1 %188, label %201, label %189

189:                                              ; preds = %186
  %190 = load ptr, ptr %30, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.Track, ptr %190, i32 0, i32 6
  %192 = call noundef zeroext i1 @_ZNKSt6vectorIfSaIfEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %191) #7
  br i1 %192, label %193, label %199

193:                                              ; preds = %189
  %194 = load ptr, ptr %30, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.Track, ptr %194, i32 0, i32 2
  %196 = load i8, ptr %195, align 4, !tbaa !55, !range !38, !noundef !39
  %197 = trunc i8 %196 to i1
  %198 = xor i1 %197, true
  br label %199

199:                                              ; preds = %193, %189
  %200 = phi i1 [ false, %189 ], [ %198, %193 ]
  br label %201

201:                                              ; preds = %199, %186
  %202 = phi i1 [ true, %186 ], [ %200, %199 ]
  %203 = zext i1 %202 to i8
  store i8 %203, ptr %27, align 1, !tbaa !53
  %204 = load i8, ptr %28, align 1, !tbaa !53, !range !38, !noundef !39
  %205 = trunc i8 %204 to i1
  br i1 %205, label %211, label %206

206:                                              ; preds = %201
  %207 = load ptr, ptr %30, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.Track, ptr %207, i32 0, i32 2
  %209 = load i8, ptr %208, align 4, !tbaa !55, !range !38, !noundef !39
  %210 = trunc i8 %209 to i1
  br label %211

211:                                              ; preds = %206, %201
  %212 = phi i1 [ true, %201 ], [ %210, %206 ]
  %213 = zext i1 %212 to i8
  store i8 %213, ptr %28, align 1, !tbaa !53
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %214

214:                                              ; preds = %211
  %215 = load i64, ptr %29, align 8, !tbaa !9
  %216 = add i64 %215, 1
  store i64 %216, ptr %29, align 8, !tbaa !9
  br label %134, !llvm.loop !58

217:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #7
  %218 = load i8, ptr %28, align 1, !tbaa !53, !range !38, !noundef !39
  %219 = trunc i8 %218 to i1
  br i1 %219, label %220, label %228

220:                                              ; preds = %217
  %221 = load i8, ptr %27, align 1, !tbaa !53, !range !38, !noundef !39
  %222 = trunc i8 %221 to i1
  br i1 %222, label %228, label %223

223:                                              ; preds = %220
  %224 = load ptr, ptr %14, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.Animation, ptr %224, i32 0, i32 2
  %226 = load i32, ptr %225, align 4, !tbaa !56
  %227 = icmp sgt i32 %226, 1
  br label %228

228:                                              ; preds = %223, %220, %217
  %229 = phi i1 [ false, %220 ], [ false, %217 ], [ %227, %223 ]
  %230 = zext i1 %229 to i8
  store i8 %230, ptr %33, align 1, !tbaa !53
  %231 = load i8, ptr %28, align 1, !tbaa !53, !range !38, !noundef !39
  %232 = trunc i8 %231 to i1
  br i1 %232, label %233, label %242

233:                                              ; preds = %228
  %234 = load i8, ptr %33, align 1, !tbaa !53, !range !38, !noundef !39
  %235 = trunc i8 %234 to i1
  br i1 %235, label %236, label %239

236:                                              ; preds = %233
  %237 = call noundef i64 @_ZNKSt6vectorIPK5TrackSaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  %238 = icmp eq i64 %237, 1
  br label %239

239:                                              ; preds = %236, %233
  %240 = phi i1 [ false, %233 ], [ %238, %236 ]
  %241 = xor i1 %240, true
  br label %242

242:                                              ; preds = %239, %228
  %243 = phi i1 [ false, %228 ], [ %241, %239 ]
  %244 = zext i1 %243 to i8
  store i8 %244, ptr %28, align 1, !tbaa !53
  %245 = load i8, ptr %27, align 1, !tbaa !53, !range !38, !noundef !39
  %246 = trunc i8 %245 to i1
  %247 = zext i1 %246 to i32
  %248 = load i8, ptr %28, align 1, !tbaa !53, !range !38, !noundef !39
  %249 = trunc i8 %248 to i1
  %250 = zext i1 %249 to i32
  %251 = add nsw i32 %247, %250
  %252 = load i8, ptr %33, align 1, !tbaa !53, !range !38, !noundef !39
  %253 = trunc i8 %252 to i1
  %254 = zext i1 %253 to i32
  %255 = add nsw i32 %251, %254
  %256 = icmp sle i32 %255, 2
  br i1 %256, label %257, label %258

257:                                              ; preds = %242
  br label %260

258:                                              ; preds = %242
  call void @__assert_fail(ptr noundef @.str.90, ptr noundef @.str.28, i32 noundef 1435, ptr noundef @__PRETTY_FUNCTION__._Z14writeAnimationRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorI10BufferViewSaIS7_EES5_RmRK9AnimationmP10cgltf_dataRKS6_I8NodeInfoSaISH_EERK8Settings) #8
  unreachable

259:                                              ; No predecessors!
  br label %260

260:                                              ; preds = %259, %257
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  %261 = load ptr, ptr %18, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.Settings, ptr %261, i32 0, i32 11
  %263 = load i32, ptr %262, align 4, !tbaa !59
  %264 = sitofp i32 %263 to float
  %265 = fdiv float 1.000000e+00, %264
  store float %265, ptr %34, align 4, !tbaa !60
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  %266 = load ptr, ptr %14, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.Animation, ptr %266, i32 0, i32 2
  %268 = load i32, ptr %267, align 4, !tbaa !56
  %269 = sub nsw i32 %268, 1
  %270 = sitofp i32 %269 to float
  %271 = load float, ptr %34, align 4, !tbaa !60
  %272 = fmul float %270, %271
  store float %272, ptr %35, align 4, !tbaa !60
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  %273 = load i8, ptr %27, align 1, !tbaa !53, !range !38, !noundef !39
  %274 = trunc i8 %273 to i1
  br i1 %274, label %275, label %289

275:                                              ; preds = %260
  %276 = load ptr, ptr %11, align 8, !tbaa !5
  %277 = load ptr, ptr %12, align 8, !tbaa !5
  %278 = load ptr, ptr %13, align 8, !tbaa !5
  %279 = load ptr, ptr %14, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.Animation, ptr %279, i32 0, i32 1
  %281 = load float, ptr %280, align 8, !tbaa !61
  %282 = load ptr, ptr %14, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.Animation, ptr %282, i32 0, i32 2
  %284 = load i32, ptr %283, align 4, !tbaa !56
  %285 = load float, ptr %34, align 4, !tbaa !60
  %286 = load ptr, ptr %18, align 8, !tbaa !5
  %287 = invoke noundef i64 @_ZL18writeAnimationTimeRSt6vectorI10BufferViewSaIS0_EERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERmfifRK8Settings(ptr noundef nonnull align 8 dereferenceable(24) %276, ptr noundef nonnull align 8 dereferenceable(32) %277, ptr noundef nonnull align 8 dereferenceable(8) %278, float noundef %281, i32 noundef %284, float noundef %285, ptr noundef nonnull align 4 dereferenceable(148) %286)
          to label %288 unwind label %328

288:                                              ; preds = %275
  br label %290

289:                                              ; preds = %260
  br label %290

290:                                              ; preds = %289, %288
  %291 = phi i64 [ %287, %288 ], [ 0, %289 ]
  store i64 %291, ptr %36, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %292 = load i8, ptr %28, align 1, !tbaa !53, !range !38, !noundef !39
  %293 = trunc i8 %292 to i1
  br i1 %293, label %294, label %304

294:                                              ; preds = %290
  %295 = load ptr, ptr %11, align 8, !tbaa !5
  %296 = load ptr, ptr %12, align 8, !tbaa !5
  %297 = load ptr, ptr %13, align 8, !tbaa !5
  %298 = load ptr, ptr %14, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.Animation, ptr %298, i32 0, i32 1
  %300 = load float, ptr %299, align 8, !tbaa !61
  %301 = load ptr, ptr %18, align 8, !tbaa !5
  %302 = invoke noundef i64 @_ZL18writeAnimationTimeRSt6vectorI10BufferViewSaIS0_EERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERmfifRK8Settings(ptr noundef nonnull align 8 dereferenceable(24) %295, ptr noundef nonnull align 8 dereferenceable(32) %296, ptr noundef nonnull align 8 dereferenceable(8) %297, float noundef %300, i32 noundef 1, float noundef 0.000000e+00, ptr noundef nonnull align 4 dereferenceable(148) %301)
          to label %303 unwind label %332

303:                                              ; preds = %294
  br label %305

304:                                              ; preds = %290
  br label %305

305:                                              ; preds = %304, %303
  %306 = phi i64 [ %302, %303 ], [ 0, %304 ]
  store i64 %306, ptr %37, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %307 = load i8, ptr %33, align 1, !tbaa !53, !range !38, !noundef !39
  %308 = trunc i8 %307 to i1
  br i1 %308, label %309, label %320

309:                                              ; preds = %305
  %310 = load ptr, ptr %11, align 8, !tbaa !5
  %311 = load ptr, ptr %12, align 8, !tbaa !5
  %312 = load ptr, ptr %13, align 8, !tbaa !5
  %313 = load ptr, ptr %14, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.Animation, ptr %313, i32 0, i32 1
  %315 = load float, ptr %314, align 8, !tbaa !61
  %316 = load float, ptr %35, align 4, !tbaa !60
  %317 = load ptr, ptr %18, align 8, !tbaa !5
  %318 = invoke noundef i64 @_ZL18writeAnimationTimeRSt6vectorI10BufferViewSaIS0_EERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERmfifRK8Settings(ptr noundef nonnull align 8 dereferenceable(24) %310, ptr noundef nonnull align 8 dereferenceable(32) %311, ptr noundef nonnull align 8 dereferenceable(8) %312, float noundef %315, i32 noundef 2, float noundef %316, ptr noundef nonnull align 4 dereferenceable(148) %317)
          to label %319 unwind label %336

319:                                              ; preds = %309
  br label %321

320:                                              ; preds = %305
  br label %321

321:                                              ; preds = %320, %319
  %322 = phi i64 [ %318, %319 ], [ 0, %320 ]
  store i64 %322, ptr %38, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  store i64 0, ptr %41, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  store i64 0, ptr %42, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  store ptr null, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  store i64 0, ptr %44, align 8, !tbaa !9
  br label %323

323:                                              ; preds = %570, %321
  %324 = load i64, ptr %44, align 8, !tbaa !9
  %325 = call noundef i64 @_ZNKSt6vectorIPK5TrackSaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  %326 = icmp ult i64 %324, %325
  br i1 %326, label %340, label %327

327:                                              ; preds = %323
  store i32 8, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %582

328:                                              ; preds = %275
  %329 = landingpad { ptr, i32 }
          cleanup
  %330 = extractvalue { ptr, i32 } %329, 0
  store ptr %330, ptr %25, align 8
  %331 = extractvalue { ptr, i32 } %329, 1
  store i32 %331, ptr %26, align 4
  br label %628

332:                                              ; preds = %294
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %25, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %26, align 4
  br label %627

336:                                              ; preds = %309
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %25, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %26, align 4
  br label %626

340:                                              ; preds = %323
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  %341 = load i64, ptr %44, align 8, !tbaa !9
  %342 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPK5TrackSaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %341) #7
  %343 = load ptr, ptr %342, align 8, !tbaa !5
  store ptr %343, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #7
  %344 = load i8, ptr %33, align 1, !tbaa !53, !range !38, !noundef !39
  %345 = trunc i8 %344 to i1
  br i1 %345, label %346, label %349

346:                                              ; preds = %340
  %347 = load i64, ptr %44, align 8, !tbaa !9
  %348 = icmp eq i64 %347, 0
  br label %349

349:                                              ; preds = %346, %340
  %350 = phi i1 [ false, %340 ], [ %348, %346 ]
  %351 = zext i1 %350 to i8
  store i8 %351, ptr %46, align 1, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #7
  %352 = load i8, ptr %46, align 1, !tbaa !53, !range !38, !noundef !39
  %353 = trunc i8 %352 to i1
  %354 = zext i1 %353 to i64
  %355 = select i1 %353, i32 2, i32 1
  store i32 %355, ptr %47, align 4, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %356 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %356, ptr %48, align 8, !tbaa !9
  %357 = load ptr, ptr %45, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.Track, ptr %357, i32 0, i32 6
  %359 = call noundef zeroext i1 @_ZNKSt6vectorIfSaIfEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %358) #7
  br i1 %359, label %388, label %360

360:                                              ; preds = %349
  %361 = load ptr, ptr %43, align 8, !tbaa !5
  %362 = icmp ne ptr %361, null
  br i1 %362, label %363, label %376

363:                                              ; preds = %360
  %364 = load ptr, ptr %45, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.Track, ptr %364, i32 0, i32 6
  %366 = load ptr, ptr %43, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.Track, ptr %366, i32 0, i32 6
  %368 = invoke noundef zeroext i1 @_ZSteqIfSaIfEEbRKSt6vectorIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(24) %365, ptr noundef nonnull align 8 dereferenceable(24) %367)
          to label %369 unwind label %372

369:                                              ; preds = %363
  br i1 %368, label %370, label %376

370:                                              ; preds = %369
  %371 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %371, ptr %48, align 8, !tbaa !9
  br label %387

372:                                              ; preds = %376, %363
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %25, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %26, align 4
  br label %581

376:                                              ; preds = %369, %360
  %377 = load ptr, ptr %11, align 8, !tbaa !5
  %378 = load ptr, ptr %12, align 8, !tbaa !5
  %379 = load ptr, ptr %13, align 8, !tbaa !5
  %380 = load ptr, ptr %45, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.Track, ptr %380, i32 0, i32 6
  %382 = load ptr, ptr %18, align 8, !tbaa !5
  %383 = invoke noundef i64 @_ZL18writeAnimationTimeRSt6vectorI10BufferViewSaIS0_EERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERmRKS_IfSaIfEERK8Settings(ptr noundef nonnull align 8 dereferenceable(24) %377, ptr noundef nonnull align 8 dereferenceable(32) %378, ptr noundef nonnull align 8 dereferenceable(8) %379, ptr noundef nonnull align 8 dereferenceable(24) %381, ptr noundef nonnull align 4 dereferenceable(148) %382)
          to label %384 unwind label %372

384:                                              ; preds = %376
  store i64 %383, ptr %48, align 8, !tbaa !9
  %385 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %385, ptr %42, align 8, !tbaa !9
  %386 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %386, ptr %43, align 8, !tbaa !5
  br label %387

387:                                              ; preds = %384, %370
  br label %388

388:                                              ; preds = %387, %349
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #7
  %389 = load ptr, ptr %45, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.Track, ptr %389, i32 0, i32 1
  %391 = load i32, ptr %390, align 8, !tbaa !44
  %392 = load ptr, ptr %45, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.Track, ptr %392, i32 0, i32 7
  %394 = load ptr, ptr %18, align 8, !tbaa !5
  %395 = load ptr, ptr %45, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.Track, ptr %395, i32 0, i32 5
  %397 = load i32, ptr %396, align 8, !tbaa !54
  %398 = icmp eq i32 %397, 2
  invoke void @_Z19writeKeyframeStreamRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE25cgltf_animation_path_typeRKSt6vectorI4AttrSaIS8_EERK8Settingsb(ptr dead_on_unwind writable sret(%struct.StreamFormat) align 8 %50, ptr noundef nonnull align 8 dereferenceable(32) %49, i32 noundef %391, ptr noundef nonnull align 8 dereferenceable(24) %393, ptr noundef nonnull align 4 dereferenceable(148) %394, i1 noundef zeroext %398)
          to label %399 unwind label %407

399:                                              ; preds = %388
  %400 = load i8, ptr %46, align 1, !tbaa !53, !range !38, !noundef !39
  %401 = trunc i8 %400 to i1
  br i1 %401, label %402, label %415

402:                                              ; preds = %399
  %403 = load i32, ptr %47, align 4, !tbaa !62
  %404 = icmp eq i32 %403, 2
  br i1 %404, label %405, label %406

405:                                              ; preds = %402
  br label %412

406:                                              ; preds = %402
  call void @__assert_fail(ptr noundef @.str.91, ptr noundef @.str.28, i32 noundef 1478, ptr noundef @__PRETTY_FUNCTION__._Z14writeAnimationRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorI10BufferViewSaIS7_EES5_RmRK9AnimationmP10cgltf_dataRKS6_I8NodeInfoSaISH_EERK8Settings) #8
  unreachable

407:                                              ; preds = %412, %388
  %408 = landingpad { ptr, i32 }
          cleanup
  %409 = extractvalue { ptr, i32 } %408, 0
  store ptr %409, ptr %25, align 8
  %410 = extractvalue { ptr, i32 } %408, 1
  store i32 %410, ptr %26, align 4
  br label %580

411:                                              ; No predecessors!
  br label %412

412:                                              ; preds = %411, %405
  %413 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %414 unwind label %407

414:                                              ; preds = %412
  br label %415

415:                                              ; preds = %414, %399
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #7
  %416 = load ptr, ptr %18, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.Settings, ptr %416, i32 0, i32 38
  %418 = load i8, ptr %417, align 1, !tbaa !63, !range !38, !noundef !39
  %419 = trunc i8 %418 to i1
  br i1 %419, label %420, label %425

420:                                              ; preds = %415
  %421 = load ptr, ptr %45, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.Track, ptr %421, i32 0, i32 1
  %423 = load i32, ptr %422, align 8, !tbaa !44
  %424 = icmp ne i32 %423, 4
  br label %425

425:                                              ; preds = %420, %415
  %426 = phi i1 [ false, %415 ], [ %424, %420 ]
  %427 = zext i1 %426 to i64
  %428 = select i1 %426, i32 0, i32 -1
  store i32 %428, ptr %51, align 4, !tbaa !64
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  %429 = load ptr, ptr %11, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.StreamFormat, ptr %50, i32 0, i32 4
  %431 = load i32, ptr %430, align 8, !tbaa !66
  %432 = load i32, ptr %51, align 4, !tbaa !64
  %433 = getelementptr inbounds %struct.StreamFormat, ptr %50, i32 0, i32 3
  %434 = load i64, ptr %433, align 8, !tbaa !71
  %435 = load ptr, ptr %45, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.Track, ptr %435, i32 0, i32 1
  %437 = load i32, ptr %436, align 8, !tbaa !44
  %438 = invoke noundef i64 @_Z13getBufferViewRSt6vectorI10BufferViewSaIS0_EENS0_4KindEN12StreamFormat6FilterENS0_11CompressionEmi(ptr noundef nonnull align 8 dereferenceable(24) %429, i32 noundef 4, i32 noundef %431, i32 noundef %432, i64 noundef %434, i32 noundef %437)
          to label %439 unwind label %509

439:                                              ; preds = %425
  store i64 %438, ptr %52, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  %440 = load ptr, ptr %11, align 8, !tbaa !5
  %441 = load i64, ptr %52, align 8, !tbaa !9
  %442 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorI10BufferViewSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %440, i64 noundef %441) #7
  %443 = getelementptr inbounds %struct.BufferView, ptr %442, i32 0, i32 5
  %444 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %443) #7
  store i64 %444, ptr %53, align 8, !tbaa !9
  %445 = load ptr, ptr %11, align 8, !tbaa !5
  %446 = load i64, ptr %52, align 8, !tbaa !9
  %447 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorI10BufferViewSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %445, i64 noundef %446) #7
  %448 = getelementptr inbounds %struct.BufferView, ptr %447, i32 0, i32 5
  %449 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %448, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %450 unwind label %513

450:                                              ; preds = %439
  %451 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_Z5commaRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %451)
          to label %452 unwind label %513

452:                                              ; preds = %450
  %453 = load ptr, ptr %12, align 8, !tbaa !5
  %454 = load i64, ptr %52, align 8, !tbaa !9
  %455 = load i64, ptr %53, align 8, !tbaa !9
  %456 = getelementptr inbounds %struct.StreamFormat, ptr %50, i32 0, i32 0
  %457 = load i32, ptr %456, align 8, !tbaa !72
  %458 = getelementptr inbounds %struct.StreamFormat, ptr %50, i32 0, i32 1
  %459 = load i32, ptr %458, align 4, !tbaa !73
  %460 = getelementptr inbounds %struct.StreamFormat, ptr %50, i32 0, i32 2
  %461 = load i8, ptr %460, align 8, !tbaa !74, !range !38, !noundef !39
  %462 = trunc i8 %461 to i1
  %463 = load ptr, ptr %45, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.Track, ptr %463, i32 0, i32 7
  %465 = call noundef i64 @_ZNKSt6vectorI4AttrSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %464) #7
  %466 = load i32, ptr %47, align 4, !tbaa !62
  %467 = sext i32 %466 to i64
  %468 = mul i64 %465, %467
  invoke void @_ZL13writeAccessorRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm10cgltf_type20cgltf_component_typebmPKfS9_m(ptr noundef nonnull align 8 dereferenceable(32) %453, i64 noundef %454, i64 noundef %455, i32 noundef %457, i32 noundef %459, i1 noundef zeroext %462, i64 noundef %468, ptr noundef null, ptr noundef null, i64 noundef 0)
          to label %469 unwind label %513

469:                                              ; preds = %452
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  %470 = load ptr, ptr %13, align 8, !tbaa !5
  %471 = load i64, ptr %470, align 8, !tbaa !9
  %472 = add i64 %471, 1
  store i64 %472, ptr %470, align 8, !tbaa !9
  store i64 %471, ptr %54, align 8, !tbaa !9
  invoke void @_Z5commaRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %473 unwind label %517

473:                                              ; preds = %469
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef @.str.92)
          to label %474 unwind label %517

474:                                              ; preds = %473
  %475 = load i8, ptr %46, align 1, !tbaa !53, !range !38, !noundef !39
  %476 = trunc i8 %475 to i1
  br i1 %476, label %477, label %479

477:                                              ; preds = %474
  %478 = load i64, ptr %38, align 8, !tbaa !9
  br label %490

479:                                              ; preds = %474
  %480 = load ptr, ptr %45, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.Track, ptr %480, i32 0, i32 2
  %482 = load i8, ptr %481, align 4, !tbaa !55, !range !38, !noundef !39
  %483 = trunc i8 %482 to i1
  br i1 %483, label %484, label %486

484:                                              ; preds = %479
  %485 = load i64, ptr %37, align 8, !tbaa !9
  br label %488

486:                                              ; preds = %479
  %487 = load i64, ptr %48, align 8, !tbaa !9
  br label %488

488:                                              ; preds = %486, %484
  %489 = phi i64 [ %485, %484 ], [ %487, %486 ]
  br label %490

490:                                              ; preds = %488, %477
  %491 = phi i64 [ %478, %477 ], [ %489, %488 ]
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef nonnull align 8 dereferenceable(32) %39, i64 noundef %491)
          to label %492 unwind label %517

492:                                              ; preds = %490
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef @.str.93)
          to label %493 unwind label %517

493:                                              ; preds = %492
  %494 = load i64, ptr %54, align 8, !tbaa !9
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef nonnull align 8 dereferenceable(32) %39, i64 noundef %494)
          to label %495 unwind label %517

495:                                              ; preds = %493
  %496 = load ptr, ptr %45, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.Track, ptr %496, i32 0, i32 5
  %498 = load i32, ptr %497, align 8, !tbaa !54
  %499 = icmp ne i32 %498, 0
  br i1 %499, label %500, label %521

500:                                              ; preds = %495
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef @.str.94)
          to label %501 unwind label %517

501:                                              ; preds = %500
  %502 = load ptr, ptr %45, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.Track, ptr %502, i32 0, i32 5
  %504 = load i32, ptr %503, align 8, !tbaa !54
  %505 = invoke noundef ptr @_ZL17interpolationType24cgltf_interpolation_type(i32 noundef %504)
          to label %506 unwind label %517

506:                                              ; preds = %501
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef %505)
          to label %507 unwind label %517

507:                                              ; preds = %506
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef @.str.15)
          to label %508 unwind label %517

508:                                              ; preds = %507
  br label %521

509:                                              ; preds = %425
  %510 = landingpad { ptr, i32 }
          cleanup
  %511 = extractvalue { ptr, i32 } %510, 0
  store ptr %511, ptr %25, align 8
  %512 = extractvalue { ptr, i32 } %510, 1
  store i32 %512, ptr %26, align 4
  br label %579

513:                                              ; preds = %452, %450, %439
  %514 = landingpad { ptr, i32 }
          cleanup
  %515 = extractvalue { ptr, i32 } %514, 0
  store ptr %515, ptr %25, align 8
  %516 = extractvalue { ptr, i32 } %514, 1
  store i32 %516, ptr %26, align 4
  br label %578

517:                                              ; preds = %521, %507, %506, %501, %500, %493, %492, %490, %473, %469
  %518 = landingpad { ptr, i32 }
          cleanup
  %519 = extractvalue { ptr, i32 } %518, 0
  store ptr %519, ptr %25, align 8
  %520 = extractvalue { ptr, i32 } %518, 1
  store i32 %520, ptr %26, align 4
  br label %577

521:                                              ; preds = %508, %495
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef @.str.26)
          to label %522 unwind label %517

522:                                              ; preds = %521
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #7
  %523 = load ptr, ptr %17, align 8, !tbaa !5
  %524 = load ptr, ptr %45, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.Track, ptr %524, i32 0, i32 0
  %526 = load ptr, ptr %525, align 8, !tbaa !11
  %527 = load ptr, ptr %16, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.cgltf_data, ptr %527, i32 0, i32 25
  %529 = load ptr, ptr %528, align 8, !tbaa !24
  %530 = ptrtoint ptr %526 to i64
  %531 = ptrtoint ptr %529 to i64
  %532 = sub i64 %530, %531
  %533 = sdiv exact i64 %532, 264
  %534 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt6vectorI8NodeInfoSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %523, i64 noundef %533) #7
  store ptr %534, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #7
  %535 = load ptr, ptr %55, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.NodeInfo, ptr %535, i32 0, i32 4
  %537 = load i32, ptr %536, align 4, !tbaa !75
  %538 = sext i32 %537 to i64
  store i64 %538, ptr %56, align 8, !tbaa !9
  %539 = load ptr, ptr %45, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.Track, ptr %539, i32 0, i32 1
  %541 = load i32, ptr %540, align 8, !tbaa !44
  %542 = icmp eq i32 %541, 4
  br i1 %542, label %543, label %553

543:                                              ; preds = %522
  %544 = load ptr, ptr %55, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.NodeInfo, ptr %544, i32 0, i32 5
  %546 = call noundef i64 @_ZNKSt6vectorImSaImEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %545) #7
  %547 = icmp eq i64 %546, 1
  br i1 %547, label %548, label %553

548:                                              ; preds = %543
  %549 = load ptr, ptr %55, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.NodeInfo, ptr %549, i32 0, i32 5
  %551 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %550, i64 noundef 0) #7
  %552 = load i64, ptr %551, align 8, !tbaa !9
  store i64 %552, ptr %56, align 8, !tbaa !9
  br label %553

553:                                              ; preds = %548, %543, %522
  invoke void @_Z5commaRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %554 unwind label %573

554:                                              ; preds = %553
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.95)
          to label %555 unwind label %573

555:                                              ; preds = %554
  %556 = load i64, ptr %41, align 8, !tbaa !9
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef nonnull align 8 dereferenceable(32) %40, i64 noundef %556)
          to label %557 unwind label %573

557:                                              ; preds = %555
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.96)
          to label %558 unwind label %573

558:                                              ; preds = %557
  %559 = load i64, ptr %56, align 8, !tbaa !9
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef nonnull align 8 dereferenceable(32) %40, i64 noundef %559)
          to label %560 unwind label %573

560:                                              ; preds = %558
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.97)
          to label %561 unwind label %573

561:                                              ; preds = %560
  %562 = load ptr, ptr %45, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.Track, ptr %562, i32 0, i32 1
  %564 = load i32, ptr %563, align 8, !tbaa !44
  %565 = call noundef ptr @_Z13animationPath25cgltf_animation_path_type(i32 noundef %564)
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef %565)
          to label %566 unwind label %573

566:                                              ; preds = %561
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.98)
          to label %567 unwind label %573

567:                                              ; preds = %566
  %568 = load i64, ptr %41, align 8, !tbaa !9
  %569 = add i64 %568, 1
  store i64 %569, ptr %41, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  br label %570

570:                                              ; preds = %567
  %571 = load i64, ptr %44, align 8, !tbaa !9
  %572 = add i64 %571, 1
  store i64 %572, ptr %44, align 8, !tbaa !9
  br label %323, !llvm.loop !76

573:                                              ; preds = %566, %561, %560, %558, %557, %555, %554, %553
  %574 = landingpad { ptr, i32 }
          cleanup
  %575 = extractvalue { ptr, i32 } %574, 0
  store ptr %575, ptr %25, align 8
  %576 = extractvalue { ptr, i32 } %574, 1
  store i32 %576, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #7
  br label %577

577:                                              ; preds = %573, %517
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  br label %578

578:                                              ; preds = %577, %513
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  br label %579

579:                                              ; preds = %578, %509
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #7
  br label %580

580:                                              ; preds = %579, %407
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #7
  br label %581

581:                                              ; preds = %580, %372
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %625

582:                                              ; preds = %327
  %583 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_Z5commaRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %583)
          to label %584 unwind label %607

584:                                              ; preds = %582
  %585 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %585, ptr noundef @.str.63)
          to label %586 unwind label %607

586:                                              ; preds = %584
  %587 = load ptr, ptr %14, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.Animation, ptr %587, i32 0, i32 0
  %589 = load ptr, ptr %588, align 8, !tbaa !47
  %590 = icmp ne ptr %589, null
  br i1 %590, label %591, label %611

591:                                              ; preds = %586
  %592 = load ptr, ptr %14, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.Animation, ptr %592, i32 0, i32 0
  %594 = load ptr, ptr %593, align 8, !tbaa !47
  %595 = load i8, ptr %594, align 1, !tbaa !77
  %596 = icmp ne i8 %595, 0
  br i1 %596, label %597, label %611

597:                                              ; preds = %591
  %598 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %598, ptr noundef @.str.14)
          to label %599 unwind label %607

599:                                              ; preds = %597
  %600 = load ptr, ptr %10, align 8, !tbaa !5
  %601 = load ptr, ptr %14, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.Animation, ptr %601, i32 0, i32 0
  %603 = load ptr, ptr %602, align 8, !tbaa !47
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %600, ptr noundef %603)
          to label %604 unwind label %607

604:                                              ; preds = %599
  %605 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %605, ptr noundef @.str.47)
          to label %606 unwind label %607

606:                                              ; preds = %604
  br label %611

607:                                              ; preds = %619, %617, %615, %613, %611, %604, %599, %597, %584, %582
  %608 = landingpad { ptr, i32 }
          cleanup
  %609 = extractvalue { ptr, i32 } %608, 0
  store ptr %609, ptr %25, align 8
  %610 = extractvalue { ptr, i32 } %608, 1
  store i32 %610, ptr %26, align 4
  br label %625

611:                                              ; preds = %606, %591, %586
  %612 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %612, ptr noundef @.str.99)
          to label %613 unwind label %607

613:                                              ; preds = %611
  %614 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %614, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %615 unwind label %607

615:                                              ; preds = %613
  %616 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %616, ptr noundef @.str.100)
          to label %617 unwind label %607

617:                                              ; preds = %615
  %618 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %618, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %619 unwind label %607

619:                                              ; preds = %617
  %620 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %620, ptr noundef @.str.101)
          to label %621 unwind label %607

621:                                              ; preds = %619
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  store i32 0, ptr %21, align 4
  br label %622

622:                                              ; preds = %621, %130
  call void @_ZNSt6vectorIPK5TrackSaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  %623 = load i32, ptr %21, align 4
  switch i32 %623, label %635 [
    i32 0, label %624
    i32 1, label %624
  ]

624:                                              ; preds = %622, %622
  ret void

625:                                              ; preds = %607, %581
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  br label %626

626:                                              ; preds = %625, %336
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %627

627:                                              ; preds = %626, %332
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  br label %628

628:                                              ; preds = %627, %328
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  br label %629

629:                                              ; preds = %628, %111
  call void @_ZNSt6vectorIPK5TrackSaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  br label %630

630:                                              ; preds = %629
  %631 = load ptr, ptr %25, align 8
  %632 = load i32, ptr %26, align 4
  %633 = insertvalue { ptr, i32 } poison, ptr %631, 0
  %634 = insertvalue { ptr, i32 } %633, i32 %632, 1
  resume { ptr, i32 } %634

635:                                              ; preds = %622, %105
  unreachable
}

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

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

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

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

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

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #5

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i64 @_ZL18writeAnimationTimeRSt6vectorI10BufferViewSaIS0_EERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERmfifRK8Settings(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8), float noundef, i32 noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(148)) #2

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i64 @_ZL18writeAnimationTimeRSt6vectorI10BufferViewSaIS0_EERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERmRKS_IfSaIfEERK8Settings(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(148)) #2

declare void @_Z19writeKeyframeStreamRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE25cgltf_animation_path_typeRKSt6vectorI4AttrSaIS8_EERK8Settingsb(ptr dead_on_unwind writable sret(%struct.StreamFormat) align 8, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(148), i1 noundef zeroext) #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef ptr @_ZL17interpolationType24cgltf_interpolation_type(i32 noundef) #0

declare void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #1

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

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { noreturn 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 #5 = { 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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { 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 = !{!"long", !7, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"_ZTS5Track", !6, i64 0, !13, i64 8, !14, i64 12, !14, i64 13, !10, i64 16, !15, i64 24, !16, i64 32, !20, i64 56}
!13 = !{!"_ZTS25cgltf_animation_path_type", !7, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTS24cgltf_interpolation_type", !7, i64 0}
!16 = !{!"_ZTSSt6vectorIfSaIfEE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIfSaIfEE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!"_ZTSSt6vectorI4AttrSaIS0_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseI4AttrSaIS0_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseI4AttrSaIS0_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseI4AttrSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!25, !6, i64 264}
!25 = !{!"_ZTS10cgltf_data", !26, i64 0, !6, i64 8, !27, i64 16, !6, i64 88, !10, i64 96, !6, i64 104, !10, i64 112, !6, i64 120, !10, i64 128, !6, i64 136, !10, i64 144, !6, i64 152, !10, i64 160, !6, i64 168, !10, i64 176, !6, i64 184, !10, i64 192, !6, i64 200, !10, i64 208, !6, i64 216, !10, i64 224, !6, i64 232, !10, i64 240, !6, i64 248, !10, i64 256, !6, i64 264, !10, i64 272, !6, i64 280, !10, i64 288, !6, i64 296, !6, i64 304, !10, i64 312, !6, i64 320, !10, i64 328, !28, i64 336, !10, i64 360, !6, i64 368, !6, i64 376, !10, i64 384, !6, i64 392, !10, i64 400, !6, i64 408, !10, i64 416, !6, i64 424, !10, i64 432, !29, i64 440, !30, i64 464}
!26 = !{!"_ZTS15cgltf_file_type", !7, i64 0}
!27 = !{!"_ZTS11cgltf_asset", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !28, i64 32, !10, i64 56, !6, i64 64}
!28 = !{!"_ZTS12cgltf_extras", !10, i64 0, !10, i64 8, !6, i64 16}
!29 = !{!"_ZTS20cgltf_memory_options", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"_ZTS18cgltf_file_options", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!32, !14, i64 4}
!32 = !{!"_ZTS8NodeInfo", !33, i64 0, !14, i64 4, !14, i64 5, !33, i64 8, !33, i64 12, !34, i64 16, !14, i64 40, !10, i64 48, !6, i64 56}
!33 = !{!"int", !7, i64 0}
!34 = !{!"_ZTSSt6vectorImSaImEE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseImSaImEE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = !{!41, !14, i64 36}
!41 = !{!"_ZTS8Settings", !33, i64 0, !33, i64 4, !33, i64 8, !33, i64 12, !14, i64 16, !14, i64 17, !14, i64 18, !14, i64 19, !33, i64 20, !33, i64 24, !33, i64 28, !33, i64 32, !14, i64 36, !14, i64 37, !14, i64 38, !14, i64 39, !14, i64 40, !14, i64 41, !14, i64 42, !14, i64 43, !42, i64 44, !42, i64 48, !14, i64 52, !14, i64 53, !14, i64 54, !42, i64 56, !33, i64 60, !14, i64 64, !14, i64 65, !14, i64 66, !14, i64 67, !14, i64 68, !7, i64 72, !7, i64 88, !7, i64 104, !7, i64 120, !33, i64 136, !14, i64 140, !14, i64 141, !14, i64 142, !14, i64 143, !33, i64 144}
!42 = !{!"float", !7, i64 0}
!43 = !{!32, !33, i64 8}
!44 = !{!12, !13, i64 8}
!45 = distinct !{!45, !46}
!46 = !{!"llvm.loop.mustprogress"}
!47 = !{!48, !6, i64 0}
!48 = !{!"_ZTS9Animation", !6, i64 0, !42, i64 8, !33, i64 12, !49, i64 16}
!49 = !{!"_ZTSSt6vectorI5TrackSaIS0_EE", !50, i64 0}
!50 = !{!"_ZTSSt12_Vector_baseI5TrackSaIS0_EE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseI5TrackSaIS0_EE12_Vector_implE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseI5TrackSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!53 = !{!14, !14, i64 0}
!54 = !{!12, !15, i64 24}
!55 = !{!12, !14, i64 12}
!56 = !{!48, !33, i64 12}
!57 = !{!12, !10, i64 16}
!58 = distinct !{!58, !46}
!59 = !{!41, !33, i64 32}
!60 = !{!42, !42, i64 0}
!61 = !{!48, !42, i64 8}
!62 = !{!33, !33, i64 0}
!63 = !{!41, !14, i64 141}
!64 = !{!65, !65, i64 0}
!65 = !{!"_ZTSN10BufferView11CompressionE", !7, i64 0}
!66 = !{!67, !70, i64 24}
!67 = !{!"_ZTS12StreamFormat", !68, i64 0, !69, i64 4, !14, i64 8, !10, i64 16, !70, i64 24}
!68 = !{!"_ZTS10cgltf_type", !7, i64 0}
!69 = !{!"_ZTS20cgltf_component_type", !7, i64 0}
!70 = !{!"_ZTSN12StreamFormat6FilterE", !7, i64 0}
!71 = !{!67, !10, i64 16}
!72 = !{!67, !68, i64 0}
!73 = !{!67, !69, i64 4}
!74 = !{!67, !14, i64 8}
!75 = !{!32, !33, i64 12}
!76 = distinct !{!76, !46}
!77 = !{!7, !7, i64 0}


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

%"class.std::vector.58" = type { %"struct.std::_Vector_base.59" }
%"struct.std::_Vector_base.59" = type { %"struct.std::_Vector_base<const Track *, std::allocator<const Track *>>::_Vector_impl" }
%"struct.std::_Vector_base<const Track *, std::allocator<const Track *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const Track *, std::allocator<const Track *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const Track *, std::allocator<const Track *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%struct.StreamFormat = type { i32, i32, i8, i64, i32 }

@.str.13 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [2 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.88 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [66 x i8], align 1
@__PRETTY_FUNCTION__._Z14writeAnimationRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorI10BufferViewSaIS7_EES5_RmRK9AnimationmP10cgltf_dataRKS6_I8NodeInfoSaISH_EERK8Settings = external hidden unnamed_addr constant [177 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [3 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_Z13animationPath25cgltf_animation_path_type(i32 noundef) local_unnamed_addr #0

declare void @_Z5commaRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

declare void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #1

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #4

declare void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) local_unnamed_addr #1

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL13writeAccessorRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm10cgltf_type20cgltf_component_typebmPKfS9_m(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef, i64 noundef, i32 noundef, i32 noundef, i1 noundef zeroext, i64 noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z14writeAnimationRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorI10BufferViewSaIS7_EES5_RmRK9AnimationmP10cgltf_dataRKS6_I8NodeInfoSaISH_EERK8Settings(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 noundef %5, ptr nocapture noundef readonly %6, ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 4 dereferenceable(148) %8) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %10 = alloca %"class.std::vector.58", align 8
  %11 = alloca ptr, align 8
  %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 %struct.StreamFormat, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #7
  call void @_ZNSt6vectorIPK5TrackSaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  %16 = getelementptr inbounds i8, ptr %4, i64 16
  %17 = call noundef i64 @_ZNKSt6vectorI5TrackSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  %.not196 = icmp eq i64 %17, 0
  br i1 %.not196, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %9
  %18 = getelementptr inbounds i8, ptr %6, i64 264
  %19 = getelementptr inbounds i8, ptr %8, i64 36
  br label %23

._crit_edge:                                      ; preds = %48, %9
  %20 = call noundef zeroext i1 @_ZNKSt6vectorIPK5TrackSaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  br i1 %20, label %54, label %.preheader

.preheader:                                       ; preds = %._crit_edge
  %21 = call noundef i64 @_ZNKSt6vectorIPK5TrackSaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  %.not197 = icmp eq i64 %21, 0
  br i1 %.not197, label %.thread.thread, label %.lr.ph186

.lr.ph186:                                        ; preds = %.preheader
  %22 = getelementptr inbounds i8, ptr %4, i64 12
  br label %59

23:                                               ; preds = %.lr.ph, %48
  %.0139182 = phi i64 [ 0, %.lr.ph ], [ %49, %48 ]
  %24 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNKSt6vectorI5TrackSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %.0139182) #7
  %25 = load ptr, ptr %24, align 8, !tbaa !5
  %26 = load ptr, ptr %18, align 8, !tbaa !22
  %27 = ptrtoint ptr %25 to i64
  %28 = ptrtoint ptr %26 to i64
  %29 = sub i64 %27, %28
  %30 = sdiv exact i64 %29, 264
  %31 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt6vectorI8NodeInfoSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %30) #7
  %32 = getelementptr inbounds i8, ptr %31, i64 4
  %33 = load i8, ptr %32, align 4, !tbaa !29, !range !36, !noundef !37
  %34 = trunc nuw i8 %33 to i1
  br i1 %34, label %35, label %48

35:                                               ; preds = %23
  %36 = load i8, ptr %19, align 4, !tbaa !38, !range !36, !noundef !37
  %37 = trunc nuw i8 %36 to i1
  br i1 %37, label %46, label %38

38:                                               ; preds = %35
  %39 = getelementptr inbounds i8, ptr %31, i64 8
  %40 = load i32, ptr %39, align 8, !tbaa !41
  %41 = getelementptr inbounds i8, ptr %24, i64 8
  %42 = load i32, ptr %41, align 8, !tbaa !42
  %43 = shl nuw i32 1, %42
  %44 = and i32 %43, %40
  %45 = icmp eq i32 %44, 0
  br i1 %45, label %48, label %46

46:                                               ; preds = %38, %35
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  store ptr %24, ptr %11, align 8, !tbaa !43
  invoke void @_ZNSt6vectorIPK5TrackSaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %47 unwind label %52

47:                                               ; preds = %46
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %48

48:                                               ; preds = %38, %23, %47
  %49 = add nuw i64 %.0139182, 1
  %50 = call noundef i64 @_ZNKSt6vectorI5TrackSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  %51 = icmp ult i64 %49, %50
  br i1 %51, label %23, label %._crit_edge, !llvm.loop !44

52:                                               ; preds = %46
  %53 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %302

54:                                               ; preds = %._crit_edge
  %55 = load ptr, ptr @stderr, align 8, !tbaa !43
  %56 = trunc i64 %5 to i32
  %57 = load ptr, ptr %4, align 8, !tbaa !46
  %.not176 = icmp eq ptr %57, null
  %spec.select = select i1 %.not176, ptr @.str.13, ptr %57
  %58 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %55, ptr noundef nonnull @.str.88, i32 noundef %56, ptr noundef nonnull %spec.select) #8
  br label %300

._crit_edge187:                                   ; preds = %100
  %.0153.not = xor i1 %101, true
  %brmerge = select i1 %.0153.not, i1 true, i1 %96
  br i1 %brmerge, label %.thread, label %105

59:                                               ; preds = %.lr.ph186, %100
  %.0151185 = phi i1 [ false, %.lr.ph186 ], [ %96, %100 ]
  %.0153184 = phi i1 [ false, %.lr.ph186 ], [ %101, %100 ]
  %.0154183 = phi i64 [ 0, %.lr.ph186 ], [ %102, %100 ]
  %60 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPK5TrackSaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0154183) #7
  %61 = load ptr, ptr %60, align 8, !tbaa !43
  %62 = getelementptr inbounds i8, ptr %61, i64 24
  %63 = load i32, ptr %62, align 8, !tbaa !52
  %64 = icmp eq i32 %63, 2
  %65 = select i1 %64, i64 3, i64 1
  %66 = getelementptr inbounds i8, ptr %61, i64 12
  %67 = load i8, ptr %66, align 4, !tbaa !53, !range !36, !noundef !37
  %68 = trunc nuw i8 %67 to i1
  br i1 %68, label %77, label %69

69:                                               ; preds = %59
  %70 = getelementptr inbounds i8, ptr %61, i64 32
  %71 = call noundef zeroext i1 @_ZNKSt6vectorIfSaIfEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %70) #7
  br i1 %71, label %72, label %75

72:                                               ; preds = %69
  %73 = load i32, ptr %22, align 4, !tbaa !54
  %74 = sext i32 %73 to i64
  br label %77

75:                                               ; preds = %69
  %76 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %70) #7
  br label %77

77:                                               ; preds = %72, %75, %59
  %78 = phi i64 [ 1, %59 ], [ %74, %72 ], [ %76, %75 ]
  %79 = getelementptr inbounds i8, ptr %61, i64 56
  %80 = call noundef i64 @_ZNKSt6vectorI4AttrSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %79) #7
  %81 = getelementptr inbounds i8, ptr %61, i64 16
  %82 = load i64, ptr %81, align 8, !tbaa !55
  %83 = mul i64 %78, %65
  %84 = mul i64 %83, %82
  %85 = icmp eq i64 %80, %84
  br i1 %85, label %87, label %86

86:                                               ; preds = %77
  call void @__assert_fail(ptr noundef nonnull @.str.89, ptr noundef nonnull @.str.28, i32 noundef 1424, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14writeAnimationRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorI10BufferViewSaIS7_EES5_RmRK9AnimationmP10cgltf_dataRKS6_I8NodeInfoSaISH_EERK8Settings) #9
  unreachable

87:                                               ; preds = %77
  br i1 %.0151185, label %95, label %88

88:                                               ; preds = %87
  %89 = getelementptr inbounds i8, ptr %61, i64 32
  %90 = call noundef zeroext i1 @_ZNKSt6vectorIfSaIfEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %89) #7
  br i1 %90, label %91, label %95

91:                                               ; preds = %88
  %92 = load i8, ptr %66, align 4, !tbaa !53, !range !36, !noundef !37
  %93 = trunc nuw i8 %92 to i1
  %94 = xor i1 %93, true
  br label %95

95:                                               ; preds = %88, %91, %87
  %96 = phi i1 [ true, %87 ], [ false, %88 ], [ %94, %91 ]
  br i1 %.0153184, label %100, label %97

97:                                               ; preds = %95
  %98 = load i8, ptr %66, align 4, !tbaa !53, !range !36, !noundef !37
  %99 = trunc nuw i8 %98 to i1
  br label %100

100:                                              ; preds = %97, %95
  %101 = phi i1 [ true, %95 ], [ %99, %97 ]
  %102 = add nuw i64 %.0154183, 1
  %103 = call noundef i64 @_ZNKSt6vectorIPK5TrackSaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  %104 = icmp ult i64 %102, %103
  br i1 %104, label %59, label %._crit_edge187, !llvm.loop !56

105:                                              ; preds = %._crit_edge187
  %106 = getelementptr inbounds i8, ptr %4, i64 12
  %107 = load i32, ptr %106, align 4, !tbaa !54
  %108 = icmp sgt i32 %107, 1
  br i1 %101, label %109, label %.thread.thread

.thread:                                          ; preds = %._crit_edge187
  br i1 %101, label %.thread179, label %.thread.thread

109:                                              ; preds = %105
  br i1 %108, label %110, label %.thread179

110:                                              ; preds = %109
  %111 = call noundef i64 @_ZNKSt6vectorIPK5TrackSaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  %112 = icmp eq i64 %111, 1
  br label %.thread179

.thread179:                                       ; preds = %.thread, %110, %109
  %113 = phi i1 [ false, %109 ], [ true, %110 ], [ false, %.thread ]
  %114 = phi i1 [ false, %109 ], [ %112, %110 ], [ false, %.thread ]
  %115 = xor i1 %114, true
  br label %.thread.thread

.thread.thread:                                   ; preds = %.preheader, %.thread, %.thread179, %105
  %.0151.lcssa205 = phi i1 [ %96, %105 ], [ %96, %.thread179 ], [ %96, %.thread ], [ false, %.preheader ]
  %116 = phi i1 [ %108, %105 ], [ %113, %.thread179 ], [ false, %.thread ], [ false, %.preheader ]
  %117 = phi i1 [ false, %105 ], [ %115, %.thread179 ], [ false, %.thread ], [ false, %.preheader ]
  %118 = zext i1 %.0151.lcssa205 to i32
  %119 = zext i1 %117 to i32
  %120 = zext i1 %116 to i32
  %121 = add nuw nsw i32 %120, %118
  %122 = add nuw nsw i32 %121, %119
  %123 = icmp ult i32 %122, 3
  br i1 %123, label %125, label %124

124:                                              ; preds = %.thread.thread
  call void @__assert_fail(ptr noundef nonnull @.str.90, ptr noundef nonnull @.str.28, i32 noundef 1435, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14writeAnimationRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorI10BufferViewSaIS7_EES5_RmRK9AnimationmP10cgltf_dataRKS6_I8NodeInfoSaISH_EERK8Settings) #9
  unreachable

125:                                              ; preds = %.thread.thread
  %126 = getelementptr inbounds i8, ptr %8, i64 32
  %127 = load i32, ptr %126, align 4, !tbaa !57
  %128 = sitofp i32 %127 to float
  %129 = fdiv float 1.000000e+00, %128
  %130 = getelementptr inbounds i8, ptr %4, i64 12
  %131 = load i32, ptr %130, align 4, !tbaa !54
  %132 = add nsw i32 %131, -1
  %133 = sitofp i32 %132 to float
  %134 = fmul float %129, %133
  br i1 %.0151.lcssa205, label %135, label %139

135:                                              ; preds = %125
  %136 = getelementptr inbounds i8, ptr %4, i64 8
  %137 = load float, ptr %136, align 8, !tbaa !58
  %138 = invoke noundef i64 @_ZL18writeAnimationTimeRSt6vectorI10BufferViewSaIS0_EERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERmfifRK8Settings(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, float noundef %137, i32 noundef %131, float noundef %129, ptr noundef nonnull align 4 dereferenceable(148) %8)
          to label %139 unwind label %160

139:                                              ; preds = %125, %135
  %140 = phi i64 [ %138, %135 ], [ 0, %125 ]
  br i1 %117, label %141, label %145

141:                                              ; preds = %139
  %142 = getelementptr inbounds i8, ptr %4, i64 8
  %143 = load float, ptr %142, align 8, !tbaa !58
  %144 = invoke noundef i64 @_ZL18writeAnimationTimeRSt6vectorI10BufferViewSaIS0_EERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERmfifRK8Settings(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, float noundef %143, i32 noundef 1, float noundef 0.000000e+00, ptr noundef nonnull align 4 dereferenceable(148) %8)
          to label %145 unwind label %162

145:                                              ; preds = %139, %141
  %146 = phi i64 [ %144, %141 ], [ 0, %139 ]
  br i1 %116, label %147, label %151

147:                                              ; preds = %145
  %148 = getelementptr inbounds i8, ptr %4, i64 8
  %149 = load float, ptr %148, align 8, !tbaa !58
  %150 = invoke noundef i64 @_ZL18writeAnimationTimeRSt6vectorI10BufferViewSaIS0_EERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERmfifRK8Settings(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, float noundef %149, i32 noundef 2, float noundef %134, ptr noundef nonnull align 4 dereferenceable(148) %8)
          to label %151 unwind label %164

151:                                              ; preds = %145, %147
  %152 = phi i64 [ %150, %147 ], [ 0, %145 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  %153 = call noundef i64 @_ZNKSt6vectorIPK5TrackSaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  %.not198 = icmp eq i64 %153, 0
  br i1 %.not198, label %._crit_edge195, label %.lr.ph194

.lr.ph194:                                        ; preds = %151
  %154 = getelementptr inbounds i8, ptr %8, i64 141
  %155 = getelementptr inbounds i8, ptr %15, i64 24
  %156 = getelementptr inbounds i8, ptr %15, i64 16
  %157 = getelementptr inbounds i8, ptr %15, i64 4
  %158 = getelementptr inbounds i8, ptr %15, i64 8
  %159 = getelementptr inbounds i8, ptr %6, i64 264
  br label %166

._crit_edge195:                                   ; preds = %276, %151
  invoke void @_Z5commaRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %0)
          to label %283 unwind label %292

160:                                              ; preds = %135
  %161 = landingpad { ptr, i32 }
          cleanup
  br label %302

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

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

166:                                              ; preds = %.lr.ph194, %276
  %.0155192 = phi i64 [ 0, %.lr.ph194 ], [ %277, %276 ]
  %.0157190 = phi ptr [ null, %.lr.ph194 ], [ %.1158, %276 ]
  %.0159189 = phi i64 [ 0, %.lr.ph194 ], [ %.1160, %276 ]
  %167 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPK5TrackSaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0155192) #7
  %168 = load ptr, ptr %167, align 8, !tbaa !43
  %169 = icmp eq i64 %.0155192, 0
  %170 = and i1 %116, %169
  %171 = getelementptr inbounds i8, ptr %168, i64 32
  %172 = call noundef zeroext i1 @_ZNKSt6vectorIfSaIfEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %171) #7
  br i1 %172, label %182, label %173

173:                                              ; preds = %166
  %.not165 = icmp eq ptr %.0157190, null
  br i1 %.not165, label %180, label %174

174:                                              ; preds = %173
  %175 = getelementptr inbounds i8, ptr %.0157190, i64 32
  %176 = invoke noundef zeroext i1 @_ZSteqIfSaIfEEbRKSt6vectorIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(24) %171, ptr noundef nonnull align 8 dereferenceable(24) %175)
          to label %177 unwind label %178

177:                                              ; preds = %174
  br i1 %176, label %182, label %180

178:                                              ; preds = %180, %174
  %179 = landingpad { ptr, i32 }
          cleanup
  br label %301

180:                                              ; preds = %177, %173
  %181 = invoke noundef i64 @_ZL18writeAnimationTimeRSt6vectorI10BufferViewSaIS0_EERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERmRKS_IfSaIfEERK8Settings(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(24) %171, ptr noundef nonnull align 4 dereferenceable(148) %8)
          to label %182 unwind label %178

182:                                              ; preds = %180, %177, %166
  %.1160 = phi i64 [ %.0159189, %166 ], [ %.0159189, %177 ], [ %181, %180 ]
  %.1158 = phi ptr [ %.0157190, %166 ], [ %.0157190, %177 ], [ %168, %180 ]
  %.0152 = phi i64 [ %140, %166 ], [ %.0159189, %177 ], [ %181, %180 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  %183 = getelementptr inbounds i8, ptr %168, i64 8
  %184 = load i32, ptr %183, align 8, !tbaa !42
  %185 = getelementptr inbounds i8, ptr %168, i64 56
  %186 = getelementptr inbounds i8, ptr %168, i64 24
  %187 = load i32, ptr %186, align 8, !tbaa !52
  %188 = icmp eq i32 %187, 2
  invoke void @_Z19writeKeyframeStreamRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE25cgltf_animation_path_typeRKSt6vectorI4AttrSaIS8_EERK8Settingsb(ptr dead_on_unwind nonnull writable sret(%struct.StreamFormat) align 8 %15, ptr noundef nonnull align 8 dereferenceable(32) %14, i32 noundef %184, ptr noundef nonnull align 8 dereferenceable(24) %185, ptr noundef nonnull align 4 dereferenceable(148) %8, i1 noundef zeroext %188)
          to label %189 unwind label %190

189:                                              ; preds = %182
  br i1 %170, label %192, label %194

190:                                              ; preds = %192, %182
  %191 = landingpad { ptr, i32 }
          cleanup
  br label %282

192:                                              ; preds = %189
  %193 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %194 unwind label %190

194:                                              ; preds = %192, %189
  %195 = load i8, ptr %154, align 1, !tbaa !59, !range !36, !noundef !37
  %196 = trunc nuw i8 %195 to i1
  %.pre = load i32, ptr %183, align 8, !tbaa !42
  %197 = icmp ne i32 %.pre, 4
  %spec.select211 = and i1 %197, %196
  %not. = xor i1 %spec.select211, true
  %198 = sext i1 %not. to i32
  %199 = load i32, ptr %155, align 8, !tbaa !60
  %200 = load i64, ptr %156, align 8, !tbaa !65
  %201 = invoke noundef i64 @_Z13getBufferViewRSt6vectorI10BufferViewSaIS0_EENS0_4KindEN12StreamFormat6FilterENS0_11CompressionEmi(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef 4, i32 noundef %199, i32 noundef %198, i64 noundef %200, i32 noundef %.pre)
          to label %202 unwind label %239

202:                                              ; preds = %194
  %203 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorI10BufferViewSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %201) #7
  %204 = getelementptr inbounds i8, ptr %203, i64 32
  %205 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %204) #7
  %206 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorI10BufferViewSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %201) #7
  %207 = getelementptr inbounds i8, ptr %206, i64 32
  %208 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %207, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %209 unwind label %241

209:                                              ; preds = %202
  invoke void @_Z5commaRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %210 unwind label %241

210:                                              ; preds = %209
  %211 = load i32, ptr %15, align 8, !tbaa !66
  %212 = load i32, ptr %157, align 4, !tbaa !67
  %213 = load i8, ptr %158, align 8, !tbaa !68, !range !36, !noundef !37
  %214 = trunc nuw i8 %213 to i1
  %215 = call noundef i64 @_ZNKSt6vectorI4AttrSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %185) #7
  %216 = zext i1 %170 to i64
  %217 = shl i64 %215, %216
  invoke void @_ZL13writeAccessorRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm10cgltf_type20cgltf_component_typebmPKfS9_m(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %201, i64 noundef %205, i32 noundef %211, i32 noundef %212, i1 noundef zeroext %214, i64 noundef %217, ptr noundef null, ptr noundef null, i64 noundef 0)
          to label %218 unwind label %241

218:                                              ; preds = %210
  %219 = load i64, ptr %3, align 8, !tbaa !69
  %220 = add i64 %219, 1
  store i64 %220, ptr %3, align 8, !tbaa !69
  invoke void @_Z5commaRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %221 unwind label %243

221:                                              ; preds = %218
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.92)
          to label %222 unwind label %243

222:                                              ; preds = %221
  br i1 %170, label %228, label %223

223:                                              ; preds = %222
  %224 = getelementptr inbounds i8, ptr %168, i64 12
  %225 = load i8, ptr %224, align 4, !tbaa !53, !range !36, !noundef !37
  %226 = trunc nuw i8 %225 to i1
  %227 = select i1 %226, i64 %146, i64 %.0152
  br label %228

228:                                              ; preds = %222, %223
  %229 = phi i64 [ %227, %223 ], [ %152, %222 ]
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef nonnull align 8 dereferenceable(32) %12, i64 noundef %229)
          to label %230 unwind label %243

230:                                              ; preds = %228
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.93)
          to label %231 unwind label %243

231:                                              ; preds = %230
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef nonnull align 8 dereferenceable(32) %12, i64 noundef %219)
          to label %232 unwind label %243

232:                                              ; preds = %231
  %233 = load i32, ptr %186, align 8, !tbaa !52
  %.not166 = icmp eq i32 %233, 0
  br i1 %.not166, label %245, label %234

234:                                              ; preds = %232
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.94)
          to label %235 unwind label %243

235:                                              ; preds = %234
  %236 = load i32, ptr %186, align 8, !tbaa !52
  %237 = call noundef ptr @_ZL17interpolationType24cgltf_interpolation_type(i32 noundef %236)
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef %237)
          to label %238 unwind label %243

238:                                              ; preds = %235
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.15)
          to label %245 unwind label %243

239:                                              ; preds = %194
  %240 = landingpad { ptr, i32 }
          cleanup
  br label %282

241:                                              ; preds = %210, %209, %202
  %242 = landingpad { ptr, i32 }
          cleanup
  br label %282

243:                                              ; preds = %245, %238, %235, %234, %231, %230, %228, %221, %218
  %244 = landingpad { ptr, i32 }
          cleanup
  br label %282

245:                                              ; preds = %238, %232
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.26)
          to label %246 unwind label %243

246:                                              ; preds = %245
  %247 = load ptr, ptr %168, align 8, !tbaa !5
  %248 = load ptr, ptr %159, align 8, !tbaa !22
  %249 = ptrtoint ptr %247 to i64
  %250 = ptrtoint ptr %248 to i64
  %251 = sub i64 %249, %250
  %252 = sdiv exact i64 %251, 264
  %253 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt6vectorI8NodeInfoSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %252) #7
  %254 = getelementptr inbounds i8, ptr %253, i64 12
  %255 = load i32, ptr %254, align 4, !tbaa !70
  %256 = sext i32 %255 to i64
  %257 = load i32, ptr %183, align 8, !tbaa !42
  %258 = icmp eq i32 %257, 4
  br i1 %258, label %259, label %266

259:                                              ; preds = %246
  %260 = getelementptr inbounds i8, ptr %253, i64 16
  %261 = call noundef i64 @_ZNKSt6vectorImSaImEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %260) #7
  %262 = icmp eq i64 %261, 1
  br i1 %262, label %263, label %266

263:                                              ; preds = %259
  %264 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %260, i64 noundef 0) #7
  %265 = load i64, ptr %264, align 8, !tbaa !69
  br label %266

266:                                              ; preds = %263, %259, %246
  %.0 = phi i64 [ %265, %263 ], [ %256, %259 ], [ %256, %246 ]
  invoke void @_Z5commaRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %267 unwind label %280

267:                                              ; preds = %266
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.95)
          to label %268 unwind label %280

268:                                              ; preds = %267
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef nonnull align 8 dereferenceable(32) %13, i64 noundef %.0155192)
          to label %269 unwind label %280

269:                                              ; preds = %268
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.96)
          to label %270 unwind label %280

270:                                              ; preds = %269
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef nonnull align 8 dereferenceable(32) %13, i64 noundef %.0)
          to label %271 unwind label %280

271:                                              ; preds = %270
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.97)
          to label %272 unwind label %280

272:                                              ; preds = %271
  %273 = load i32, ptr %183, align 8, !tbaa !42
  %274 = call noundef ptr @_Z13animationPath25cgltf_animation_path_type(i32 noundef %273)
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef %274)
          to label %275 unwind label %280

275:                                              ; preds = %272
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.98)
          to label %276 unwind label %280

276:                                              ; preds = %275
  %277 = add nuw i64 %.0155192, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  %278 = call noundef i64 @_ZNKSt6vectorIPK5TrackSaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  %279 = icmp ult i64 %277, %278
  br i1 %279, label %166, label %._crit_edge195, !llvm.loop !71

280:                                              ; preds = %275, %272, %271, %270, %269, %268, %267, %266
  %281 = landingpad { ptr, i32 }
          cleanup
  br label %282

282:                                              ; preds = %239, %243, %280, %241, %190
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %191, %190 ], [ %240, %239 ], [ %242, %241 ], [ %281, %280 ], [ %244, %243 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  br label %301

283:                                              ; preds = %._crit_edge195
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.63)
          to label %284 unwind label %292

284:                                              ; preds = %283
  %285 = load ptr, ptr %4, align 8, !tbaa !46
  %.not = icmp eq ptr %285, null
  br i1 %.not, label %294, label %286

286:                                              ; preds = %284
  %287 = load i8, ptr %285, align 1, !tbaa !72
  %.not164 = icmp eq i8 %287, 0
  br i1 %.not164, label %294, label %288

288:                                              ; preds = %286
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.14)
          to label %289 unwind label %292

289:                                              ; preds = %288
  %290 = load ptr, ptr %4, align 8, !tbaa !46
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %290)
          to label %291 unwind label %292

291:                                              ; preds = %289
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.47)
          to label %294 unwind label %292

292:                                              ; preds = %298, %297, %296, %295, %294, %291, %289, %288, %283, %._crit_edge195
  %293 = landingpad { ptr, i32 }
          cleanup
  br label %301

294:                                              ; preds = %291, %286, %284
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.99)
          to label %295 unwind label %292

295:                                              ; preds = %294
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %296 unwind label %292

296:                                              ; preds = %295
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.100)
          to label %297 unwind label %292

297:                                              ; preds = %296
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %298 unwind label %292

298:                                              ; preds = %297
  invoke void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.101)
          to label %299 unwind label %292

299:                                              ; preds = %298
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  br label %300

300:                                              ; preds = %299, %54
  call void @_ZNSt6vectorIPK5TrackSaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  ret void

301:                                              ; preds = %178, %282, %292
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %293, %292 ], [ %.pn.pn.pn.pn, %282 ], [ %179, %178 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  br label %302

302:                                              ; preds = %160, %164, %301, %162, %52
  %.pn177 = phi { ptr, i32 } [ %53, %52 ], [ %161, %160 ], [ %163, %162 ], [ %.pn.pn.pn.pn.pn.pn, %301 ], [ %165, %164 ]
  call void @_ZNSt6vectorIPK5TrackSaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  resume { ptr, i32 } %.pn177
}

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

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

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

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

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

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #5

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i64 @_ZL18writeAnimationTimeRSt6vectorI10BufferViewSaIS0_EERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERmRKS_IfSaIfEERK8Settings(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(148)) local_unnamed_addr #2

declare void @_Z19writeKeyframeStreamRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE25cgltf_animation_path_typeRKSt6vectorI4AttrSaIS8_EERK8Settingsb(ptr dead_on_unwind writable sret(%struct.StreamFormat) align 8, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(148), i1 noundef zeroext) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef ptr @_ZL17interpolationType24cgltf_interpolation_type(i32 noundef) local_unnamed_addr #0

declare void @_Z6appendRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { noreturn 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 #5 = { nofree 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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { cold nounwind }
attributes #9 = { 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, !7, i64 0}
!6 = !{!"_ZTS5Track", !7, i64 0, !10, i64 8, !11, i64 12, !11, i64 13, !12, i64 16, !13, i64 24, !14, i64 32, !18, i64 56}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTS25cgltf_animation_path_type", !8, i64 0}
!11 = !{!"bool", !8, i64 0}
!12 = !{!"long", !8, i64 0}
!13 = !{!"_ZTS24cgltf_interpolation_type", !8, i64 0}
!14 = !{!"_ZTSSt6vectorIfSaIfEE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIfSaIfEE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!18 = !{!"_ZTSSt6vectorI4AttrSaIS0_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseI4AttrSaIS0_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseI4AttrSaIS0_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseI4AttrSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!22 = !{!23, !7, i64 264}
!23 = !{!"_ZTS10cgltf_data", !24, i64 0, !7, i64 8, !25, i64 16, !7, i64 88, !12, i64 96, !7, i64 104, !12, i64 112, !7, i64 120, !12, i64 128, !7, i64 136, !12, i64 144, !7, i64 152, !12, i64 160, !7, i64 168, !12, i64 176, !7, i64 184, !12, i64 192, !7, i64 200, !12, i64 208, !7, i64 216, !12, i64 224, !7, i64 232, !12, i64 240, !7, i64 248, !12, i64 256, !7, i64 264, !12, i64 272, !7, i64 280, !12, i64 288, !7, i64 296, !7, i64 304, !12, i64 312, !7, i64 320, !12, i64 328, !26, i64 336, !12, i64 360, !7, i64 368, !7, i64 376, !12, i64 384, !7, i64 392, !12, i64 400, !7, i64 408, !12, i64 416, !7, i64 424, !12, i64 432, !27, i64 440, !28, i64 464}
!24 = !{!"_ZTS15cgltf_file_type", !8, i64 0}
!25 = !{!"_ZTS11cgltf_asset", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !26, i64 32, !12, i64 56, !7, i64 64}
!26 = !{!"_ZTS12cgltf_extras", !12, i64 0, !12, i64 8, !7, i64 16}
!27 = !{!"_ZTS20cgltf_memory_options", !7, i64 0, !7, i64 8, !7, i64 16}
!28 = !{!"_ZTS18cgltf_file_options", !7, i64 0, !7, i64 8, !7, i64 16}
!29 = !{!30, !11, i64 4}
!30 = !{!"_ZTS8NodeInfo", !31, i64 0, !11, i64 4, !11, i64 5, !31, i64 8, !31, i64 12, !32, i64 16, !11, i64 40, !12, i64 48, !7, i64 56}
!31 = !{!"int", !8, i64 0}
!32 = !{!"_ZTSSt6vectorImSaImEE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseImSaImEE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!36 = !{i8 0, i8 2}
!37 = !{}
!38 = !{!39, !11, i64 36}
!39 = !{!"_ZTS8Settings", !31, i64 0, !31, i64 4, !31, i64 8, !31, i64 12, !11, i64 16, !11, i64 17, !11, i64 18, !11, i64 19, !31, i64 20, !31, i64 24, !31, i64 28, !31, i64 32, !11, i64 36, !11, i64 37, !11, i64 38, !11, i64 39, !11, i64 40, !11, i64 41, !11, i64 42, !11, i64 43, !40, i64 44, !40, i64 48, !11, i64 52, !11, i64 53, !11, i64 54, !40, i64 56, !31, i64 60, !11, i64 64, !11, i64 65, !11, i64 66, !11, i64 67, !11, i64 68, !8, i64 72, !8, i64 88, !8, i64 104, !8, i64 120, !31, i64 136, !11, i64 140, !11, i64 141, !11, i64 142, !11, i64 143, !31, i64 144}
!40 = !{!"float", !8, i64 0}
!41 = !{!30, !31, i64 8}
!42 = !{!6, !10, i64 8}
!43 = !{!7, !7, i64 0}
!44 = distinct !{!44, !45}
!45 = !{!"llvm.loop.mustprogress"}
!46 = !{!47, !7, i64 0}
!47 = !{!"_ZTS9Animation", !7, i64 0, !40, i64 8, !31, i64 12, !48, i64 16}
!48 = !{!"_ZTSSt6vectorI5TrackSaIS0_EE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseI5TrackSaIS0_EE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseI5TrackSaIS0_EE12_Vector_implE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseI5TrackSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!52 = !{!6, !13, i64 24}
!53 = !{!6, !11, i64 12}
!54 = !{!47, !31, i64 12}
!55 = !{!6, !12, i64 16}
!56 = distinct !{!56, !45}
!57 = !{!39, !31, i64 32}
!58 = !{!47, !40, i64 8}
!59 = !{!39, !11, i64 141}
!60 = !{!61, !64, i64 24}
!61 = !{!"_ZTS12StreamFormat", !62, i64 0, !63, i64 4, !11, i64 8, !12, i64 16, !64, i64 24}
!62 = !{!"_ZTS10cgltf_type", !8, i64 0}
!63 = !{!"_ZTS20cgltf_component_type", !8, i64 0}
!64 = !{!"_ZTSN12StreamFormat6FilterE", !8, i64 0}
!65 = !{!61, !12, i64 16}
!66 = !{!61, !62, i64 0}
!67 = !{!61, !63, i64 4}
!68 = !{!61, !11, i64 8}
!69 = !{!12, !12, i64 0}
!70 = !{!30, !31, i64 12}
!71 = distinct !{!71, !45}
!72 = !{!8, !8, i64 0}


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