; LLVM IR from Overload-Technologies/Overload :: Dependencies/assimp/code/Common (Subdivision)

; 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.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Assimp::SpatialSort" = type <{ %class.aiVector3t, %class.aiVector3t, %"class.std::vector.5", i8, [7 x i8] }>
%class.aiVector3t = type { float, float, float }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<Assimp::SpatialSort::Entry, std::allocator<Assimp::SpatialSort::Entry>>::_Vector_impl" }
%"struct.std::_Vector_base<Assimp::SpatialSort::Entry, std::allocator<Assimp::SpatialSort::Entry>>::_Vector_impl" = type { %"struct.std::_Vector_base<Assimp::SpatialSort::Entry, std::allocator<Assimp::SpatialSort::Entry>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Assimp::SpatialSort::Entry, std::allocator<Assimp::SpatialSort::Entry>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.12" = type { i8 }
%"struct.std::pair" = type { i32, i32 }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<Assimp::Vertex, std::allocator<Assimp::Vertex>>::_Vector_impl" }
%"struct.std::_Vector_base<Assimp::Vertex, std::allocator<Assimp::Vertex>>::_Vector_impl" = type { %"struct.std::_Vector_base<Assimp::Vertex, std::allocator<Assimp::Vertex>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Assimp::Vertex, std::allocator<Assimp::Vertex>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.17" = type { i8 }
%"struct.Assimp::Vertex" = type { %class.aiVector3t, %class.aiVector3t, %class.aiVector3t, %class.aiVector3t, [8 x %class.aiVector3t], [8 x %class.aiColor4t] }
%class.aiColor4t = type { float, float, float, float }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"class.std::allocator.2" = type { i8 }
%"class.std::vector.27" = type { %"struct.std::_Vector_base.28" }
%"struct.std::_Vector_base.28" = type { %"struct.std::_Vector_base<std::pair<bool, Assimp::Vertex>, std::allocator<std::pair<bool, Assimp::Vertex>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<bool, Assimp::Vertex>, std::allocator<std::pair<bool, Assimp::Vertex>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<bool, Assimp::Vertex>, std::allocator<std::pair<bool, Assimp::Vertex>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<bool, Assimp::Vertex>, std::allocator<std::pair<bool, Assimp::Vertex>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.32" = type { i8, %"struct.Assimp::Vertex" }
%"class.std::allocator.29" = type { i8 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%struct.aiMesh = type { i32, i32, i32, ptr, ptr, ptr, ptr, [8 x ptr], [8 x ptr], [8 x i32], ptr, i32, ptr, i32, %struct.aiString, i32, ptr, i32, %struct.aiAABB, ptr }
%struct.aiString = type { i32, [1024 x i8] }
%struct.aiAABB = type { %class.aiVector3t, %class.aiVector3t }
%struct.aiFace = type { i32, ptr }
%"struct.CatmullClarkSubdivider::Edge" = type { %"struct.Assimp::Vertex", %"struct.Assimp::Vertex", i32 }
%"struct.std::pair.25" = type <{ i64, %"struct.CatmullClarkSubdivider::Edge", [4 x i8] }>

@.str.1 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [45 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z7mydummyv() #0

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

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() #3

declare void @_ZN6Assimp6Logger12verboseDebugEPKc(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) #3

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

declare void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN22CatmullClarkSubdivider15InternSubdivideEPKPK6aiMeshmPPS0_j(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1, i64 noundef %2, ptr noundef %3, i32 noundef %4) #5 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i64, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %"class.std::vector.0", align 8
  %15 = alloca %"class.Assimp::SpatialSort", align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca %"class.std::vector.10", align 8
  %19 = alloca %"class.std::allocator.12", align 1
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i64, align 8
  %23 = alloca ptr, align 8
  %24 = alloca %"struct.std::pair", align 4
  %25 = alloca i32, align 4
  %26 = alloca %"class.std::vector.15", align 8
  %27 = alloca %"class.std::allocator.17", align 1
  %28 = alloca i32, align 4
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca ptr, align 8
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca %"struct.Assimp::Vertex", align 4
  %37 = alloca %"class.std::unordered_map", align 8
  %38 = alloca i64, align 8
  %39 = alloca ptr, align 8
  %40 = alloca i32, align 4
  %41 = alloca ptr, align 8
  %42 = alloca i32, align 4
  %43 = alloca [2 x i32], align 4
  %44 = alloca [2 x i32], align 4
  %45 = alloca ptr, align 8
  %46 = alloca i64, align 8
  %47 = alloca %"struct.Assimp::Vertex", align 4
  %48 = alloca %"struct.Assimp::Vertex", align 4
  %49 = alloca %"struct.Assimp::Vertex", align 4
  %50 = alloca i32, align 4
  %51 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %52 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %53 = alloca i32, align 4
  %54 = alloca %"class.std::vector.0", align 8
  %55 = alloca %"class.std::allocator.2", align 1
  %56 = alloca %"class.std::vector.0", align 8
  %57 = alloca i32, align 4
  %58 = alloca %"class.std::allocator.2", align 1
  %59 = alloca %"class.std::vector.0", align 8
  %60 = alloca i32, align 4
  %61 = alloca %"class.std::allocator.2", align 1
  %62 = alloca i64, align 8
  %63 = alloca ptr, align 8
  %64 = alloca i32, align 4
  %65 = alloca ptr, align 8
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i64, align 8
  %69 = alloca i64, align 8
  %70 = alloca ptr, align 8
  %71 = alloca i32, align 4
  %72 = alloca ptr, align 8
  %73 = alloca i32, align 4
  %74 = alloca i64, align 8
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i64, align 8
  %78 = alloca ptr, align 8
  %79 = alloca ptr, align 8
  %80 = alloca i8, align 1
  %81 = alloca i32, align 4
  %82 = alloca %"class.std::vector.27", align 8
  %83 = alloca %"struct.std::pair.32", align 4
  %84 = alloca i8, align 1
  %85 = alloca %"struct.Assimp::Vertex", align 4
  %86 = alloca %"class.std::allocator.29", align 1
  %87 = alloca i64, align 8
  %88 = alloca ptr, align 8
  %89 = alloca ptr, align 8
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca ptr, align 8
  %97 = alloca i32, align 4
  %98 = alloca ptr, align 8
  %99 = alloca ptr, align 8
  %100 = alloca i64, align 8
  %101 = alloca ptr, align 8
  %102 = alloca i64, align 8
  %103 = alloca i32, align 4
  %104 = alloca ptr, align 8
  %105 = alloca ptr, align 8
  %106 = alloca i32, align 4
  %107 = alloca %"struct.Assimp::Vertex", align 4
  %108 = alloca %"struct.Assimp::Vertex", align 4
  %109 = alloca %"struct.Assimp::Vertex", align 4
  %110 = alloca i32, align 4
  %111 = alloca ptr, align 8
  %112 = alloca i64, align 8
  %113 = alloca ptr, align 8
  %114 = alloca i8, align 1
  %115 = alloca i32, align 4
  %116 = alloca ptr, align 8
  %117 = alloca i64, align 8
  %118 = alloca ptr, align 8
  %119 = alloca i64, align 8
  %120 = alloca %"struct.Assimp::Vertex", align 4
  %121 = alloca float, align 4
  %122 = alloca float, align 4
  %123 = alloca %"struct.Assimp::Vertex", align 4
  %124 = alloca %"struct.Assimp::Vertex", align 4
  %125 = alloca %"struct.Assimp::Vertex", align 4
  %126 = alloca %"struct.Assimp::Vertex", align 4
  %127 = alloca %"struct.Assimp::Vertex", align 4
  %128 = alloca %"struct.Assimp::Vertex", align 4
  %129 = alloca %"class.std::vector", align 8
  %130 = alloca %"class.std::allocator", align 1
  %131 = alloca i64, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store i64 %2, ptr %8, align 8, !tbaa !9
  store ptr %3, ptr %9, align 8, !tbaa !5
  store i32 %4, ptr %10, align 4, !tbaa !11
  %132 = load ptr, ptr %6, align 8
  %133 = load ptr, ptr %7, align 8, !tbaa !5
  %134 = icmp ne ptr null, %133
  br i1 %134, label %136, label %135

135:                                              ; preds = %5
  call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 230)
  br label %136

136:                                              ; preds = %135, %5
  %137 = phi i1 [ true, %5 ], [ false, %135 ]
  %138 = load ptr, ptr %9, align 8, !tbaa !5
  %139 = icmp ne ptr null, %138
  br i1 %139, label %141, label %140

140:                                              ; preds = %136
  call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 231)
  br label %141

141:                                              ; preds = %140, %136
  %142 = phi i1 [ true, %136 ], [ false, %140 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #11
  %143 = load i32, ptr %10, align 4, !tbaa !11
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %146, label %145

145:                                              ; preds = %141
  store i32 1, ptr %13, align 4
  br label %1777

146:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #11
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #11
  call void @llvm.lifetime.start.p0(i64 56, ptr %15) #11
  invoke void @_ZN6Assimp11SpatialSortC1Ev(ptr noundef nonnull align 8 dereferenceable(49) %15)
          to label %147 unwind label %155

147:                                              ; preds = %146
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #11
  %148 = load i64, ptr %8, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #11
  call void @_ZNSaISt4pairIjjEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #11
  invoke void @_ZNSt6vectorISt4pairIjjESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %148, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %149 unwind label %159

149:                                              ; preds = %147
  call void @_ZNSt15__new_allocatorISt4pairIjjEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #11
  store i32 0, ptr %20, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #11
  store i32 0, ptr %21, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #11
  store i64 0, ptr %22, align 8, !tbaa !9
  br label %150

150:                                              ; preds = %189, %149
  %151 = load i64, ptr %22, align 8, !tbaa !9
  %152 = load i64, ptr %8, align 8, !tbaa !9
  %153 = icmp ult i64 %151, %152
  br i1 %153, label %163, label %154

154:                                              ; preds = %150
  store i32 2, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  br label %201

155:                                              ; preds = %146
  %156 = landingpad { ptr, i32 }
          cleanup
  %157 = extractvalue { ptr, i32 } %156, 0
  store ptr %157, ptr %16, align 8
  %158 = extractvalue { ptr, i32 } %156, 1
  store i32 %158, ptr %17, align 4
  br label %1785

159:                                              ; preds = %147
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %16, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %17, align 4
  call void @_ZNSt15__new_allocatorISt4pairIjjEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #11
  br label %1784

163:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #11
  %164 = load ptr, ptr %7, align 8, !tbaa !5
  %165 = load i64, ptr %22, align 8, !tbaa !9
  %166 = getelementptr inbounds ptr, ptr %164, i64 %165
  %167 = load ptr, ptr %166, align 8, !tbaa !5
  store ptr %167, ptr %23, align 8, !tbaa !5
  %168 = load ptr, ptr %23, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.aiMesh, ptr %168, i32 0, i32 3
  %170 = load ptr, ptr %169, align 8, !tbaa !13
  %171 = load ptr, ptr %23, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.aiMesh, ptr %171, i32 0, i32 1
  %173 = load i32, ptr %172, align 4, !tbaa !20
  invoke void @_ZN6Assimp11SpatialSort6AppendEPK10aiVector3tIfEjjb(ptr noundef nonnull align 8 dereferenceable(49) %15, ptr noundef %170, i32 noundef %173, i32 noundef 12, i1 noundef zeroext false)
          to label %174 unwind label %192

174:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #11
  invoke void @_ZNSt4pairIjjEC2IRjS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %24, ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %175 unwind label %196

175:                                              ; preds = %174
  %176 = load i64, ptr %22, align 8, !tbaa !9
  %177 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %176) #11
  %178 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIjjEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %177, ptr noundef nonnull align 4 dereferenceable(8) %24) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  %179 = load ptr, ptr %23, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.aiMesh, ptr %179, i32 0, i32 2
  %181 = load i32, ptr %180, align 8, !tbaa !21
  %182 = load i32, ptr %20, align 4, !tbaa !11
  %183 = add i32 %182, %181
  store i32 %183, ptr %20, align 4, !tbaa !11
  %184 = load ptr, ptr %23, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.aiMesh, ptr %184, i32 0, i32 1
  %186 = load i32, ptr %185, align 4, !tbaa !20
  %187 = load i32, ptr %21, align 4, !tbaa !11
  %188 = add i32 %187, %186
  store i32 %188, ptr %21, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #11
  br label %189

189:                                              ; preds = %175
  %190 = load i64, ptr %22, align 8, !tbaa !9
  %191 = add i64 %190, 1
  store i64 %191, ptr %22, align 8, !tbaa !9
  br label %150, !llvm.loop !22

192:                                              ; preds = %163
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %16, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %17, align 4
  br label %200

196:                                              ; preds = %174
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %16, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  br label %200

200:                                              ; preds = %196, %192
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  br label %1783

201:                                              ; preds = %154
  invoke void @_ZN6Assimp11SpatialSort8FinalizeEv(ptr noundef nonnull align 8 dereferenceable(49) %15)
          to label %202 unwind label %217

202:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #11
  %203 = load ptr, ptr %7, align 8, !tbaa !5
  %204 = load i64, ptr %8, align 8, !tbaa !9
  %205 = invoke noundef float @_ZN6Assimp22ComputePositionEpsilonEPKPK6aiMeshm(ptr noundef %203, i64 noundef %204)
          to label %206 unwind label %221

206:                                              ; preds = %202
  %207 = invoke noundef i32 @_ZNK6Assimp11SpatialSort20GenerateMappingTableERSt6vectorIjSaIjEEf(ptr noundef nonnull align 8 dereferenceable(49) %15, ptr noundef nonnull align 8 dereferenceable(24) %14, float noundef %205)
          to label %208 unwind label %221

208:                                              ; preds = %206
  store i32 %207, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr %26) #11
  %209 = load i32, ptr %20, align 4, !tbaa !11
  %210 = zext i32 %209 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #11
  call void @_ZNSaIN6Assimp6VertexEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #11
  invoke void @_ZNSt6vectorIN6Assimp6VertexESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %210, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %211 unwind label %225

211:                                              ; preds = %208
  call void @_ZNSt15__new_allocatorIN6Assimp6VertexEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #11
  store i32 0, ptr %28, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #11
  store i64 0, ptr %29, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #11
  store i64 0, ptr %30, align 8, !tbaa !9
  br label %212

212:                                              ; preds = %301, %211
  %213 = load i64, ptr %29, align 8, !tbaa !9
  %214 = load i64, ptr %8, align 8, !tbaa !9
  %215 = icmp ult i64 %213, %214
  br i1 %215, label %229, label %216

216:                                              ; preds = %212
  store i32 5, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #11
  br label %304

217:                                              ; preds = %201
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %16, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %17, align 4
  br label %1783

221:                                              ; preds = %206, %202
  %222 = landingpad { ptr, i32 }
          cleanup
  %223 = extractvalue { ptr, i32 } %222, 0
  store ptr %223, ptr %16, align 8
  %224 = extractvalue { ptr, i32 } %222, 1
  store i32 %224, ptr %17, align 4
  br label %1782

225:                                              ; preds = %208
  %226 = landingpad { ptr, i32 }
          cleanup
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %16, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %17, align 4
  call void @_ZNSt15__new_allocatorIN6Assimp6VertexEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #11
  br label %1781

229:                                              ; preds = %212
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #11
  %230 = load ptr, ptr %7, align 8, !tbaa !5
  %231 = load i64, ptr %29, align 8, !tbaa !9
  %232 = getelementptr inbounds ptr, ptr %230, i64 %231
  %233 = load ptr, ptr %232, align 8, !tbaa !5
  store ptr %233, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #11
  store i32 0, ptr %32, align 4, !tbaa !11
  br label %234

234:                                              ; preds = %290, %229
  %235 = load i32, ptr %32, align 4, !tbaa !11
  %236 = load ptr, ptr %31, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.aiMesh, ptr %236, i32 0, i32 2
  %238 = load i32, ptr %237, align 8, !tbaa !21
  %239 = icmp ult i32 %235, %238
  br i1 %239, label %241, label %240

240:                                              ; preds = %234
  store i32 8, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #11
  br label %300

241:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #11
  %242 = load ptr, ptr %31, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.aiMesh, ptr %242, i32 0, i32 10
  %244 = load ptr, ptr %243, align 8, !tbaa !24
  %245 = load i32, ptr %32, align 4, !tbaa !11
  %246 = zext i32 %245 to i64
  %247 = getelementptr inbounds %struct.aiFace, ptr %244, i64 %246
  store ptr %247, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #11
  %248 = load i64, ptr %30, align 8, !tbaa !9
  %249 = call noundef nonnull align 4 dereferenceable(272) ptr @_ZNSt6vectorIN6Assimp6VertexESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %248) #11
  store ptr %249, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #11
  store i32 0, ptr %35, align 4, !tbaa !11
  br label %250

250:                                              ; preds = %270, %241
  %251 = load i32, ptr %35, align 4, !tbaa !11
  %252 = load ptr, ptr %33, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.aiFace, ptr %252, i32 0, i32 0
  %254 = load i32, ptr %253, align 8, !tbaa !25
  %255 = icmp ult i32 %251, %254
  br i1 %255, label %257, label %256

256:                                              ; preds = %250
  store i32 11, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #11
  br label %277

257:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 272, ptr %36) #11
  %258 = load ptr, ptr %31, align 8, !tbaa !5
  %259 = load ptr, ptr %33, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.aiFace, ptr %259, i32 0, i32 1
  %261 = load ptr, ptr %260, align 8, !tbaa !27
  %262 = load i32, ptr %35, align 4, !tbaa !11
  %263 = zext i32 %262 to i64
  %264 = getelementptr inbounds i32, ptr %261, i64 %263
  %265 = load i32, ptr %264, align 4, !tbaa !11
  invoke void @_ZN6Assimp6VertexC2EPK6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %36, ptr noundef %258, i32 noundef %265)
          to label %266 unwind label %273

266:                                              ; preds = %257
  %267 = load ptr, ptr %34, align 8, !tbaa !5
  %268 = invoke noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexpLERKS0_(ptr noundef nonnull align 4 dereferenceable(272) %267, ptr noundef nonnull align 4 dereferenceable(272) %36)
          to label %269 unwind label %273

269:                                              ; preds = %266
  call void @llvm.lifetime.end.p0(i64 272, ptr %36) #11
  br label %270

270:                                              ; preds = %269
  %271 = load i32, ptr %35, align 4, !tbaa !11
  %272 = add i32 %271, 1
  store i32 %272, ptr %35, align 4, !tbaa !11
  br label %250, !llvm.loop !28

273:                                              ; preds = %266, %257
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %16, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 272, ptr %36) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #11
  br label %299

277:                                              ; preds = %256
  %278 = load ptr, ptr %33, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.aiFace, ptr %278, i32 0, i32 0
  %280 = load i32, ptr %279, align 8, !tbaa !25
  %281 = uitofp i32 %280 to float
  %282 = load ptr, ptr %34, align 8, !tbaa !5
  %283 = invoke noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexdVEf(ptr noundef nonnull align 4 dereferenceable(272) %282, float noundef %281)
          to label %284 unwind label %295

284:                                              ; preds = %277
  %285 = load ptr, ptr %33, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.aiFace, ptr %285, i32 0, i32 0
  %287 = load i32, ptr %286, align 8, !tbaa !25
  %288 = load i32, ptr %28, align 4, !tbaa !11
  %289 = add i32 %288, %287
  store i32 %289, ptr %28, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #11
  br label %290

290:                                              ; preds = %284
  %291 = load i32, ptr %32, align 4, !tbaa !11
  %292 = add i32 %291, 1
  store i32 %292, ptr %32, align 4, !tbaa !11
  %293 = load i64, ptr %30, align 8, !tbaa !9
  %294 = add i64 %293, 1
  store i64 %294, ptr %30, align 8, !tbaa !9
  br label %234, !llvm.loop !29

295:                                              ; preds = %277
  %296 = landingpad { ptr, i32 }
          cleanup
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %16, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %17, align 4
  br label %299

299:                                              ; preds = %295, %273
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #11
  br label %1780

300:                                              ; preds = %240
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  br label %301

301:                                              ; preds = %300
  %302 = load i64, ptr %29, align 8, !tbaa !9
  %303 = add i64 %302, 1
  store i64 %303, ptr %29, align 8, !tbaa !9
  br label %212, !llvm.loop !30

304:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 56, ptr %37) #11
  call void @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %37) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #11
  store i64 0, ptr %38, align 8, !tbaa !9
  br label %305

305:                                              ; preds = %473, %304
  %306 = load i64, ptr %38, align 8, !tbaa !9
  %307 = load i64, ptr %8, align 8, !tbaa !9
  %308 = icmp ult i64 %306, %307
  br i1 %308, label %310, label %309

309:                                              ; preds = %305
  store i32 14, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  br label %476

310:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #11
  %311 = load ptr, ptr %7, align 8, !tbaa !5
  %312 = load i64, ptr %38, align 8, !tbaa !9
  %313 = getelementptr inbounds ptr, ptr %311, i64 %312
  %314 = load ptr, ptr %313, align 8, !tbaa !5
  store ptr %314, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #11
  store i32 0, ptr %40, align 4, !tbaa !11
  br label %315

315:                                              ; preds = %469, %310
  %316 = load i32, ptr %40, align 4, !tbaa !11
  %317 = load ptr, ptr %39, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.aiMesh, ptr %317, i32 0, i32 2
  %319 = load i32, ptr %318, align 8, !tbaa !21
  %320 = icmp ult i32 %316, %319
  br i1 %320, label %322, label %321

321:                                              ; preds = %315
  store i32 17, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #11
  br label %472

322:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #11
  %323 = load ptr, ptr %39, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.aiMesh, ptr %323, i32 0, i32 10
  %325 = load ptr, ptr %324, align 8, !tbaa !24
  %326 = load i32, ptr %40, align 4, !tbaa !11
  %327 = zext i32 %326 to i64
  %328 = getelementptr inbounds %struct.aiFace, ptr %325, i64 %327
  store ptr %328, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #11
  store i32 0, ptr %42, align 4, !tbaa !11
  br label %329

329:                                              ; preds = %464, %322
  %330 = load i32, ptr %42, align 4, !tbaa !11
  %331 = load ptr, ptr %41, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.aiFace, ptr %331, i32 0, i32 0
  %333 = load i32, ptr %332, align 8, !tbaa !25
  %334 = icmp ult i32 %330, %333
  br i1 %334, label %336, label %335

335:                                              ; preds = %329
  store i32 20, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #11
  br label %468

336:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #11
  %337 = load ptr, ptr %41, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.aiFace, ptr %337, i32 0, i32 1
  %339 = load ptr, ptr %338, align 8, !tbaa !27
  %340 = load i32, ptr %42, align 4, !tbaa !11
  %341 = zext i32 %340 to i64
  %342 = getelementptr inbounds i32, ptr %339, i64 %341
  %343 = load i32, ptr %342, align 4, !tbaa !11
  store i32 %343, ptr %43, align 4, !tbaa !11
  %344 = getelementptr inbounds i32, ptr %43, i64 1
  %345 = load ptr, ptr %41, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.aiFace, ptr %345, i32 0, i32 1
  %347 = load ptr, ptr %346, align 8, !tbaa !27
  %348 = load i32, ptr %42, align 4, !tbaa !11
  %349 = load ptr, ptr %41, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.aiFace, ptr %349, i32 0, i32 0
  %351 = load i32, ptr %350, align 8, !tbaa !25
  %352 = sub i32 %351, 1
  %353 = icmp eq i32 %348, %352
  br i1 %353, label %354, label %355

354:                                              ; preds = %336
  br label %358

355:                                              ; preds = %336
  %356 = load i32, ptr %42, align 4, !tbaa !11
  %357 = add i32 %356, 1
  br label %358

358:                                              ; preds = %355, %354
  %359 = phi i32 [ 0, %354 ], [ %357, %355 ]
  %360 = zext i32 %359 to i64
  %361 = getelementptr inbounds i32, ptr %347, i64 %360
  %362 = load i32, ptr %361, align 4, !tbaa !11
  store i32 %362, ptr %344, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #11
  %363 = load i64, ptr %38, align 8, !tbaa !9
  %364 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %363) #11
  %365 = getelementptr inbounds %"struct.std::pair", ptr %364, i32 0, i32 1
  %366 = load i32, ptr %365, align 4, !tbaa !31
  %367 = getelementptr inbounds [2 x i32], ptr %43, i64 0, i64 0
  %368 = load i32, ptr %367, align 4, !tbaa !11
  %369 = add i32 %366, %368
  %370 = zext i32 %369 to i64
  %371 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %370) #11
  %372 = load i32, ptr %371, align 4, !tbaa !11
  store i32 %372, ptr %44, align 4, !tbaa !11
  %373 = getelementptr inbounds i32, ptr %44, i64 1
  %374 = load i64, ptr %38, align 8, !tbaa !9
  %375 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %374) #11
  %376 = getelementptr inbounds %"struct.std::pair", ptr %375, i32 0, i32 1
  %377 = load i32, ptr %376, align 4, !tbaa !31
  %378 = getelementptr inbounds [2 x i32], ptr %43, i64 0, i64 1
  %379 = load i32, ptr %378, align 4, !tbaa !11
  %380 = add i32 %377, %379
  %381 = zext i32 %380 to i64
  %382 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %381) #11
  %383 = load i32, ptr %382, align 4, !tbaa !11
  store i32 %383, ptr %373, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #11
  %384 = getelementptr inbounds [2 x i32], ptr %44, i64 0, i64 0
  %385 = load i32, ptr %384, align 4, !tbaa !11
  store i32 %385, ptr %11, align 4, !tbaa !11
  %386 = getelementptr inbounds [2 x i32], ptr %44, i64 0, i64 1
  %387 = load i32, ptr %386, align 4, !tbaa !11
  store i32 %387, ptr %12, align 4, !tbaa !11
  %388 = load i32, ptr %11, align 4, !tbaa !11
  %389 = load i32, ptr %12, align 4, !tbaa !11
  %390 = icmp ult i32 %388, %389
  br i1 %390, label %391, label %392

391:                                              ; preds = %358
  call void @_ZSt4swapIjENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %12) #11
  br label %393

392:                                              ; preds = %358
  call void @_Z7mydummyv()
  br label %393

393:                                              ; preds = %392, %391
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #11
  %394 = load i32, ptr %11, align 4, !tbaa !11
  %395 = zext i32 %394 to i64
  %396 = load i32, ptr %12, align 4, !tbaa !11
  %397 = zext i32 %396 to i64
  %398 = shl i64 %397, 32
  %399 = xor i64 %395, %398
  store i64 %399, ptr %46, align 8, !tbaa !9
  %400 = invoke noundef nonnull align 4 dereferenceable(548) ptr @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEEixEOm(ptr noundef nonnull align 8 dereferenceable(56) %37, ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %401 unwind label %433

401:                                              ; preds = %393
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #11
  store ptr %400, ptr %45, align 8, !tbaa !5
  %402 = load ptr, ptr %45, align 8, !tbaa !5
  %403 = getelementptr inbounds %"struct.CatmullClarkSubdivider::Edge", ptr %402, i32 0, i32 2
  %404 = load i32, ptr %403, align 4, !tbaa !33
  %405 = add i32 %404, 1
  store i32 %405, ptr %403, align 4, !tbaa !33
  %406 = load ptr, ptr %45, align 8, !tbaa !5
  %407 = getelementptr inbounds %"struct.CatmullClarkSubdivider::Edge", ptr %406, i32 0, i32 2
  %408 = load i32, ptr %407, align 4, !tbaa !33
  %409 = icmp ule i32 %408, 2
  br i1 %409, label %410, label %463

410:                                              ; preds = %401
  %411 = load ptr, ptr %45, align 8, !tbaa !5
  %412 = getelementptr inbounds %"struct.CatmullClarkSubdivider::Edge", ptr %411, i32 0, i32 2
  %413 = load i32, ptr %412, align 4, !tbaa !33
  %414 = icmp eq i32 %413, 1
  br i1 %414, label %415, label %450

415:                                              ; preds = %410
  call void @llvm.lifetime.start.p0(i64 272, ptr %47) #11
  call void @llvm.lifetime.start.p0(i64 272, ptr %48) #11
  %416 = load ptr, ptr %39, align 8, !tbaa !5
  %417 = getelementptr inbounds [2 x i32], ptr %43, i64 0, i64 0
  %418 = load i32, ptr %417, align 4, !tbaa !11
  invoke void @_ZN6Assimp6VertexC2EPK6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %48, ptr noundef %416, i32 noundef %418)
          to label %419 unwind label %437

419:                                              ; preds = %415
  call void @llvm.lifetime.start.p0(i64 272, ptr %49) #11
  %420 = load ptr, ptr %39, align 8, !tbaa !5
  %421 = getelementptr inbounds [2 x i32], ptr %43, i64 0, i64 1
  %422 = load i32, ptr %421, align 4, !tbaa !11
  invoke void @_ZN6Assimp6VertexC2EPK6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %49, ptr noundef %420, i32 noundef %422)
          to label %423 unwind label %441

423:                                              ; preds = %419
  invoke void @_ZN6AssimpplERKNS_6VertexES2_(ptr dead_on_unwind writable sret(%"struct.Assimp::Vertex") align 4 %47, ptr noundef nonnull align 4 dereferenceable(272) %48, ptr noundef nonnull align 4 dereferenceable(272) %49)
          to label %424 unwind label %441

424:                                              ; preds = %423
  %425 = load ptr, ptr %45, align 8, !tbaa !5
  %426 = getelementptr inbounds %"struct.CatmullClarkSubdivider::Edge", ptr %425, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %426, ptr align 4 %47, i64 272, i1 false), !tbaa.struct !36
  %427 = load ptr, ptr %45, align 8, !tbaa !5
  %428 = getelementptr inbounds %"struct.CatmullClarkSubdivider::Edge", ptr %427, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %428, ptr align 4 %426, i64 272, i1 false), !tbaa.struct !36
  call void @llvm.lifetime.end.p0(i64 272, ptr %49) #11
  call void @llvm.lifetime.end.p0(i64 272, ptr %48) #11
  call void @llvm.lifetime.end.p0(i64 272, ptr %47) #11
  %429 = load ptr, ptr %45, align 8, !tbaa !5
  %430 = getelementptr inbounds %"struct.CatmullClarkSubdivider::Edge", ptr %429, i32 0, i32 1
  %431 = invoke noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexmLEf(ptr noundef nonnull align 4 dereferenceable(272) %430, float noundef 5.000000e-01)
          to label %432 unwind label %446

432:                                              ; preds = %424
  br label %450

433:                                              ; preds = %393
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %16, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #11
  br label %467

437:                                              ; preds = %415
  %438 = landingpad { ptr, i32 }
          cleanup
  %439 = extractvalue { ptr, i32 } %438, 0
  store ptr %439, ptr %16, align 8
  %440 = extractvalue { ptr, i32 } %438, 1
  store i32 %440, ptr %17, align 4
  br label %445

441:                                              ; preds = %423, %419
  %442 = landingpad { ptr, i32 }
          cleanup
  %443 = extractvalue { ptr, i32 } %442, 0
  store ptr %443, ptr %16, align 8
  %444 = extractvalue { ptr, i32 } %442, 1
  store i32 %444, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 272, ptr %49) #11
  br label %445

445:                                              ; preds = %441, %437
  call void @llvm.lifetime.end.p0(i64 272, ptr %48) #11
  call void @llvm.lifetime.end.p0(i64 272, ptr %47) #11
  br label %467

446:                                              ; preds = %450, %424
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %16, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %17, align 4
  br label %467

450:                                              ; preds = %432, %410
  %451 = load i64, ptr %38, align 8, !tbaa !9
  %452 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %451) #11
  %453 = getelementptr inbounds %"struct.std::pair", ptr %452, i32 0, i32 0
  %454 = load i32, ptr %453, align 4, !tbaa !39
  %455 = load i32, ptr %40, align 4, !tbaa !11
  %456 = add i32 %454, %455
  %457 = zext i32 %456 to i64
  %458 = call noundef nonnull align 4 dereferenceable(272) ptr @_ZNSt6vectorIN6Assimp6VertexESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %457) #11
  %459 = load ptr, ptr %45, align 8, !tbaa !5
  %460 = getelementptr inbounds %"struct.CatmullClarkSubdivider::Edge", ptr %459, i32 0, i32 0
  %461 = invoke noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexpLERKS0_(ptr noundef nonnull align 4 dereferenceable(272) %460, ptr noundef nonnull align 4 dereferenceable(272) %458)
          to label %462 unwind label %446

462:                                              ; preds = %450
  br label %463

463:                                              ; preds = %462, %401
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #11
  br label %464

464:                                              ; preds = %463
  %465 = load i32, ptr %42, align 4, !tbaa !11
  %466 = add i32 %465, 1
  store i32 %466, ptr %42, align 4, !tbaa !11
  br label %329, !llvm.loop !40

467:                                              ; preds = %446, %445, %433
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  br label %1748

468:                                              ; preds = %335
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #11
  br label %469

469:                                              ; preds = %468
  %470 = load i32, ptr %40, align 4, !tbaa !11
  %471 = add i32 %470, 1
  store i32 %471, ptr %40, align 4, !tbaa !11
  br label %315, !llvm.loop !41

472:                                              ; preds = %321
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  br label %473

473:                                              ; preds = %472
  %474 = load i64, ptr %38, align 8, !tbaa !9
  %475 = add i64 %474, 1
  store i64 %475, ptr %38, align 8, !tbaa !9
  br label %305, !llvm.loop !42

476:                                              ; preds = %309
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #11
  store i32 0, ptr %50, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #11
  %477 = call ptr @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %37) #11
  %478 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %51, i32 0, i32 0
  %479 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %478, i32 0, i32 0
  store ptr %477, ptr %479, align 8
  br label %480

480:                                              ; preds = %521, %476
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #11
  %481 = call ptr @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %37) #11
  %482 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %52, i32 0, i32 0
  %483 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %482, i32 0, i32 0
  store ptr %481, ptr %483, align 8
  %484 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKmN22CatmullClarkSubdivider4EdgeEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #11
  br i1 %484, label %486, label %485

485:                                              ; preds = %480
  store i32 23, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #11
  br label %523

486:                                              ; preds = %480
  %487 = call noundef nonnull align 8 dereferenceable(556) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmN22CatmullClarkSubdivider4EdgeEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #11
  %488 = getelementptr inbounds %"struct.std::pair.25", ptr %487, i32 0, i32 1
  %489 = getelementptr inbounds %"struct.CatmullClarkSubdivider::Edge", ptr %488, i32 0, i32 2
  %490 = load i32, ptr %489, align 8, !tbaa !43
  %491 = icmp ult i32 %490, 2
  br i1 %491, label %492, label %508

492:                                              ; preds = %486
  %493 = call noundef nonnull align 8 dereferenceable(556) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmN22CatmullClarkSubdivider4EdgeEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #11
  %494 = getelementptr inbounds %"struct.std::pair.25", ptr %493, i32 0, i32 1
  %495 = getelementptr inbounds %"struct.CatmullClarkSubdivider::Edge", ptr %494, i32 0, i32 2
  %496 = load i32, ptr %495, align 8, !tbaa !43
  %497 = icmp ne i32 %496, 0
  br i1 %497, label %500, label %498

498:                                              ; preds = %492
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 331)
          to label %499 unwind label %504

499:                                              ; preds = %498
  br label %500

500:                                              ; preds = %499, %492
  %501 = phi i1 [ true, %492 ], [ false, %499 ]
  %502 = load i32, ptr %50, align 4, !tbaa !11
  %503 = add i32 %502, 1
  store i32 %503, ptr %50, align 4, !tbaa !11
  br label %508

504:                                              ; preds = %508, %498
  %505 = landingpad { ptr, i32 }
          cleanup
  %506 = extractvalue { ptr, i32 } %505, 0
  store ptr %506, ptr %16, align 8
  %507 = extractvalue { ptr, i32 } %505, 1
  store i32 %507, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #11
  br label %554

508:                                              ; preds = %500, %486
  %509 = call noundef nonnull align 8 dereferenceable(556) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmN22CatmullClarkSubdivider4EdgeEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #11
  %510 = getelementptr inbounds %"struct.std::pair.25", ptr %509, i32 0, i32 1
  %511 = getelementptr inbounds %"struct.CatmullClarkSubdivider::Edge", ptr %510, i32 0, i32 2
  %512 = load i32, ptr %511, align 8, !tbaa !43
  %513 = uitofp i32 %512 to float
  %514 = fadd float %513, 2.000000e+00
  %515 = fdiv float 1.000000e+00, %514
  %516 = call noundef nonnull align 8 dereferenceable(556) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmN22CatmullClarkSubdivider4EdgeEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #11
  %517 = getelementptr inbounds %"struct.std::pair.25", ptr %516, i32 0, i32 1
  %518 = getelementptr inbounds %"struct.CatmullClarkSubdivider::Edge", ptr %517, i32 0, i32 0
  %519 = invoke noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexmLEf(ptr noundef nonnull align 4 dereferenceable(272) %518, float noundef %515)
          to label %520 unwind label %504

520:                                              ; preds = %508
  br label %521

521:                                              ; preds = %520
  %522 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKmN22CatmullClarkSubdivider4EdgeEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #11
  br label %480, !llvm.loop !45

523:                                              ; preds = %485
  %524 = load i32, ptr %50, align 4, !tbaa !11
  %525 = icmp ne i32 %524, 0
  br i1 %525, label %526, label %540

526:                                              ; preds = %523
  %527 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %528 unwind label %532

528:                                              ; preds = %526
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #11
  %529 = call noundef i64 @_ZNKSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %37) #11
  %530 = trunc i64 %529 to i32
  store i32 %530, ptr %53, align 4, !tbaa !11
  invoke void @_ZN6Assimp6Logger12verboseDebugIJRA31_KcRjRA44_S2_jRA10_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %527, ptr noundef nonnull align 1 dereferenceable(31) @.str.12, ptr noundef nonnull align 4 dereferenceable(4) %50, ptr noundef nonnull align 1 dereferenceable(44) @.str.13, ptr noundef nonnull align 4 dereferenceable(4) %53, ptr noundef nonnull align 1 dereferenceable(10) @.str.14)
          to label %531 unwind label %536

531:                                              ; preds = %528
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #11
  br label %540

532:                                              ; preds = %526
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %16, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %17, align 4
  br label %554

536:                                              ; preds = %528
  %537 = landingpad { ptr, i32 }
          cleanup
  %538 = extractvalue { ptr, i32 } %537, 0
  store ptr %538, ptr %16, align 8
  %539 = extractvalue { ptr, i32 } %537, 1
  store i32 %539, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #11
  br label %554

540:                                              ; preds = %531, %523
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr %54) #11
  %541 = load i32, ptr %28, align 4, !tbaa !11
  %542 = zext i32 %541 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #11
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #11
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %542, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %543 unwind label %555

543:                                              ; preds = %540
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr %56) #11
  %544 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #11
  store i32 0, ptr %57, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #11
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #11
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %544, ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %545 unwind label %559

545:                                              ; preds = %543
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr %59) #11
  %546 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #11
  %547 = add i64 %546, 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #11
  store i32 0, ptr %60, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #11
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #11
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %547, ptr noundef nonnull align 4 dereferenceable(4) %60, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %548 unwind label %563

548:                                              ; preds = %545
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #11
  store i64 0, ptr %62, align 8, !tbaa !9
  br label %549

549:                                              ; preds = %621, %548
  %550 = load i64, ptr %62, align 8, !tbaa !9
  %551 = load i64, ptr %8, align 8, !tbaa !9
  %552 = icmp ult i64 %550, %551
  br i1 %552, label %567, label %553

553:                                              ; preds = %549
  store i32 26, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #11
  br label %624

554:                                              ; preds = %536, %532, %504
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  br label %1748

555:                                              ; preds = %540
  %556 = landingpad { ptr, i32 }
          cleanup
  %557 = extractvalue { ptr, i32 } %556, 0
  store ptr %557, ptr %16, align 8
  %558 = extractvalue { ptr, i32 } %556, 1
  store i32 %558, ptr %17, align 4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #11
  br label %1747

559:                                              ; preds = %543
  %560 = landingpad { ptr, i32 }
          cleanup
  %561 = extractvalue { ptr, i32 } %560, 0
  store ptr %561, ptr %16, align 8
  %562 = extractvalue { ptr, i32 } %560, 1
  store i32 %562, ptr %17, align 4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #11
  br label %1746

563:                                              ; preds = %545
  %564 = landingpad { ptr, i32 }
          cleanup
  %565 = extractvalue { ptr, i32 } %564, 0
  store ptr %565, ptr %16, align 8
  %566 = extractvalue { ptr, i32 } %564, 1
  store i32 %566, ptr %17, align 4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #11
  br label %1745

567:                                              ; preds = %549
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #11
  %568 = load ptr, ptr %7, align 8, !tbaa !5
  %569 = load i64, ptr %62, align 8, !tbaa !9
  %570 = getelementptr inbounds ptr, ptr %568, i64 %569
  %571 = load ptr, ptr %570, align 8, !tbaa !5
  store ptr %571, ptr %63, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #11
  store i32 0, ptr %64, align 4, !tbaa !11
  br label %572

572:                                              ; preds = %617, %567
  %573 = load i32, ptr %64, align 4, !tbaa !11
  %574 = load ptr, ptr %63, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.aiMesh, ptr %574, i32 0, i32 2
  %576 = load i32, ptr %575, align 8, !tbaa !21
  %577 = icmp ult i32 %573, %576
  br i1 %577, label %579, label %578

578:                                              ; preds = %572
  store i32 29, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #11
  br label %620

579:                                              ; preds = %572
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #11
  %580 = load ptr, ptr %63, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.aiMesh, ptr %580, i32 0, i32 10
  %582 = load ptr, ptr %581, align 8, !tbaa !24
  %583 = load i32, ptr %64, align 4, !tbaa !11
  %584 = zext i32 %583 to i64
  %585 = getelementptr inbounds %struct.aiFace, ptr %582, i64 %584
  store ptr %585, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #11
  store i32 0, ptr %66, align 4, !tbaa !11
  br label %586

586:                                              ; preds = %613, %579
  %587 = load i32, ptr %66, align 4, !tbaa !11
  %588 = load ptr, ptr %65, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.aiFace, ptr %588, i32 0, i32 0
  %590 = load i32, ptr %589, align 8, !tbaa !25
  %591 = icmp ult i32 %587, %590
  br i1 %591, label %593, label %592

592:                                              ; preds = %586
  store i32 32, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #11
  br label %616

593:                                              ; preds = %586
  %594 = load i64, ptr %62, align 8, !tbaa !9
  %595 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %594) #11
  %596 = getelementptr inbounds %"struct.std::pair", ptr %595, i32 0, i32 1
  %597 = load i32, ptr %596, align 4, !tbaa !31
  %598 = load ptr, ptr %65, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.aiFace, ptr %598, i32 0, i32 1
  %600 = load ptr, ptr %599, align 8, !tbaa !27
  %601 = load i32, ptr %66, align 4, !tbaa !11
  %602 = zext i32 %601 to i64
  %603 = getelementptr inbounds i32, ptr %600, i64 %602
  %604 = load i32, ptr %603, align 4, !tbaa !11
  %605 = add i32 %597, %604
  %606 = zext i32 %605 to i64
  %607 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %606) #11
  %608 = load i32, ptr %607, align 4, !tbaa !11
  %609 = zext i32 %608 to i64
  %610 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %609) #11
  %611 = load i32, ptr %610, align 4, !tbaa !11
  %612 = add i32 %611, 1
  store i32 %612, ptr %610, align 4, !tbaa !11
  br label %613

613:                                              ; preds = %593
  %614 = load i32, ptr %66, align 4, !tbaa !11
  %615 = add i32 %614, 1
  store i32 %615, ptr %66, align 4, !tbaa !11
  br label %586, !llvm.loop !46

616:                                              ; preds = %592
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #11
  br label %617

617:                                              ; preds = %616
  %618 = load i32, ptr %64, align 4, !tbaa !11
  %619 = add i32 %618, 1
  store i32 %619, ptr %64, align 4, !tbaa !11
  br label %572, !llvm.loop !47

620:                                              ; preds = %578
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #11
  br label %621

621:                                              ; preds = %620
  %622 = load i64, ptr %62, align 8, !tbaa !9
  %623 = add i64 %622, 1
  store i64 %623, ptr %62, align 8, !tbaa !9
  br label %549, !llvm.loop !48

624:                                              ; preds = %553
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #11
  store i32 0, ptr %67, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #11
  store i64 0, ptr %68, align 8, !tbaa !9
  br label %625

625:                                              ; preds = %640, %624
  %626 = load i64, ptr %68, align 8, !tbaa !9
  %627 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #11
  %628 = icmp ult i64 %626, %627
  br i1 %628, label %630, label %629

629:                                              ; preds = %625
  store i32 35, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #11
  br label %643

630:                                              ; preds = %625
  %631 = load i32, ptr %67, align 4, !tbaa !11
  %632 = load i64, ptr %68, align 8, !tbaa !9
  %633 = add i64 %632, 1
  %634 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %633) #11
  store i32 %631, ptr %634, align 4, !tbaa !11
  %635 = load i64, ptr %68, align 8, !tbaa !9
  %636 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %635) #11
  %637 = load i32, ptr %636, align 4, !tbaa !11
  %638 = load i32, ptr %67, align 4, !tbaa !11
  %639 = add i32 %638, %637
  store i32 %639, ptr %67, align 4, !tbaa !11
  br label %640

640:                                              ; preds = %630
  %641 = load i64, ptr %68, align 8, !tbaa !9
  %642 = add i64 %641, 1
  store i64 %642, ptr %68, align 8, !tbaa !9
  br label %625, !llvm.loop !49

643:                                              ; preds = %629
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #11
  store i64 0, ptr %69, align 8, !tbaa !9
  br label %644

644:                                              ; preds = %712, %643
  %645 = load i64, ptr %69, align 8, !tbaa !9
  %646 = load i64, ptr %8, align 8, !tbaa !9
  %647 = icmp ult i64 %645, %646
  br i1 %647, label %649, label %648

648:                                              ; preds = %644
  store i32 38, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #11
  br label %715

649:                                              ; preds = %644
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #11
  %650 = load ptr, ptr %7, align 8, !tbaa !5
  %651 = load i64, ptr %69, align 8, !tbaa !9
  %652 = getelementptr inbounds ptr, ptr %650, i64 %651
  %653 = load ptr, ptr %652, align 8, !tbaa !5
  store ptr %653, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #11
  store i32 0, ptr %71, align 4, !tbaa !11
  br label %654

654:                                              ; preds = %708, %649
  %655 = load i32, ptr %71, align 4, !tbaa !11
  %656 = load ptr, ptr %70, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.aiMesh, ptr %656, i32 0, i32 2
  %658 = load i32, ptr %657, align 8, !tbaa !21
  %659 = icmp ult i32 %655, %658
  br i1 %659, label %661, label %660

660:                                              ; preds = %654
  store i32 41, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #11
  br label %711

661:                                              ; preds = %654
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #11
  %662 = load ptr, ptr %70, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.aiMesh, ptr %662, i32 0, i32 10
  %664 = load ptr, ptr %663, align 8, !tbaa !24
  %665 = load i32, ptr %71, align 4, !tbaa !11
  %666 = zext i32 %665 to i64
  %667 = getelementptr inbounds %struct.aiFace, ptr %664, i64 %666
  store ptr %667, ptr %72, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #11
  store i32 0, ptr %73, align 4, !tbaa !11
  br label %668

668:                                              ; preds = %704, %661
  %669 = load i32, ptr %73, align 4, !tbaa !11
  %670 = load ptr, ptr %72, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.aiFace, ptr %670, i32 0, i32 0
  %672 = load i32, ptr %671, align 8, !tbaa !25
  %673 = icmp ult i32 %669, %672
  br i1 %673, label %675, label %674

674:                                              ; preds = %668
  store i32 44, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #11
  br label %707

675:                                              ; preds = %668
  %676 = load i64, ptr %69, align 8, !tbaa !9
  %677 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %676) #11
  %678 = getelementptr inbounds %"struct.std::pair", ptr %677, i32 0, i32 0
  %679 = load i32, ptr %678, align 4, !tbaa !39
  %680 = load i32, ptr %71, align 4, !tbaa !11
  %681 = add i32 %679, %680
  %682 = load i64, ptr %69, align 8, !tbaa !9
  %683 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %682) #11
  %684 = getelementptr inbounds %"struct.std::pair", ptr %683, i32 0, i32 1
  %685 = load i32, ptr %684, align 4, !tbaa !31
  %686 = load ptr, ptr %72, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.aiFace, ptr %686, i32 0, i32 1
  %688 = load ptr, ptr %687, align 8, !tbaa !27
  %689 = load i32, ptr %73, align 4, !tbaa !11
  %690 = zext i32 %689 to i64
  %691 = getelementptr inbounds i32, ptr %688, i64 %690
  %692 = load i32, ptr %691, align 4, !tbaa !11
  %693 = add i32 %685, %692
  %694 = zext i32 %693 to i64
  %695 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %694) #11
  %696 = load i32, ptr %695, align 4, !tbaa !11
  %697 = add i32 1, %696
  %698 = zext i32 %697 to i64
  %699 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %698) #11
  %700 = load i32, ptr %699, align 4, !tbaa !11
  %701 = add i32 %700, 1
  store i32 %701, ptr %699, align 4, !tbaa !11
  %702 = zext i32 %700 to i64
  %703 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %702) #11
  store i32 %681, ptr %703, align 4, !tbaa !11
  br label %704

704:                                              ; preds = %675
  %705 = load i32, ptr %73, align 4, !tbaa !11
  %706 = add i32 %705, 1
  store i32 %706, ptr %73, align 4, !tbaa !11
  br label %668, !llvm.loop !50

707:                                              ; preds = %674
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #11
  br label %708

708:                                              ; preds = %707
  %709 = load i32, ptr %71, align 4, !tbaa !11
  %710 = add i32 %709, 1
  store i32 %710, ptr %71, align 4, !tbaa !11
  br label %654, !llvm.loop !51

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

712:                                              ; preds = %711
  %713 = load i64, ptr %69, align 8, !tbaa !9
  %714 = add i64 %713, 1
  store i64 %714, ptr %69, align 8, !tbaa !9
  br label %644, !llvm.loop !52

715:                                              ; preds = %648
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #11
  store i64 0, ptr %74, align 8, !tbaa !9
  br label %716

716:                                              ; preds = %840, %715
  %717 = load i64, ptr %74, align 8, !tbaa !9
  %718 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %59) #11
  %719 = sub i64 %718, 1
  %720 = icmp ult i64 %717, %719
  br i1 %720, label %722, label %721

721:                                              ; preds = %716
  store i32 47, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #11
  br label %843

722:                                              ; preds = %716
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #11
  store i32 0, ptr %75, align 4, !tbaa !11
  br label %723

723:                                              ; preds = %835, %722
  %724 = load i32, ptr %75, align 4, !tbaa !11
  %725 = load i64, ptr %74, align 8, !tbaa !9
  %726 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %725) #11
  %727 = load i32, ptr %726, align 4, !tbaa !11
  %728 = icmp ult i32 %724, %727
  br i1 %728, label %730, label %729

729:                                              ; preds = %723
  store i32 50, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #11
  br label %839

730:                                              ; preds = %723
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #11
  %731 = load i64, ptr %74, align 8, !tbaa !9
  %732 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %731) #11
  %733 = load i32, ptr %732, align 4, !tbaa !11
  %734 = load i32, ptr %75, align 4, !tbaa !11
  %735 = add i32 %733, %734
  %736 = zext i32 %735 to i64
  %737 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %736) #11
  %738 = load i32, ptr %737, align 4, !tbaa !11
  store i32 %738, ptr %76, align 4, !tbaa !11
  %739 = load i32, ptr %76, align 4, !tbaa !11
  %740 = load i32, ptr %20, align 4, !tbaa !11
  %741 = icmp ult i32 %739, %740
  br i1 %741, label %744, label %742

742:                                              ; preds = %730
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 386)
          to label %743 unwind label %751

743:                                              ; preds = %742
  br label %744

744:                                              ; preds = %743, %730
  %745 = phi i1 [ true, %730 ], [ false, %743 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #11
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %746

746:                                              ; preds = %830, %744
  %747 = load i64, ptr %77, align 8, !tbaa !9
  %748 = load i64, ptr %8, align 8, !tbaa !9
  %749 = icmp ult i64 %747, %748
  br i1 %749, label %755, label %750

750:                                              ; preds = %746
  store i32 53, ptr %13, align 4
  br label %833

751:                                              ; preds = %742
  %752 = landingpad { ptr, i32 }
          cleanup
  %753 = extractvalue { ptr, i32 } %752, 0
  store ptr %753, ptr %16, align 8
  %754 = extractvalue { ptr, i32 } %752, 1
  store i32 %754, ptr %17, align 4
  br label %838

755:                                              ; preds = %746
  %756 = load i64, ptr %77, align 8, !tbaa !9
  %757 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %756) #11
  %758 = getelementptr inbounds %"struct.std::pair", ptr %757, i32 0, i32 0
  %759 = load i32, ptr %758, align 4, !tbaa !39
  %760 = load i32, ptr %76, align 4, !tbaa !11
  %761 = icmp ugt i32 %759, %760
  br i1 %761, label %762, label %829

762:                                              ; preds = %755
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #11
  %763 = load ptr, ptr %7, align 8, !tbaa !5
  %764 = load i64, ptr %77, align 8, !tbaa !9
  %765 = add i64 %764, -1
  store i64 %765, ptr %77, align 8, !tbaa !9
  %766 = getelementptr inbounds ptr, ptr %763, i64 %765
  %767 = load ptr, ptr %766, align 8, !tbaa !5
  store ptr %767, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #11
  %768 = load ptr, ptr %78, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.aiMesh, ptr %768, i32 0, i32 10
  %770 = load ptr, ptr %769, align 8, !tbaa !24
  %771 = load i32, ptr %76, align 4, !tbaa !11
  %772 = load i64, ptr %77, align 8, !tbaa !9
  %773 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %772) #11
  %774 = getelementptr inbounds %"struct.std::pair", ptr %773, i32 0, i32 0
  %775 = load i32, ptr %774, align 4, !tbaa !39
  %776 = sub i32 %771, %775
  %777 = zext i32 %776 to i64
  %778 = getelementptr inbounds %struct.aiFace, ptr %770, i64 %777
  store ptr %778, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #11
  store i8 0, ptr %80, align 1, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #11
  store i32 0, ptr %81, align 4, !tbaa !11
  br label %779

779:                                              ; preds = %807, %762
  %780 = load i32, ptr %81, align 4, !tbaa !11
  %781 = load ptr, ptr %79, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.aiFace, ptr %781, i32 0, i32 0
  %783 = load i32, ptr %782, align 8, !tbaa !25
  %784 = icmp ult i32 %780, %783
  br i1 %784, label %786, label %785

785:                                              ; preds = %779
  store i32 56, ptr %13, align 4
  br label %810

786:                                              ; preds = %779
  %787 = load i64, ptr %77, align 8, !tbaa !9
  %788 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %787) #11
  %789 = getelementptr inbounds %"struct.std::pair", ptr %788, i32 0, i32 1
  %790 = load i32, ptr %789, align 4, !tbaa !31
  %791 = load ptr, ptr %79, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.aiFace, ptr %791, i32 0, i32 1
  %793 = load ptr, ptr %792, align 8, !tbaa !27
  %794 = load i32, ptr %81, align 4, !tbaa !11
  %795 = zext i32 %794 to i64
  %796 = getelementptr inbounds i32, ptr %793, i64 %795
  %797 = load i32, ptr %796, align 4, !tbaa !11
  %798 = add i32 %790, %797
  %799 = zext i32 %798 to i64
  %800 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %799) #11
  %801 = load i32, ptr %800, align 4, !tbaa !11
  %802 = load i64, ptr %74, align 8, !tbaa !9
  %803 = trunc i64 %802 to i32
  %804 = icmp eq i32 %801, %803
  br i1 %804, label %805, label %806

805:                                              ; preds = %786
  store i8 1, ptr %80, align 1, !tbaa !53
  store i32 56, ptr %13, align 4
  br label %810

806:                                              ; preds = %786
  br label %807

807:                                              ; preds = %806
  %808 = load i32, ptr %81, align 4, !tbaa !11
  %809 = add i32 %808, 1
  store i32 %809, ptr %81, align 4, !tbaa !11
  br label %779, !llvm.loop !55

810:                                              ; preds = %805, %785
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #11
  br label %811

811:                                              ; preds = %810
  %812 = load i8, ptr %80, align 1, !tbaa !53, !range !56, !noundef !57
  %813 = trunc i8 %812 to i1
  br i1 %813, label %816, label %814

814:                                              ; preds = %811
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 400)
          to label %815 unwind label %824

815:                                              ; preds = %814
  br label %816

816:                                              ; preds = %815, %811
  %817 = phi i1 [ true, %811 ], [ false, %815 ]
  %818 = load i8, ptr %80, align 1, !tbaa !53, !range !56, !noundef !57
  %819 = trunc i8 %818 to i1
  br i1 %819, label %828, label %820

820:                                              ; preds = %816
  %821 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %822 unwind label %824

822:                                              ; preds = %820
  invoke void @_ZN6Assimp6Logger12verboseDebugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %821, ptr noundef @.str.17)
          to label %823 unwind label %824

823:                                              ; preds = %822
  br label %828

824:                                              ; preds = %822, %820, %814
  %825 = landingpad { ptr, i32 }
          cleanup
  %826 = extractvalue { ptr, i32 } %825, 0
  store ptr %826, ptr %16, align 8
  %827 = extractvalue { ptr, i32 } %825, 1
  store i32 %827, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #11
  br label %838

828:                                              ; preds = %823, %816
  store i32 53, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #11
  br label %833

829:                                              ; preds = %755
  br label %830

830:                                              ; preds = %829
  %831 = load i64, ptr %77, align 8, !tbaa !9
  %832 = add i64 %831, 1
  store i64 %832, ptr %77, align 8, !tbaa !9
  br label %746, !llvm.loop !58

833:                                              ; preds = %828, %750
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #11
  br label %834

834:                                              ; preds = %833
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #11
  br label %835

835:                                              ; preds = %834
  %836 = load i32, ptr %75, align 4, !tbaa !11
  %837 = add i32 %836, 1
  store i32 %837, ptr %75, align 4, !tbaa !11
  br label %723, !llvm.loop !59

838:                                              ; preds = %824, %751
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #11
  br label %1744

839:                                              ; preds = %729
  br label %840

840:                                              ; preds = %839
  %841 = load i64, ptr %74, align 8, !tbaa !9
  %842 = add i64 %841, 1
  store i64 %842, ptr %74, align 8, !tbaa !9
  br label %716, !llvm.loop !60

843:                                              ; preds = %721
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr %82) #11
  %844 = load i32, ptr %25, align 4, !tbaa !11
  %845 = zext i32 %844 to i64
  call void @llvm.lifetime.start.p0(i64 276, ptr %83) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #11
  store i8 0, ptr %84, align 1, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 272, ptr %85) #11
  call void @llvm.memset.p0.i64(ptr align 4 %85, i8 0, i64 272, i1 false)
  call void @_ZN6Assimp6VertexC2Ev(ptr noundef nonnull align 4 dereferenceable(272) %85) #11
  invoke void @_ZNSt4pairIbN6Assimp6VertexEEC2IbS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS5_S6_EEEbE4typeELb1EEEOS5_OS6_(ptr noundef nonnull align 4 dereferenceable(276) %83, ptr noundef nonnull align 1 dereferenceable(1) %84, ptr noundef nonnull align 4 dereferenceable(272) %85)
          to label %846 unwind label %853

846:                                              ; preds = %843
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #11
  call void @_ZNSaISt4pairIbN6Assimp6VertexEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #11
  invoke void @_ZNSt6vectorISt4pairIbN6Assimp6VertexEESaIS3_EEC2EmRKS3_RKS4_(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %845, ptr noundef nonnull align 4 dereferenceable(276) %83, ptr noundef nonnull align 1 dereferenceable(1) %86)
          to label %847 unwind label %857

847:                                              ; preds = %846
  call void @_ZNSt15__new_allocatorISt4pairIbN6Assimp6VertexEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #11
  call void @llvm.lifetime.end.p0(i64 272, ptr %85) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #11
  call void @llvm.lifetime.end.p0(i64 276, ptr %83) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #11
  store i64 0, ptr %87, align 8, !tbaa !9
  br label %848

848:                                              ; preds = %1722, %847
  %849 = load i64, ptr %87, align 8, !tbaa !9
  %850 = load i64, ptr %8, align 8, !tbaa !9
  %851 = icmp ult i64 %849, %850
  br i1 %851, label %862, label %852

852:                                              ; preds = %848
  store i32 59, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #11
  br label %1726

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

857:                                              ; preds = %846
  %858 = landingpad { ptr, i32 }
          cleanup
  %859 = extractvalue { ptr, i32 } %858, 0
  store ptr %859, ptr %16, align 8
  %860 = extractvalue { ptr, i32 } %858, 1
  store i32 %860, ptr %17, align 4
  call void @_ZNSt15__new_allocatorISt4pairIbN6Assimp6VertexEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #11
  br label %861

861:                                              ; preds = %857, %853
  call void @llvm.lifetime.end.p0(i64 272, ptr %85) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #11
  call void @llvm.lifetime.end.p0(i64 276, ptr %83) #11
  br label %1743

862:                                              ; preds = %848
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #11
  %863 = load ptr, ptr %7, align 8, !tbaa !5
  %864 = load i64, ptr %87, align 8, !tbaa !9
  %865 = getelementptr inbounds ptr, ptr %863, i64 %864
  %866 = load ptr, ptr %865, align 8, !tbaa !5
  store ptr %866, ptr %88, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #11
  %867 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 1320) #12
          to label %868 unwind label %879

868:                                              ; preds = %862
  call void @_ZN6aiMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %867) #11
  %869 = load ptr, ptr %9, align 8, !tbaa !5
  %870 = load i64, ptr %87, align 8, !tbaa !9
  %871 = getelementptr inbounds ptr, ptr %869, i64 %870
  store ptr %867, ptr %871, align 8, !tbaa !5
  store ptr %867, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #11
  store i32 0, ptr %90, align 4, !tbaa !11
  br label %872

872:                                              ; preds = %896, %868
  %873 = load i32, ptr %90, align 4, !tbaa !11
  %874 = load ptr, ptr %88, align 8, !tbaa !5
  %875 = getelementptr inbounds %struct.aiMesh, ptr %874, i32 0, i32 2
  %876 = load i32, ptr %875, align 8, !tbaa !21
  %877 = icmp ult i32 %873, %876
  br i1 %877, label %883, label %878

878:                                              ; preds = %872
  store i32 62, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #11
  br label %899

879:                                              ; preds = %1004, %986, %982, %961, %948, %922, %899, %862
  %880 = landingpad { ptr, i32 }
          cleanup
  %881 = extractvalue { ptr, i32 } %880, 0
  store ptr %881, ptr %16, align 8
  %882 = extractvalue { ptr, i32 } %880, 1
  store i32 %882, ptr %17, align 4
  br label %1725

883:                                              ; preds = %872
  %884 = load ptr, ptr %88, align 8, !tbaa !5
  %885 = getelementptr inbounds %struct.aiMesh, ptr %884, i32 0, i32 10
  %886 = load ptr, ptr %885, align 8, !tbaa !24
  %887 = load i32, ptr %90, align 4, !tbaa !11
  %888 = zext i32 %887 to i64
  %889 = getelementptr inbounds %struct.aiFace, ptr %886, i64 %888
  %890 = getelementptr inbounds %struct.aiFace, ptr %889, i32 0, i32 0
  %891 = load i32, ptr %890, align 8, !tbaa !25
  %892 = load ptr, ptr %89, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.aiMesh, ptr %892, i32 0, i32 2
  %894 = load i32, ptr %893, align 8, !tbaa !21
  %895 = add i32 %894, %891
  store i32 %895, ptr %893, align 8, !tbaa !21
  br label %896

896:                                              ; preds = %883
  %897 = load i32, ptr %90, align 4, !tbaa !11
  %898 = add i32 %897, 1
  store i32 %898, ptr %90, align 4, !tbaa !11
  br label %872, !llvm.loop !61

899:                                              ; preds = %878
  %900 = load ptr, ptr %89, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.aiMesh, ptr %900, i32 0, i32 2
  %902 = load i32, ptr %901, align 8, !tbaa !21
  %903 = zext i32 %902 to i64
  %904 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %903, i64 16)
  %905 = extractvalue { i64, i1 } %904, 1
  %906 = extractvalue { i64, i1 } %904, 0
  %907 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %906, i64 8)
  %908 = extractvalue { i64, i1 } %907, 1
  %909 = or i1 %905, %908
  %910 = extractvalue { i64, i1 } %907, 0
  %911 = select i1 %909, i64 -1, i64 %910
  %912 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %911) #12
          to label %913 unwind label %879

913:                                              ; preds = %899
  store i64 %903, ptr %912, align 16
  %914 = getelementptr inbounds i8, ptr %912, i64 8
  %915 = icmp eq i64 %903, 0
  br i1 %915, label %922, label %916

916:                                              ; preds = %913
  %917 = getelementptr inbounds %struct.aiFace, ptr %914, i64 %903
  br label %918

918:                                              ; preds = %918, %916
  %919 = phi ptr [ %914, %916 ], [ %920, %918 ]
  call void @_ZN6aiFaceC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %919) #11
  %920 = getelementptr inbounds %struct.aiFace, ptr %919, i64 1
  %921 = icmp eq ptr %920, %917
  br i1 %921, label %922, label %918

922:                                              ; preds = %918, %913
  %923 = load ptr, ptr %89, align 8, !tbaa !5
  %924 = getelementptr inbounds %struct.aiMesh, ptr %923, i32 0, i32 10
  store ptr %914, ptr %924, align 8, !tbaa !24
  %925 = load ptr, ptr %89, align 8, !tbaa !5
  %926 = getelementptr inbounds %struct.aiMesh, ptr %925, i32 0, i32 2
  %927 = load i32, ptr %926, align 8, !tbaa !21
  %928 = mul i32 %927, 4
  %929 = load ptr, ptr %89, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.aiMesh, ptr %929, i32 0, i32 1
  store i32 %928, ptr %930, align 4, !tbaa !20
  %931 = load ptr, ptr %89, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.aiMesh, ptr %931, i32 0, i32 1
  %933 = load i32, ptr %932, align 4, !tbaa !20
  %934 = zext i32 %933 to i64
  %935 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %934, i64 12)
  %936 = extractvalue { i64, i1 } %935, 1
  %937 = extractvalue { i64, i1 } %935, 0
  %938 = select i1 %936, i64 -1, i64 %937
  %939 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %938) #12
          to label %940 unwind label %879

940:                                              ; preds = %922
  %941 = icmp eq i64 %934, 0
  br i1 %941, label %948, label %942

942:                                              ; preds = %940
  %943 = getelementptr inbounds %class.aiVector3t, ptr %939, i64 %934
  br label %944

944:                                              ; preds = %944, %942
  %945 = phi ptr [ %939, %942 ], [ %946, %944 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %945) #11
  %946 = getelementptr inbounds %class.aiVector3t, ptr %945, i64 1
  %947 = icmp eq ptr %946, %943
  br i1 %947, label %948, label %944

948:                                              ; preds = %944, %940
  %949 = load ptr, ptr %89, align 8, !tbaa !5
  %950 = getelementptr inbounds %struct.aiMesh, ptr %949, i32 0, i32 3
  store ptr %939, ptr %950, align 8, !tbaa !13
  %951 = load ptr, ptr %89, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.aiMesh, ptr %951, i32 0, i32 0
  store i32 8, ptr %952, align 8, !tbaa !62
  %953 = load ptr, ptr %88, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.aiMesh, ptr %953, i32 0, i32 13
  %955 = load i32, ptr %954, align 8, !tbaa !63
  %956 = load ptr, ptr %89, align 8, !tbaa !5
  %957 = getelementptr inbounds %struct.aiMesh, ptr %956, i32 0, i32 13
  store i32 %955, ptr %957, align 8, !tbaa !63
  %958 = load ptr, ptr %88, align 8, !tbaa !5
  %959 = invoke noundef zeroext i1 @_ZNK6aiMesh10HasNormalsEv(ptr noundef nonnull align 8 dereferenceable(1320) %958)
          to label %960 unwind label %879

960:                                              ; preds = %948
  br i1 %959, label %961, label %982

961:                                              ; preds = %960
  %962 = load ptr, ptr %89, align 8, !tbaa !5
  %963 = getelementptr inbounds %struct.aiMesh, ptr %962, i32 0, i32 1
  %964 = load i32, ptr %963, align 4, !tbaa !20
  %965 = zext i32 %964 to i64
  %966 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %965, i64 12)
  %967 = extractvalue { i64, i1 } %966, 1
  %968 = extractvalue { i64, i1 } %966, 0
  %969 = select i1 %967, i64 -1, i64 %968
  %970 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %969) #12
          to label %971 unwind label %879

971:                                              ; preds = %961
  %972 = icmp eq i64 %965, 0
  br i1 %972, label %979, label %973

973:                                              ; preds = %971
  %974 = getelementptr inbounds %class.aiVector3t, ptr %970, i64 %965
  br label %975

975:                                              ; preds = %975, %973
  %976 = phi ptr [ %970, %973 ], [ %977, %975 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %976) #11
  %977 = getelementptr inbounds %class.aiVector3t, ptr %976, i64 1
  %978 = icmp eq ptr %977, %974
  br i1 %978, label %979, label %975

979:                                              ; preds = %975, %971
  %980 = load ptr, ptr %89, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.aiMesh, ptr %980, i32 0, i32 4
  store ptr %970, ptr %981, align 8, !tbaa !64
  br label %982

982:                                              ; preds = %979, %960
  %983 = load ptr, ptr %88, align 8, !tbaa !5
  %984 = invoke noundef zeroext i1 @_ZNK6aiMesh24HasTangentsAndBitangentsEv(ptr noundef nonnull align 8 dereferenceable(1320) %983)
          to label %985 unwind label %879

985:                                              ; preds = %982
  br i1 %984, label %986, label %1027

986:                                              ; preds = %985
  %987 = load ptr, ptr %89, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.aiMesh, ptr %987, i32 0, i32 1
  %989 = load i32, ptr %988, align 4, !tbaa !20
  %990 = zext i32 %989 to i64
  %991 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %990, i64 12)
  %992 = extractvalue { i64, i1 } %991, 1
  %993 = extractvalue { i64, i1 } %991, 0
  %994 = select i1 %992, i64 -1, i64 %993
  %995 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %994) #12
          to label %996 unwind label %879

996:                                              ; preds = %986
  %997 = icmp eq i64 %990, 0
  br i1 %997, label %1004, label %998

998:                                              ; preds = %996
  %999 = getelementptr inbounds %class.aiVector3t, ptr %995, i64 %990
  br label %1000

1000:                                             ; preds = %1000, %998
  %1001 = phi ptr [ %995, %998 ], [ %1002, %1000 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %1001) #11
  %1002 = getelementptr inbounds %class.aiVector3t, ptr %1001, i64 1
  %1003 = icmp eq ptr %1002, %999
  br i1 %1003, label %1004, label %1000

1004:                                             ; preds = %1000, %996
  %1005 = load ptr, ptr %89, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct.aiMesh, ptr %1005, i32 0, i32 5
  store ptr %995, ptr %1006, align 8, !tbaa !65
  %1007 = load ptr, ptr %89, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.aiMesh, ptr %1007, i32 0, i32 1
  %1009 = load i32, ptr %1008, align 4, !tbaa !20
  %1010 = zext i32 %1009 to i64
  %1011 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1010, i64 12)
  %1012 = extractvalue { i64, i1 } %1011, 1
  %1013 = extractvalue { i64, i1 } %1011, 0
  %1014 = select i1 %1012, i64 -1, i64 %1013
  %1015 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1014) #12
          to label %1016 unwind label %879

1016:                                             ; preds = %1004
  %1017 = icmp eq i64 %1010, 0
  br i1 %1017, label %1024, label %1018

1018:                                             ; preds = %1016
  %1019 = getelementptr inbounds %class.aiVector3t, ptr %1015, i64 %1010
  br label %1020

1020:                                             ; preds = %1020, %1018
  %1021 = phi ptr [ %1015, %1018 ], [ %1022, %1020 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %1021) #11
  %1022 = getelementptr inbounds %class.aiVector3t, ptr %1021, i64 1
  %1023 = icmp eq ptr %1022, %1019
  br i1 %1023, label %1024, label %1020

1024:                                             ; preds = %1020, %1016
  %1025 = load ptr, ptr %89, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.aiMesh, ptr %1025, i32 0, i32 6
  store ptr %1015, ptr %1026, align 8, !tbaa !66
  br label %1027

1027:                                             ; preds = %1024, %985
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #11
  store i32 0, ptr %91, align 4, !tbaa !11
  br label %1028

1028:                                             ; preds = %1073, %1027
  %1029 = load ptr, ptr %88, align 8, !tbaa !5
  %1030 = load i32, ptr %91, align 4, !tbaa !11
  %1031 = invoke noundef zeroext i1 @_ZNK6aiMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1320) %1029, i32 noundef %1030)
          to label %1032 unwind label %1034

1032:                                             ; preds = %1028
  br i1 %1031, label %1038, label %1033

1033:                                             ; preds = %1032
  store i32 65, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #11
  br label %1076

1034:                                             ; preds = %1038, %1028
  %1035 = landingpad { ptr, i32 }
          cleanup
  %1036 = extractvalue { ptr, i32 } %1035, 0
  store ptr %1036, ptr %16, align 8
  %1037 = extractvalue { ptr, i32 } %1035, 1
  store i32 %1037, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #11
  br label %1725

1038:                                             ; preds = %1032
  %1039 = load ptr, ptr %89, align 8, !tbaa !5
  %1040 = getelementptr inbounds %struct.aiMesh, ptr %1039, i32 0, i32 1
  %1041 = load i32, ptr %1040, align 4, !tbaa !20
  %1042 = zext i32 %1041 to i64
  %1043 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1042, i64 12)
  %1044 = extractvalue { i64, i1 } %1043, 1
  %1045 = extractvalue { i64, i1 } %1043, 0
  %1046 = select i1 %1044, i64 -1, i64 %1045
  %1047 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1046) #12
          to label %1048 unwind label %1034

1048:                                             ; preds = %1038
  %1049 = icmp eq i64 %1042, 0
  br i1 %1049, label %1056, label %1050

1050:                                             ; preds = %1048
  %1051 = getelementptr inbounds %class.aiVector3t, ptr %1047, i64 %1042
  br label %1052

1052:                                             ; preds = %1052, %1050
  %1053 = phi ptr [ %1047, %1050 ], [ %1054, %1052 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %1053) #11
  %1054 = getelementptr inbounds %class.aiVector3t, ptr %1053, i64 1
  %1055 = icmp eq ptr %1054, %1051
  br i1 %1055, label %1056, label %1052

1056:                                             ; preds = %1052, %1048
  %1057 = load ptr, ptr %89, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.aiMesh, ptr %1057, i32 0, i32 8
  %1059 = load i32, ptr %91, align 4, !tbaa !11
  %1060 = zext i32 %1059 to i64
  %1061 = getelementptr inbounds [8 x ptr], ptr %1058, i64 0, i64 %1060
  store ptr %1047, ptr %1061, align 8, !tbaa !5
  %1062 = load ptr, ptr %88, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.aiMesh, ptr %1062, i32 0, i32 9
  %1064 = load i32, ptr %91, align 4, !tbaa !11
  %1065 = zext i32 %1064 to i64
  %1066 = getelementptr inbounds [8 x i32], ptr %1063, i64 0, i64 %1065
  %1067 = load i32, ptr %1066, align 4, !tbaa !11
  %1068 = load ptr, ptr %89, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.aiMesh, ptr %1068, i32 0, i32 9
  %1070 = load i32, ptr %91, align 4, !tbaa !11
  %1071 = zext i32 %1070 to i64
  %1072 = getelementptr inbounds [8 x i32], ptr %1069, i64 0, i64 %1071
  store i32 %1067, ptr %1072, align 4, !tbaa !11
  br label %1073

1073:                                             ; preds = %1056
  %1074 = load i32, ptr %91, align 4, !tbaa !11
  %1075 = add i32 %1074, 1
  store i32 %1075, ptr %91, align 4, !tbaa !11
  br label %1028, !llvm.loop !67

1076:                                             ; preds = %1033
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #11
  store i32 0, ptr %92, align 4, !tbaa !11
  br label %1077

1077:                                             ; preds = %1111, %1076
  %1078 = load ptr, ptr %88, align 8, !tbaa !5
  %1079 = load i32, ptr %92, align 4, !tbaa !11
  %1080 = invoke noundef zeroext i1 @_ZNK6aiMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1320) %1078, i32 noundef %1079)
          to label %1081 unwind label %1083

1081:                                             ; preds = %1077
  br i1 %1080, label %1087, label %1082

1082:                                             ; preds = %1081
  store i32 68, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #11
  br label %1114

1083:                                             ; preds = %1087, %1077
  %1084 = landingpad { ptr, i32 }
          cleanup
  %1085 = extractvalue { ptr, i32 } %1084, 0
  store ptr %1085, ptr %16, align 8
  %1086 = extractvalue { ptr, i32 } %1084, 1
  store i32 %1086, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #11
  br label %1725

1087:                                             ; preds = %1081
  %1088 = load ptr, ptr %89, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.aiMesh, ptr %1088, i32 0, i32 1
  %1090 = load i32, ptr %1089, align 4, !tbaa !20
  %1091 = zext i32 %1090 to i64
  %1092 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1091, i64 16)
  %1093 = extractvalue { i64, i1 } %1092, 1
  %1094 = extractvalue { i64, i1 } %1092, 0
  %1095 = select i1 %1093, i64 -1, i64 %1094
  %1096 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1095) #12
          to label %1097 unwind label %1083

1097:                                             ; preds = %1087
  %1098 = icmp eq i64 %1091, 0
  br i1 %1098, label %1105, label %1099

1099:                                             ; preds = %1097
  %1100 = getelementptr inbounds %class.aiColor4t, ptr %1096, i64 %1091
  br label %1101

1101:                                             ; preds = %1101, %1099
  %1102 = phi ptr [ %1096, %1099 ], [ %1103, %1101 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %1102) #11
  %1103 = getelementptr inbounds %class.aiColor4t, ptr %1102, i64 1
  %1104 = icmp eq ptr %1103, %1100
  br i1 %1104, label %1105, label %1101

1105:                                             ; preds = %1101, %1097
  %1106 = load ptr, ptr %89, align 8, !tbaa !5
  %1107 = getelementptr inbounds %struct.aiMesh, ptr %1106, i32 0, i32 7
  %1108 = load i32, ptr %92, align 4, !tbaa !11
  %1109 = zext i32 %1108 to i64
  %1110 = getelementptr inbounds [8 x ptr], ptr %1107, i64 0, i64 %1109
  store ptr %1096, ptr %1110, align 8, !tbaa !5
  br label %1111

1111:                                             ; preds = %1105
  %1112 = load i32, ptr %92, align 4, !tbaa !11
  %1113 = add i32 %1112, 1
  store i32 %1113, ptr %92, align 4, !tbaa !11
  br label %1077, !llvm.loop !68

1114:                                             ; preds = %1082
  %1115 = load ptr, ptr %89, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.aiMesh, ptr %1115, i32 0, i32 2
  %1117 = load i32, ptr %1116, align 8, !tbaa !21
  %1118 = shl i32 %1117, 2
  %1119 = load ptr, ptr %89, align 8, !tbaa !5
  %1120 = getelementptr inbounds %struct.aiMesh, ptr %1119, i32 0, i32 1
  store i32 %1118, ptr %1120, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #11
  store i32 0, ptr %93, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #11
  store i32 0, ptr %94, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #11
  store i32 0, ptr %95, align 4, !tbaa !11
  br label %1121

1121:                                             ; preds = %1718, %1114
  %1122 = load i32, ptr %93, align 4, !tbaa !11
  %1123 = load ptr, ptr %88, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.aiMesh, ptr %1123, i32 0, i32 2
  %1125 = load i32, ptr %1124, align 8, !tbaa !21
  %1126 = icmp ult i32 %1122, %1125
  br i1 %1126, label %1128, label %1127

1127:                                             ; preds = %1121
  store i32 71, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #11
  br label %1721

1128:                                             ; preds = %1121
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #11
  %1129 = load ptr, ptr %88, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.aiMesh, ptr %1129, i32 0, i32 10
  %1131 = load ptr, ptr %1130, align 8, !tbaa !24
  %1132 = load i32, ptr %93, align 4, !tbaa !11
  %1133 = zext i32 %1132 to i64
  %1134 = getelementptr inbounds %struct.aiFace, ptr %1131, i64 %1133
  store ptr %1134, ptr %96, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #11
  store i32 0, ptr %97, align 4, !tbaa !11
  br label %1135

1135:                                             ; preds = %1706, %1128
  %1136 = load i32, ptr %97, align 4, !tbaa !11
  %1137 = load ptr, ptr %96, align 8, !tbaa !5
  %1138 = getelementptr inbounds %struct.aiFace, ptr %1137, i32 0, i32 0
  %1139 = load i32, ptr %1138, align 8, !tbaa !25
  %1140 = icmp ult i32 %1136, %1139
  br i1 %1140, label %1142, label %1141

1141:                                             ; preds = %1135
  store i32 74, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #11
  br label %1717

1142:                                             ; preds = %1135
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #11
  %1143 = load ptr, ptr %89, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.aiMesh, ptr %1143, i32 0, i32 10
  %1145 = load ptr, ptr %1144, align 8, !tbaa !24
  %1146 = load i32, ptr %95, align 4, !tbaa !11
  %1147 = add i32 %1146, 1
  store i32 %1147, ptr %95, align 4, !tbaa !11
  %1148 = zext i32 %1146 to i64
  %1149 = getelementptr inbounds %struct.aiFace, ptr %1145, i64 %1148
  store ptr %1149, ptr %98, align 8, !tbaa !5
  %1150 = load ptr, ptr %98, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.aiFace, ptr %1150, i32 0, i32 0
  store i32 4, ptr %1151, align 8, !tbaa !25
  %1152 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef 16) #12
          to label %1153 unwind label %1351

1153:                                             ; preds = %1142
  %1154 = load ptr, ptr %98, align 8, !tbaa !5
  %1155 = getelementptr inbounds %struct.aiFace, ptr %1154, i32 0, i32 1
  store ptr %1152, ptr %1155, align 8, !tbaa !27
  %1156 = load i64, ptr %87, align 8, !tbaa !9
  %1157 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %1156) #11
  %1158 = getelementptr inbounds %"struct.std::pair", ptr %1157, i32 0, i32 0
  %1159 = load i32, ptr %1158, align 4, !tbaa !39
  %1160 = load i32, ptr %93, align 4, !tbaa !11
  %1161 = add i32 %1159, %1160
  %1162 = zext i32 %1161 to i64
  %1163 = call noundef nonnull align 4 dereferenceable(272) ptr @_ZNSt6vectorIN6Assimp6VertexESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %1162) #11
  %1164 = load ptr, ptr %89, align 8, !tbaa !5
  %1165 = load i32, ptr %94, align 4, !tbaa !11
  %1166 = add i32 %1165, 1
  store i32 %1166, ptr %94, align 4, !tbaa !11
  %1167 = load ptr, ptr %98, align 8, !tbaa !5
  %1168 = getelementptr inbounds %struct.aiFace, ptr %1167, i32 0, i32 1
  %1169 = load ptr, ptr %1168, align 8, !tbaa !27
  %1170 = getelementptr inbounds i32, ptr %1169, i64 0
  store i32 %1165, ptr %1170, align 4, !tbaa !11
  invoke void @_ZNK6Assimp6Vertex8SortBackEP6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %1163, ptr noundef %1164, i32 noundef %1165)
          to label %1171 unwind label %1351

1171:                                             ; preds = %1153
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #11
  %1172 = load i64, ptr %87, align 8, !tbaa !9
  %1173 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %1172) #11
  %1174 = getelementptr inbounds %"struct.std::pair", ptr %1173, i32 0, i32 1
  %1175 = load i32, ptr %1174, align 4, !tbaa !31
  %1176 = load ptr, ptr %96, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.aiFace, ptr %1176, i32 0, i32 1
  %1178 = load ptr, ptr %1177, align 8, !tbaa !27
  %1179 = load i32, ptr %97, align 4, !tbaa !11
  %1180 = zext i32 %1179 to i64
  %1181 = getelementptr inbounds i32, ptr %1178, i64 %1180
  %1182 = load i32, ptr %1181, align 4, !tbaa !11
  %1183 = add i32 %1175, %1182
  %1184 = zext i32 %1183 to i64
  %1185 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %1184) #11
  %1186 = load i32, ptr %1185, align 4, !tbaa !11
  store i32 %1186, ptr %11, align 4, !tbaa !11
  %1187 = load i64, ptr %87, align 8, !tbaa !9
  %1188 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %1187) #11
  %1189 = getelementptr inbounds %"struct.std::pair", ptr %1188, i32 0, i32 1
  %1190 = load i32, ptr %1189, align 4, !tbaa !31
  %1191 = load ptr, ptr %96, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.aiFace, ptr %1191, i32 0, i32 1
  %1193 = load ptr, ptr %1192, align 8, !tbaa !27
  %1194 = load i32, ptr %97, align 4, !tbaa !11
  %1195 = load ptr, ptr %96, align 8, !tbaa !5
  %1196 = getelementptr inbounds %struct.aiFace, ptr %1195, i32 0, i32 0
  %1197 = load i32, ptr %1196, align 8, !tbaa !25
  %1198 = sub i32 %1197, 1
  %1199 = icmp eq i32 %1194, %1198
  br i1 %1199, label %1200, label %1201

1200:                                             ; preds = %1171
  br label %1204

1201:                                             ; preds = %1171
  %1202 = load i32, ptr %97, align 4, !tbaa !11
  %1203 = add i32 %1202, 1
  br label %1204

1204:                                             ; preds = %1201, %1200
  %1205 = phi i32 [ 0, %1200 ], [ %1203, %1201 ]
  %1206 = zext i32 %1205 to i64
  %1207 = getelementptr inbounds i32, ptr %1193, i64 %1206
  %1208 = load i32, ptr %1207, align 4, !tbaa !11
  %1209 = add i32 %1190, %1208
  %1210 = zext i32 %1209 to i64
  %1211 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %1210) #11
  %1212 = load i32, ptr %1211, align 4, !tbaa !11
  store i32 %1212, ptr %12, align 4, !tbaa !11
  %1213 = load i32, ptr %11, align 4, !tbaa !11
  %1214 = load i32, ptr %12, align 4, !tbaa !11
  %1215 = icmp ult i32 %1213, %1214
  br i1 %1215, label %1216, label %1217

1216:                                             ; preds = %1204
  call void @_ZSt4swapIjENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %12) #11
  br label %1218

1217:                                             ; preds = %1204
  call void @_Z7mydummyv()
  br label %1218

1218:                                             ; preds = %1217, %1216
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #11
  %1219 = load i32, ptr %11, align 4, !tbaa !11
  %1220 = zext i32 %1219 to i64
  %1221 = load i32, ptr %12, align 4, !tbaa !11
  %1222 = zext i32 %1221 to i64
  %1223 = shl i64 %1222, 32
  %1224 = xor i64 %1220, %1223
  store i64 %1224, ptr %100, align 8, !tbaa !9
  %1225 = invoke noundef nonnull align 4 dereferenceable(548) ptr @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEEixEOm(ptr noundef nonnull align 8 dereferenceable(56) %37, ptr noundef nonnull align 8 dereferenceable(8) %100)
          to label %1226 unwind label %1355

1226:                                             ; preds = %1218
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #11
  store ptr %1225, ptr %99, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #11
  %1227 = load i64, ptr %87, align 8, !tbaa !9
  %1228 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %1227) #11
  %1229 = getelementptr inbounds %"struct.std::pair", ptr %1228, i32 0, i32 1
  %1230 = load i32, ptr %1229, align 4, !tbaa !31
  %1231 = load ptr, ptr %96, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.aiFace, ptr %1231, i32 0, i32 1
  %1233 = load ptr, ptr %1232, align 8, !tbaa !27
  %1234 = load i32, ptr %97, align 4, !tbaa !11
  %1235 = zext i32 %1234 to i64
  %1236 = getelementptr inbounds i32, ptr %1233, i64 %1235
  %1237 = load i32, ptr %1236, align 4, !tbaa !11
  %1238 = add i32 %1230, %1237
  %1239 = zext i32 %1238 to i64
  %1240 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %1239) #11
  %1241 = load i32, ptr %1240, align 4, !tbaa !11
  store i32 %1241, ptr %11, align 4, !tbaa !11
  %1242 = load i64, ptr %87, align 8, !tbaa !9
  %1243 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %1242) #11
  %1244 = getelementptr inbounds %"struct.std::pair", ptr %1243, i32 0, i32 1
  %1245 = load i32, ptr %1244, align 4, !tbaa !31
  %1246 = load ptr, ptr %96, align 8, !tbaa !5
  %1247 = getelementptr inbounds %struct.aiFace, ptr %1246, i32 0, i32 1
  %1248 = load ptr, ptr %1247, align 8, !tbaa !27
  %1249 = load i32, ptr %97, align 4, !tbaa !11
  %1250 = icmp ne i32 %1249, 0
  br i1 %1250, label %1256, label %1251

1251:                                             ; preds = %1226
  %1252 = load ptr, ptr %96, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.aiFace, ptr %1252, i32 0, i32 0
  %1254 = load i32, ptr %1253, align 8, !tbaa !25
  %1255 = sub i32 %1254, 1
  br label %1259

1256:                                             ; preds = %1226
  %1257 = load i32, ptr %97, align 4, !tbaa !11
  %1258 = sub i32 %1257, 1
  br label %1259

1259:                                             ; preds = %1256, %1251
  %1260 = phi i32 [ %1255, %1251 ], [ %1258, %1256 ]
  %1261 = zext i32 %1260 to i64
  %1262 = getelementptr inbounds i32, ptr %1248, i64 %1261
  %1263 = load i32, ptr %1262, align 4, !tbaa !11
  %1264 = add i32 %1245, %1263
  %1265 = zext i32 %1264 to i64
  %1266 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %1265) #11
  %1267 = load i32, ptr %1266, align 4, !tbaa !11
  store i32 %1267, ptr %12, align 4, !tbaa !11
  %1268 = load i32, ptr %11, align 4, !tbaa !11
  %1269 = load i32, ptr %12, align 4, !tbaa !11
  %1270 = icmp ult i32 %1268, %1269
  br i1 %1270, label %1271, label %1272

1271:                                             ; preds = %1259
  call void @_ZSt4swapIjENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %12) #11
  br label %1273

1272:                                             ; preds = %1259
  call void @_Z7mydummyv()
  br label %1273

1273:                                             ; preds = %1272, %1271
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #11
  %1274 = load i32, ptr %11, align 4, !tbaa !11
  %1275 = zext i32 %1274 to i64
  %1276 = load i32, ptr %12, align 4, !tbaa !11
  %1277 = zext i32 %1276 to i64
  %1278 = shl i64 %1277, 32
  %1279 = xor i64 %1275, %1278
  store i64 %1279, ptr %102, align 8, !tbaa !9
  %1280 = invoke noundef nonnull align 4 dereferenceable(548) ptr @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEEixEOm(ptr noundef nonnull align 8 dereferenceable(56) %37, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %1281 unwind label %1359

1281:                                             ; preds = %1273
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #11
  store ptr %1280, ptr %101, align 8, !tbaa !5
  %1282 = load ptr, ptr %99, align 8, !tbaa !5
  %1283 = getelementptr inbounds %"struct.CatmullClarkSubdivider::Edge", ptr %1282, i32 0, i32 0
  %1284 = load ptr, ptr %89, align 8, !tbaa !5
  %1285 = load i32, ptr %94, align 4, !tbaa !11
  %1286 = add i32 %1285, 1
  store i32 %1286, ptr %94, align 4, !tbaa !11
  %1287 = load ptr, ptr %98, align 8, !tbaa !5
  %1288 = getelementptr inbounds %struct.aiFace, ptr %1287, i32 0, i32 1
  %1289 = load ptr, ptr %1288, align 8, !tbaa !27
  %1290 = getelementptr inbounds i32, ptr %1289, i64 3
  store i32 %1285, ptr %1290, align 4, !tbaa !11
  invoke void @_ZNK6Assimp6Vertex8SortBackEP6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %1283, ptr noundef %1284, i32 noundef %1285)
          to label %1291 unwind label %1363

1291:                                             ; preds = %1281
  %1292 = load ptr, ptr %101, align 8, !tbaa !5
  %1293 = getelementptr inbounds %"struct.CatmullClarkSubdivider::Edge", ptr %1292, i32 0, i32 0
  %1294 = load ptr, ptr %89, align 8, !tbaa !5
  %1295 = load i32, ptr %94, align 4, !tbaa !11
  %1296 = add i32 %1295, 1
  store i32 %1296, ptr %94, align 4, !tbaa !11
  %1297 = load ptr, ptr %98, align 8, !tbaa !5
  %1298 = getelementptr inbounds %struct.aiFace, ptr %1297, i32 0, i32 1
  %1299 = load ptr, ptr %1298, align 8, !tbaa !27
  %1300 = getelementptr inbounds i32, ptr %1299, i64 1
  store i32 %1295, ptr %1300, align 4, !tbaa !11
  invoke void @_ZNK6Assimp6Vertex8SortBackEP6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %1293, ptr noundef %1294, i32 noundef %1295)
          to label %1301 unwind label %1363

1301:                                             ; preds = %1291
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #11
  %1302 = load i64, ptr %87, align 8, !tbaa !9
  %1303 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %1302) #11
  %1304 = getelementptr inbounds %"struct.std::pair", ptr %1303, i32 0, i32 1
  %1305 = load i32, ptr %1304, align 4, !tbaa !31
  %1306 = load ptr, ptr %96, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.aiFace, ptr %1306, i32 0, i32 1
  %1308 = load ptr, ptr %1307, align 8, !tbaa !27
  %1309 = load i32, ptr %97, align 4, !tbaa !11
  %1310 = zext i32 %1309 to i64
  %1311 = getelementptr inbounds i32, ptr %1308, i64 %1310
  %1312 = load i32, ptr %1311, align 4, !tbaa !11
  %1313 = add i32 %1305, %1312
  %1314 = zext i32 %1313 to i64
  %1315 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %1314) #11
  %1316 = load i32, ptr %1315, align 4, !tbaa !11
  store i32 %1316, ptr %103, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #11
  %1317 = load i32, ptr %103, align 4, !tbaa !11
  %1318 = zext i32 %1317 to i64
  %1319 = call noundef nonnull align 4 dereferenceable(276) ptr @_ZNSt6vectorISt4pairIbN6Assimp6VertexEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %1318) #11
  store ptr %1319, ptr %104, align 8, !tbaa !5
  %1320 = load ptr, ptr %104, align 8, !tbaa !5
  %1321 = getelementptr inbounds %"struct.std::pair.32", ptr %1320, i32 0, i32 0
  %1322 = load i8, ptr %1321, align 4, !tbaa !69, !range !56, !noundef !57
  %1323 = trunc i8 %1322 to i1
  br i1 %1323, label %1695, label %1324

1324:                                             ; preds = %1301
  %1325 = load ptr, ptr %104, align 8, !tbaa !5
  %1326 = getelementptr inbounds %"struct.std::pair.32", ptr %1325, i32 0, i32 0
  store i8 1, ptr %1326, align 4, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #11
  %1327 = load i32, ptr %103, align 4, !tbaa !11
  %1328 = zext i32 %1327 to i64
  %1329 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %1328) #11
  %1330 = load i32, ptr %1329, align 4, !tbaa !11
  %1331 = zext i32 %1330 to i64
  %1332 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %1331) #11
  store ptr %1332, ptr %105, align 8, !tbaa !5
  %1333 = load i32, ptr %103, align 4, !tbaa !11
  %1334 = zext i32 %1333 to i64
  %1335 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %1334) #11
  %1336 = load i32, ptr %1335, align 4, !tbaa !11
  store i32 %1336, ptr %106, align 4, !tbaa !11
  %1337 = load i32, ptr %106, align 4, !tbaa !11
  %1338 = icmp ult i32 %1337, 3
  br i1 %1338, label %1339, label %1371

1339:                                             ; preds = %1324
  call void @llvm.lifetime.start.p0(i64 272, ptr %107) #11
  %1340 = load ptr, ptr %88, align 8, !tbaa !5
  %1341 = load ptr, ptr %96, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct.aiFace, ptr %1341, i32 0, i32 1
  %1343 = load ptr, ptr %1342, align 8, !tbaa !27
  %1344 = load i32, ptr %97, align 4, !tbaa !11
  %1345 = zext i32 %1344 to i64
  %1346 = getelementptr inbounds i32, ptr %1343, i64 %1345
  %1347 = load i32, ptr %1346, align 4, !tbaa !11
  invoke void @_ZN6Assimp6VertexC2EPK6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %107, ptr noundef %1340, i32 noundef %1347)
          to label %1348 unwind label %1367

1348:                                             ; preds = %1339
  %1349 = load ptr, ptr %104, align 8, !tbaa !5
  %1350 = getelementptr inbounds %"struct.std::pair.32", ptr %1349, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1350, ptr align 4 %107, i64 272, i1 false), !tbaa.struct !36
  call void @llvm.lifetime.end.p0(i64 272, ptr %107) #11
  br label %1693

1351:                                             ; preds = %1153, %1142
  %1352 = landingpad { ptr, i32 }
          cleanup
  %1353 = extractvalue { ptr, i32 } %1352, 0
  store ptr %1353, ptr %16, align 8
  %1354 = extractvalue { ptr, i32 } %1352, 1
  store i32 %1354, ptr %17, align 4
  br label %1716

1355:                                             ; preds = %1218
  %1356 = landingpad { ptr, i32 }
          cleanup
  %1357 = extractvalue { ptr, i32 } %1356, 0
  store ptr %1357, ptr %16, align 8
  %1358 = extractvalue { ptr, i32 } %1356, 1
  store i32 %1358, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #11
  br label %1715

1359:                                             ; preds = %1273
  %1360 = landingpad { ptr, i32 }
          cleanup
  %1361 = extractvalue { ptr, i32 } %1360, 0
  store ptr %1361, ptr %16, align 8
  %1362 = extractvalue { ptr, i32 } %1360, 1
  store i32 %1362, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #11
  br label %1714

1363:                                             ; preds = %1291, %1281
  %1364 = landingpad { ptr, i32 }
          cleanup
  %1365 = extractvalue { ptr, i32 } %1364, 0
  store ptr %1365, ptr %16, align 8
  %1366 = extractvalue { ptr, i32 } %1364, 1
  store i32 %1366, ptr %17, align 4
  br label %1714

1367:                                             ; preds = %1339
  %1368 = landingpad { ptr, i32 }
          cleanup
  %1369 = extractvalue { ptr, i32 } %1368, 0
  store ptr %1369, ptr %16, align 8
  %1370 = extractvalue { ptr, i32 } %1368, 1
  store i32 %1370, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 272, ptr %107) #11
  br label %1694

1371:                                             ; preds = %1324
  call void @llvm.lifetime.start.p0(i64 272, ptr %108) #11
  call void @_ZN6Assimp6VertexC2Ev(ptr noundef nonnull align 4 dereferenceable(272) %108) #11
  call void @llvm.lifetime.start.p0(i64 272, ptr %109) #11
  call void @_ZN6Assimp6VertexC2Ev(ptr noundef nonnull align 4 dereferenceable(272) %109) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #11
  store i32 0, ptr %110, align 4, !tbaa !11
  br label %1372

1372:                                             ; preds = %1643, %1371
  %1373 = load i32, ptr %110, align 4, !tbaa !11
  %1374 = load i32, ptr %106, align 4, !tbaa !11
  %1375 = icmp ult i32 %1373, %1374
  br i1 %1375, label %1377, label %1376

1376:                                             ; preds = %1372
  store i32 77, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #11
  br label %1649

1377:                                             ; preds = %1372
  %1378 = load ptr, ptr %105, align 8, !tbaa !5
  %1379 = load i32, ptr %110, align 4, !tbaa !11
  %1380 = zext i32 %1379 to i64
  %1381 = getelementptr inbounds i32, ptr %1378, i64 %1380
  %1382 = load i32, ptr %1381, align 4, !tbaa !11
  %1383 = load i32, ptr %20, align 4, !tbaa !11
  %1384 = icmp ult i32 %1382, %1383
  br i1 %1384, label %1387, label %1385

1385:                                             ; preds = %1377
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 509)
          to label %1386 unwind label %1411

1386:                                             ; preds = %1385
  br label %1387

1387:                                             ; preds = %1386, %1377
  %1388 = phi i1 [ true, %1377 ], [ false, %1386 ]
  %1389 = load ptr, ptr %105, align 8, !tbaa !5
  %1390 = load i32, ptr %110, align 4, !tbaa !11
  %1391 = zext i32 %1390 to i64
  %1392 = getelementptr inbounds i32, ptr %1389, i64 %1391
  %1393 = load i32, ptr %1392, align 4, !tbaa !11
  %1394 = zext i32 %1393 to i64
  %1395 = call noundef nonnull align 4 dereferenceable(272) ptr @_ZNSt6vectorIN6Assimp6VertexESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %1394) #11
  %1396 = invoke noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexpLERKS0_(ptr noundef nonnull align 4 dereferenceable(272) %108, ptr noundef nonnull align 4 dereferenceable(272) %1395)
          to label %1397 unwind label %1411

1397:                                             ; preds = %1387
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #11
  store ptr null, ptr %111, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #11
  %1398 = load ptr, ptr %105, align 8, !tbaa !5
  %1399 = load i32, ptr %110, align 4, !tbaa !11
  %1400 = zext i32 %1399 to i64
  %1401 = getelementptr inbounds i32, ptr %1398, i64 %1400
  %1402 = load i32, ptr %1401, align 4, !tbaa !11
  %1403 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef 0) #11
  %1404 = getelementptr inbounds %"struct.std::pair", ptr %1403, i32 0, i32 0
  %1405 = load i32, ptr %1404, align 4, !tbaa !39
  %1406 = icmp ult i32 %1402, %1405
  br i1 %1406, label %1407, label %1415

1407:                                             ; preds = %1397
  %1408 = load ptr, ptr %7, align 8, !tbaa !5
  store i64 0, ptr %112, align 8, !tbaa !9
  %1409 = getelementptr inbounds ptr, ptr %1408, i64 0
  %1410 = load ptr, ptr %1409, align 8, !tbaa !5
  store ptr %1410, ptr %111, align 8, !tbaa !5
  br label %1446

1411:                                             ; preds = %1387, %1385
  %1412 = landingpad { ptr, i32 }
          cleanup
  %1413 = extractvalue { ptr, i32 } %1412, 0
  store ptr %1413, ptr %16, align 8
  %1414 = extractvalue { ptr, i32 } %1412, 1
  store i32 %1414, ptr %17, align 4
  br label %1648

1415:                                             ; preds = %1397
  store i64 1, ptr %112, align 8, !tbaa !9
  br label %1416

1416:                                             ; preds = %1442, %1415
  %1417 = load i64, ptr %112, align 8, !tbaa !9
  %1418 = load i64, ptr %8, align 8, !tbaa !9
  %1419 = icmp ule i64 %1417, %1418
  br i1 %1419, label %1420, label %1445

1420:                                             ; preds = %1416
  %1421 = load i64, ptr %112, align 8, !tbaa !9
  %1422 = load i64, ptr %8, align 8, !tbaa !9
  %1423 = icmp eq i64 %1421, %1422
  br i1 %1423, label %1435, label %1424

1424:                                             ; preds = %1420
  %1425 = load i64, ptr %112, align 8, !tbaa !9
  %1426 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %1425) #11
  %1427 = getelementptr inbounds %"struct.std::pair", ptr %1426, i32 0, i32 0
  %1428 = load i32, ptr %1427, align 4, !tbaa !39
  %1429 = load ptr, ptr %105, align 8, !tbaa !5
  %1430 = load i32, ptr %110, align 4, !tbaa !11
  %1431 = zext i32 %1430 to i64
  %1432 = getelementptr inbounds i32, ptr %1429, i64 %1431
  %1433 = load i32, ptr %1432, align 4, !tbaa !11
  %1434 = icmp ugt i32 %1428, %1433
  br i1 %1434, label %1435, label %1441

1435:                                             ; preds = %1424, %1420
  %1436 = load ptr, ptr %7, align 8, !tbaa !5
  %1437 = load i64, ptr %112, align 8, !tbaa !9
  %1438 = add i64 %1437, -1
  store i64 %1438, ptr %112, align 8, !tbaa !9
  %1439 = getelementptr inbounds ptr, ptr %1436, i64 %1438
  %1440 = load ptr, ptr %1439, align 8, !tbaa !5
  store ptr %1440, ptr %111, align 8, !tbaa !5
  br label %1445

1441:                                             ; preds = %1424
  br label %1442

1442:                                             ; preds = %1441
  %1443 = load i64, ptr %112, align 8, !tbaa !9
  %1444 = add i64 %1443, 1
  store i64 %1444, ptr %112, align 8, !tbaa !9
  br label %1416, !llvm.loop !71

1445:                                             ; preds = %1435, %1416
  br label %1446

1446:                                             ; preds = %1445, %1407
  %1447 = load ptr, ptr %111, align 8, !tbaa !5
  %1448 = icmp eq ptr %1447, null
  br i1 %1448, label %1449, label %1450

1449:                                             ; preds = %1446
  store i32 79, ptr %13, align 4
  br label %1640

1450:                                             ; preds = %1446
  %1451 = load ptr, ptr %105, align 8, !tbaa !5
  %1452 = load i32, ptr %110, align 4, !tbaa !11
  %1453 = zext i32 %1452 to i64
  %1454 = getelementptr inbounds i32, ptr %1451, i64 %1453
  %1455 = load i32, ptr %1454, align 4, !tbaa !11
  %1456 = load i64, ptr %112, align 8, !tbaa !9
  %1457 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %1456) #11
  %1458 = getelementptr inbounds %"struct.std::pair", ptr %1457, i32 0, i32 0
  %1459 = load i32, ptr %1458, align 4, !tbaa !39
  %1460 = sub i32 %1455, %1459
  %1461 = load ptr, ptr %111, align 8, !tbaa !5
  %1462 = getelementptr inbounds %struct.aiMesh, ptr %1461, i32 0, i32 2
  %1463 = load i32, ptr %1462, align 8, !tbaa !21
  %1464 = icmp ult i32 %1460, %1463
  br i1 %1464, label %1467, label %1465

1465:                                             ; preds = %1450
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 531)
          to label %1466 unwind label %1491

1466:                                             ; preds = %1465
  br label %1467

1467:                                             ; preds = %1466, %1450
  %1468 = phi i1 [ true, %1450 ], [ false, %1466 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #11
  %1469 = load ptr, ptr %111, align 8, !tbaa !5
  %1470 = getelementptr inbounds %struct.aiMesh, ptr %1469, i32 0, i32 10
  %1471 = load ptr, ptr %1470, align 8, !tbaa !24
  %1472 = load ptr, ptr %105, align 8, !tbaa !5
  %1473 = load i32, ptr %110, align 4, !tbaa !11
  %1474 = zext i32 %1473 to i64
  %1475 = getelementptr inbounds i32, ptr %1472, i64 %1474
  %1476 = load i32, ptr %1475, align 4, !tbaa !11
  %1477 = load i64, ptr %112, align 8, !tbaa !9
  %1478 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %1477) #11
  %1479 = getelementptr inbounds %"struct.std::pair", ptr %1478, i32 0, i32 0
  %1480 = load i32, ptr %1479, align 4, !tbaa !39
  %1481 = sub i32 %1476, %1480
  %1482 = zext i32 %1481 to i64
  %1483 = getelementptr inbounds %struct.aiFace, ptr %1471, i64 %1482
  store ptr %1483, ptr %113, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %114) #11
  store i8 0, ptr %114, align 1, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #11
  store i32 0, ptr %115, align 4, !tbaa !11
  br label %1484

1484:                                             ; preds = %1618, %1467
  %1485 = load i32, ptr %115, align 4, !tbaa !11
  %1486 = load ptr, ptr %113, align 8, !tbaa !5
  %1487 = getelementptr inbounds %struct.aiFace, ptr %1486, i32 0, i32 0
  %1488 = load i32, ptr %1487, align 8, !tbaa !25
  %1489 = icmp ult i32 %1485, %1488
  br i1 %1489, label %1495, label %1490

1490:                                             ; preds = %1484
  store i32 83, ptr %13, align 4
  br label %1621

1491:                                             ; preds = %1465
  %1492 = landingpad { ptr, i32 }
          cleanup
  %1493 = extractvalue { ptr, i32 } %1492, 0
  store ptr %1493, ptr %16, align 8
  %1494 = extractvalue { ptr, i32 } %1492, 1
  store i32 %1494, ptr %17, align 4
  br label %1647

1495:                                             ; preds = %1484
  %1496 = load i64, ptr %112, align 8, !tbaa !9
  %1497 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %1496) #11
  %1498 = getelementptr inbounds %"struct.std::pair", ptr %1497, i32 0, i32 1
  %1499 = load i32, ptr %1498, align 4, !tbaa !31
  %1500 = load ptr, ptr %113, align 8, !tbaa !5
  %1501 = getelementptr inbounds %struct.aiFace, ptr %1500, i32 0, i32 1
  %1502 = load ptr, ptr %1501, align 8, !tbaa !27
  %1503 = load i32, ptr %115, align 4, !tbaa !11
  %1504 = zext i32 %1503 to i64
  %1505 = getelementptr inbounds i32, ptr %1502, i64 %1504
  %1506 = load i32, ptr %1505, align 4, !tbaa !11
  %1507 = add i32 %1499, %1506
  %1508 = zext i32 %1507 to i64
  %1509 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %1508) #11
  %1510 = load i32, ptr %1509, align 4, !tbaa !11
  %1511 = load i32, ptr %103, align 4, !tbaa !11
  %1512 = icmp eq i32 %1510, %1511
  br i1 %1512, label %1513, label %1617

1513:                                             ; preds = %1495
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #11
  %1514 = load i32, ptr %103, align 4, !tbaa !11
  store i32 %1514, ptr %11, align 4, !tbaa !11
  %1515 = load i64, ptr %112, align 8, !tbaa !9
  %1516 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %1515) #11
  %1517 = getelementptr inbounds %"struct.std::pair", ptr %1516, i32 0, i32 1
  %1518 = load i32, ptr %1517, align 4, !tbaa !31
  %1519 = load ptr, ptr %113, align 8, !tbaa !5
  %1520 = getelementptr inbounds %struct.aiFace, ptr %1519, i32 0, i32 1
  %1521 = load ptr, ptr %1520, align 8, !tbaa !27
  %1522 = load i32, ptr %115, align 4, !tbaa !11
  %1523 = icmp ne i32 %1522, 0
  br i1 %1523, label %1529, label %1524

1524:                                             ; preds = %1513
  %1525 = load ptr, ptr %113, align 8, !tbaa !5
  %1526 = getelementptr inbounds %struct.aiFace, ptr %1525, i32 0, i32 0
  %1527 = load i32, ptr %1526, align 8, !tbaa !25
  %1528 = sub i32 %1527, 1
  br label %1532

1529:                                             ; preds = %1513
  %1530 = load i32, ptr %115, align 4, !tbaa !11
  %1531 = sub i32 %1530, 1
  br label %1532

1532:                                             ; preds = %1529, %1524
  %1533 = phi i32 [ %1528, %1524 ], [ %1531, %1529 ]
  %1534 = zext i32 %1533 to i64
  %1535 = getelementptr inbounds i32, ptr %1521, i64 %1534
  %1536 = load i32, ptr %1535, align 4, !tbaa !11
  %1537 = add i32 %1518, %1536
  %1538 = zext i32 %1537 to i64
  %1539 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %1538) #11
  %1540 = load i32, ptr %1539, align 4, !tbaa !11
  store i32 %1540, ptr %12, align 4, !tbaa !11
  %1541 = load i32, ptr %11, align 4, !tbaa !11
  %1542 = load i32, ptr %12, align 4, !tbaa !11
  %1543 = icmp ult i32 %1541, %1542
  br i1 %1543, label %1544, label %1545

1544:                                             ; preds = %1532
  call void @_ZSt4swapIjENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %12) #11
  br label %1546

1545:                                             ; preds = %1532
  call void @_Z7mydummyv()
  br label %1546

1546:                                             ; preds = %1545, %1544
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #11
  %1547 = load i32, ptr %11, align 4, !tbaa !11
  %1548 = zext i32 %1547 to i64
  %1549 = load i32, ptr %12, align 4, !tbaa !11
  %1550 = zext i32 %1549 to i64
  %1551 = shl i64 %1550, 32
  %1552 = xor i64 %1548, %1551
  store i64 %1552, ptr %117, align 8, !tbaa !9
  %1553 = invoke noundef nonnull align 4 dereferenceable(548) ptr @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEEixEOm(ptr noundef nonnull align 8 dereferenceable(56) %37, ptr noundef nonnull align 8 dereferenceable(8) %117)
          to label %1554 unwind label %1603

1554:                                             ; preds = %1546
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #11
  store ptr %1553, ptr %116, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #11
  %1555 = load i32, ptr %103, align 4, !tbaa !11
  store i32 %1555, ptr %11, align 4, !tbaa !11
  %1556 = load i64, ptr %112, align 8, !tbaa !9
  %1557 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %1556) #11
  %1558 = getelementptr inbounds %"struct.std::pair", ptr %1557, i32 0, i32 1
  %1559 = load i32, ptr %1558, align 4, !tbaa !31
  %1560 = load ptr, ptr %113, align 8, !tbaa !5
  %1561 = getelementptr inbounds %struct.aiFace, ptr %1560, i32 0, i32 1
  %1562 = load ptr, ptr %1561, align 8, !tbaa !27
  %1563 = load i32, ptr %115, align 4, !tbaa !11
  %1564 = load ptr, ptr %113, align 8, !tbaa !5
  %1565 = getelementptr inbounds %struct.aiFace, ptr %1564, i32 0, i32 0
  %1566 = load i32, ptr %1565, align 8, !tbaa !25
  %1567 = sub i32 %1566, 1
  %1568 = icmp eq i32 %1563, %1567
  br i1 %1568, label %1569, label %1570

1569:                                             ; preds = %1554
  br label %1573

1570:                                             ; preds = %1554
  %1571 = load i32, ptr %115, align 4, !tbaa !11
  %1572 = add i32 %1571, 1
  br label %1573

1573:                                             ; preds = %1570, %1569
  %1574 = phi i32 [ 0, %1569 ], [ %1572, %1570 ]
  %1575 = zext i32 %1574 to i64
  %1576 = getelementptr inbounds i32, ptr %1562, i64 %1575
  %1577 = load i32, ptr %1576, align 4, !tbaa !11
  %1578 = add i32 %1559, %1577
  %1579 = zext i32 %1578 to i64
  %1580 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %1579) #11
  %1581 = load i32, ptr %1580, align 4, !tbaa !11
  store i32 %1581, ptr %12, align 4, !tbaa !11
  %1582 = load i32, ptr %11, align 4, !tbaa !11
  %1583 = load i32, ptr %12, align 4, !tbaa !11
  %1584 = icmp ult i32 %1582, %1583
  br i1 %1584, label %1585, label %1586

1585:                                             ; preds = %1573
  call void @_ZSt4swapIjENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %12) #11
  br label %1587

1586:                                             ; preds = %1573
  call void @_Z7mydummyv()
  br label %1587

1587:                                             ; preds = %1586, %1585
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #11
  %1588 = load i32, ptr %11, align 4, !tbaa !11
  %1589 = zext i32 %1588 to i64
  %1590 = load i32, ptr %12, align 4, !tbaa !11
  %1591 = zext i32 %1590 to i64
  %1592 = shl i64 %1591, 32
  %1593 = xor i64 %1589, %1592
  store i64 %1593, ptr %119, align 8, !tbaa !9
  %1594 = invoke noundef nonnull align 4 dereferenceable(548) ptr @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEEixEOm(ptr noundef nonnull align 8 dereferenceable(56) %37, ptr noundef nonnull align 8 dereferenceable(8) %119)
          to label %1595 unwind label %1607

1595:                                             ; preds = %1587
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #11
  store ptr %1594, ptr %118, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 272, ptr %120) #11
  %1596 = load ptr, ptr %116, align 8, !tbaa !5
  %1597 = getelementptr inbounds %"struct.CatmullClarkSubdivider::Edge", ptr %1596, i32 0, i32 1
  %1598 = load ptr, ptr %118, align 8, !tbaa !5
  %1599 = getelementptr inbounds %"struct.CatmullClarkSubdivider::Edge", ptr %1598, i32 0, i32 1
  invoke void @_ZN6AssimpplERKNS_6VertexES2_(ptr dead_on_unwind writable sret(%"struct.Assimp::Vertex") align 4 %120, ptr noundef nonnull align 4 dereferenceable(272) %1597, ptr noundef nonnull align 4 dereferenceable(272) %1599)
          to label %1600 unwind label %1611

1600:                                             ; preds = %1595
  %1601 = invoke noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexpLERKS0_(ptr noundef nonnull align 4 dereferenceable(272) %109, ptr noundef nonnull align 4 dereferenceable(272) %120)
          to label %1602 unwind label %1611

1602:                                             ; preds = %1600
  call void @llvm.lifetime.end.p0(i64 272, ptr %120) #11
  store i8 1, ptr %114, align 1, !tbaa !53
  store i32 83, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #11
  br label %1621

1603:                                             ; preds = %1546
  %1604 = landingpad { ptr, i32 }
          cleanup
  %1605 = extractvalue { ptr, i32 } %1604, 0
  store ptr %1605, ptr %16, align 8
  %1606 = extractvalue { ptr, i32 } %1604, 1
  store i32 %1606, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #11
  br label %1616

1607:                                             ; preds = %1587
  %1608 = landingpad { ptr, i32 }
          cleanup
  %1609 = extractvalue { ptr, i32 } %1608, 0
  store ptr %1609, ptr %16, align 8
  %1610 = extractvalue { ptr, i32 } %1608, 1
  store i32 %1610, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #11
  br label %1615

1611:                                             ; preds = %1600, %1595
  %1612 = landingpad { ptr, i32 }
          cleanup
  %1613 = extractvalue { ptr, i32 } %1612, 0
  store ptr %1613, ptr %16, align 8
  %1614 = extractvalue { ptr, i32 } %1612, 1
  store i32 %1614, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 272, ptr %120) #11
  br label %1615

1615:                                             ; preds = %1611, %1607
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #11
  br label %1616

1616:                                             ; preds = %1615, %1603
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #11
  br label %1646

1617:                                             ; preds = %1495
  br label %1618

1618:                                             ; preds = %1617
  %1619 = load i32, ptr %115, align 4, !tbaa !11
  %1620 = add i32 %1619, 1
  store i32 %1620, ptr %115, align 4, !tbaa !11
  br label %1484, !llvm.loop !72

1621:                                             ; preds = %1602, %1490
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #11
  br label %1622

1622:                                             ; preds = %1621
  %1623 = load i8, ptr %114, align 1, !tbaa !53, !range !56, !noundef !57
  %1624 = trunc i8 %1623 to i1
  br i1 %1624, label %1627, label %1625

1625:                                             ; preds = %1622
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 560)
          to label %1626 unwind label %1635

1626:                                             ; preds = %1625
  br label %1627

1627:                                             ; preds = %1626, %1622
  %1628 = phi i1 [ true, %1622 ], [ false, %1626 ]
  %1629 = load i8, ptr %114, align 1, !tbaa !53, !range !56, !noundef !57
  %1630 = trunc i8 %1629 to i1
  br i1 %1630, label %1639, label %1631

1631:                                             ; preds = %1627
  %1632 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %1633 unwind label %1635

1633:                                             ; preds = %1631
  invoke void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12) %1632, ptr noundef @.str.20)
          to label %1634 unwind label %1635

1634:                                             ; preds = %1633
  br label %1639

1635:                                             ; preds = %1633, %1631, %1625
  %1636 = landingpad { ptr, i32 }
          cleanup
  %1637 = extractvalue { ptr, i32 } %1636, 0
  store ptr %1637, ptr %16, align 8
  %1638 = extractvalue { ptr, i32 } %1636, 1
  store i32 %1638, ptr %17, align 4
  br label %1646

1639:                                             ; preds = %1634, %1627
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #11
  store i32 0, ptr %13, align 4
  br label %1640

1640:                                             ; preds = %1639, %1449
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #11
  %1641 = load i32, ptr %13, align 4
  switch i32 %1641, label %1791 [
    i32 0, label %1642
    i32 79, label %1643
  ]

1642:                                             ; preds = %1640
  br label %1643

1643:                                             ; preds = %1642, %1640
  %1644 = load i32, ptr %110, align 4, !tbaa !11
  %1645 = add i32 %1644, 1
  store i32 %1645, ptr %110, align 4, !tbaa !11
  br label %1372, !llvm.loop !73

1646:                                             ; preds = %1635, %1616
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #11
  br label %1647

1647:                                             ; preds = %1646, %1491
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #11
  br label %1648

1648:                                             ; preds = %1647, %1411
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #11
  br label %1692

1649:                                             ; preds = %1376
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #11
  %1650 = load i32, ptr %106, align 4, !tbaa !11
  %1651 = uitofp i32 %1650 to float
  store float %1651, ptr %121, align 4, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #11
  %1652 = load float, ptr %121, align 4, !tbaa !37
  %1653 = load float, ptr %121, align 4, !tbaa !37
  %1654 = fmul float %1652, %1653
  %1655 = fdiv float 1.000000e+00, %1654
  store float %1655, ptr %122, align 4, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 272, ptr %123) #11
  call void @llvm.lifetime.start.p0(i64 272, ptr %124) #11
  call void @llvm.lifetime.start.p0(i64 272, ptr %125) #11
  call void @llvm.lifetime.start.p0(i64 272, ptr %126) #11
  %1656 = load ptr, ptr %88, align 8, !tbaa !5
  %1657 = load ptr, ptr %96, align 8, !tbaa !5
  %1658 = getelementptr inbounds %struct.aiFace, ptr %1657, i32 0, i32 1
  %1659 = load ptr, ptr %1658, align 8, !tbaa !27
  %1660 = load i32, ptr %97, align 4, !tbaa !11
  %1661 = zext i32 %1660 to i64
  %1662 = getelementptr inbounds i32, ptr %1659, i64 %1661
  %1663 = load i32, ptr %1662, align 4, !tbaa !11
  invoke void @_ZN6Assimp6VertexC2EPK6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %126, ptr noundef %1656, i32 noundef %1663)
          to label %1664 unwind label %1678

1664:                                             ; preds = %1649
  %1665 = load float, ptr %121, align 4, !tbaa !37
  %1666 = fsub float %1665, 3.000000e+00
  %1667 = load float, ptr %121, align 4, !tbaa !37
  %1668 = fdiv float %1666, %1667
  invoke void @_ZN6AssimpmlERKNS_6VertexEf(ptr dead_on_unwind writable sret(%"struct.Assimp::Vertex") align 4 %125, ptr noundef nonnull align 4 dereferenceable(272) %126, float noundef %1668)
          to label %1669 unwind label %1678

1669:                                             ; preds = %1664
  call void @llvm.lifetime.start.p0(i64 272, ptr %127) #11
  %1670 = load float, ptr %122, align 4, !tbaa !37
  invoke void @_ZN6AssimpmlERKNS_6VertexEf(ptr dead_on_unwind writable sret(%"struct.Assimp::Vertex") align 4 %127, ptr noundef nonnull align 4 dereferenceable(272) %109, float noundef %1670)
          to label %1671 unwind label %1682

1671:                                             ; preds = %1669
  invoke void @_ZN6AssimpplERKNS_6VertexES2_(ptr dead_on_unwind writable sret(%"struct.Assimp::Vertex") align 4 %124, ptr noundef nonnull align 4 dereferenceable(272) %125, ptr noundef nonnull align 4 dereferenceable(272) %127)
          to label %1672 unwind label %1682

1672:                                             ; preds = %1671
  call void @llvm.lifetime.start.p0(i64 272, ptr %128) #11
  %1673 = load float, ptr %122, align 4, !tbaa !37
  invoke void @_ZN6AssimpmlERKNS_6VertexEf(ptr dead_on_unwind writable sret(%"struct.Assimp::Vertex") align 4 %128, ptr noundef nonnull align 4 dereferenceable(272) %108, float noundef %1673)
          to label %1674 unwind label %1686

1674:                                             ; preds = %1672
  invoke void @_ZN6AssimpplERKNS_6VertexES2_(ptr dead_on_unwind writable sret(%"struct.Assimp::Vertex") align 4 %123, ptr noundef nonnull align 4 dereferenceable(272) %124, ptr noundef nonnull align 4 dereferenceable(272) %128)
          to label %1675 unwind label %1686

1675:                                             ; preds = %1674
  %1676 = load ptr, ptr %104, align 8, !tbaa !5
  %1677 = getelementptr inbounds %"struct.std::pair.32", ptr %1676, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1677, ptr align 4 %123, i64 272, i1 false), !tbaa.struct !36
  call void @llvm.lifetime.end.p0(i64 272, ptr %128) #11
  call void @llvm.lifetime.end.p0(i64 272, ptr %127) #11
  call void @llvm.lifetime.end.p0(i64 272, ptr %126) #11
  call void @llvm.lifetime.end.p0(i64 272, ptr %125) #11
  call void @llvm.lifetime.end.p0(i64 272, ptr %124) #11
  call void @llvm.lifetime.end.p0(i64 272, ptr %123) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #11
  call void @llvm.lifetime.end.p0(i64 272, ptr %109) #11
  call void @llvm.lifetime.end.p0(i64 272, ptr %108) #11
  br label %1693

1678:                                             ; preds = %1664, %1649
  %1679 = landingpad { ptr, i32 }
          cleanup
  %1680 = extractvalue { ptr, i32 } %1679, 0
  store ptr %1680, ptr %16, align 8
  %1681 = extractvalue { ptr, i32 } %1679, 1
  store i32 %1681, ptr %17, align 4
  br label %1691

1682:                                             ; preds = %1671, %1669
  %1683 = landingpad { ptr, i32 }
          cleanup
  %1684 = extractvalue { ptr, i32 } %1683, 0
  store ptr %1684, ptr %16, align 8
  %1685 = extractvalue { ptr, i32 } %1683, 1
  store i32 %1685, ptr %17, align 4
  br label %1690

1686:                                             ; preds = %1674, %1672
  %1687 = landingpad { ptr, i32 }
          cleanup
  %1688 = extractvalue { ptr, i32 } %1687, 0
  store ptr %1688, ptr %16, align 8
  %1689 = extractvalue { ptr, i32 } %1687, 1
  store i32 %1689, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 272, ptr %128) #11
  br label %1690

1690:                                             ; preds = %1686, %1682
  call void @llvm.lifetime.end.p0(i64 272, ptr %127) #11
  br label %1691

1691:                                             ; preds = %1690, %1678
  call void @llvm.lifetime.end.p0(i64 272, ptr %126) #11
  call void @llvm.lifetime.end.p0(i64 272, ptr %125) #11
  call void @llvm.lifetime.end.p0(i64 272, ptr %124) #11
  call void @llvm.lifetime.end.p0(i64 272, ptr %123) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #11
  br label %1692

1692:                                             ; preds = %1691, %1648
  call void @llvm.lifetime.end.p0(i64 272, ptr %109) #11
  call void @llvm.lifetime.end.p0(i64 272, ptr %108) #11
  br label %1694

1693:                                             ; preds = %1675, %1348
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #11
  br label %1695

1694:                                             ; preds = %1692, %1367
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #11
  br label %1713

1695:                                             ; preds = %1693, %1301
  %1696 = load ptr, ptr %104, align 8, !tbaa !5
  %1697 = getelementptr inbounds %"struct.std::pair.32", ptr %1696, i32 0, i32 1
  %1698 = load ptr, ptr %89, align 8, !tbaa !5
  %1699 = load i32, ptr %94, align 4, !tbaa !11
  %1700 = add i32 %1699, 1
  store i32 %1700, ptr %94, align 4, !tbaa !11
  %1701 = load ptr, ptr %98, align 8, !tbaa !5
  %1702 = getelementptr inbounds %struct.aiFace, ptr %1701, i32 0, i32 1
  %1703 = load ptr, ptr %1702, align 8, !tbaa !27
  %1704 = getelementptr inbounds i32, ptr %1703, i64 2
  store i32 %1699, ptr %1704, align 4, !tbaa !11
  invoke void @_ZNK6Assimp6Vertex8SortBackEP6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %1697, ptr noundef %1698, i32 noundef %1699)
          to label %1705 unwind label %1709

1705:                                             ; preds = %1695
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #11
  br label %1706

1706:                                             ; preds = %1705
  %1707 = load i32, ptr %97, align 4, !tbaa !11
  %1708 = add i32 %1707, 1
  store i32 %1708, ptr %97, align 4, !tbaa !11
  br label %1135, !llvm.loop !74

1709:                                             ; preds = %1695
  %1710 = landingpad { ptr, i32 }
          cleanup
  %1711 = extractvalue { ptr, i32 } %1710, 0
  store ptr %1711, ptr %16, align 8
  %1712 = extractvalue { ptr, i32 } %1710, 1
  store i32 %1712, ptr %17, align 4
  br label %1713

1713:                                             ; preds = %1709, %1694
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #11
  br label %1714

1714:                                             ; preds = %1713, %1363, %1359
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #11
  br label %1715

1715:                                             ; preds = %1714, %1355
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #11
  br label %1716

1716:                                             ; preds = %1715, %1351
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #11
  br label %1725

1717:                                             ; preds = %1141
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #11
  br label %1718

1718:                                             ; preds = %1717
  %1719 = load i32, ptr %93, align 4, !tbaa !11
  %1720 = add i32 %1719, 1
  store i32 %1720, ptr %93, align 4, !tbaa !11
  br label %1121, !llvm.loop !75

1721:                                             ; preds = %1127
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #11
  br label %1722

1722:                                             ; preds = %1721
  %1723 = load i64, ptr %87, align 8, !tbaa !9
  %1724 = add i64 %1723, 1
  store i64 %1724, ptr %87, align 8, !tbaa !9
  br label %848, !llvm.loop !76

1725:                                             ; preds = %1716, %1083, %1034, %879
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #11
  call void @_ZNSt6vectorISt4pairIbN6Assimp6VertexEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %82) #11
  br label %1743

1726:                                             ; preds = %852
  call void @_ZNSt6vectorISt4pairIbN6Assimp6VertexEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %82) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %82) #11
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %59) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %59) #11
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %56) #11
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #11
  call void @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %37) #11
  call void @llvm.lifetime.end.p0(i64 56, ptr %37) #11
  %1727 = load i32, ptr %10, align 4, !tbaa !11
  %1728 = icmp ne i32 %1727, 1
  br i1 %1728, label %1729, label %1776

1729:                                             ; preds = %1726
  call void @llvm.lifetime.start.p0(i64 24, ptr %129) #11
  %1730 = load i64, ptr %8, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %130) #11
  call void @_ZNSaIP6aiMeshEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #11
  invoke void @_ZNSt6vectorIP6aiMeshSaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %129, i64 noundef %1730, ptr noundef nonnull align 1 dereferenceable(1) %130)
          to label %1731 unwind label %1749

1731:                                             ; preds = %1729
  call void @_ZNSt15__new_allocatorIP6aiMeshED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #11
  %1732 = load ptr, ptr %9, align 8, !tbaa !5
  %1733 = load i64, ptr %8, align 8, !tbaa !9
  %1734 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6aiMeshSaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %129) #11
  %1735 = load i32, ptr %10, align 4, !tbaa !11
  %1736 = sub i32 %1735, 1
  invoke void @_ZN22CatmullClarkSubdivider15InternSubdivideEPKPK6aiMeshmPPS0_j(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef %1732, i64 noundef %1733, ptr noundef %1734, i32 noundef %1736)
          to label %1737 unwind label %1753

1737:                                             ; preds = %1731
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #11
  store i64 0, ptr %131, align 8, !tbaa !9
  br label %1738

1738:                                             ; preds = %1771, %1737
  %1739 = load i64, ptr %131, align 8, !tbaa !9
  %1740 = load i64, ptr %8, align 8, !tbaa !9
  %1741 = icmp ult i64 %1739, %1740
  br i1 %1741, label %1757, label %1742

1742:                                             ; preds = %1738
  store i32 86, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #11
  br label %1774

1743:                                             ; preds = %1725, %861
  call void @llvm.lifetime.end.p0(i64 24, ptr %82) #11
  br label %1744

1744:                                             ; preds = %1743, %838
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %59) #11
  br label %1745

1745:                                             ; preds = %1744, %563
  call void @llvm.lifetime.end.p0(i64 24, ptr %59) #11
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #11
  br label %1746

1746:                                             ; preds = %1745, %559
  call void @llvm.lifetime.end.p0(i64 24, ptr %56) #11
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #11
  br label %1747

1747:                                             ; preds = %1746, %555
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #11
  br label %1748

1748:                                             ; preds = %1747, %554, %467
  call void @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %37) #11
  call void @llvm.lifetime.end.p0(i64 56, ptr %37) #11
  br label %1780

1749:                                             ; preds = %1729
  %1750 = landingpad { ptr, i32 }
          cleanup
  %1751 = extractvalue { ptr, i32 } %1750, 0
  store ptr %1751, ptr %16, align 8
  %1752 = extractvalue { ptr, i32 } %1750, 1
  store i32 %1752, ptr %17, align 4
  call void @_ZNSt15__new_allocatorIP6aiMeshED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #11
  br label %1775

1753:                                             ; preds = %1731
  %1754 = landingpad { ptr, i32 }
          cleanup
  %1755 = extractvalue { ptr, i32 } %1754, 0
  store ptr %1755, ptr %16, align 8
  %1756 = extractvalue { ptr, i32 } %1754, 1
  store i32 %1756, ptr %17, align 4
  call void @_ZNSt6vectorIP6aiMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %129) #11
  br label %1775

1757:                                             ; preds = %1738
  %1758 = load ptr, ptr %9, align 8, !tbaa !5
  %1759 = load i64, ptr %131, align 8, !tbaa !9
  %1760 = getelementptr inbounds ptr, ptr %1758, i64 %1759
  %1761 = load ptr, ptr %1760, align 8, !tbaa !5
  %1762 = icmp eq ptr %1761, null
  br i1 %1762, label %1764, label %1763

1763:                                             ; preds = %1757
  call void @_ZN6aiMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %1761) #11
  call void @_ZdlPvm(ptr noundef %1761, i64 noundef 1320) #13
  br label %1764

1764:                                             ; preds = %1763, %1757
  %1765 = load i64, ptr %131, align 8, !tbaa !9
  %1766 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6aiMeshSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %129, i64 noundef %1765) #11
  %1767 = load ptr, ptr %1766, align 8, !tbaa !5
  %1768 = load ptr, ptr %9, align 8, !tbaa !5
  %1769 = load i64, ptr %131, align 8, !tbaa !9
  %1770 = getelementptr inbounds ptr, ptr %1768, i64 %1769
  store ptr %1767, ptr %1770, align 8, !tbaa !5
  br label %1771

1771:                                             ; preds = %1764
  %1772 = load i64, ptr %131, align 8, !tbaa !9
  %1773 = add i64 %1772, 1
  store i64 %1773, ptr %131, align 8, !tbaa !9
  br label %1738, !llvm.loop !77

1774:                                             ; preds = %1742
  call void @_ZNSt6vectorIP6aiMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %129) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %129) #11
  br label %1776

1775:                                             ; preds = %1753, %1749
  call void @llvm.lifetime.end.p0(i64 24, ptr %129) #11
  br label %1780

1776:                                             ; preds = %1774, %1726
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #11
  call void @_ZNSt6vectorIN6Assimp6VertexESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #11
  call void @_ZN6Assimp11SpatialSortD2Ev(ptr noundef nonnull align 8 dereferenceable(49) %15) #11
  call void @llvm.lifetime.end.p0(i64 56, ptr %15) #11
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #11
  store i32 0, ptr %13, align 4
  br label %1777

1777:                                             ; preds = %1776, %145
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #11
  %1778 = load i32, ptr %13, align 4
  switch i32 %1778, label %1791 [
    i32 0, label %1779
    i32 1, label %1779
  ]

1779:                                             ; preds = %1777, %1777
  ret void

1780:                                             ; preds = %1775, %1748, %299
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #11
  call void @_ZNSt6vectorIN6Assimp6VertexESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #11
  br label %1781

1781:                                             ; preds = %1780, %225
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #11
  br label %1782

1782:                                             ; preds = %1781, %221
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #11
  br label %1783

1783:                                             ; preds = %1782, %217, %200
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #11
  br label %1784

1784:                                             ; preds = %1783, %159
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #11
  call void @_ZN6Assimp11SpatialSortD2Ev(ptr noundef nonnull align 8 dereferenceable(49) %15) #11
  br label %1785

1785:                                             ; preds = %1784, %155
  call void @llvm.lifetime.end.p0(i64 56, ptr %15) #11
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #11
  br label %1786

1786:                                             ; preds = %1785
  %1787 = load ptr, ptr %16, align 8
  %1788 = load i32, ptr %17, align 4
  %1789 = insertvalue { ptr, i32 } poison, ptr %1787, 0
  %1790 = insertvalue { ptr, i32 } %1789, i32 %1788, 1
  resume { ptr, i32 } %1790

1791:                                             ; preds = %1777, %1640
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6aiMeshSaIS1_EE5frontEv(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 @_ZNSt6vectorIP6aiMeshSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

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

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

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

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

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

declare void @_ZN6Assimp11SpatialSortC1Ev(ptr noundef nonnull align 8 dereferenceable(49)) unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairIjjESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

declare void @_ZN6Assimp11SpatialSort6AppendEPK10aiVector3tIfEjjb(ptr noundef nonnull align 8 dereferenceable(49), ptr noundef, i32 noundef, i32 noundef, i1 noundef zeroext) #3

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

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

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

declare void @_ZN6Assimp11SpatialSort8FinalizeEv(ptr noundef nonnull align 8 dereferenceable(49)) #3

declare noundef i32 @_ZNK6Assimp11SpatialSort20GenerateMappingTableERSt6vectorIjSaIjEEf(ptr noundef nonnull align 8 dereferenceable(49), ptr noundef nonnull align 8 dereferenceable(24), float noundef) #3

declare noundef float @_ZN6Assimp22ComputePositionEpsilonEPKPK6aiMeshm(ptr noundef, i64 noundef) #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN6Assimp6VertexESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6VertexC2EPK6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272), ptr noundef, i32 noundef) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexpLERKS0_(ptr noundef nonnull align 4 dereferenceable(272), ptr noundef nonnull align 4 dereferenceable(272)) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexdVEf(ptr noundef nonnull align 4 dereferenceable(272), float noundef) #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(548) ptr @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEEixEOm(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZSt4swapIjENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6AssimpplERKNS_6VertexES2_(ptr dead_on_unwind noalias writable sret(%"struct.Assimp::Vertex") align 4, ptr noundef nonnull align 4 dereferenceable(272), ptr noundef nonnull align 4 dereferenceable(272)) #8

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexmLEf(ptr noundef nonnull align 4 dereferenceable(272), float noundef) #5 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6Logger12verboseDebugIJRA31_KcRjRA44_S2_jRA10_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 1 dereferenceable(31), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(44), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(10)) #5 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIbN6Assimp6VertexEEC2IbS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS5_S6_EEEbE4typeELb1EEEOS5_OS6_(ptr noundef nonnull align 4 dereferenceable(276), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 4 dereferenceable(272)) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairIbN6Assimp6VertexEESaIS3_EEC2EmRKS3_RKS4_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 4 dereferenceable(276), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6Assimp6Vertex8SortBackEP6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272), ptr noundef, i32 noundef) #5 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6AssimpmlERKNS_6VertexEf(ptr dead_on_unwind noalias writable sret(%"struct.Assimp::Vertex") align 4, ptr noundef nonnull align 4 dereferenceable(272), float noundef) #8

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #7 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIP6aiMeshSaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorISt4pairIbN6Assimp6VertexEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) 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 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { 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 #6 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #10 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #11 = { nounwind }
attributes #12 = { builtin allocsize(0) }
attributes #13 = { builtin 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, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !6, i64 16}
!14 = !{!"_ZTS6aiMesh", !12, i64 0, !12, i64 4, !12, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !7, i64 48, !7, i64 112, !7, i64 176, !6, i64 208, !12, i64 216, !6, i64 224, !12, i64 232, !15, i64 236, !12, i64 1264, !6, i64 1272, !16, i64 1280, !17, i64 1284, !6, i64 1312}
!15 = !{!"_ZTS8aiString", !12, i64 0, !7, i64 4}
!16 = !{!"_ZTS16aiMorphingMethod", !7, i64 0}
!17 = !{!"_ZTS6aiAABB", !18, i64 0, !18, i64 12}
!18 = !{!"_ZTS10aiVector3tIfE", !19, i64 0, !19, i64 4, !19, i64 8}
!19 = !{!"float", !7, i64 0}
!20 = !{!14, !12, i64 4}
!21 = !{!14, !12, i64 8}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!14, !6, i64 208}
!25 = !{!26, !12, i64 0}
!26 = !{!"_ZTS6aiFace", !12, i64 0, !6, i64 8}
!27 = !{!26, !6, i64 8}
!28 = distinct !{!28, !23}
!29 = distinct !{!29, !23}
!30 = distinct !{!30, !23}
!31 = !{!32, !12, i64 4}
!32 = !{!"_ZTSSt4pairIjjE", !12, i64 0, !12, i64 4}
!33 = !{!34, !12, i64 544}
!34 = !{!"_ZTSN22CatmullClarkSubdivider4EdgeE", !35, i64 0, !35, i64 272, !12, i64 544}
!35 = !{!"_ZTSN6Assimp6VertexE", !18, i64 0, !18, i64 12, !18, i64 24, !18, i64 36, !7, i64 48, !7, i64 144}
!36 = !{i64 0, i64 4, !37, i64 4, i64 4, !37, i64 8, i64 4, !37, i64 12, i64 4, !37, i64 16, i64 4, !37, i64 20, i64 4, !37, i64 24, i64 4, !37, i64 28, i64 4, !37, i64 32, i64 4, !37, i64 36, i64 4, !37, i64 40, i64 4, !37, i64 44, i64 4, !37, i64 48, i64 96, !38, i64 144, i64 128, !38}
!37 = !{!19, !19, i64 0}
!38 = !{!7, !7, i64 0}
!39 = !{!32, !12, i64 0}
!40 = distinct !{!40, !23}
!41 = distinct !{!41, !23}
!42 = distinct !{!42, !23}
!43 = !{!44, !12, i64 552}
!44 = !{!"_ZTSSt4pairIKmN22CatmullClarkSubdivider4EdgeEE", !10, i64 0, !34, i64 8}
!45 = distinct !{!45, !23}
!46 = distinct !{!46, !23}
!47 = distinct !{!47, !23}
!48 = distinct !{!48, !23}
!49 = distinct !{!49, !23}
!50 = distinct !{!50, !23}
!51 = distinct !{!51, !23}
!52 = distinct !{!52, !23}
!53 = !{!54, !54, i64 0}
!54 = !{!"bool", !7, i64 0}
!55 = distinct !{!55, !23}
!56 = !{i8 0, i8 2}
!57 = !{}
!58 = distinct !{!58, !23}
!59 = distinct !{!59, !23}
!60 = distinct !{!60, !23}
!61 = distinct !{!61, !23}
!62 = !{!14, !12, i64 0}
!63 = !{!14, !12, i64 232}
!64 = !{!14, !6, i64 24}
!65 = !{!14, !6, i64 32}
!66 = !{!14, !6, i64 40}
!67 = distinct !{!67, !23}
!68 = distinct !{!68, !23}
!69 = !{!70, !54, i64 0}
!70 = !{!"_ZTSSt4pairIbN6Assimp6VertexEE", !54, i64 0, !35, i64 4}
!71 = distinct !{!71, !23}
!72 = distinct !{!72, !23}
!73 = distinct !{!73, !23}
!74 = distinct !{!74, !23}
!75 = distinct !{!75, !23}
!76 = distinct !{!76, !23}
!77 = distinct !{!77, !23}


; 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.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Assimp::SpatialSort" = type <{ %class.aiVector3t, %class.aiVector3t, %"class.std::vector.5", i8, [7 x i8] }>
%class.aiVector3t = type { float, float, float }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<Assimp::SpatialSort::Entry, std::allocator<Assimp::SpatialSort::Entry>>::_Vector_impl" }
%"struct.std::_Vector_base<Assimp::SpatialSort::Entry, std::allocator<Assimp::SpatialSort::Entry>>::_Vector_impl" = type { %"struct.std::_Vector_base<Assimp::SpatialSort::Entry, std::allocator<Assimp::SpatialSort::Entry>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Assimp::SpatialSort::Entry, std::allocator<Assimp::SpatialSort::Entry>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.12" = type { i8 }
%"struct.std::pair" = type { i32, i32 }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<Assimp::Vertex, std::allocator<Assimp::Vertex>>::_Vector_impl" }
%"struct.std::_Vector_base<Assimp::Vertex, std::allocator<Assimp::Vertex>>::_Vector_impl" = type { %"struct.std::_Vector_base<Assimp::Vertex, std::allocator<Assimp::Vertex>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Assimp::Vertex, std::allocator<Assimp::Vertex>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.17" = type { i8 }
%"struct.Assimp::Vertex" = type { %class.aiVector3t, %class.aiVector3t, %class.aiVector3t, %class.aiVector3t, [8 x %class.aiVector3t], [8 x %class.aiColor4t] }
%class.aiColor4t = type { float, float, float, float }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"class.std::allocator.2" = type { i8 }
%"class.std::vector.27" = type { %"struct.std::_Vector_base.28" }
%"struct.std::_Vector_base.28" = type { %"struct.std::_Vector_base<std::pair<bool, Assimp::Vertex>, std::allocator<std::pair<bool, Assimp::Vertex>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<bool, Assimp::Vertex>, std::allocator<std::pair<bool, Assimp::Vertex>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<bool, Assimp::Vertex>, std::allocator<std::pair<bool, Assimp::Vertex>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<bool, Assimp::Vertex>, std::allocator<std::pair<bool, Assimp::Vertex>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.32" = type { i8, %"struct.Assimp::Vertex" }
%"class.std::allocator.29" = type { i8 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%struct.aiFace = type { i32, ptr }

@.str.1 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [45 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z7mydummyv() local_unnamed_addr #0

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

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() local_unnamed_addr #3

declare void @_ZN6Assimp6Logger12verboseDebugEPKc(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) local_unnamed_addr #3

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

declare void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN22CatmullClarkSubdivider15InternSubdivideEPKPK6aiMeshmPPS0_j(ptr nocapture noundef nonnull readnone align 8 dereferenceable(8) %0, ptr noundef %1, i64 noundef %2, ptr noundef %3, i32 noundef %4) local_unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::vector.0", align 8
  %9 = alloca %"class.Assimp::SpatialSort", align 8
  %10 = alloca %"class.std::vector.10", align 8
  %11 = alloca %"class.std::allocator.12", align 1
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %"struct.std::pair", align 4
  %15 = alloca %"class.std::vector.15", align 8
  %16 = alloca %"class.std::allocator.17", align 1
  %17 = alloca %"struct.Assimp::Vertex", align 4
  %18 = alloca %"class.std::unordered_map", align 8
  %19 = alloca i64, align 8
  %20 = alloca %"struct.Assimp::Vertex", align 4
  %21 = alloca %"struct.Assimp::Vertex", align 4
  %22 = alloca %"struct.Assimp::Vertex", align 4
  %23 = alloca i32, align 4
  %24 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %25 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %26 = alloca i32, align 4
  %27 = alloca %"class.std::vector.0", align 8
  %28 = alloca %"class.std::allocator.2", align 1
  %29 = alloca %"class.std::vector.0", align 8
  %30 = alloca i32, align 4
  %31 = alloca %"class.std::allocator.2", align 1
  %32 = alloca %"class.std::vector.0", align 8
  %33 = alloca i32, align 4
  %34 = alloca %"class.std::allocator.2", align 1
  %35 = alloca %"class.std::vector.27", align 8
  %36 = alloca %"struct.std::pair.32", align 4
  %37 = alloca i8, align 1
  %38 = alloca %"struct.Assimp::Vertex", align 4
  %39 = alloca %"class.std::allocator.29", align 1
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca %"struct.Assimp::Vertex", align 4
  %43 = alloca %"struct.Assimp::Vertex", align 4
  %44 = alloca %"struct.Assimp::Vertex", align 4
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca %"struct.Assimp::Vertex", align 4
  %48 = alloca %"struct.Assimp::Vertex", align 4
  %49 = alloca %"struct.Assimp::Vertex", align 4
  %50 = alloca %"struct.Assimp::Vertex", align 4
  %51 = alloca %"struct.Assimp::Vertex", align 4
  %52 = alloca %"struct.Assimp::Vertex", align 4
  %53 = alloca %"struct.Assimp::Vertex", align 4
  %54 = alloca %"class.std::vector", align 8
  %55 = alloca %"class.std::allocator", align 1
  %.not = icmp eq ptr %1, null
  br i1 %.not, label %56, label %57

56:                                               ; preds = %5
  tail call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 230)
  br label %57

57:                                               ; preds = %56, %5
  %.not416 = icmp eq ptr %3, null
  br i1 %.not416, label %58, label %59

58:                                               ; preds = %57
  tail call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.1, i32 noundef 231)
  br label %59

59:                                               ; preds = %58, %57
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #10
  %.not417 = icmp eq i32 %4, 0
  br i1 %.not417, label %944, label %60

60:                                               ; preds = %59
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #10
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #10
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %9) #10
  invoke void @_ZN6Assimp11SpatialSortC1Ev(ptr noundef nonnull align 8 dereferenceable(49) %9)
          to label %61 unwind label %63

61:                                               ; preds = %60
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #10
  call void @_ZNSaISt4pairIjjEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  invoke void @_ZNSt6vectorISt4pairIjjESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %2, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %62 unwind label %65

62:                                               ; preds = %61
  call void @_ZNSt15__new_allocatorISt4pairIjjEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #10
  store i32 0, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #10
  store i32 0, ptr %13, align 4, !tbaa !5
  %.not643 = icmp eq i64 %2, 0
  br i1 %.not643, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %73, %62
  invoke void @_ZN6Assimp11SpatialSort8FinalizeEv(ptr noundef nonnull align 8 dereferenceable(49) %9)
          to label %86 unwind label %94

63:                                               ; preds = %60
  %64 = landingpad { ptr, i32 }
          cleanup
  br label %949

65:                                               ; preds = %61
  %66 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt4pairIjjEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  br label %948

.lr.ph:                                           ; preds = %62, %73
  %.0360531 = phi i64 [ %83, %73 ], [ 0, %62 ]
  %67 = getelementptr inbounds ptr, ptr %1, i64 %.0360531
  %68 = load ptr, ptr %67, align 8, !tbaa !9
  %69 = getelementptr inbounds i8, ptr %68, i64 16
  %70 = load ptr, ptr %69, align 8, !tbaa !11
  %71 = getelementptr inbounds i8, ptr %68, i64 4
  %72 = load i32, ptr %71, align 4, !tbaa !18
  invoke void @_ZN6Assimp11SpatialSort6AppendEPK10aiVector3tIfEjjb(ptr noundef nonnull align 8 dereferenceable(49) %9, ptr noundef %70, i32 noundef %72, i32 noundef 12, i1 noundef zeroext false)
          to label %73 unwind label %84

73:                                               ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #10
  call void @_ZNSt4pairIjjEC2IRjS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %14, ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull align 4 dereferenceable(4) %13)
  %74 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0360531) #10
  %75 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt4pairIjjEaSEOS0_(ptr noundef nonnull align 4 dereferenceable(8) %74, ptr noundef nonnull align 4 dereferenceable(8) %14) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  %76 = getelementptr inbounds i8, ptr %68, i64 8
  %77 = load i32, ptr %76, align 8, !tbaa !19
  %78 = load i32, ptr %12, align 4, !tbaa !5
  %79 = add i32 %78, %77
  store i32 %79, ptr %12, align 4, !tbaa !5
  %80 = load i32, ptr %71, align 4, !tbaa !18
  %81 = load i32, ptr %13, align 4, !tbaa !5
  %82 = add i32 %81, %80
  store i32 %82, ptr %13, align 4, !tbaa !5
  %83 = add nuw i64 %.0360531, 1
  %exitcond.not = icmp eq i64 %83, %2
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !20

84:                                               ; preds = %.lr.ph
  %85 = landingpad { ptr, i32 }
          cleanup
  br label %947

86:                                               ; preds = %._crit_edge
  %87 = invoke noundef float @_ZN6Assimp22ComputePositionEpsilonEPKPK6aiMeshm(ptr noundef %1, i64 noundef %2)
          to label %88 unwind label %96

88:                                               ; preds = %86
  %89 = invoke noundef i32 @_ZNK6Assimp11SpatialSort20GenerateMappingTableERSt6vectorIjSaIjEEf(ptr noundef nonnull align 8 dereferenceable(49) %9, ptr noundef nonnull align 8 dereferenceable(24) %8, float noundef %87)
          to label %90 unwind label %96

90:                                               ; preds = %88
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #10
  %91 = load i32, ptr %12, align 4, !tbaa !5
  %92 = zext i32 %91 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #10
  call void @_ZNSaIN6Assimp6VertexEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #10
  invoke void @_ZNSt6vectorIN6Assimp6VertexESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %92, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %93 unwind label %98

93:                                               ; preds = %90
  call void @_ZNSt15__new_allocatorIN6Assimp6VertexEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #10
  br i1 %.not643, label %._crit_edge549.thread, label %.lr.ph548

._crit_edge549.thread:                            ; preds = %93
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %18) #10
  call void @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %18) #10
  br label %._crit_edge562

.lr.ph561.preheader:                              ; preds = %._crit_edge541
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %18) #10
  call void @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %18) #10
  br label %.lr.ph561

94:                                               ; preds = %._crit_edge
  %95 = landingpad { ptr, i32 }
          cleanup
  br label %947

96:                                               ; preds = %88, %86
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %947

98:                                               ; preds = %90
  %99 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIN6Assimp6VertexEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #10
  br label %946

.lr.ph548:                                        ; preds = %93, %._crit_edge541
  %.0363546 = phi i32 [ %.1364.lcssa, %._crit_edge541 ], [ 0, %93 ]
  %.0369545 = phi i64 [ %105, %._crit_edge541 ], [ 0, %93 ]
  %.0370544 = phi i64 [ %.1371.lcssa, %._crit_edge541 ], [ 0, %93 ]
  %100 = getelementptr inbounds ptr, ptr %1, i64 %.0369545
  %101 = load ptr, ptr %100, align 8, !tbaa !9
  %102 = getelementptr inbounds i8, ptr %101, i64 8
  %103 = load i32, ptr %102, align 8, !tbaa !19
  %.not645 = icmp eq i32 %103, 0
  br i1 %.not645, label %._crit_edge541, label %.lr.ph540

.lr.ph540:                                        ; preds = %.lr.ph548
  %104 = getelementptr inbounds i8, ptr %101, i64 208
  br label %106

._crit_edge541:                                   ; preds = %126, %.lr.ph548
  %.1371.lcssa = phi i64 [ %.0370544, %.lr.ph548 ], [ %129, %126 ]
  %.1364.lcssa = phi i32 [ %.0363546, %.lr.ph548 ], [ %128, %126 ]
  %105 = add nuw i64 %.0369545, 1
  %exitcond693.not = icmp eq i64 %105, %2
  br i1 %exitcond693.not, label %.lr.ph561.preheader, label %.lr.ph548, !llvm.loop !22

106:                                              ; preds = %.lr.ph540, %126
  %indvars.iv690 = phi i64 [ 0, %.lr.ph540 ], [ %indvars.iv.next691, %126 ]
  %.1364538 = phi i32 [ %.0363546, %.lr.ph540 ], [ %128, %126 ]
  %.1371537 = phi i64 [ %.0370544, %.lr.ph540 ], [ %129, %126 ]
  %107 = load ptr, ptr %104, align 8, !tbaa !23
  %108 = getelementptr inbounds %struct.aiFace, ptr %107, i64 %indvars.iv690
  %109 = call noundef nonnull align 4 dereferenceable(272) ptr @_ZNSt6vectorIN6Assimp6VertexESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %.1371537) #10
  %110 = load i32, ptr %108, align 8, !tbaa !24
  %.not646 = icmp eq i32 %110, 0
  br i1 %.not646, label %._crit_edge535, label %.lr.ph534

.lr.ph534:                                        ; preds = %106
  %111 = getelementptr inbounds i8, ptr %108, i64 8
  br label %114

._crit_edge535:                                   ; preds = %120, %106
  %.lcssa523 = phi i32 [ 0, %106 ], [ %121, %120 ]
  %112 = uitofp i32 %.lcssa523 to float
  %113 = invoke noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexdVEf(ptr noundef nonnull align 4 dereferenceable(272) %109, float noundef %112)
          to label %126 unwind label %133

114:                                              ; preds = %.lr.ph534, %120
  %indvars.iv = phi i64 [ 0, %.lr.ph534 ], [ %indvars.iv.next, %120 ]
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %17) #10
  %115 = load ptr, ptr %111, align 8, !tbaa !26
  %116 = getelementptr inbounds i32, ptr %115, i64 %indvars.iv
  %117 = load i32, ptr %116, align 4, !tbaa !5
  invoke void @_ZN6Assimp6VertexC2EPK6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %17, ptr noundef %101, i32 noundef %117)
          to label %118 unwind label %124

118:                                              ; preds = %114
  %119 = invoke noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexpLERKS0_(ptr noundef nonnull align 4 dereferenceable(272) %109, ptr noundef nonnull align 4 dereferenceable(272) %17)
          to label %120 unwind label %124

120:                                              ; preds = %118
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %17) #10
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %121 = load i32, ptr %108, align 8, !tbaa !24
  %122 = zext i32 %121 to i64
  %123 = icmp ult i64 %indvars.iv.next, %122
  br i1 %123, label %114, label %._crit_edge535, !llvm.loop !27

124:                                              ; preds = %118, %114
  %125 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %17) #10
  br label %945

126:                                              ; preds = %._crit_edge535
  %127 = load i32, ptr %108, align 8, !tbaa !24
  %128 = add i32 %127, %.1364538
  %indvars.iv.next691 = add nuw nsw i64 %indvars.iv690, 1
  %129 = add i64 %.1371537, 1
  %130 = load i32, ptr %102, align 8, !tbaa !19
  %131 = zext i32 %130 to i64
  %132 = icmp ult i64 %indvars.iv.next691, %131
  br i1 %132, label %106, label %._crit_edge541, !llvm.loop !28

133:                                              ; preds = %._crit_edge535
  %134 = landingpad { ptr, i32 }
          cleanup
  br label %945

._crit_edge562:                                   ; preds = %._crit_edge558, %._crit_edge549.thread
  %.0363.lcssa746 = phi i32 [ 0, %._crit_edge549.thread ], [ %.1364.lcssa, %._crit_edge558 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #10
  store i32 0, ptr %23, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #10
  %135 = call ptr @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %18) #10
  store ptr %135, ptr %24, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #10
  %136 = call ptr @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %18) #10
  store ptr %136, ptr %25, align 8
  %137 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKmN22CatmullClarkSubdivider4EdgeEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #10
  br i1 %137, label %.lr.ph564, label %._crit_edge565

.lr.ph561:                                        ; preds = %.lr.ph561.preheader, %._crit_edge558
  %.0374559 = phi i64 [ %143, %._crit_edge558 ], [ 0, %.lr.ph561.preheader ]
  %138 = getelementptr inbounds ptr, ptr %1, i64 %.0374559
  %139 = load ptr, ptr %138, align 8, !tbaa !9
  %140 = getelementptr inbounds i8, ptr %139, i64 8
  %141 = load i32, ptr %140, align 8, !tbaa !19
  %.not648 = icmp eq i32 %141, 0
  br i1 %.not648, label %._crit_edge558, label %.lr.ph557

.lr.ph557:                                        ; preds = %.lr.ph561
  %142 = getelementptr inbounds i8, ptr %139, i64 208
  br label %144

._crit_edge558:                                   ; preds = %._crit_edge554, %.lr.ph561
  %143 = add nuw i64 %.0374559, 1
  %exitcond700.not = icmp eq i64 %143, %2
  br i1 %exitcond700.not, label %._crit_edge562, label %.lr.ph561, !llvm.loop !29

144:                                              ; preds = %.lr.ph557, %._crit_edge554
  %145 = phi i32 [ %141, %.lr.ph557 ], [ %151, %._crit_edge554 ]
  %indvars.iv697 = phi i64 [ 0, %.lr.ph557 ], [ %indvars.iv.next698, %._crit_edge554 ]
  %146 = load ptr, ptr %142, align 8, !tbaa !23
  %147 = getelementptr inbounds %struct.aiFace, ptr %146, i64 %indvars.iv697
  %148 = load i32, ptr %147, align 8, !tbaa !24
  %.not649 = icmp eq i32 %148, 0
  br i1 %.not649, label %._crit_edge554, label %.lr.ph553

.lr.ph553:                                        ; preds = %144
  %149 = getelementptr inbounds i8, ptr %147, i64 8
  %150 = trunc nuw i64 %indvars.iv697 to i32
  br label %154

._crit_edge554.loopexit:                          ; preds = %219
  %.pre = load i32, ptr %140, align 8, !tbaa !19
  br label %._crit_edge554

._crit_edge554:                                   ; preds = %._crit_edge554.loopexit, %144
  %151 = phi i32 [ %.pre, %._crit_edge554.loopexit ], [ %145, %144 ]
  %indvars.iv.next698 = add nuw nsw i64 %indvars.iv697, 1
  %152 = zext i32 %151 to i64
  %153 = icmp ult i64 %indvars.iv.next698, %152
  br i1 %153, label %144, label %._crit_edge558, !llvm.loop !30

154:                                              ; preds = %.lr.ph553, %219
  %indvars.iv694 = phi i64 [ 0, %.lr.ph553 ], [ %indvars.iv.next695, %219 ]
  %155 = phi i32 [ %148, %.lr.ph553 ], [ %220, %219 ]
  %156 = load ptr, ptr %149, align 8, !tbaa !26
  %157 = getelementptr inbounds i32, ptr %156, i64 %indvars.iv694
  %158 = load i32, ptr %157, align 4, !tbaa !5
  %159 = add i32 %155, -1
  %160 = zext i32 %159 to i64
  %161 = icmp eq i64 %indvars.iv694, %160
  %indvars.iv.next695 = add nuw nsw i64 %indvars.iv694, 1
  %162 = select i1 %161, i64 0, i64 %indvars.iv.next695
  %163 = getelementptr inbounds i32, ptr %156, i64 %162
  %164 = load i32, ptr %163, align 4, !tbaa !5
  %165 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0374559) #10
  %166 = getelementptr inbounds i8, ptr %165, i64 4
  %167 = load i32, ptr %166, align 4, !tbaa !31
  %168 = add i32 %167, %158
  %169 = zext i32 %168 to i64
  %170 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %169) #10
  %171 = load i32, ptr %170, align 4, !tbaa !5
  %172 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0374559) #10
  %173 = getelementptr inbounds i8, ptr %172, i64 4
  %174 = load i32, ptr %173, align 4, !tbaa !31
  %175 = add i32 %174, %164
  %176 = zext i32 %175 to i64
  %177 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %176) #10
  %178 = load i32, ptr %177, align 4, !tbaa !5
  store i32 %171, ptr %6, align 4, !tbaa !5
  store i32 %178, ptr %7, align 4, !tbaa !5
  %179 = icmp ult i32 %171, %178
  br i1 %179, label %180, label %181

180:                                              ; preds = %154
  call void @_ZSt4swapIjENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %7) #10
  br label %182

181:                                              ; preds = %154
  call void @_Z7mydummyv()
  br label %182

182:                                              ; preds = %181, %180
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #10
  %183 = load i32, ptr %6, align 4, !tbaa !5
  %184 = zext i32 %183 to i64
  %185 = load i32, ptr %7, align 4, !tbaa !5
  %186 = zext i32 %185 to i64
  %187 = shl nuw i64 %186, 32
  %188 = or disjoint i64 %187, %184
  store i64 %188, ptr %19, align 8, !tbaa !33
  %189 = invoke noundef nonnull align 4 dereferenceable(548) ptr @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEEixEOm(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %190 unwind label %203

190:                                              ; preds = %182
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  %191 = getelementptr inbounds i8, ptr %189, i64 544
  %192 = load i32, ptr %191, align 4, !tbaa !35
  %193 = add i32 %192, 1
  store i32 %193, ptr %191, align 4, !tbaa !35
  %194 = icmp ult i32 %193, 3
  br i1 %194, label %195, label %219

195:                                              ; preds = %190
  %196 = icmp eq i32 %192, 0
  br i1 %196, label %197, label %212

197:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %20) #10
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %21) #10
  invoke void @_ZN6Assimp6VertexC2EPK6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %21, ptr noundef %139, i32 noundef %158)
          to label %198 unwind label %205

198:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %22) #10
  invoke void @_ZN6Assimp6VertexC2EPK6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %22, ptr noundef %139, i32 noundef %164)
          to label %199 unwind label %207

199:                                              ; preds = %198
  invoke void @_ZN6AssimpplERKNS_6VertexES2_(ptr dead_on_unwind nonnull writable sret(%"struct.Assimp::Vertex") align 4 %20, ptr noundef nonnull align 4 dereferenceable(272) %21, ptr noundef nonnull align 4 dereferenceable(272) %22)
          to label %200 unwind label %207

200:                                              ; preds = %199
  %201 = getelementptr inbounds i8, ptr %189, i64 272
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(272) %201, ptr noundef nonnull align 4 dereferenceable(272) %20, i64 272, i1 false), !tbaa.struct !38
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(272) %189, ptr noundef nonnull align 4 dereferenceable(272) %20, i64 272, i1 false)
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %22) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %21) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %20) #10
  %202 = invoke noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexmLEf(ptr noundef nonnull align 4 dereferenceable(272) %201, float noundef 5.000000e-01)
          to label %212 unwind label %210

203:                                              ; preds = %182
  %204 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  br label %929

205:                                              ; preds = %197
  %206 = landingpad { ptr, i32 }
          cleanup
  br label %209

207:                                              ; preds = %199, %198
  %208 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %22) #10
  br label %209

209:                                              ; preds = %207, %205
  %.pn455 = phi { ptr, i32 } [ %208, %207 ], [ %206, %205 ]
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %21) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %20) #10
  br label %929

210:                                              ; preds = %212, %200
  %211 = landingpad { ptr, i32 }
          cleanup
  br label %929

212:                                              ; preds = %200, %195
  %213 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0374559) #10
  %214 = load i32, ptr %213, align 4, !tbaa !41
  %215 = add i32 %214, %150
  %216 = zext i32 %215 to i64
  %217 = call noundef nonnull align 4 dereferenceable(272) ptr @_ZNSt6vectorIN6Assimp6VertexESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %216) #10
  %218 = invoke noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexpLERKS0_(ptr noundef nonnull align 4 dereferenceable(272) %189, ptr noundef nonnull align 4 dereferenceable(272) %217)
          to label %219 unwind label %210

219:                                              ; preds = %212, %190
  %220 = load i32, ptr %147, align 8, !tbaa !24
  %221 = zext i32 %220 to i64
  %222 = icmp ult i64 %indvars.iv.next695, %221
  br i1 %222, label %154, label %._crit_edge554.loopexit, !llvm.loop !42

._crit_edge565:                                   ; preds = %248, %._crit_edge562
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  %223 = load i32, ptr %23, align 4, !tbaa !5
  %.not418 = icmp eq i32 %223, 0
  br i1 %.not418, label %262, label %252

.lr.ph564:                                        ; preds = %._crit_edge562, %248
  %224 = call noundef nonnull align 8 dereferenceable(556) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmN22CatmullClarkSubdivider4EdgeEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  %225 = getelementptr inbounds i8, ptr %224, i64 552
  %226 = load i32, ptr %225, align 8, !tbaa !43
  %227 = icmp ult i32 %226, 2
  br i1 %227, label %228, label %238

228:                                              ; preds = %.lr.ph564
  %229 = call noundef nonnull align 8 dereferenceable(556) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmN22CatmullClarkSubdivider4EdgeEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  %230 = getelementptr inbounds i8, ptr %229, i64 552
  %231 = load i32, ptr %230, align 8, !tbaa !43
  %.not452 = icmp eq i32 %231, 0
  br i1 %.not452, label %232, label %233

232:                                              ; preds = %228
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 331)
          to label %233 unwind label %236

233:                                              ; preds = %232, %228
  %234 = load i32, ptr %23, align 4, !tbaa !5
  %235 = add i32 %234, 1
  store i32 %235, ptr %23, align 4, !tbaa !5
  br label %238

236:                                              ; preds = %238, %232
  %237 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  br label %271

238:                                              ; preds = %233, %.lr.ph564
  %239 = call noundef nonnull align 8 dereferenceable(556) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmN22CatmullClarkSubdivider4EdgeEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  %240 = getelementptr inbounds i8, ptr %239, i64 552
  %241 = load i32, ptr %240, align 8, !tbaa !43
  %242 = uitofp i32 %241 to float
  %243 = fadd float %242, 2.000000e+00
  %244 = fdiv float 1.000000e+00, %243
  %245 = call noundef nonnull align 8 dereferenceable(556) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmN22CatmullClarkSubdivider4EdgeEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  %246 = getelementptr inbounds i8, ptr %245, i64 8
  %247 = invoke noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexmLEf(ptr noundef nonnull align 4 dereferenceable(272) %246, float noundef %244)
          to label %248 unwind label %236

248:                                              ; preds = %238
  %249 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKmN22CatmullClarkSubdivider4EdgeEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #10
  %250 = call ptr @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %18) #10
  store ptr %250, ptr %25, align 8
  %251 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKmN22CatmullClarkSubdivider4EdgeEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #10
  br i1 %251, label %.lr.ph564, label %._crit_edge565, !llvm.loop !45

252:                                              ; preds = %._crit_edge565
  %253 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %254 unwind label %258

254:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #10
  %255 = call noundef i64 @_ZNKSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %18) #10
  %256 = trunc i64 %255 to i32
  store i32 %256, ptr %26, align 4, !tbaa !5
  invoke void @_ZN6Assimp6Logger12verboseDebugIJRA31_KcRjRA44_S2_jRA10_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %253, ptr noundef nonnull align 1 dereferenceable(31) @.str.12, ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 1 dereferenceable(44) @.str.13, ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull align 1 dereferenceable(10) @.str.14)
          to label %257 unwind label %260

257:                                              ; preds = %254
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #10
  br label %262

258:                                              ; preds = %252
  %259 = landingpad { ptr, i32 }
          cleanup
  br label %271

260:                                              ; preds = %254
  %261 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #10
  br label %271

262:                                              ; preds = %257, %._crit_edge565
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #10
  %263 = zext i32 %.0363.lcssa746 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #10
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #10
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %263, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %264 unwind label %272

264:                                              ; preds = %262
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #10
  %265 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #10
  store i32 0, ptr %30, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #10
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #10
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %265, ptr noundef nonnull align 4 dereferenceable(4) %30, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %266 unwind label %274

266:                                              ; preds = %264
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %32) #10
  %267 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #10
  %268 = add i64 %267, 1
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #10
  store i32 0, ptr %33, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #10
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #10
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %268, ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %269 unwind label %276

269:                                              ; preds = %266
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #10
  br i1 %.not643, label %.preheader488, label %.lr.ph576

.preheader488:                                    ; preds = %._crit_edge573, %269
  %270 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  %.not653 = icmp eq i64 %270, 0
  br i1 %.not653, label %.preheader487, label %.lr.ph579

271:                                              ; preds = %260, %258, %236
  %.pn453 = phi { ptr, i32 } [ %237, %236 ], [ %261, %260 ], [ %259, %258 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #10
  br label %929

272:                                              ; preds = %262
  %273 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #10
  br label %928

274:                                              ; preds = %264
  %275 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #10
  br label %927

276:                                              ; preds = %266
  %277 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #10
  br label %926

.lr.ph576:                                        ; preds = %269, %._crit_edge573
  %.0378574 = phi i64 [ %283, %._crit_edge573 ], [ 0, %269 ]
  %278 = getelementptr inbounds ptr, ptr %1, i64 %.0378574
  %279 = load ptr, ptr %278, align 8, !tbaa !9
  %280 = getelementptr inbounds i8, ptr %279, i64 8
  %281 = load i32, ptr %280, align 8, !tbaa !19
  %.not651 = icmp eq i32 %281, 0
  br i1 %.not651, label %._crit_edge573, label %.lr.ph572

.lr.ph572:                                        ; preds = %.lr.ph576
  %282 = getelementptr inbounds i8, ptr %279, i64 208
  br label %284

._crit_edge573:                                   ; preds = %._crit_edge569, %.lr.ph576
  %283 = add nuw i64 %.0378574, 1
  %exitcond707.not = icmp eq i64 %283, %2
  br i1 %exitcond707.not, label %.preheader488, label %.lr.ph576, !llvm.loop !46

284:                                              ; preds = %.lr.ph572, %._crit_edge569
  %285 = phi i32 [ %281, %.lr.ph572 ], [ %290, %._crit_edge569 ]
  %indvars.iv704 = phi i64 [ 0, %.lr.ph572 ], [ %indvars.iv.next705, %._crit_edge569 ]
  %286 = load ptr, ptr %282, align 8, !tbaa !23
  %287 = getelementptr inbounds %struct.aiFace, ptr %286, i64 %indvars.iv704
  %288 = load i32, ptr %287, align 8, !tbaa !24
  %.not652 = icmp eq i32 %288, 0
  br i1 %.not652, label %._crit_edge569, label %.lr.ph568

.lr.ph568:                                        ; preds = %284
  %289 = getelementptr inbounds i8, ptr %287, i64 8
  br label %293

._crit_edge569.loopexit:                          ; preds = %293
  %.pre737 = load i32, ptr %280, align 8, !tbaa !19
  br label %._crit_edge569

._crit_edge569:                                   ; preds = %._crit_edge569.loopexit, %284
  %290 = phi i32 [ %.pre737, %._crit_edge569.loopexit ], [ %285, %284 ]
  %indvars.iv.next705 = add nuw nsw i64 %indvars.iv704, 1
  %291 = zext i32 %290 to i64
  %292 = icmp ult i64 %indvars.iv.next705, %291
  br i1 %292, label %284, label %._crit_edge573, !llvm.loop !47

293:                                              ; preds = %.lr.ph568, %293
  %indvars.iv701 = phi i64 [ 0, %.lr.ph568 ], [ %indvars.iv.next702, %293 ]
  %294 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0378574) #10
  %295 = getelementptr inbounds i8, ptr %294, i64 4
  %296 = load i32, ptr %295, align 4, !tbaa !31
  %297 = load ptr, ptr %289, align 8, !tbaa !26
  %298 = getelementptr inbounds i32, ptr %297, i64 %indvars.iv701
  %299 = load i32, ptr %298, align 4, !tbaa !5
  %300 = add i32 %299, %296
  %301 = zext i32 %300 to i64
  %302 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %301) #10
  %303 = load i32, ptr %302, align 4, !tbaa !5
  %304 = zext i32 %303 to i64
  %305 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %304) #10
  %306 = load i32, ptr %305, align 4, !tbaa !5
  %307 = add i32 %306, 1
  store i32 %307, ptr %305, align 4, !tbaa !5
  %indvars.iv.next702 = add nuw nsw i64 %indvars.iv701, 1
  %308 = load i32, ptr %287, align 8, !tbaa !24
  %309 = zext i32 %308 to i64
  %310 = icmp ult i64 %indvars.iv.next702, %309
  br i1 %310, label %293, label %._crit_edge569.loopexit, !llvm.loop !48

.preheader487:                                    ; preds = %.lr.ph579, %.preheader488
  br i1 %.not643, label %.preheader486, label %.lr.ph589

.lr.ph579:                                        ; preds = %.preheader488, %.lr.ph579
  %.0392578 = phi i32 [ %315, %.lr.ph579 ], [ 0, %.preheader488 ]
  %.0393577 = phi i64 [ %311, %.lr.ph579 ], [ 0, %.preheader488 ]
  %311 = add nuw i64 %.0393577, 1
  %312 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %311) #10
  store i32 %.0392578, ptr %312, align 4, !tbaa !5
  %313 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %.0393577) #10
  %314 = load i32, ptr %313, align 4, !tbaa !5
  %315 = add i32 %314, %.0392578
  %316 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  %317 = icmp ult i64 %311, %316
  br i1 %317, label %.lr.ph579, label %.preheader487, !llvm.loop !49

.preheader486:                                    ; preds = %._crit_edge587, %.preheader487
  %318 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  %.not657 = icmp eq i64 %318, 1
  br i1 %.not657, label %._crit_edge604, label %.preheader485.lr.ph

.preheader485.lr.ph:                              ; preds = %.preheader486
  %319 = icmp ugt i64 %2, 1
  br label %.preheader485

.lr.ph589:                                        ; preds = %.preheader487, %._crit_edge587
  %.0395588 = phi i64 [ %325, %._crit_edge587 ], [ 0, %.preheader487 ]
  %320 = getelementptr inbounds ptr, ptr %1, i64 %.0395588
  %321 = load ptr, ptr %320, align 8, !tbaa !9
  %322 = getelementptr inbounds i8, ptr %321, i64 8
  %323 = load i32, ptr %322, align 8, !tbaa !19
  %.not655 = icmp eq i32 %323, 0
  br i1 %.not655, label %._crit_edge587, label %.lr.ph586

.lr.ph586:                                        ; preds = %.lr.ph589
  %324 = getelementptr inbounds i8, ptr %321, i64 208
  br label %326

._crit_edge587:                                   ; preds = %._crit_edge583, %.lr.ph589
  %325 = add nuw i64 %.0395588, 1
  %exitcond714.not = icmp eq i64 %325, %2
  br i1 %exitcond714.not, label %.preheader486, label %.lr.ph589, !llvm.loop !50

326:                                              ; preds = %.lr.ph586, %._crit_edge583
  %327 = phi i32 [ %323, %.lr.ph586 ], [ %333, %._crit_edge583 ]
  %indvars.iv711 = phi i64 [ 0, %.lr.ph586 ], [ %indvars.iv.next712, %._crit_edge583 ]
  %328 = load ptr, ptr %324, align 8, !tbaa !23
  %329 = getelementptr inbounds %struct.aiFace, ptr %328, i64 %indvars.iv711
  %330 = load i32, ptr %329, align 8, !tbaa !24
  %.not656 = icmp eq i32 %330, 0
  br i1 %.not656, label %._crit_edge583, label %.lr.ph582

.lr.ph582:                                        ; preds = %326
  %331 = getelementptr inbounds i8, ptr %329, i64 8
  %332 = trunc nuw i64 %indvars.iv711 to i32
  br label %336

._crit_edge583.loopexit:                          ; preds = %336
  %.pre738 = load i32, ptr %322, align 8, !tbaa !19
  br label %._crit_edge583

._crit_edge583:                                   ; preds = %._crit_edge583.loopexit, %326
  %333 = phi i32 [ %.pre738, %._crit_edge583.loopexit ], [ %327, %326 ]
  %indvars.iv.next712 = add nuw nsw i64 %indvars.iv711, 1
  %334 = zext i32 %333 to i64
  %335 = icmp ult i64 %indvars.iv.next712, %334
  br i1 %335, label %326, label %._crit_edge587, !llvm.loop !51

336:                                              ; preds = %.lr.ph582, %336
  %indvars.iv708 = phi i64 [ 0, %.lr.ph582 ], [ %indvars.iv.next709, %336 ]
  %337 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0395588) #10
  %338 = load i32, ptr %337, align 4, !tbaa !41
  %339 = add i32 %338, %332
  %340 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0395588) #10
  %341 = getelementptr inbounds i8, ptr %340, i64 4
  %342 = load i32, ptr %341, align 4, !tbaa !31
  %343 = load ptr, ptr %331, align 8, !tbaa !26
  %344 = getelementptr inbounds i32, ptr %343, i64 %indvars.iv708
  %345 = load i32, ptr %344, align 4, !tbaa !5
  %346 = add i32 %345, %342
  %347 = zext i32 %346 to i64
  %348 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %347) #10
  %349 = load i32, ptr %348, align 4, !tbaa !5
  %350 = add i32 %349, 1
  %351 = zext i32 %350 to i64
  %352 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %351) #10
  %353 = load i32, ptr %352, align 4, !tbaa !5
  %354 = add i32 %353, 1
  store i32 %354, ptr %352, align 4, !tbaa !5
  %355 = zext i32 %353 to i64
  %356 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %355) #10
  store i32 %339, ptr %356, align 4, !tbaa !5
  %indvars.iv.next709 = add nuw nsw i64 %indvars.iv708, 1
  %357 = load i32, ptr %329, align 8, !tbaa !24
  %358 = zext i32 %357 to i64
  %359 = icmp ult i64 %indvars.iv.next709, %358
  br i1 %359, label %336, label %._crit_edge583.loopexit, !llvm.loop !52

.preheader485:                                    ; preds = %.preheader485.lr.ph, %._crit_edge598
  %.0397602 = phi i64 [ 0, %.preheader485.lr.ph ], [ %416, %._crit_edge598 ]
  %360 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %.0397602) #10
  %361 = load i32, ptr %360, align 4, !tbaa !5
  %.not658 = icmp eq i32 %361, 0
  br i1 %.not658, label %._crit_edge598, label %.lr.ph597

.lr.ph597:                                        ; preds = %.preheader485
  %362 = trunc i64 %.0397602 to i32
  br i1 %319, label %.lr.ph597.split.us, label %.lr.ph597.split

.lr.ph597.split.us:                               ; preds = %.lr.ph597, %.critedge470.us
  %.0396596.us = phi i32 [ %408, %.critedge470.us ], [ 0, %.lr.ph597 ]
  %363 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %.0397602) #10
  %364 = load i32, ptr %363, align 4, !tbaa !5
  %365 = add i32 %364, %.0396596.us
  %366 = zext i32 %365 to i64
  %367 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %366) #10
  %368 = load i32, ptr %367, align 4, !tbaa !5
  %369 = load i32, ptr %12, align 4, !tbaa !5
  %370 = icmp ult i32 %368, %369
  br i1 %370, label %.lr.ph592.us.preheader, label %371

371:                                              ; preds = %.lr.ph597.split.us
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 386)
          to label %.lr.ph592.us.preheader unwind label %.split.us

.lr.ph592.us.preheader:                           ; preds = %371, %.lr.ph597.split.us
  br label %.lr.ph592.us

.lr.ph592.us:                                     ; preds = %.lr.ph592.us.preheader, %375
  %.0394590.us = phi i64 [ %376, %375 ], [ 1, %.lr.ph592.us.preheader ]
  %372 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0394590.us) #10
  %373 = load i32, ptr %372, align 4, !tbaa !41
  %374 = icmp ugt i32 %373, %368
  br i1 %374, label %377, label %375

375:                                              ; preds = %.lr.ph592.us
  %376 = add nuw i64 %.0394590.us, 1
  %exitcond715.not = icmp eq i64 %376, %2
  br i1 %exitcond715.not, label %.critedge470.us, label %.lr.ph592.us, !llvm.loop !53

377:                                              ; preds = %.lr.ph592.us
  %378 = add i64 %.0394590.us, -1
  %379 = getelementptr inbounds ptr, ptr %1, i64 %378
  %380 = load ptr, ptr %379, align 8, !tbaa !9
  %381 = getelementptr inbounds i8, ptr %380, i64 208
  %382 = load ptr, ptr %381, align 8, !tbaa !23
  %383 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %378) #10
  %384 = load i32, ptr %383, align 4, !tbaa !41
  %385 = sub i32 %368, %384
  %386 = zext i32 %385 to i64
  %387 = getelementptr inbounds %struct.aiFace, ptr %382, i64 %386
  %388 = load i32, ptr %387, align 8, !tbaa !24
  %.not659 = icmp eq i32 %388, 0
  br i1 %.not659, label %.critedge.us, label %.lr.ph595.us

389:                                              ; preds = %396
  %indvars.iv.next717 = add nuw nsw i64 %indvars.iv716, 1
  %390 = load i32, ptr %387, align 8, !tbaa !24
  %391 = zext i32 %390 to i64
  %392 = icmp ult i64 %indvars.iv.next717, %391
  br i1 %392, label %396, label %.critedge.us, !llvm.loop !54

.critedge.us:                                     ; preds = %389, %377
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 400)
          to label %393 unwind label %.split600.us

393:                                              ; preds = %.critedge.us
  %394 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %395 unwind label %.split600.us

395:                                              ; preds = %393
  invoke void @_ZN6Assimp6Logger12verboseDebugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %394, ptr noundef nonnull @.str.17)
          to label %.critedge470.us unwind label %.split600.us

396:                                              ; preds = %.lr.ph595.us, %389
  %indvars.iv716 = phi i64 [ 0, %.lr.ph595.us ], [ %indvars.iv.next717, %389 ]
  %397 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %378) #10
  %398 = getelementptr inbounds i8, ptr %397, i64 4
  %399 = load i32, ptr %398, align 4, !tbaa !31
  %400 = load ptr, ptr %412, align 8, !tbaa !26
  %401 = getelementptr inbounds i32, ptr %400, i64 %indvars.iv716
  %402 = load i32, ptr %401, align 4, !tbaa !5
  %403 = add i32 %402, %399
  %404 = zext i32 %403 to i64
  %405 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %404) #10
  %406 = load i32, ptr %405, align 4, !tbaa !5
  %407 = icmp eq i32 %406, %362
  br i1 %407, label %.critedge470.us, label %389

.critedge470.us:                                  ; preds = %375, %396, %395
  %408 = add nuw i32 %.0396596.us, 1
  %409 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %.0397602) #10
  %410 = load i32, ptr %409, align 4, !tbaa !5
  %411 = icmp ult i32 %408, %410
  br i1 %411, label %.lr.ph597.split.us, label %._crit_edge598, !llvm.loop !55

.lr.ph595.us:                                     ; preds = %377
  %412 = getelementptr inbounds i8, ptr %387, i64 8
  br label %396

.split.us:                                        ; preds = %371
  %413 = landingpad { ptr, i32 }
          cleanup
  br label %925

.split600.us:                                     ; preds = %395, %393, %.critedge.us
  %414 = landingpad { ptr, i32 }
          cleanup
  br label %925

._crit_edge604:                                   ; preds = %._crit_edge598, %.preheader486
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %35) #10
  %415 = zext i32 %89 to i64
  call void @llvm.lifetime.start.p0(i64 276, ptr nonnull %36) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #10
  store i8 0, ptr %37, align 1, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %38) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(272) %38, i8 0, i64 272, i1 false)
  call void @_ZN6Assimp6VertexC2Ev(ptr noundef nonnull align 4 dereferenceable(272) %38) #10
  call void @_ZNSt4pairIbN6Assimp6VertexEEC2IbS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS5_S6_EEEbE4typeELb1EEEOS5_OS6_(ptr noundef nonnull align 4 dereferenceable(276) %36, ptr noundef nonnull align 1 dereferenceable(1) %37, ptr noundef nonnull align 4 dereferenceable(272) %38)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #10
  call void @_ZNSaISt4pairIbN6Assimp6VertexEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #10
  invoke void @_ZNSt6vectorISt4pairIbN6Assimp6VertexEESaIS3_EEC2EmRKS3_RKS4_(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %415, ptr noundef nonnull align 4 dereferenceable(276) %36, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %434 unwind label %435

._crit_edge598:                                   ; preds = %.critedge470.loopexit484, %.critedge470.us, %.preheader485
  %416 = add nuw i64 %.0397602, 1
  %417 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  %418 = add i64 %417, -1
  %419 = icmp ult i64 %416, %418
  br i1 %419, label %.preheader485, label %._crit_edge604, !llvm.loop !58

.lr.ph597.split:                                  ; preds = %.lr.ph597, %.critedge470.loopexit484
  %.0396596 = phi i32 [ %429, %.critedge470.loopexit484 ], [ 0, %.lr.ph597 ]
  %420 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %.0397602) #10
  %421 = load i32, ptr %420, align 4, !tbaa !5
  %422 = add i32 %421, %.0396596
  %423 = zext i32 %422 to i64
  %424 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %423) #10
  %425 = load i32, ptr %424, align 4, !tbaa !5
  %426 = load i32, ptr %12, align 4, !tbaa !5
  %427 = icmp ult i32 %425, %426
  br i1 %427, label %.critedge470.loopexit484, label %428

428:                                              ; preds = %.lr.ph597.split
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 386)
          to label %.critedge470.loopexit484 unwind label %.split

.critedge470.loopexit484:                         ; preds = %428, %.lr.ph597.split
  %429 = add nuw i32 %.0396596, 1
  %430 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %.0397602) #10
  %431 = load i32, ptr %430, align 4, !tbaa !5
  %432 = icmp ult i32 %429, %431
  br i1 %432, label %.lr.ph597.split, label %._crit_edge598, !llvm.loop !55

.split:                                           ; preds = %428
  %433 = landingpad { ptr, i32 }
          cleanup
  br label %925

434:                                              ; preds = %._crit_edge604
  call void @_ZNSt15__new_allocatorISt4pairIbN6Assimp6VertexEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %38) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #10
  call void @llvm.lifetime.end.p0(i64 276, ptr nonnull %36) #10
  br i1 %.not643, label %._crit_edge639, label %.lr.ph638

._crit_edge639:                                   ; preds = %._crit_edge635, %434
  call void @_ZNSt6vectorISt4pairIbN6Assimp6VertexEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %35) #10
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #10
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #10
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #10
  call void @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %18) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %18) #10
  %.not419 = icmp eq i32 %4, 1
  br i1 %.not419, label %943, label %920

435:                                              ; preds = %._crit_edge604
  %436 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt4pairIbN6Assimp6VertexEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %38) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #10
  call void @llvm.lifetime.end.p0(i64 276, ptr nonnull %36) #10
  br label %924

.lr.ph638:                                        ; preds = %434, %._crit_edge635
  %.0389636 = phi i64 [ %588, %._crit_edge635 ], [ 0, %434 ]
  %437 = getelementptr inbounds ptr, ptr %1, i64 %.0389636
  %438 = load ptr, ptr %437, align 8, !tbaa !9
  %439 = invoke noalias noundef nonnull dereferenceable(1320) ptr @_Znwm(i64 noundef 1320) #11
          to label %440 unwind label %453

440:                                              ; preds = %.lr.ph638
  call void @_ZN6aiMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %439) #10
  %441 = getelementptr inbounds ptr, ptr %3, i64 %.0389636
  store ptr %439, ptr %441, align 8, !tbaa !9
  %442 = getelementptr inbounds i8, ptr %438, i64 8
  %443 = load i32, ptr %442, align 8, !tbaa !19
  %.not661 = icmp eq i32 %443, 0
  br i1 %.not661, label %.._crit_edge608_crit_edge, label %.lr.ph607

.._crit_edge608_crit_edge:                        ; preds = %440
  %.phi.trans.insert = getelementptr inbounds i8, ptr %439, i64 8
  %.pre740 = load i32, ptr %.phi.trans.insert, align 8, !tbaa !19
  br label %._crit_edge608

.lr.ph607:                                        ; preds = %440
  %444 = getelementptr inbounds i8, ptr %438, i64 208
  %445 = load ptr, ptr %444, align 8, !tbaa !23
  %446 = getelementptr inbounds i8, ptr %439, i64 8
  %.pre739 = load i32, ptr %446, align 8, !tbaa !19
  br label %455

._crit_edge608:                                   ; preds = %455, %.._crit_edge608_crit_edge
  %447 = phi i32 [ %.pre740, %.._crit_edge608_crit_edge ], [ %459, %455 ]
  %448 = getelementptr inbounds i8, ptr %439, i64 8
  %449 = zext i32 %447 to i64
  %450 = shl nuw nsw i64 %449, 4
  %451 = or disjoint i64 %450, 8
  %452 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %451) #11
          to label %463 unwind label %453

453:                                              ; preds = %521, %508, %492, %.loopexit483, %._crit_edge608, %.lr.ph638
  %454 = landingpad { ptr, i32 }
          cleanup
  br label %919

455:                                              ; preds = %.lr.ph607, %455
  %456 = phi i32 [ %.pre739, %.lr.ph607 ], [ %459, %455 ]
  %indvars.iv719 = phi i64 [ 0, %.lr.ph607 ], [ %indvars.iv.next720, %455 ]
  %457 = getelementptr inbounds %struct.aiFace, ptr %445, i64 %indvars.iv719
  %458 = load i32, ptr %457, align 8, !tbaa !24
  %459 = add i32 %456, %458
  store i32 %459, ptr %446, align 8, !tbaa !19
  %indvars.iv.next720 = add nuw nsw i64 %indvars.iv719, 1
  %460 = load i32, ptr %442, align 8, !tbaa !19
  %461 = zext i32 %460 to i64
  %462 = icmp ult i64 %indvars.iv.next720, %461
  br i1 %462, label %455, label %._crit_edge608, !llvm.loop !59

463:                                              ; preds = %._crit_edge608
  store i64 %449, ptr %452, align 16
  %464 = getelementptr inbounds i8, ptr %452, i64 8
  %465 = icmp eq i32 %447, 0
  br i1 %465, label %.loopexit483, label %466

466:                                              ; preds = %463
  %467 = getelementptr inbounds %struct.aiFace, ptr %464, i64 %449
  br label %468

468:                                              ; preds = %468, %466
  %469 = phi ptr [ %464, %466 ], [ %470, %468 ]
  call void @_ZN6aiFaceC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %469) #10
  %470 = getelementptr inbounds i8, ptr %469, i64 16
  %471 = icmp eq ptr %470, %467
  br i1 %471, label %.loopexit483.loopexit, label %468

.loopexit483.loopexit:                            ; preds = %468
  %.pre741 = load i32, ptr %448, align 8, !tbaa !19
  br label %.loopexit483

.loopexit483:                                     ; preds = %.loopexit483.loopexit, %463
  %472 = phi i32 [ %.pre741, %.loopexit483.loopexit ], [ 0, %463 ]
  %473 = getelementptr inbounds i8, ptr %439, i64 208
  store ptr %464, ptr %473, align 8, !tbaa !23
  %474 = shl i32 %472, 2
  %475 = getelementptr inbounds i8, ptr %439, i64 4
  store i32 %474, ptr %475, align 4, !tbaa !18
  %476 = zext i32 %474 to i64
  %477 = mul nuw nsw i64 %476, 12
  %478 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %477) #11
          to label %479 unwind label %453

479:                                              ; preds = %.loopexit483
  %480 = icmp eq i32 %474, 0
  br i1 %480, label %.loopexit482, label %481

481:                                              ; preds = %479
  %482 = getelementptr inbounds %class.aiVector3t, ptr %478, i64 %476
  br label %483

483:                                              ; preds = %483, %481
  %484 = phi ptr [ %478, %481 ], [ %485, %483 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %484) #10
  %485 = getelementptr inbounds i8, ptr %484, i64 12
  %486 = icmp eq ptr %485, %482
  br i1 %486, label %.loopexit482, label %483

.loopexit482:                                     ; preds = %483, %479
  %487 = getelementptr inbounds i8, ptr %439, i64 16
  store ptr %478, ptr %487, align 8, !tbaa !11
  store i32 8, ptr %439, align 8, !tbaa !60
  %488 = getelementptr inbounds i8, ptr %438, i64 232
  %489 = load i32, ptr %488, align 8, !tbaa !61
  %490 = getelementptr inbounds i8, ptr %439, i64 232
  store i32 %489, ptr %490, align 8, !tbaa !61
  %491 = call noundef zeroext i1 @_ZNK6aiMesh10HasNormalsEv(ptr noundef nonnull align 8 dereferenceable(1320) %438)
  br i1 %491, label %492, label %506

492:                                              ; preds = %.loopexit482
  %493 = load i32, ptr %475, align 4, !tbaa !18
  %494 = zext i32 %493 to i64
  %495 = mul nuw nsw i64 %494, 12
  %496 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %495) #11
          to label %497 unwind label %453

497:                                              ; preds = %492
  %498 = icmp eq i32 %493, 0
  br i1 %498, label %.loopexit481, label %499

499:                                              ; preds = %497
  %500 = getelementptr inbounds %class.aiVector3t, ptr %496, i64 %494
  br label %501

501:                                              ; preds = %501, %499
  %502 = phi ptr [ %496, %499 ], [ %503, %501 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %502) #10
  %503 = getelementptr inbounds i8, ptr %502, i64 12
  %504 = icmp eq ptr %503, %500
  br i1 %504, label %.loopexit481, label %501

.loopexit481:                                     ; preds = %501, %497
  %505 = getelementptr inbounds i8, ptr %439, i64 24
  store ptr %496, ptr %505, align 8, !tbaa !62
  br label %506

506:                                              ; preds = %.loopexit481, %.loopexit482
  %507 = call noundef zeroext i1 @_ZNK6aiMesh24HasTangentsAndBitangentsEv(ptr noundef nonnull align 8 dereferenceable(1320) %438)
  br i1 %507, label %508, label %536

508:                                              ; preds = %506
  %509 = load i32, ptr %475, align 4, !tbaa !18
  %510 = zext i32 %509 to i64
  %511 = mul nuw nsw i64 %510, 12
  %512 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %511) #11
          to label %513 unwind label %453

513:                                              ; preds = %508
  %514 = icmp eq i32 %509, 0
  br i1 %514, label %521, label %515

515:                                              ; preds = %513
  %516 = getelementptr inbounds %class.aiVector3t, ptr %512, i64 %510
  br label %517

517:                                              ; preds = %517, %515
  %518 = phi ptr [ %512, %515 ], [ %519, %517 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %518) #10
  %519 = getelementptr inbounds i8, ptr %518, i64 12
  %520 = icmp eq ptr %519, %516
  br i1 %520, label %thread-pre-split, label %517

thread-pre-split:                                 ; preds = %517
  %.pr = load i32, ptr %475, align 4, !tbaa !18
  br label %521

521:                                              ; preds = %thread-pre-split, %513
  %522 = phi i32 [ %.pr, %thread-pre-split ], [ 0, %513 ]
  %523 = getelementptr inbounds i8, ptr %439, i64 32
  store ptr %512, ptr %523, align 8, !tbaa !63
  %524 = zext i32 %522 to i64
  %525 = mul nuw nsw i64 %524, 12
  %526 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %525) #11
          to label %527 unwind label %453

527:                                              ; preds = %521
  %528 = icmp eq i32 %522, 0
  br i1 %528, label %.loopexit480, label %529

529:                                              ; preds = %527
  %530 = getelementptr inbounds %class.aiVector3t, ptr %526, i64 %524
  br label %531

531:                                              ; preds = %531, %529
  %532 = phi ptr [ %526, %529 ], [ %533, %531 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %532) #10
  %533 = getelementptr inbounds i8, ptr %532, i64 12
  %534 = icmp eq ptr %533, %530
  br i1 %534, label %.loopexit480, label %531

.loopexit480:                                     ; preds = %531, %527
  %535 = getelementptr inbounds i8, ptr %439, i64 40
  store ptr %526, ptr %535, align 8, !tbaa !64
  br label %536

536:                                              ; preds = %.loopexit480, %506
  %537 = call noundef zeroext i1 @_ZNK6aiMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1320) %438, i32 noundef 0)
  br i1 %537, label %.lr.ph611, label %.preheader479

.lr.ph611:                                        ; preds = %536
  %538 = getelementptr inbounds i8, ptr %439, i64 112
  %539 = getelementptr inbounds i8, ptr %438, i64 176
  %540 = getelementptr inbounds i8, ptr %439, i64 176
  br label %545

.preheader479:                                    ; preds = %.loopexit478, %536
  %541 = call noundef zeroext i1 @_ZNK6aiMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1320) %438, i32 noundef 0)
  br i1 %541, label %.lr.ph613, label %._crit_edge614

.lr.ph613:                                        ; preds = %.preheader479
  %542 = getelementptr inbounds i8, ptr %439, i64 48
  br label %571

543:                                              ; preds = %545
  %544 = landingpad { ptr, i32 }
          cleanup
  br label %919

545:                                              ; preds = %.lr.ph611, %.loopexit478
  %.0385609 = phi i32 [ 0, %.lr.ph611 ], [ %563, %.loopexit478 ]
  %546 = load i32, ptr %475, align 4, !tbaa !18
  %547 = zext i32 %546 to i64
  %548 = mul nuw nsw i64 %547, 12
  %549 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %548) #11
          to label %550 unwind label %543

550:                                              ; preds = %545
  %551 = icmp eq i32 %546, 0
  br i1 %551, label %.loopexit478, label %552

552:                                              ; preds = %550
  %553 = getelementptr inbounds %class.aiVector3t, ptr %549, i64 %547
  br label %554

554:                                              ; preds = %554, %552
  %555 = phi ptr [ %549, %552 ], [ %556, %554 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %555) #10
  %556 = getelementptr inbounds i8, ptr %555, i64 12
  %557 = icmp eq ptr %556, %553
  br i1 %557, label %.loopexit478, label %554

.loopexit478:                                     ; preds = %554, %550
  %558 = zext i32 %.0385609 to i64
  %559 = getelementptr inbounds [8 x ptr], ptr %538, i64 0, i64 %558
  store ptr %549, ptr %559, align 8, !tbaa !9
  %560 = getelementptr inbounds [8 x i32], ptr %539, i64 0, i64 %558
  %561 = load i32, ptr %560, align 4, !tbaa !5
  %562 = getelementptr inbounds [8 x i32], ptr %540, i64 0, i64 %558
  store i32 %561, ptr %562, align 4, !tbaa !5
  %563 = add i32 %.0385609, 1
  %564 = call noundef zeroext i1 @_ZNK6aiMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1320) %438, i32 noundef %563)
  br i1 %564, label %545, label %.preheader479, !llvm.loop !65

._crit_edge614:                                   ; preds = %.loopexit, %.preheader479
  %565 = load i32, ptr %448, align 8, !tbaa !19
  %566 = shl i32 %565, 2
  store i32 %566, ptr %475, align 4, !tbaa !18
  %567 = load i32, ptr %442, align 8, !tbaa !19
  %.not662 = icmp eq i32 %567, 0
  br i1 %.not662, label %._crit_edge635, label %.lr.ph634

.lr.ph634:                                        ; preds = %._crit_edge614
  %568 = getelementptr inbounds i8, ptr %438, i64 208
  br label %589

569:                                              ; preds = %571
  %570 = landingpad { ptr, i32 }
          cleanup
  br label %919

571:                                              ; preds = %.lr.ph613, %.loopexit
  %.0384612 = phi i32 [ 0, %.lr.ph613 ], [ %586, %.loopexit ]
  %572 = load i32, ptr %475, align 4, !tbaa !18
  %573 = zext i32 %572 to i64
  %574 = shl nuw nsw i64 %573, 4
  %575 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %574) #11
          to label %576 unwind label %569

576:                                              ; preds = %571
  %577 = icmp eq i32 %572, 0
  br i1 %577, label %.loopexit, label %578

578:                                              ; preds = %576
  %579 = getelementptr inbounds %class.aiColor4t, ptr %575, i64 %573
  br label %580

580:                                              ; preds = %580, %578
  %581 = phi ptr [ %575, %578 ], [ %582, %580 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %581) #10
  %582 = getelementptr inbounds i8, ptr %581, i64 16
  %583 = icmp eq ptr %582, %579
  br i1 %583, label %.loopexit, label %580

.loopexit:                                        ; preds = %580, %576
  %584 = zext i32 %.0384612 to i64
  %585 = getelementptr inbounds [8 x ptr], ptr %542, i64 0, i64 %584
  store ptr %575, ptr %585, align 8, !tbaa !9
  %586 = add i32 %.0384612, 1
  %587 = call noundef zeroext i1 @_ZNK6aiMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1320) %438, i32 noundef %586)
  br i1 %587, label %571, label %._crit_edge614, !llvm.loop !66

._crit_edge635:                                   ; preds = %._crit_edge627, %._crit_edge614
  %588 = add nuw i64 %.0389636, 1
  %exitcond735.not = icmp eq i64 %588, %2
  br i1 %exitcond735.not, label %._crit_edge639, label %.lr.ph638, !llvm.loop !67

589:                                              ; preds = %.lr.ph634, %._crit_edge627
  %590 = phi i32 [ %567, %.lr.ph634 ], [ %596, %._crit_edge627 ]
  %indvars.iv732 = phi i64 [ 0, %.lr.ph634 ], [ %indvars.iv.next733, %._crit_edge627 ]
  %.0379632 = phi i32 [ 0, %.lr.ph634 ], [ %.1380.lcssa, %._crit_edge627 ]
  %.0381631 = phi i32 [ 0, %.lr.ph634 ], [ %.1382.lcssa, %._crit_edge627 ]
  %591 = load ptr, ptr %568, align 8, !tbaa !23
  %592 = getelementptr inbounds %struct.aiFace, ptr %591, i64 %indvars.iv732
  %593 = load i32, ptr %592, align 8, !tbaa !24
  %.not663 = icmp eq i32 %593, 0
  br i1 %.not663, label %._crit_edge627, label %.lr.ph626

.lr.ph626:                                        ; preds = %589
  %594 = getelementptr inbounds i8, ptr %592, i64 8
  %595 = trunc nuw i64 %indvars.iv732 to i32
  br label %599

._crit_edge627.loopexit:                          ; preds = %912
  %.pre744 = load i32, ptr %442, align 8, !tbaa !19
  br label %._crit_edge627

._crit_edge627:                                   ; preds = %._crit_edge627.loopexit, %589
  %596 = phi i32 [ %590, %589 ], [ %.pre744, %._crit_edge627.loopexit ]
  %.1382.lcssa = phi i32 [ %.0381631, %589 ], [ %913, %._crit_edge627.loopexit ]
  %.1380.lcssa = phi i32 [ %.0379632, %589 ], [ %601, %._crit_edge627.loopexit ]
  %indvars.iv.next733 = add nuw nsw i64 %indvars.iv732, 1
  %597 = zext i32 %596 to i64
  %598 = icmp ult i64 %indvars.iv.next733, %597
  br i1 %598, label %589, label %._crit_edge635, !llvm.loop !68

599:                                              ; preds = %.lr.ph626, %912
  %indvars.iv729 = phi i64 [ 0, %.lr.ph626 ], [ %indvars.iv.next730, %912 ]
  %.1380623 = phi i32 [ %.0379632, %.lr.ph626 ], [ %601, %912 ]
  %.1382622 = phi i32 [ %.0381631, %.lr.ph626 ], [ %913, %912 ]
  %600 = load ptr, ptr %473, align 8, !tbaa !23
  %601 = add i32 %.1380623, 1
  %602 = zext i32 %.1380623 to i64
  %603 = getelementptr inbounds %struct.aiFace, ptr %600, i64 %602
  store i32 4, ptr %603, align 8, !tbaa !24
  %604 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znam(i64 noundef 16) #11
          to label %605 unwind label %729

605:                                              ; preds = %599
  %606 = getelementptr inbounds i8, ptr %603, i64 8
  store ptr %604, ptr %606, align 8, !tbaa !26
  %607 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0389636) #10
  %608 = load i32, ptr %607, align 4, !tbaa !41
  %609 = add i32 %608, %595
  %610 = zext i32 %609 to i64
  %611 = call noundef nonnull align 4 dereferenceable(272) ptr @_ZNSt6vectorIN6Assimp6VertexESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %610) #10
  %612 = add i32 %.1382622, 1
  %613 = load ptr, ptr %606, align 8, !tbaa !26
  store i32 %.1382622, ptr %613, align 4, !tbaa !5
  invoke void @_ZNK6Assimp6Vertex8SortBackEP6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %611, ptr noundef nonnull %439, i32 noundef %.1382622)
          to label %614 unwind label %729

614:                                              ; preds = %605
  %615 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0389636) #10
  %616 = getelementptr inbounds i8, ptr %615, i64 4
  %617 = load i32, ptr %616, align 4, !tbaa !31
  %618 = load ptr, ptr %594, align 8, !tbaa !26
  %619 = getelementptr inbounds i32, ptr %618, i64 %indvars.iv729
  %620 = load i32, ptr %619, align 4, !tbaa !5
  %621 = add i32 %620, %617
  %622 = zext i32 %621 to i64
  %623 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %622) #10
  %624 = load i32, ptr %623, align 4, !tbaa !5
  store i32 %624, ptr %6, align 4, !tbaa !5
  %625 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0389636) #10
  %626 = getelementptr inbounds i8, ptr %625, i64 4
  %627 = load i32, ptr %626, align 4, !tbaa !31
  %628 = load ptr, ptr %594, align 8, !tbaa !26
  %629 = load i32, ptr %592, align 8, !tbaa !24
  %630 = add i32 %629, -1
  %631 = zext i32 %630 to i64
  %632 = icmp eq i64 %indvars.iv729, %631
  %indvars.iv.next730 = add nuw nsw i64 %indvars.iv729, 1
  %633 = and i64 %indvars.iv.next730, 4294967295
  %634 = select i1 %632, i64 0, i64 %633
  %635 = getelementptr inbounds i32, ptr %628, i64 %634
  %636 = load i32, ptr %635, align 4, !tbaa !5
  %637 = add i32 %636, %627
  %638 = zext i32 %637 to i64
  %639 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %638) #10
  %640 = load i32, ptr %639, align 4, !tbaa !5
  store i32 %640, ptr %7, align 4, !tbaa !5
  %641 = load i32, ptr %6, align 4, !tbaa !5
  %642 = icmp ult i32 %641, %640
  br i1 %642, label %643, label %644

643:                                              ; preds = %614
  call void @_ZSt4swapIjENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %7) #10
  br label %645

644:                                              ; preds = %614
  call void @_Z7mydummyv()
  br label %645

645:                                              ; preds = %644, %643
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #10
  %646 = load i32, ptr %6, align 4, !tbaa !5
  %647 = zext i32 %646 to i64
  %648 = load i32, ptr %7, align 4, !tbaa !5
  %649 = zext i32 %648 to i64
  %650 = shl nuw i64 %649, 32
  %651 = or disjoint i64 %650, %647
  store i64 %651, ptr %40, align 8, !tbaa !33
  %652 = invoke noundef nonnull align 4 dereferenceable(548) ptr @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEEixEOm(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %653 unwind label %731

653:                                              ; preds = %645
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #10
  %654 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0389636) #10
  %655 = getelementptr inbounds i8, ptr %654, i64 4
  %656 = load i32, ptr %655, align 4, !tbaa !31
  %657 = load ptr, ptr %594, align 8, !tbaa !26
  %658 = getelementptr inbounds i32, ptr %657, i64 %indvars.iv729
  %659 = load i32, ptr %658, align 4, !tbaa !5
  %660 = add i32 %659, %656
  %661 = zext i32 %660 to i64
  %662 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %661) #10
  %663 = load i32, ptr %662, align 4, !tbaa !5
  store i32 %663, ptr %6, align 4, !tbaa !5
  %664 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0389636) #10
  %665 = getelementptr inbounds i8, ptr %664, i64 4
  %666 = load i32, ptr %665, align 4, !tbaa !31
  %667 = load ptr, ptr %594, align 8, !tbaa !26
  %.not421 = icmp eq i64 %indvars.iv729, 0
  %668 = trunc nuw i64 %indvars.iv729 to i32
  br i1 %.not421, label %669, label %671

669:                                              ; preds = %653
  %670 = load i32, ptr %592, align 8, !tbaa !24
  br label %671

671:                                              ; preds = %653, %669
  %.in = phi i32 [ %670, %669 ], [ %668, %653 ]
  %672 = add i32 %.in, -1
  %673 = zext i32 %672 to i64
  %674 = getelementptr inbounds i32, ptr %667, i64 %673
  %675 = load i32, ptr %674, align 4, !tbaa !5
  %676 = add i32 %675, %666
  %677 = zext i32 %676 to i64
  %678 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %677) #10
  %679 = load i32, ptr %678, align 4, !tbaa !5
  store i32 %679, ptr %7, align 4, !tbaa !5
  %680 = load i32, ptr %6, align 4, !tbaa !5
  %681 = icmp ult i32 %680, %679
  br i1 %681, label %682, label %683

682:                                              ; preds = %671
  call void @_ZSt4swapIjENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %7) #10
  br label %684

683:                                              ; preds = %671
  call void @_Z7mydummyv()
  br label %684

684:                                              ; preds = %683, %682
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #10
  %685 = load i32, ptr %6, align 4, !tbaa !5
  %686 = zext i32 %685 to i64
  %687 = load i32, ptr %7, align 4, !tbaa !5
  %688 = zext i32 %687 to i64
  %689 = shl nuw i64 %688, 32
  %690 = or disjoint i64 %689, %686
  store i64 %690, ptr %41, align 8, !tbaa !33
  %691 = invoke noundef nonnull align 4 dereferenceable(548) ptr @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEEixEOm(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %692 unwind label %733

692:                                              ; preds = %684
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #10
  %693 = load ptr, ptr %606, align 8, !tbaa !26
  %694 = getelementptr inbounds i8, ptr %693, i64 12
  store i32 %612, ptr %694, align 4, !tbaa !5
  invoke void @_ZNK6Assimp6Vertex8SortBackEP6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %652, ptr noundef nonnull %439, i32 noundef %612)
          to label %695 unwind label %735

695:                                              ; preds = %692
  %696 = add i32 %.1382622, 2
  %697 = add i32 %.1382622, 3
  %698 = load ptr, ptr %606, align 8, !tbaa !26
  %699 = getelementptr inbounds i8, ptr %698, i64 4
  store i32 %696, ptr %699, align 4, !tbaa !5
  invoke void @_ZNK6Assimp6Vertex8SortBackEP6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %691, ptr noundef nonnull %439, i32 noundef %696)
          to label %700 unwind label %735

700:                                              ; preds = %695
  %701 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0389636) #10
  %702 = getelementptr inbounds i8, ptr %701, i64 4
  %703 = load i32, ptr %702, align 4, !tbaa !31
  %704 = load ptr, ptr %594, align 8, !tbaa !26
  %705 = getelementptr inbounds i32, ptr %704, i64 %indvars.iv729
  %706 = load i32, ptr %705, align 4, !tbaa !5
  %707 = add i32 %706, %703
  %708 = zext i32 %707 to i64
  %709 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %708) #10
  %710 = load i32, ptr %709, align 4, !tbaa !5
  %711 = zext i32 %710 to i64
  %712 = call noundef nonnull align 4 dereferenceable(276) ptr @_ZNSt6vectorISt4pairIbN6Assimp6VertexEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %711) #10
  %713 = load i8, ptr %712, align 4, !tbaa !69, !range !71, !noundef !72
  %714 = trunc nuw i8 %713 to i1
  br i1 %714, label %908, label %715

715:                                              ; preds = %700
  store i8 1, ptr %712, align 4, !tbaa !69
  %716 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %711) #10
  %717 = load i32, ptr %716, align 4, !tbaa !5
  %718 = zext i32 %717 to i64
  %719 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %718) #10
  %720 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %711) #10
  %721 = load i32, ptr %720, align 4, !tbaa !5
  %722 = icmp ult i32 %721, 3
  br i1 %722, label %723, label %739

723:                                              ; preds = %715
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %42) #10
  %724 = load ptr, ptr %594, align 8, !tbaa !26
  %725 = getelementptr inbounds i32, ptr %724, i64 %indvars.iv729
  %726 = load i32, ptr %725, align 4, !tbaa !5
  invoke void @_ZN6Assimp6VertexC2EPK6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %42, ptr noundef nonnull %438, i32 noundef %726)
          to label %727 unwind label %737

727:                                              ; preds = %723
  %728 = getelementptr inbounds i8, ptr %712, i64 4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(272) %728, ptr noundef nonnull align 4 dereferenceable(272) %42, i64 272, i1 false), !tbaa.struct !38
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %42) #10
  br label %908

729:                                              ; preds = %605, %599
  %730 = landingpad { ptr, i32 }
          cleanup
  br label %919

731:                                              ; preds = %645
  %732 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #10
  br label %919

733:                                              ; preds = %684
  %734 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #10
  br label %919

735:                                              ; preds = %695, %692
  %736 = landingpad { ptr, i32 }
          cleanup
  br label %919

737:                                              ; preds = %723
  %738 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %42) #10
  br label %919

739:                                              ; preds = %715
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %43) #10
  call void @_ZN6Assimp6VertexC2Ev(ptr noundef nonnull align 4 dereferenceable(272) %43) #10
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %44) #10
  call void @_ZN6Assimp6VertexC2Ev(ptr noundef nonnull align 4 dereferenceable(272) %44) #10
  %wide.trip.count = zext i32 %721 to i64
  br label %747

740:                                              ; preds = %.critedge474
  %741 = uitofp i32 %721 to float
  %742 = fmul float %741, %741
  %743 = fdiv float 1.000000e+00, %742
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %48) #10
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %49) #10
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %50) #10
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %51) #10
  %744 = load ptr, ptr %594, align 8, !tbaa !26
  %745 = getelementptr inbounds i32, ptr %744, i64 %indvars.iv729
  %746 = load i32, ptr %745, align 4, !tbaa !5
  invoke void @_ZN6Assimp6VertexC2EPK6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %51, ptr noundef nonnull %438, i32 noundef %746)
          to label %890 unwind label %899

747:                                              ; preds = %739, %.critedge474
  %indvars.iv725 = phi i64 [ 0, %739 ], [ %indvars.iv.next726, %.critedge474 ]
  %748 = getelementptr inbounds i32, ptr %719, i64 %indvars.iv725
  %749 = load i32, ptr %748, align 4, !tbaa !5
  %750 = load i32, ptr %12, align 4, !tbaa !5
  %751 = icmp ult i32 %749, %750
  br i1 %751, label %753, label %752

752:                                              ; preds = %747
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 509)
          to label %._crit_edge742 unwind label %763

._crit_edge742:                                   ; preds = %752
  %.pre743 = load i32, ptr %748, align 4, !tbaa !5
  br label %753

753:                                              ; preds = %._crit_edge742, %747
  %754 = phi i32 [ %.pre743, %._crit_edge742 ], [ %749, %747 ]
  %755 = zext i32 %754 to i64
  %756 = call noundef nonnull align 4 dereferenceable(272) ptr @_ZNSt6vectorIN6Assimp6VertexESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %755) #10
  %757 = invoke noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexpLERKS0_(ptr noundef nonnull align 4 dereferenceable(272) %43, ptr noundef nonnull align 4 dereferenceable(272) %756)
          to label %758 unwind label %763

758:                                              ; preds = %753
  %759 = load i32, ptr %748, align 4, !tbaa !5
  %760 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 0) #10
  %761 = load i32, ptr %760, align 4, !tbaa !41
  %762 = icmp ult i32 %759, %761
  br i1 %762, label %776, label %.lr.ph617

763:                                              ; preds = %753, %752
  %764 = landingpad { ptr, i32 }
          cleanup
  br label %907

.lr.ph617:                                        ; preds = %758, %774
  %.0365616 = phi i64 [ %775, %774 ], [ 1, %758 ]
  %765 = icmp eq i64 %.0365616, %2
  br i1 %765, label %771, label %766

766:                                              ; preds = %.lr.ph617
  %767 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0365616) #10
  %768 = load i32, ptr %767, align 4, !tbaa !41
  %769 = load i32, ptr %748, align 4, !tbaa !5
  %770 = icmp ugt i32 %768, %769
  br i1 %770, label %771, label %774

771:                                              ; preds = %766, %.lr.ph617
  %.0365616.lcssa = phi i64 [ %.0365616, %766 ], [ %2, %.lr.ph617 ]
  %772 = add i64 %.0365616.lcssa, -1
  %773 = getelementptr inbounds ptr, ptr %1, i64 %772
  br label %776

774:                                              ; preds = %766
  %775 = add i64 %.0365616, 1
  %.not425 = icmp ugt i64 %775, %2
  br i1 %.not425, label %.critedge474, label %.lr.ph617, !llvm.loop !73

776:                                              ; preds = %758, %771
  %.0367.in = phi ptr [ %773, %771 ], [ %1, %758 ]
  %.1366 = phi i64 [ %772, %771 ], [ 0, %758 ]
  %.0367 = load ptr, ptr %.0367.in, align 8, !tbaa !9
  %777 = icmp eq ptr %.0367, null
  br i1 %777, label %.critedge474, label %778

778:                                              ; preds = %776
  %779 = load i32, ptr %748, align 4, !tbaa !5
  %780 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.1366) #10
  %781 = load i32, ptr %780, align 4, !tbaa !41
  %782 = sub i32 %779, %781
  %783 = getelementptr inbounds i8, ptr %.0367, i64 8
  %784 = load i32, ptr %783, align 8, !tbaa !19
  %785 = icmp ult i32 %782, %784
  br i1 %785, label %787, label %786

786:                                              ; preds = %778
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 531)
          to label %787 unwind label %798

787:                                              ; preds = %786, %778
  %788 = getelementptr inbounds i8, ptr %.0367, i64 208
  %789 = load ptr, ptr %788, align 8, !tbaa !23
  %790 = load i32, ptr %748, align 4, !tbaa !5
  %791 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.1366) #10
  %792 = load i32, ptr %791, align 4, !tbaa !41
  %793 = sub i32 %790, %792
  %794 = zext i32 %793 to i64
  %795 = getelementptr inbounds %struct.aiFace, ptr %789, i64 %794
  %796 = load i32, ptr %795, align 8, !tbaa !24
  %.not664 = icmp eq i32 %796, 0
  br i1 %.not664, label %.critedge472, label %.lr.ph620

.lr.ph620:                                        ; preds = %787
  %797 = getelementptr inbounds i8, ptr %795, i64 8
  br label %800

798:                                              ; preds = %786
  %799 = landingpad { ptr, i32 }
          cleanup
  br label %907

800:                                              ; preds = %.lr.ph620, %881
  %indvars.iv722 = phi i64 [ 0, %.lr.ph620 ], [ %indvars.iv.next723, %881 ]
  %801 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.1366) #10
  %802 = getelementptr inbounds i8, ptr %801, i64 4
  %803 = load i32, ptr %802, align 4, !tbaa !31
  %804 = load ptr, ptr %797, align 8, !tbaa !26
  %805 = getelementptr inbounds i32, ptr %804, i64 %indvars.iv722
  %806 = load i32, ptr %805, align 4, !tbaa !5
  %807 = add i32 %806, %803
  %808 = zext i32 %807 to i64
  %809 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %808) #10
  %810 = load i32, ptr %809, align 4, !tbaa !5
  %811 = icmp eq i32 %810, %710
  br i1 %811, label %812, label %881

812:                                              ; preds = %800
  %813 = trunc nuw i64 %indvars.iv722 to i32
  store i32 %710, ptr %6, align 4, !tbaa !5
  %814 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.1366) #10
  %815 = getelementptr inbounds i8, ptr %814, i64 4
  %816 = load i32, ptr %815, align 4, !tbaa !31
  %817 = load ptr, ptr %797, align 8, !tbaa !26
  %.not426 = icmp eq i64 %indvars.iv722, 0
  br i1 %.not426, label %818, label %820

818:                                              ; preds = %812
  %819 = load i32, ptr %795, align 8, !tbaa !24
  br label %820

820:                                              ; preds = %812, %818
  %.in427 = phi i32 [ %819, %818 ], [ %813, %812 ]
  %821 = add i32 %.in427, -1
  %822 = zext i32 %821 to i64
  %823 = getelementptr inbounds i32, ptr %817, i64 %822
  %824 = load i32, ptr %823, align 4, !tbaa !5
  %825 = add i32 %824, %816
  %826 = zext i32 %825 to i64
  %827 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %826) #10
  %828 = load i32, ptr %827, align 4, !tbaa !5
  store i32 %828, ptr %7, align 4, !tbaa !5
  %829 = load i32, ptr %6, align 4, !tbaa !5
  %830 = icmp ult i32 %829, %828
  br i1 %830, label %831, label %832

831:                                              ; preds = %820
  call void @_ZSt4swapIjENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %7) #10
  br label %833

832:                                              ; preds = %820
  call void @_Z7mydummyv()
  br label %833

833:                                              ; preds = %832, %831
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #10
  %834 = load i32, ptr %6, align 4, !tbaa !5
  %835 = zext i32 %834 to i64
  %836 = load i32, ptr %7, align 4, !tbaa !5
  %837 = zext i32 %836 to i64
  %838 = shl nuw i64 %837, 32
  %839 = or disjoint i64 %838, %835
  store i64 %839, ptr %45, align 8, !tbaa !33
  %840 = invoke noundef nonnull align 4 dereferenceable(548) ptr @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEEixEOm(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %841 unwind label %875

841:                                              ; preds = %833
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #10
  store i32 %710, ptr %6, align 4, !tbaa !5
  %842 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.1366) #10
  %843 = getelementptr inbounds i8, ptr %842, i64 4
  %844 = load i32, ptr %843, align 4, !tbaa !31
  %845 = load ptr, ptr %797, align 8, !tbaa !26
  %846 = load i32, ptr %795, align 8, !tbaa !24
  %847 = add i32 %846, -1
  %848 = icmp eq i32 %847, %813
  %849 = add nuw nsw i64 %indvars.iv722, 1
  %850 = select i1 %848, i64 0, i64 %849
  %851 = getelementptr inbounds i32, ptr %845, i64 %850
  %852 = load i32, ptr %851, align 4, !tbaa !5
  %853 = add i32 %852, %844
  %854 = zext i32 %853 to i64
  %855 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %854) #10
  %856 = load i32, ptr %855, align 4, !tbaa !5
  store i32 %856, ptr %7, align 4, !tbaa !5
  %857 = load i32, ptr %6, align 4, !tbaa !5
  %858 = icmp ult i32 %857, %856
  br i1 %858, label %859, label %860

859:                                              ; preds = %841
  call void @_ZSt4swapIjENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %7) #10
  br label %861

860:                                              ; preds = %841
  call void @_Z7mydummyv()
  br label %861

861:                                              ; preds = %860, %859
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #10
  %862 = load i32, ptr %6, align 4, !tbaa !5
  %863 = zext i32 %862 to i64
  %864 = load i32, ptr %7, align 4, !tbaa !5
  %865 = zext i32 %864 to i64
  %866 = shl nuw i64 %865, 32
  %867 = or disjoint i64 %866, %863
  store i64 %867, ptr %46, align 8, !tbaa !33
  %868 = invoke noundef nonnull align 4 dereferenceable(548) ptr @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEEixEOm(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %869 unwind label %877

869:                                              ; preds = %861
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #10
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %47) #10
  %870 = getelementptr inbounds i8, ptr %840, i64 272
  %871 = getelementptr inbounds i8, ptr %868, i64 272
  invoke void @_ZN6AssimpplERKNS_6VertexES2_(ptr dead_on_unwind nonnull writable sret(%"struct.Assimp::Vertex") align 4 %47, ptr noundef nonnull align 4 dereferenceable(272) %870, ptr noundef nonnull align 4 dereferenceable(272) %871)
          to label %872 unwind label %879

872:                                              ; preds = %869
  %873 = invoke noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexpLERKS0_(ptr noundef nonnull align 4 dereferenceable(272) %44, ptr noundef nonnull align 4 dereferenceable(272) %47)
          to label %874 unwind label %879

874:                                              ; preds = %872
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %47) #10
  br label %.critedge474

875:                                              ; preds = %833
  %876 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #10
  br label %907

877:                                              ; preds = %861
  %878 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #10
  br label %907

879:                                              ; preds = %872, %869
  %880 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %47) #10
  br label %907

881:                                              ; preds = %800
  %indvars.iv.next723 = add nuw nsw i64 %indvars.iv722, 1
  %882 = load i32, ptr %795, align 8, !tbaa !24
  %883 = zext i32 %882 to i64
  %884 = icmp ult i64 %indvars.iv.next723, %883
  br i1 %884, label %800, label %.critedge472, !llvm.loop !74

.critedge472:                                     ; preds = %881, %787
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 560)
          to label %885 unwind label %888

885:                                              ; preds = %.critedge472
  %886 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %887 unwind label %888

887:                                              ; preds = %885
  invoke void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12) %886, ptr noundef nonnull @.str.20)
          to label %.critedge474 unwind label %888

888:                                              ; preds = %887, %885, %.critedge472
  %889 = landingpad { ptr, i32 }
          cleanup
  br label %907

.critedge474:                                     ; preds = %774, %874, %887, %776
  %indvars.iv.next726 = add nuw nsw i64 %indvars.iv725, 1
  %exitcond728.not = icmp eq i64 %indvars.iv.next726, %wide.trip.count
  br i1 %exitcond728.not, label %740, label %747, !llvm.loop !75

890:                                              ; preds = %740
  %891 = fadd float %741, -3.000000e+00
  %892 = fdiv float %891, %741
  invoke void @_ZN6AssimpmlERKNS_6VertexEf(ptr dead_on_unwind nonnull writable sret(%"struct.Assimp::Vertex") align 4 %50, ptr noundef nonnull align 4 dereferenceable(272) %51, float noundef %892)
          to label %893 unwind label %899

893:                                              ; preds = %890
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %52) #10
  invoke void @_ZN6AssimpmlERKNS_6VertexEf(ptr dead_on_unwind nonnull writable sret(%"struct.Assimp::Vertex") align 4 %52, ptr noundef nonnull align 4 dereferenceable(272) %44, float noundef %743)
          to label %894 unwind label %901

894:                                              ; preds = %893
  invoke void @_ZN6AssimpplERKNS_6VertexES2_(ptr dead_on_unwind nonnull writable sret(%"struct.Assimp::Vertex") align 4 %49, ptr noundef nonnull align 4 dereferenceable(272) %50, ptr noundef nonnull align 4 dereferenceable(272) %52)
          to label %895 unwind label %901

895:                                              ; preds = %894
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %53) #10
  invoke void @_ZN6AssimpmlERKNS_6VertexEf(ptr dead_on_unwind nonnull writable sret(%"struct.Assimp::Vertex") align 4 %53, ptr noundef nonnull align 4 dereferenceable(272) %43, float noundef %743)
          to label %896 unwind label %903

896:                                              ; preds = %895
  invoke void @_ZN6AssimpplERKNS_6VertexES2_(ptr dead_on_unwind nonnull writable sret(%"struct.Assimp::Vertex") align 4 %48, ptr noundef nonnull align 4 dereferenceable(272) %49, ptr noundef nonnull align 4 dereferenceable(272) %53)
          to label %897 unwind label %903

897:                                              ; preds = %896
  %898 = getelementptr inbounds i8, ptr %712, i64 4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(272) %898, ptr noundef nonnull align 4 dereferenceable(272) %48, i64 272, i1 false), !tbaa.struct !38
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %53) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %52) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %51) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %50) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %49) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %48) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %44) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %43) #10
  br label %908

899:                                              ; preds = %890, %740
  %900 = landingpad { ptr, i32 }
          cleanup
  br label %906

901:                                              ; preds = %894, %893
  %902 = landingpad { ptr, i32 }
          cleanup
  br label %905

903:                                              ; preds = %896, %895
  %904 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %53) #10
  br label %905

905:                                              ; preds = %903, %901
  %.pn422 = phi { ptr, i32 } [ %904, %903 ], [ %902, %901 ]
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %52) #10
  br label %906

906:                                              ; preds = %905, %899
  %.pn422.pn = phi { ptr, i32 } [ %.pn422, %905 ], [ %900, %899 ]
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %51) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %50) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %49) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %48) #10
  br label %907

907:                                              ; preds = %763, %888, %877, %879, %875, %798, %906
  %.pn431.pn.pn.pn = phi { ptr, i32 } [ %.pn422.pn, %906 ], [ %764, %763 ], [ %799, %798 ], [ %889, %888 ], [ %876, %875 ], [ %880, %879 ], [ %878, %877 ]
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %44) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %43) #10
  br label %919

908:                                              ; preds = %727, %897, %700
  %909 = getelementptr inbounds i8, ptr %712, i64 4
  %910 = load ptr, ptr %606, align 8, !tbaa !26
  %911 = getelementptr inbounds i8, ptr %910, i64 8
  store i32 %697, ptr %911, align 4, !tbaa !5
  invoke void @_ZNK6Assimp6Vertex8SortBackEP6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272) %909, ptr noundef nonnull %439, i32 noundef %697)
          to label %912 unwind label %917

912:                                              ; preds = %908
  %913 = add i32 %.1382622, 4
  %914 = load i32, ptr %592, align 8, !tbaa !24
  %915 = zext i32 %914 to i64
  %916 = icmp ult i64 %indvars.iv.next730, %915
  br i1 %916, label %599, label %._crit_edge627.loopexit, !llvm.loop !76

917:                                              ; preds = %908
  %918 = landingpad { ptr, i32 }
          cleanup
  br label %919

919:                                              ; preds = %729, %733, %735, %737, %907, %917, %731, %569, %543, %453
  %.pn443 = phi { ptr, i32 } [ %544, %543 ], [ %570, %569 ], [ %454, %453 ], [ %730, %729 ], [ %732, %731 ], [ %736, %735 ], [ %734, %733 ], [ %918, %917 ], [ %738, %737 ], [ %.pn431.pn.pn.pn, %907 ]
  call void @_ZNSt6vectorISt4pairIbN6Assimp6VertexEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #10
  br label %924

920:                                              ; preds = %._crit_edge639
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %54) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %55) #10
  call void @_ZNSaIP6aiMeshEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #10
  invoke void @_ZNSt6vectorIP6aiMeshSaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %2, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %921 unwind label %930

921:                                              ; preds = %920
  call void @_ZNSt15__new_allocatorIP6aiMeshED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #10
  %922 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6aiMeshSaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  %923 = add i32 %4, -1
  invoke void @_ZN22CatmullClarkSubdivider15InternSubdivideEPKPK6aiMeshmPPS0_j(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %3, i64 noundef %2, ptr noundef nonnull %922, i32 noundef %923)
          to label %.preheader unwind label %932

.preheader:                                       ; preds = %921
  br i1 %.not643, label %._crit_edge642, label %.lr.ph641

._crit_edge642:                                   ; preds = %938, %.preheader
  call void @_ZNSt6vectorIP6aiMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %54) #10
  br label %943

924:                                              ; preds = %919, %435
  %.pn443.pn = phi { ptr, i32 } [ %.pn443, %919 ], [ %436, %435 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %35) #10
  br label %925

925:                                              ; preds = %.split, %.split.us, %.split600.us, %924
  %.pn446.pn = phi { ptr, i32 } [ %.pn443.pn, %924 ], [ %414, %.split600.us ], [ %433, %.split ], [ %413, %.split.us ]
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  br label %926

926:                                              ; preds = %925, %276
  %.pn446.pn.pn = phi { ptr, i32 } [ %.pn446.pn, %925 ], [ %277, %276 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #10
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  br label %927

927:                                              ; preds = %926, %274
  %.pn446.pn.pn.pn = phi { ptr, i32 } [ %.pn446.pn.pn, %926 ], [ %275, %274 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #10
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #10
  br label %928

928:                                              ; preds = %927, %272
  %.pn446.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn446.pn.pn.pn, %927 ], [ %273, %272 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #10
  br label %929

929:                                              ; preds = %203, %209, %210, %928, %271
  %.pn457.pn = phi { ptr, i32 } [ %.pn453, %271 ], [ %.pn446.pn.pn.pn.pn, %928 ], [ %211, %210 ], [ %.pn455, %209 ], [ %204, %203 ]
  call void @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %18) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %18) #10
  br label %945

930:                                              ; preds = %920
  %931 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIP6aiMeshED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #10
  br label %942

932:                                              ; preds = %921
  %933 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIP6aiMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  br label %942

.lr.ph641:                                        ; preds = %.preheader, %938
  %.0640 = phi i64 [ %941, %938 ], [ 0, %.preheader ]
  %934 = getelementptr inbounds ptr, ptr %3, i64 %.0640
  %935 = load ptr, ptr %934, align 8, !tbaa !9
  %936 = icmp eq ptr %935, null
  br i1 %936, label %938, label %937

937:                                              ; preds = %.lr.ph641
  call void @_ZN6aiMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %935) #10
  call void @_ZdlPvm(ptr noundef nonnull %935, i64 noundef 1320) #12
  br label %938

938:                                              ; preds = %937, %.lr.ph641
  %939 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6aiMeshSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %.0640) #10
  %940 = load ptr, ptr %939, align 8, !tbaa !9
  store ptr %940, ptr %934, align 8, !tbaa !9
  %941 = add nuw i64 %.0640, 1
  %exitcond736.not = icmp eq i64 %941, %2
  br i1 %exitcond736.not, label %._crit_edge642, label %.lr.ph641, !llvm.loop !77

942:                                              ; preds = %932, %930
  %.pn = phi { ptr, i32 } [ %933, %932 ], [ %931, %930 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %54) #10
  br label %945

943:                                              ; preds = %._crit_edge642, %._crit_edge639
  call void @_ZNSt6vectorIN6Assimp6VertexESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #10
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #10
  call void @_ZN6Assimp11SpatialSortD2Ev(ptr noundef nonnull align 8 dereferenceable(49) %9) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %9) #10
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #10
  br label %944

944:                                              ; preds = %59, %943
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10
  ret void

945:                                              ; preds = %124, %133, %942, %929
  %.pn460.pn = phi { ptr, i32 } [ %.pn457.pn, %929 ], [ %.pn, %942 ], [ %125, %124 ], [ %134, %133 ]
  call void @_ZNSt6vectorIN6Assimp6VertexESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #10
  br label %946

946:                                              ; preds = %945, %98
  %.pn460.pn.pn = phi { ptr, i32 } [ %.pn460.pn, %945 ], [ %99, %98 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #10
  br label %947

947:                                              ; preds = %96, %946, %94, %84
  %.pn465 = phi { ptr, i32 } [ %85, %84 ], [ %95, %94 ], [ %.pn460.pn.pn, %946 ], [ %97, %96 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #10
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  br label %948

948:                                              ; preds = %947, %65
  %.pn465.pn = phi { ptr, i32 } [ %.pn465, %947 ], [ %66, %65 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #10
  call void @_ZN6Assimp11SpatialSortD2Ev(ptr noundef nonnull align 8 dereferenceable(49) %9) #10
  br label %949

949:                                              ; preds = %948, %63
  %.pn465.pn.pn = phi { ptr, i32 } [ %.pn465.pn, %948 ], [ %64, %63 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %9) #10
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10
  resume { ptr, i32 } %.pn465.pn.pn
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6aiMeshSaIS1_EE5frontEv(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 @_ZNSt6vectorIP6aiMeshSaIS1_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 nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

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

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

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

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

declare void @_ZN6Assimp11SpatialSortC1Ev(ptr noundef nonnull align 8 dereferenceable(49)) unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairIjjESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

declare void @_ZN6Assimp11SpatialSort6AppendEPK10aiVector3tIfEjjb(ptr noundef nonnull align 8 dereferenceable(49), ptr noundef, i32 noundef, i32 noundef, i1 noundef zeroext) local_unnamed_addr #3

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

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

declare void @_ZN6Assimp11SpatialSort8FinalizeEv(ptr noundef nonnull align 8 dereferenceable(49)) local_unnamed_addr #3

declare noundef i32 @_ZNK6Assimp11SpatialSort20GenerateMappingTableERSt6vectorIjSaIjEEf(ptr noundef nonnull align 8 dereferenceable(49), ptr noundef nonnull align 8 dereferenceable(24), float noundef) local_unnamed_addr #3

declare noundef float @_ZN6Assimp22ComputePositionEpsilonEPKPK6aiMeshm(ptr noundef, i64 noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN6Assimp6VertexESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6VertexC2EPK6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272), ptr noundef, i32 noundef) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexpLERKS0_(ptr noundef nonnull align 4 dereferenceable(272), ptr noundef nonnull align 4 dereferenceable(272)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexdVEf(ptr noundef nonnull align 4 dereferenceable(272), float noundef) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(548) ptr @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEEixEOm(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZSt4swapIjENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6AssimpplERKNS_6VertexES2_(ptr dead_on_unwind noalias writable sret(%"struct.Assimp::Vertex") align 4, ptr noundef nonnull align 4 dereferenceable(272), ptr noundef nonnull align 4 dereferenceable(272)) local_unnamed_addr #8

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(272) ptr @_ZN6Assimp6VertexmLEf(ptr noundef nonnull align 4 dereferenceable(272), float noundef) local_unnamed_addr #5 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6Logger12verboseDebugIJRA31_KcRjRA44_S2_jRA10_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 1 dereferenceable(31), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(44), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(10)) local_unnamed_addr #5 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIbN6Assimp6VertexEEC2IbS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS5_S6_EEEbE4typeELb1EEEOS5_OS6_(ptr noundef nonnull align 4 dereferenceable(276), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 4 dereferenceable(272)) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairIbN6Assimp6VertexEESaIS3_EEC2EmRKS3_RKS4_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 4 dereferenceable(276), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6Assimp6Vertex8SortBackEP6aiMeshj(ptr noundef nonnull align 4 dereferenceable(272), ptr noundef, i32 noundef) local_unnamed_addr #5 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6AssimpmlERKNS_6VertexEf(ptr dead_on_unwind noalias writable sret(%"struct.Assimp::Vertex") align 4, ptr noundef nonnull align 4 dereferenceable(272), float noundef) local_unnamed_addr #8

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_mapImN22CatmullClarkSubdivider4EdgeESt4hashImESt8equal_toImESaISt4pairIKmS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #7 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIP6aiMeshSaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorISt4pairIbN6Assimp6VertexEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) 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 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { 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 #6 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #10 = { nounwind }
attributes #11 = { builtin allocsize(0) }
attributes #12 = { builtin 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !10, i64 16}
!12 = !{!"_ZTS6aiMesh", !6, i64 0, !6, i64 4, !6, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !7, i64 48, !7, i64 112, !7, i64 176, !10, i64 208, !6, i64 216, !10, i64 224, !6, i64 232, !13, i64 236, !6, i64 1264, !10, i64 1272, !14, i64 1280, !15, i64 1284, !10, i64 1312}
!13 = !{!"_ZTS8aiString", !6, i64 0, !7, i64 4}
!14 = !{!"_ZTS16aiMorphingMethod", !7, i64 0}
!15 = !{!"_ZTS6aiAABB", !16, i64 0, !16, i64 12}
!16 = !{!"_ZTS10aiVector3tIfE", !17, i64 0, !17, i64 4, !17, i64 8}
!17 = !{!"float", !7, i64 0}
!18 = !{!12, !6, i64 4}
!19 = !{!12, !6, i64 8}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = distinct !{!22, !21}
!23 = !{!12, !10, i64 208}
!24 = !{!25, !6, i64 0}
!25 = !{!"_ZTS6aiFace", !6, i64 0, !10, i64 8}
!26 = !{!25, !10, i64 8}
!27 = distinct !{!27, !21}
!28 = distinct !{!28, !21}
!29 = distinct !{!29, !21}
!30 = distinct !{!30, !21}
!31 = !{!32, !6, i64 4}
!32 = !{!"_ZTSSt4pairIjjE", !6, i64 0, !6, i64 4}
!33 = !{!34, !34, i64 0}
!34 = !{!"long", !7, i64 0}
!35 = !{!36, !6, i64 544}
!36 = !{!"_ZTSN22CatmullClarkSubdivider4EdgeE", !37, i64 0, !37, i64 272, !6, i64 544}
!37 = !{!"_ZTSN6Assimp6VertexE", !16, i64 0, !16, i64 12, !16, i64 24, !16, i64 36, !7, i64 48, !7, i64 144}
!38 = !{i64 0, i64 4, !39, i64 4, i64 4, !39, i64 8, i64 4, !39, i64 12, i64 4, !39, i64 16, i64 4, !39, i64 20, i64 4, !39, i64 24, i64 4, !39, i64 28, i64 4, !39, i64 32, i64 4, !39, i64 36, i64 4, !39, i64 40, i64 4, !39, i64 44, i64 4, !39, i64 48, i64 96, !40, i64 144, i64 128, !40}
!39 = !{!17, !17, i64 0}
!40 = !{!7, !7, i64 0}
!41 = !{!32, !6, i64 0}
!42 = distinct !{!42, !21}
!43 = !{!44, !6, i64 552}
!44 = !{!"_ZTSSt4pairIKmN22CatmullClarkSubdivider4EdgeEE", !34, i64 0, !36, i64 8}
!45 = distinct !{!45, !21}
!46 = distinct !{!46, !21}
!47 = distinct !{!47, !21}
!48 = distinct !{!48, !21}
!49 = distinct !{!49, !21}
!50 = distinct !{!50, !21}
!51 = distinct !{!51, !21}
!52 = distinct !{!52, !21}
!53 = distinct !{!53, !21}
!54 = distinct !{!54, !21}
!55 = distinct !{!55, !21}
!56 = !{!57, !57, i64 0}
!57 = !{!"bool", !7, i64 0}
!58 = distinct !{!58, !21}
!59 = distinct !{!59, !21}
!60 = !{!12, !6, i64 0}
!61 = !{!12, !6, i64 232}
!62 = !{!12, !10, i64 24}
!63 = !{!12, !10, i64 32}
!64 = !{!12, !10, i64 40}
!65 = distinct !{!65, !21}
!66 = distinct !{!66, !21}
!67 = distinct !{!67, !21}
!68 = distinct !{!68, !21}
!69 = !{!70, !57, i64 0}
!70 = !{!"_ZTSSt4pairIbN6Assimp6VertexEE", !57, i64 0, !37, i64 4}
!71 = !{i8 0, i8 2}
!72 = !{}
!73 = distinct !{!73, !21}
!74 = distinct !{!74, !21}
!75 = distinct !{!75, !21}
!76 = distinct !{!76, !21}
!77 = distinct !{!77, !21}


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