; LLVM IR from Overload-Technologies/Overload :: Dependencies/assimp/code/PostProcessing (TextureTransform)

; 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" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::list<Assimp::STransformVecInfo>, std::allocator<std::__cxx11::list<Assimp::STransformVecInfo>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::list<Assimp::STransformVecInfo>, std::allocator<std::__cxx11::list<Assimp::STransformVecInfo>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::list<Assimp::STransformVecInfo>, std::allocator<std::__cxx11::list<Assimp::STransformVecInfo>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::list<Assimp::STransformVecInfo>, std::allocator<std::__cxx11::list<Assimp::STransformVecInfo>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.0" = type { i8 }
%"struct.Assimp::STransformVecInfo" = type { %struct.aiUVTransform, i32, i32, i32, i32, %"class.std::__cxx11::list" }
%struct.aiUVTransform = type { %class.aiVector2t, %class.aiVector2t, float }
%class.aiVector2t = type { float, float }
%"class.std::__cxx11::list" = type { %"class.std::__cxx11::_List_base" }
%"class.std::__cxx11::_List_base" = type { %"struct.std::__cxx11::_List_base<Assimp::TTUpdateInfo, std::allocator<Assimp::TTUpdateInfo>>::_List_impl" }
%"struct.std::__cxx11::_List_base<Assimp::TTUpdateInfo, std::allocator<Assimp::TTUpdateInfo>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"struct.Assimp::TTUpdateInfo" = type { ptr, ptr, i32, i32 }
%"struct.std::_List_iterator" = type { ptr }
%"struct.std::_List_const_iterator.8" = type { ptr }
%class.aiMatrix3x3t = type { float, float, float, float, float, float, float, float, float }
%class.aiVector3t = type { float, float, float }
%struct.aiScene = type { i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, ptr, %struct.aiString, i32, ptr, ptr }
%struct.aiString = type { i32, [1024 x i8] }
%struct.aiMaterial = type { ptr, i32, i32 }
%struct.aiMaterialProperty = type { %struct.aiString, i32, i32, i32, i32, ptr }
%"class.Assimp::TextureTransformStep" = type <{ %"class.Assimp::BaseProcess", i32, [4 x i8] }>
%"class.Assimp::BaseProcess" = type { ptr, ptr, ptr }
%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.aiAABB = type { %class.aiVector3t, %class.aiVector3t }

@.str.9 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [125 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [34 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp20TextureTransformStep21PreProcessUVTransformERNS_17STransformVecInfoE(ptr noundef nonnull align 8 dereferenceable(28), ptr noundef nonnull align 8 dereferenceable(64)) #0 align 2

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

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() #2

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

; Function Attrs: nounwind
declare i32 @snprintf(ptr noundef, i64 noundef, ptr noundef, ...) #3

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp20TextureTransformStep7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(28) %0, ptr noundef %1) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"class.std::vector", align 8
  %6 = alloca %"class.std::allocator.0", align 1
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca %"struct.Assimp::STransformVecInfo", align 8
  %15 = alloca %"struct.Assimp::TTUpdateInfo", align 8
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca %class.aiVector2t, align 4
  %20 = alloca %class.aiVector2t, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca %"struct.std::_List_iterator", align 8
  %28 = alloca %"struct.std::_List_iterator", align 8
  %29 = alloca %"struct.std::_List_iterator", align 8
  %30 = alloca %"struct.std::_List_iterator", align 8
  %31 = alloca [1024 x i8], align 16
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca %"struct.std::_List_iterator", align 8
  %39 = alloca i8, align 1
  %40 = alloca i8, align 1
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca %"struct.std::_List_iterator", align 8
  %44 = alloca %"struct.std::_List_iterator", align 8
  %45 = alloca %"struct.std::_List_iterator", align 8
  %46 = alloca %"struct.std::_List_iterator", align 8
  %47 = alloca %"struct.std::_List_iterator", align 8
  %48 = alloca %"struct.std::_List_iterator", align 8
  %49 = alloca %"struct.std::_List_const_iterator.8", align 8
  %50 = alloca %"struct.std::_List_iterator", align 8
  %51 = alloca %"struct.std::_List_const_iterator.8", align 8
  %52 = alloca %"struct.std::_List_iterator", align 8
  %53 = alloca %"struct.std::_List_iterator", align 8
  %54 = alloca %"struct.std::_List_iterator", align 8
  %55 = alloca %"struct.std::_List_iterator", align 8
  %56 = alloca [8 x i8], align 1
  %57 = alloca i32, align 4
  %58 = alloca %"struct.std::_List_iterator", align 8
  %59 = alloca %"struct.std::_List_iterator", align 8
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca [8 x ptr], align 16
  %65 = alloca i32, align 4
  %66 = alloca %"struct.std::_List_iterator", align 8
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca %"struct.std::_List_iterator", align 8
  %70 = alloca %"struct.std::_List_iterator", align 8
  %71 = alloca ptr, align 8
  %72 = alloca ptr, align 8
  %73 = alloca ptr, align 8
  %74 = alloca ptr, align 8
  %75 = alloca ptr, align 8
  %76 = alloca %class.aiMatrix3x3t, align 4
  %77 = alloca %class.aiMatrix3x3t, align 4
  %78 = alloca %class.aiMatrix3x3t, align 4
  %79 = alloca %class.aiMatrix3x3t, align 4
  %80 = alloca %class.aiMatrix3x3t, align 4
  %81 = alloca %class.aiMatrix3x3t, align 4
  %82 = alloca %class.aiMatrix3x3t, align 4
  %83 = alloca %class.aiMatrix3x3t, align 4
  %84 = alloca %class.aiMatrix3x3t, align 4
  %85 = alloca %class.aiVector3t, align 4
  %86 = alloca { <2 x float>, float }, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %87 = load ptr, ptr %3, align 8
  %88 = call noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
  call void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %88, ptr noundef @.str.10)
  call void @llvm.lifetime.start.p0(i64 24, ptr %5) #13
  %89 = load ptr, ptr %4, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.aiScene, ptr %89, i32 0, i32 2
  %91 = load i32, ptr %90, align 8, !tbaa !9
  %92 = zext i32 %91 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #13
  call void @_ZNSaINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #13
  invoke void @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EEC2EmRKS6_(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %92, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %93 unwind label %101

93:                                               ; preds = %2
  call void @_ZNSt15__new_allocatorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #13
  store i32 0, ptr %9, align 4, !tbaa !13
  br label %94

94:                                               ; preds = %509, %93
  %95 = load i32, ptr %9, align 4, !tbaa !13
  %96 = load ptr, ptr %4, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.aiScene, ptr %96, i32 0, i32 4
  %98 = load i32, ptr %97, align 8, !tbaa !14
  %99 = icmp ult i32 %95, %98
  br i1 %99, label %105, label %100

100:                                              ; preds = %94
  store i32 2, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #13
  br label %512

101:                                              ; preds = %2
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %7, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %8, align 4
  call void @_ZNSt15__new_allocatorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #13
  br label %1160

105:                                              ; preds = %94
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #13
  %106 = load ptr, ptr %4, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.aiScene, ptr %106, i32 0, i32 5
  %108 = load ptr, ptr %107, align 8, !tbaa !15
  %109 = load i32, ptr %9, align 4, !tbaa !13
  %110 = zext i32 %109 to i64
  %111 = getelementptr inbounds ptr, ptr %108, i64 %110
  %112 = load ptr, ptr %111, align 8, !tbaa !5
  store ptr %112, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #13
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %113

113:                                              ; preds = %505, %105
  %114 = load i32, ptr %12, align 4, !tbaa !13
  %115 = load ptr, ptr %11, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.aiMaterial, ptr %115, i32 0, i32 1
  %117 = load i32, ptr %116, align 8, !tbaa !16
  %118 = icmp ult i32 %114, %117
  br i1 %118, label %120, label %119

119:                                              ; preds = %113
  store i32 5, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #13
  br label %508

120:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #13
  %121 = load ptr, ptr %11, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.aiMaterial, ptr %121, i32 0, i32 0
  %123 = load ptr, ptr %122, align 8, !tbaa !18
  %124 = load i32, ptr %12, align 4, !tbaa !13
  %125 = zext i32 %124 to i64
  %126 = getelementptr inbounds ptr, ptr %123, i64 %125
  %127 = load ptr, ptr %126, align 8, !tbaa !5
  store ptr %127, ptr %13, align 8, !tbaa !5
  %128 = load ptr, ptr %13, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.aiMaterialProperty, ptr %128, i32 0, i32 0
  %130 = getelementptr inbounds %struct.aiString, ptr %129, i32 0, i32 1
  %131 = getelementptr inbounds [1024 x i8], ptr %130, i64 0, i64 0
  %132 = call i32 @strcmp(ptr noundef %131, ptr noundef @.str.11) #14
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %501, label %134

134:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 64, ptr %14) #13
  call void @_ZN6Assimp17STransformVecInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(64) %14) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #13
  call void @_ZN6Assimp12TTUpdateInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #13
  %135 = load ptr, ptr %11, align 8, !tbaa !5
  %136 = getelementptr inbounds %"struct.Assimp::TTUpdateInfo", ptr %15, i32 0, i32 1
  store ptr %135, ptr %136, align 8, !tbaa !19
  %137 = load ptr, ptr %13, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.aiMaterialProperty, ptr %137, i32 0, i32 1
  %139 = load i32, ptr %138, align 4, !tbaa !21
  %140 = getelementptr inbounds %"struct.Assimp::TTUpdateInfo", ptr %15, i32 0, i32 2
  store i32 %139, ptr %140, align 8, !tbaa !24
  %141 = load ptr, ptr %13, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.aiMaterialProperty, ptr %141, i32 0, i32 2
  %143 = load i32, ptr %142, align 8, !tbaa !25
  %144 = getelementptr inbounds %"struct.Assimp::TTUpdateInfo", ptr %15, i32 0, i32 3
  store i32 %143, ptr %144, align 4, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #13
  store i32 0, ptr %16, align 4, !tbaa !13
  br label %145

145:                                              ; preds = %288, %134
  %146 = load i32, ptr %16, align 4, !tbaa !13
  %147 = load ptr, ptr %11, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.aiMaterial, ptr %147, i32 0, i32 1
  %149 = load i32, ptr %148, align 8, !tbaa !16
  %150 = icmp ult i32 %146, %149
  br i1 %150, label %152, label %151

151:                                              ; preds = %145
  store i32 8, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #13
  br label %291

152:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #13
  %153 = load ptr, ptr %11, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.aiMaterial, ptr %153, i32 0, i32 0
  %155 = load ptr, ptr %154, align 8, !tbaa !18
  %156 = load i32, ptr %16, align 4, !tbaa !13
  %157 = zext i32 %156 to i64
  %158 = getelementptr inbounds ptr, ptr %155, i64 %157
  %159 = load ptr, ptr %158, align 8, !tbaa !5
  store ptr %159, ptr %17, align 8, !tbaa !5
  %160 = load ptr, ptr %17, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.aiMaterialProperty, ptr %160, i32 0, i32 1
  %162 = load i32, ptr %161, align 4, !tbaa !21
  %163 = load ptr, ptr %13, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.aiMaterialProperty, ptr %163, i32 0, i32 1
  %165 = load i32, ptr %164, align 4, !tbaa !21
  %166 = icmp ne i32 %162, %165
  br i1 %166, label %175, label %167

167:                                              ; preds = %152
  %168 = load ptr, ptr %17, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.aiMaterialProperty, ptr %168, i32 0, i32 2
  %170 = load i32, ptr %169, align 8, !tbaa !25
  %171 = load ptr, ptr %13, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.aiMaterialProperty, ptr %171, i32 0, i32 2
  %173 = load i32, ptr %172, align 8, !tbaa !25
  %174 = icmp ne i32 %170, %173
  br i1 %174, label %175, label %176

175:                                              ; preds = %167, %152
  store i32 10, ptr %10, align 4
  br label %285

176:                                              ; preds = %167
  %177 = load ptr, ptr %17, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.aiMaterialProperty, ptr %177, i32 0, i32 0
  %179 = getelementptr inbounds %struct.aiString, ptr %178, i32 0, i32 1
  %180 = getelementptr inbounds [1024 x i8], ptr %179, i64 0, i64 0
  %181 = call i32 @strcmp(ptr noundef %180, ptr noundef @.str.9) #14
  %182 = icmp ne i32 %181, 0
  br i1 %182, label %193, label %183

183:                                              ; preds = %176
  %184 = load ptr, ptr %17, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.aiMaterialProperty, ptr %184, i32 0, i32 5
  %186 = load ptr, ptr %185, align 8, !tbaa !27
  %187 = load i32, ptr %186, align 4, !tbaa !13
  %188 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %14, i32 0, i32 1
  store i32 %187, ptr %188, align 4, !tbaa !28
  %189 = load ptr, ptr %17, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.aiMaterialProperty, ptr %189, i32 0, i32 5
  %191 = load ptr, ptr %190, align 8, !tbaa !27
  %192 = getelementptr inbounds %"struct.Assimp::TTUpdateInfo", ptr %15, i32 0, i32 0
  store ptr %191, ptr %192, align 8, !tbaa !40
  br label %284

193:                                              ; preds = %176
  %194 = load ptr, ptr %17, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.aiMaterialProperty, ptr %194, i32 0, i32 0
  %196 = getelementptr inbounds %struct.aiString, ptr %195, i32 0, i32 1
  %197 = getelementptr inbounds [1024 x i8], ptr %196, i64 0, i64 0
  %198 = call i32 @strcmp(ptr noundef %197, ptr noundef @.str.12) #14
  %199 = icmp ne i32 %198, 0
  br i1 %199, label %206, label %200

200:                                              ; preds = %193
  %201 = load ptr, ptr %17, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.aiMaterialProperty, ptr %201, i32 0, i32 5
  %203 = load ptr, ptr %202, align 8, !tbaa !27
  %204 = load i32, ptr %203, align 4, !tbaa !41
  %205 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %14, i32 0, i32 2
  store i32 %204, ptr %205, align 8, !tbaa !42
  br label %283

206:                                              ; preds = %193
  %207 = load ptr, ptr %17, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.aiMaterialProperty, ptr %207, i32 0, i32 0
  %209 = getelementptr inbounds %struct.aiString, ptr %208, i32 0, i32 1
  %210 = getelementptr inbounds [1024 x i8], ptr %209, i64 0, i64 0
  %211 = call i32 @strcmp(ptr noundef %210, ptr noundef @.str.13) #14
  %212 = icmp ne i32 %211, 0
  br i1 %212, label %219, label %213

213:                                              ; preds = %206
  %214 = load ptr, ptr %17, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.aiMaterialProperty, ptr %214, i32 0, i32 5
  %216 = load ptr, ptr %215, align 8, !tbaa !27
  %217 = load i32, ptr %216, align 4, !tbaa !41
  %218 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %14, i32 0, i32 3
  store i32 %217, ptr %218, align 4, !tbaa !43
  br label %282

219:                                              ; preds = %206
  %220 = load ptr, ptr %17, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.aiMaterialProperty, ptr %220, i32 0, i32 0
  %222 = getelementptr inbounds %struct.aiString, ptr %221, i32 0, i32 1
  %223 = getelementptr inbounds [1024 x i8], ptr %222, i64 0, i64 0
  %224 = call i32 @strcmp(ptr noundef %223, ptr noundef @.str.14) #14
  %225 = icmp ne i32 %224, 0
  br i1 %225, label %281, label %226

226:                                              ; preds = %219
  %227 = load ptr, ptr %17, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.aiMaterialProperty, ptr %227, i32 0, i32 3
  %229 = load i32, ptr %228, align 4, !tbaa !44
  %230 = icmp uge i32 %229, 20
  br i1 %230, label %233, label %231

231:                                              ; preds = %226
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.15, ptr noundef @.str.16, i32 noundef 252)
          to label %232 unwind label %252

232:                                              ; preds = %231
  br label %233

233:                                              ; preds = %232, %226
  %234 = phi i1 [ true, %226 ], [ false, %232 ]
  %235 = getelementptr inbounds %struct.aiUVTransform, ptr %14, i32 0, i32 0
  %236 = getelementptr inbounds %class.aiVector2t, ptr %235, i32 0, i32 0
  %237 = load ptr, ptr %17, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.aiMaterialProperty, ptr %237, i32 0, i32 5
  %239 = load ptr, ptr %238, align 8, !tbaa !27
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %236, ptr align 1 %239, i64 20, i1 false)
  %240 = load ptr, ptr %11, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.aiMaterial, ptr %240, i32 0, i32 1
  %242 = load i32, ptr %241, align 8, !tbaa !16
  %243 = add i32 %242, -1
  store i32 %243, ptr %241, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #13
  %244 = load i32, ptr %16, align 4, !tbaa !13
  store i32 %244, ptr %18, align 4, !tbaa !13
  br label %245

245:                                              ; preds = %271, %233
  %246 = load i32, ptr %18, align 4, !tbaa !13
  %247 = load ptr, ptr %11, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.aiMaterial, ptr %247, i32 0, i32 1
  %249 = load i32, ptr %248, align 8, !tbaa !16
  %250 = icmp ult i32 %246, %249
  br i1 %250, label %256, label %251

251:                                              ; preds = %245
  store i32 11, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #13
  br label %274

252:                                              ; preds = %231
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %7, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #13
  br label %500

256:                                              ; preds = %245
  %257 = load ptr, ptr %11, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.aiMaterial, ptr %257, i32 0, i32 0
  %259 = load ptr, ptr %258, align 8, !tbaa !18
  %260 = load i32, ptr %18, align 4, !tbaa !13
  %261 = add i32 %260, 1
  %262 = zext i32 %261 to i64
  %263 = getelementptr inbounds ptr, ptr %259, i64 %262
  %264 = load ptr, ptr %263, align 8, !tbaa !5
  %265 = load ptr, ptr %11, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.aiMaterial, ptr %265, i32 0, i32 0
  %267 = load ptr, ptr %266, align 8, !tbaa !18
  %268 = load i32, ptr %18, align 4, !tbaa !13
  %269 = zext i32 %268 to i64
  %270 = getelementptr inbounds ptr, ptr %267, i64 %269
  store ptr %264, ptr %270, align 8, !tbaa !5
  br label %271

271:                                              ; preds = %256
  %272 = load i32, ptr %18, align 4, !tbaa !13
  %273 = add i32 %272, 1
  store i32 %273, ptr %18, align 4, !tbaa !13
  br label %245, !llvm.loop !45

274:                                              ; preds = %251
  %275 = load ptr, ptr %17, align 8, !tbaa !5
  %276 = icmp eq ptr %275, null
  br i1 %276, label %278, label %277

277:                                              ; preds = %274
  call void @_ZN18aiMaterialPropertyD2Ev(ptr noundef nonnull align 8 dereferenceable(1056) %275) #13
  call void @_ZdlPvm(ptr noundef %275, i64 noundef 1056) #15
  br label %278

278:                                              ; preds = %277, %274
  %279 = load i32, ptr %16, align 4, !tbaa !13
  %280 = add i32 %279, -1
  store i32 %280, ptr %16, align 4, !tbaa !13
  br label %281

281:                                              ; preds = %278, %219
  br label %282

282:                                              ; preds = %281, %213
  br label %283

283:                                              ; preds = %282, %200
  br label %284

284:                                              ; preds = %283, %183
  store i32 0, ptr %10, align 4
  br label %285

285:                                              ; preds = %284, %175
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #13
  %286 = load i32, ptr %10, align 4
  switch i32 %286, label %1166 [
    i32 0, label %287
    i32 10, label %288
  ]

287:                                              ; preds = %285
  br label %288

288:                                              ; preds = %287, %285
  %289 = load i32, ptr %16, align 4, !tbaa !13
  %290 = add i32 %289, 1
  store i32 %290, ptr %16, align 4, !tbaa !13
  br label %145, !llvm.loop !47

291:                                              ; preds = %151
  %292 = getelementptr inbounds %"class.Assimp::TextureTransformStep", ptr %87, i32 0, i32 1
  %293 = load i32, ptr %292, align 8, !tbaa !48
  %294 = and i32 %293, 2
  %295 = icmp ne i32 %294, 0
  br i1 %295, label %298, label %296

296:                                              ; preds = %291
  %297 = getelementptr inbounds %struct.aiUVTransform, ptr %14, i32 0, i32 2
  store float 0.000000e+00, ptr %297, align 8, !tbaa !51
  br label %298

298:                                              ; preds = %296, %291
  %299 = getelementptr inbounds %"class.Assimp::TextureTransformStep", ptr %87, i32 0, i32 1
  %300 = load i32, ptr %299, align 8, !tbaa !48
  %301 = and i32 %300, 1
  %302 = icmp ne i32 %301, 0
  br i1 %302, label %310, label %303

303:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #13
  invoke void @_ZN10aiVector2tIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %19, float noundef 1.000000e+00, float noundef 1.000000e+00)
          to label %304 unwind label %306

304:                                              ; preds = %303
  %305 = getelementptr inbounds %struct.aiUVTransform, ptr %14, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %305, ptr align 4 %19, i64 8, i1 false), !tbaa.struct !52
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #13
  br label %310

306:                                              ; preds = %303
  %307 = landingpad { ptr, i32 }
          cleanup
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %7, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #13
  br label %500

310:                                              ; preds = %304, %298
  %311 = getelementptr inbounds %"class.Assimp::TextureTransformStep", ptr %87, i32 0, i32 1
  %312 = load i32, ptr %311, align 8, !tbaa !48
  %313 = and i32 %312, 4
  %314 = icmp ne i32 %313, 0
  br i1 %314, label %322, label %315

315:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #13
  invoke void @_ZN10aiVector2tIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %20, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %316 unwind label %318

316:                                              ; preds = %315
  %317 = getelementptr inbounds %struct.aiUVTransform, ptr %14, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %317, ptr align 4 %20, i64 8, i1 false), !tbaa.struct !52
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #13
  br label %322

318:                                              ; preds = %315
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %7, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #13
  br label %500

322:                                              ; preds = %316, %310
  invoke void @_ZN6Assimp20TextureTransformStep21PreProcessUVTransformERNS_17STransformVecInfoE(ptr noundef nonnull align 8 dereferenceable(28) %87, ptr noundef nonnull align 8 dereferenceable(64) %14)
          to label %323 unwind label %336

323:                                              ; preds = %322
  %324 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %14, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #13
  store i32 7, ptr %21, align 4, !tbaa !13
  %325 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %324, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %326 unwind label %340

326:                                              ; preds = %323
  %327 = load i32, ptr %325, align 4, !tbaa !13
  %328 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %14, i32 0, i32 1
  store i32 %327, ptr %328, align 4, !tbaa !28
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #13
  store i32 0, ptr %22, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #13
  store i32 0, ptr %23, align 4, !tbaa !13
  br label %329

329:                                              ; preds = %360, %326
  %330 = load i32, ptr %23, align 4, !tbaa !13
  %331 = load ptr, ptr %4, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.aiScene, ptr %331, i32 0, i32 2
  %333 = load i32, ptr %332, align 8, !tbaa !9
  %334 = icmp ult i32 %330, %333
  br i1 %334, label %344, label %335

335:                                              ; preds = %329
  store i32 14, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #13
  br label %363

336:                                              ; preds = %322
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %7, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %8, align 4
  br label %500

340:                                              ; preds = %323
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %7, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #13
  br label %500

344:                                              ; preds = %329
  %345 = load ptr, ptr %4, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.aiScene, ptr %345, i32 0, i32 3
  %347 = load ptr, ptr %346, align 8, !tbaa !54
  %348 = load i32, ptr %23, align 4, !tbaa !13
  %349 = zext i32 %348 to i64
  %350 = getelementptr inbounds ptr, ptr %347, i64 %349
  %351 = load ptr, ptr %350, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.aiMesh, ptr %351, i32 0, i32 13
  %353 = load i32, ptr %352, align 8, !tbaa !55
  %354 = load i32, ptr %9, align 4, !tbaa !13
  %355 = icmp eq i32 %353, %354
  br i1 %355, label %356, label %359

356:                                              ; preds = %344
  %357 = load i32, ptr %22, align 4, !tbaa !13
  %358 = add i32 %357, 1
  store i32 %358, ptr %22, align 4, !tbaa !13
  br label %359

359:                                              ; preds = %356, %344
  br label %360

360:                                              ; preds = %359
  %361 = load i32, ptr %23, align 4, !tbaa !13
  %362 = add i32 %361, 1
  store i32 %362, ptr %23, align 4, !tbaa !13
  br label %329, !llvm.loop !60

363:                                              ; preds = %335
  %364 = load i32, ptr %22, align 4, !tbaa !13
  %365 = icmp ne i32 %364, 0
  br i1 %365, label %367, label %366

366:                                              ; preds = %363
  store i32 7, ptr %10, align 4
  br label %497

367:                                              ; preds = %363
  %368 = load i32, ptr %22, align 4, !tbaa !13
  %369 = icmp ne i32 1, %368
  br i1 %369, label %370, label %372

370:                                              ; preds = %367
  %371 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %14, i32 0, i32 4
  store i32 -1, ptr %371, align 8, !tbaa !61
  br label %372

372:                                              ; preds = %370, %367
  br label %373

373:                                              ; preds = %372
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #13
  store i32 0, ptr %24, align 4, !tbaa !13
  br label %374

374:                                              ; preds = %492, %373
  %375 = load i32, ptr %24, align 4, !tbaa !13
  %376 = load ptr, ptr %4, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.aiScene, ptr %376, i32 0, i32 2
  %378 = load i32, ptr %377, align 8, !tbaa !9
  %379 = icmp ult i32 %375, %378
  br i1 %379, label %381, label %380

380:                                              ; preds = %374
  store i32 17, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #13
  br label %496

381:                                              ; preds = %374
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #13
  %382 = load ptr, ptr %4, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.aiScene, ptr %382, i32 0, i32 3
  %384 = load ptr, ptr %383, align 8, !tbaa !54
  %385 = load i32, ptr %24, align 4, !tbaa !13
  %386 = zext i32 %385 to i64
  %387 = getelementptr inbounds ptr, ptr %384, i64 %386
  %388 = load ptr, ptr %387, align 8, !tbaa !5
  store ptr %388, ptr %25, align 8, !tbaa !5
  %389 = load ptr, ptr %25, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.aiMesh, ptr %389, i32 0, i32 13
  %391 = load i32, ptr %390, align 8, !tbaa !55
  %392 = load i32, ptr %9, align 4, !tbaa !13
  %393 = icmp ne i32 %391, %392
  br i1 %393, label %400, label %394

394:                                              ; preds = %381
  %395 = load ptr, ptr %25, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.aiMesh, ptr %395, i32 0, i32 8
  %397 = getelementptr inbounds [8 x ptr], ptr %396, i64 0, i64 0
  %398 = load ptr, ptr %397, align 8, !tbaa !5
  %399 = icmp ne ptr %398, null
  br i1 %399, label %401, label %400

400:                                              ; preds = %394, %381
  store i32 19, ptr %10, align 4
  br label %489

401:                                              ; preds = %394
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #13
  %402 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %14, i32 0, i32 1
  %403 = load i32, ptr %402, align 4, !tbaa !28
  store i32 %403, ptr %26, align 4, !tbaa !13
  %404 = load ptr, ptr %25, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.aiMesh, ptr %404, i32 0, i32 8
  %406 = load i32, ptr %26, align 4, !tbaa !13
  %407 = zext i32 %406 to i64
  %408 = getelementptr inbounds [8 x ptr], ptr %405, i64 0, i64 %407
  %409 = load ptr, ptr %408, align 8, !tbaa !5
  %410 = icmp ne ptr %409, null
  br i1 %410, label %412, label %411

411:                                              ; preds = %401
  store i32 0, ptr %26, align 4, !tbaa !13
  br label %412

412:                                              ; preds = %411, %401
  %413 = load ptr, ptr %25, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.aiMesh, ptr %413, i32 0, i32 9
  %415 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %14, i32 0, i32 1
  %416 = load i32, ptr %415, align 4, !tbaa !28
  %417 = zext i32 %416 to i64
  %418 = getelementptr inbounds [8 x i32], ptr %414, i64 0, i64 %417
  %419 = load i32, ptr %418, align 4, !tbaa !13
  %420 = icmp uge i32 %419, 3
  br i1 %420, label %421, label %429

421:                                              ; preds = %412
  %422 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %423 unwind label %425

423:                                              ; preds = %421
  invoke void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12) %422, ptr noundef @.str.17)
          to label %424 unwind label %425

424:                                              ; preds = %423
  store i32 19, ptr %10, align 4
  br label %488

425:                                              ; preds = %423, %421
  %426 = landingpad { ptr, i32 }
          cleanup
  %427 = extractvalue { ptr, i32 } %426, 0
  store ptr %427, ptr %7, align 8
  %428 = extractvalue { ptr, i32 } %426, 1
  store i32 %428, ptr %8, align 4
  br label %495

429:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #13
  call void @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #13
  %430 = load i32, ptr %24, align 4, !tbaa !13
  %431 = zext i32 %430 to i64
  %432 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %431) #13
  %433 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %432) #13
  %434 = getelementptr inbounds %"struct.std::_List_iterator", ptr %28, i32 0, i32 0
  store ptr %433, ptr %434, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %27, ptr align 8 %28, i64 8, i1 false), !tbaa.struct !62
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #13
  br label %435

435:                                              ; preds = %461, %429
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #13
  %436 = load i32, ptr %24, align 4, !tbaa !13
  %437 = zext i32 %436 to i64
  %438 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %437) #13
  %439 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %438) #13
  %440 = getelementptr inbounds %"struct.std::_List_iterator", ptr %29, i32 0, i32 0
  store ptr %439, ptr %440, align 8
  %441 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %29) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #13
  br i1 %441, label %442, label %463

442:                                              ; preds = %435
  %443 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #13
  %444 = invoke noundef zeroext i1 @_ZNK6Assimp17STransformVecInfoeqERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %443, ptr noundef nonnull align 8 dereferenceable(64) %14)
          to label %445 unwind label %456

445:                                              ; preds = %442
  br i1 %444, label %446, label %460

446:                                              ; preds = %445
  %447 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #13
  %448 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %447, i32 0, i32 1
  %449 = load i32, ptr %448, align 4, !tbaa !28
  %450 = load i32, ptr %26, align 4, !tbaa !13
  %451 = icmp eq i32 %449, %450
  br i1 %451, label %452, label %460

452:                                              ; preds = %446
  %453 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #13
  %454 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %453, i32 0, i32 5
  invoke void @_ZNSt7__cxx114listIN6Assimp12TTUpdateInfoESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %454, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %455 unwind label %456

455:                                              ; preds = %452
  br label %463

456:                                              ; preds = %474, %470, %452, %442
  %457 = landingpad { ptr, i32 }
          cleanup
  %458 = extractvalue { ptr, i32 } %457, 0
  store ptr %458, ptr %7, align 8
  %459 = extractvalue { ptr, i32 } %457, 1
  store i32 %459, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #13
  br label %495

460:                                              ; preds = %446, %445
  br label %461

461:                                              ; preds = %460
  %462 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #13
  br label %435, !llvm.loop !63

463:                                              ; preds = %455, %435
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #13
  %464 = load i32, ptr %24, align 4, !tbaa !13
  %465 = zext i32 %464 to i64
  %466 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %465) #13
  %467 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %466) #13
  %468 = getelementptr inbounds %"struct.std::_List_iterator", ptr %30, i32 0, i32 0
  store ptr %467, ptr %468, align 8
  %469 = call noundef zeroext i1 @_ZSteqRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %30) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #13
  br i1 %469, label %470, label %487

470:                                              ; preds = %463
  %471 = load i32, ptr %24, align 4, !tbaa !13
  %472 = zext i32 %471 to i64
  %473 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %472) #13
  invoke void @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %473, ptr noundef nonnull align 8 dereferenceable(64) %14)
          to label %474 unwind label %456

474:                                              ; preds = %470
  %475 = load i32, ptr %26, align 4, !tbaa !13
  %476 = load i32, ptr %24, align 4, !tbaa !13
  %477 = zext i32 %476 to i64
  %478 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %477) #13
  %479 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %478) #13
  %480 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %479, i32 0, i32 1
  store i32 %475, ptr %480, align 4, !tbaa !28
  %481 = load i32, ptr %24, align 4, !tbaa !13
  %482 = zext i32 %481 to i64
  %483 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %482) #13
  %484 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %483) #13
  %485 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %484, i32 0, i32 5
  invoke void @_ZNSt7__cxx114listIN6Assimp12TTUpdateInfoESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %485, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %486 unwind label %456

486:                                              ; preds = %474
  br label %487

487:                                              ; preds = %486, %463
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #13
  store i32 0, ptr %10, align 4
  br label %488

488:                                              ; preds = %487, %424
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #13
  br label %489

489:                                              ; preds = %488, %400
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #13
  %490 = load i32, ptr %10, align 4
  switch i32 %490, label %1166 [
    i32 0, label %491
    i32 19, label %492
  ]

491:                                              ; preds = %489
  br label %492

492:                                              ; preds = %491, %489
  %493 = load i32, ptr %24, align 4, !tbaa !13
  %494 = add i32 %493, 1
  store i32 %494, ptr %24, align 4, !tbaa !13
  br label %374, !llvm.loop !64

495:                                              ; preds = %456, %425
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #13
  br label %500

496:                                              ; preds = %380
  store i32 0, ptr %10, align 4
  br label %497

497:                                              ; preds = %496, %366
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #13
  call void @_ZN6Assimp17STransformVecInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %14) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr %14) #13
  %498 = load i32, ptr %10, align 4
  switch i32 %498, label %502 [
    i32 0, label %499
  ]

499:                                              ; preds = %497
  br label %501

500:                                              ; preds = %495, %340, %336, %318, %306, %252
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #13
  call void @_ZN6Assimp17STransformVecInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %14) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr %14) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #13
  br label %1159

501:                                              ; preds = %499, %120
  store i32 0, ptr %10, align 4
  br label %502

502:                                              ; preds = %501, %497
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #13
  %503 = load i32, ptr %10, align 4
  switch i32 %503, label %1166 [
    i32 0, label %504
    i32 7, label %505
  ]

504:                                              ; preds = %502
  br label %505

505:                                              ; preds = %504, %502
  %506 = load i32, ptr %12, align 4, !tbaa !13
  %507 = add i32 %506, 1
  store i32 %507, ptr %12, align 4, !tbaa !13
  br label %113, !llvm.loop !65

508:                                              ; preds = %119
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #13
  br label %509

509:                                              ; preds = %508
  %510 = load i32, ptr %9, align 4, !tbaa !13
  %511 = add i32 %510, 1
  store i32 %511, ptr %9, align 4, !tbaa !13
  br label %94, !llvm.loop !66

512:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 1024, ptr %31) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #13
  store i32 0, ptr %32, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #13
  store i32 0, ptr %33, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #13
  store i32 0, ptr %34, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #13
  store i32 0, ptr %35, align 4, !tbaa !13
  br label %513

513:                                              ; preds = %1131, %512
  %514 = load i32, ptr %35, align 4, !tbaa !13
  %515 = load ptr, ptr %4, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.aiScene, ptr %515, i32 0, i32 2
  %517 = load i32, ptr %516, align 8, !tbaa !9
  %518 = icmp ult i32 %514, %517
  br i1 %518, label %520, label %519

519:                                              ; preds = %513
  store i32 23, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #13
  br label %1138

520:                                              ; preds = %513
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #13
  %521 = load ptr, ptr %4, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.aiScene, ptr %521, i32 0, i32 3
  %523 = load ptr, ptr %522, align 8, !tbaa !54
  %524 = load i32, ptr %35, align 4, !tbaa !13
  %525 = zext i32 %524 to i64
  %526 = getelementptr inbounds ptr, ptr %523, i64 %525
  %527 = load ptr, ptr %526, align 8, !tbaa !5
  store ptr %527, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #13
  %528 = load i32, ptr %35, align 4, !tbaa !13
  %529 = zext i32 %528 to i64
  %530 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %529) #13
  store ptr %530, ptr %37, align 8, !tbaa !5
  %531 = load ptr, ptr %36, align 8, !tbaa !5
  %532 = invoke noundef i32 @_ZNK6aiMesh16GetNumUVChannelsEv(ptr noundef nonnull align 8 dereferenceable(1320) %531)
          to label %533 unwind label %565

533:                                              ; preds = %520
  %534 = load i32, ptr %33, align 4, !tbaa !13
  %535 = add i32 %534, %532
  store i32 %535, ptr %33, align 4, !tbaa !13
  %536 = load ptr, ptr %36, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.aiMesh, ptr %536, i32 0, i32 8
  %538 = getelementptr inbounds [8 x ptr], ptr %537, i64 0, i64 0
  %539 = load ptr, ptr %538, align 8, !tbaa !5
  %540 = icmp ne ptr %539, null
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #13
  br i1 %540, label %541, label %557

541:                                              ; preds = %533
  %542 = load ptr, ptr %37, align 8, !tbaa !5
  %543 = call noundef zeroext i1 @_ZNKSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %542) #13
  br i1 %543, label %557, label %544

544:                                              ; preds = %541
  %545 = load ptr, ptr %37, align 8, !tbaa !5
  %546 = call noundef i64 @_ZNKSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %545) #13
  %547 = icmp eq i64 %546, 1
  br i1 %547, label %548, label %555

548:                                              ; preds = %544
  %549 = load ptr, ptr %37, align 8, !tbaa !5
  %550 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %549) #13
  %551 = getelementptr inbounds %"struct.std::_List_iterator", ptr %38, i32 0, i32 0
  store ptr %550, ptr %551, align 8
  %552 = call noundef ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %38) #13
  %553 = invoke noundef zeroext i1 @_ZNK6Assimp17STransformVecInfo15IsUntransformedEv(ptr noundef nonnull align 8 dereferenceable(64) %552)
          to label %554 unwind label %569

554:                                              ; preds = %548
  br label %555

555:                                              ; preds = %554, %544
  %556 = phi i1 [ false, %544 ], [ %553, %554 ]
  br label %557

557:                                              ; preds = %555, %541, %533
  %558 = phi i1 [ true, %541 ], [ true, %533 ], [ %556, %555 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #13
  br i1 %558, label %559, label %573

559:                                              ; preds = %557
  %560 = load ptr, ptr %36, align 8, !tbaa !5
  %561 = invoke noundef i32 @_ZNK6aiMesh16GetNumUVChannelsEv(ptr noundef nonnull align 8 dereferenceable(1320) %560)
          to label %562 unwind label %565

562:                                              ; preds = %559
  %563 = load i32, ptr %32, align 4, !tbaa !13
  %564 = add i32 %563, %561
  store i32 %564, ptr %32, align 4, !tbaa !13
  store i32 25, ptr %10, align 4
  br label %1128

565:                                              ; preds = %559, %520
  %566 = landingpad { ptr, i32 }
          cleanup
  %567 = extractvalue { ptr, i32 } %566, 0
  store ptr %567, ptr %7, align 8
  %568 = extractvalue { ptr, i32 } %566, 1
  store i32 %568, ptr %8, align 4
  br label %1137

569:                                              ; preds = %548
  %570 = landingpad { ptr, i32 }
          cleanup
  %571 = extractvalue { ptr, i32 } %570, 0
  store ptr %571, ptr %7, align 8
  %572 = extractvalue { ptr, i32 } %570, 1
  store i32 %572, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #13
  br label %1137

573:                                              ; preds = %557
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #13
  store i8 0, ptr %39, align 1, !tbaa !67
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #13
  store i8 0, ptr %40, align 1, !tbaa !67
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #13
  store i32 0, ptr %41, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #13
  store i32 0, ptr %42, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #13
  call void @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #13
  call void @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #13
  %574 = load ptr, ptr %37, align 8, !tbaa !5
  %575 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %574) #13
  %576 = getelementptr inbounds %"struct.std::_List_iterator", ptr %45, i32 0, i32 0
  store ptr %575, ptr %576, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %45, i64 8, i1 false), !tbaa.struct !62
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #13
  br label %577

577:                                              ; preds = %646, %573
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #13
  %578 = load ptr, ptr %37, align 8, !tbaa !5
  %579 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %578) #13
  %580 = getelementptr inbounds %"struct.std::_List_iterator", ptr %46, i32 0, i32 0
  store ptr %579, ptr %580, align 8
  %581 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %46) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #13
  br i1 %581, label %582, label %650

582:                                              ; preds = %577
  %583 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %584 = invoke noundef zeroext i1 @_ZNK6Assimp17STransformVecInfo15IsUntransformedEv(ptr noundef nonnull align 8 dereferenceable(64) %583)
          to label %585 unwind label %587

585:                                              ; preds = %582
  br i1 %584, label %591, label %586

586:                                              ; preds = %585
  store i8 1, ptr %40, align 1, !tbaa !67
  br label %591

587:                                              ; preds = %695, %693, %632, %620, %582
  %588 = landingpad { ptr, i32 }
          cleanup
  %589 = extractvalue { ptr, i32 } %588, 0
  store ptr %589, ptr %7, align 8
  %590 = extractvalue { ptr, i32 } %588, 1
  store i32 %590, ptr %8, align 4
  br label %1136

591:                                              ; preds = %586, %585
  %592 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %593 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %592, i32 0, i32 4
  %594 = load i32, ptr %593, align 8, !tbaa !61
  %595 = icmp eq i32 %594, -1
  br i1 %595, label %596, label %600

596:                                              ; preds = %591
  %597 = load i32, ptr %41, align 4, !tbaa !13
  %598 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %599 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %598, i32 0, i32 4
  store i32 %597, ptr %599, align 8, !tbaa !61
  store i8 1, ptr %39, align 1, !tbaa !67
  br label %646

600:                                              ; preds = %591
  %601 = load i8, ptr %39, align 1, !tbaa !67, !range !69, !noundef !70
  %602 = trunc i8 %601 to i1
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #13
  br i1 %602, label %612, label %603

603:                                              ; preds = %600
  %604 = load ptr, ptr %37, align 8, !tbaa !5
  %605 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %604) #13
  %606 = getelementptr inbounds %"struct.std::_List_iterator", ptr %47, i32 0, i32 0
  store ptr %605, ptr %606, align 8
  %607 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %47) #13
  br i1 %607, label %608, label %612

608:                                              ; preds = %603
  %609 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %610 = invoke noundef zeroext i1 @_ZNK6Assimp17STransformVecInfo15IsUntransformedEv(ptr noundef nonnull align 8 dereferenceable(64) %609)
          to label %611 unwind label %625

611:                                              ; preds = %608
  br label %612

612:                                              ; preds = %611, %603, %600
  %613 = phi i1 [ false, %603 ], [ false, %600 ], [ %610, %611 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #13
  br i1 %613, label %614, label %645

614:                                              ; preds = %612
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #13
  %615 = load ptr, ptr %37, align 8, !tbaa !5
  %616 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %615) #13
  %617 = getelementptr inbounds %"struct.std::_List_iterator", ptr %48, i32 0, i32 0
  store ptr %616, ptr %617, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %44, ptr align 8 %48, i64 8, i1 false), !tbaa.struct !62
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #13
  br label %618

618:                                              ; preds = %630, %614
  %619 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  br i1 %619, label %620, label %632

620:                                              ; preds = %618
  %621 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #13
  %622 = invoke noundef zeroext i1 @_ZNK6Assimp17STransformVecInfo15IsUntransformedEv(ptr noundef nonnull align 8 dereferenceable(64) %621)
          to label %623 unwind label %587

623:                                              ; preds = %620
  br i1 %622, label %629, label %624

624:                                              ; preds = %623
  br label %632

625:                                              ; preds = %608
  %626 = landingpad { ptr, i32 }
          cleanup
  %627 = extractvalue { ptr, i32 } %626, 0
  store ptr %627, ptr %7, align 8
  %628 = extractvalue { ptr, i32 } %626, 1
  store i32 %628, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #13
  br label %1136

629:                                              ; preds = %623
  br label %630

630:                                              ; preds = %629
  %631 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #13
  br label %618, !llvm.loop !71

632:                                              ; preds = %624, %618
  %633 = load ptr, ptr %37, align 8, !tbaa !5
  call void @_ZNSt20_List_const_iteratorIN6Assimp17STransformVecInfoEEC2ERKSt14_List_iteratorIS1_E(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %44) #13
  %634 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %635 = getelementptr inbounds %"struct.std::_List_const_iterator.8", ptr %49, i32 0, i32 0
  %636 = load ptr, ptr %635, align 8
  %637 = invoke ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE6insertESt20_List_const_iteratorIS2_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %633, ptr %636, ptr noundef nonnull align 8 dereferenceable(64) %634)
          to label %638 unwind label %587

638:                                              ; preds = %632
  %639 = getelementptr inbounds %"struct.std::_List_iterator", ptr %50, i32 0, i32 0
  store ptr %637, ptr %639, align 8
  %640 = load ptr, ptr %37, align 8, !tbaa !5
  call void @_ZNSt20_List_const_iteratorIN6Assimp17STransformVecInfoEEC2ERKSt14_List_iteratorIS1_E(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %641 = getelementptr inbounds %"struct.std::_List_const_iterator.8", ptr %51, i32 0, i32 0
  %642 = load ptr, ptr %641, align 8
  %643 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5eraseESt20_List_const_iteratorIS2_E(ptr noundef nonnull align 8 dereferenceable(24) %640, ptr %642) #13
  %644 = getelementptr inbounds %"struct.std::_List_iterator", ptr %52, i32 0, i32 0
  store ptr %643, ptr %644, align 8
  br label %650

645:                                              ; preds = %612
  br label %646

646:                                              ; preds = %645, %596
  %647 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %648 = load i32, ptr %41, align 4, !tbaa !13
  %649 = add i32 %648, 1
  store i32 %649, ptr %41, align 4, !tbaa !13
  br label %577, !llvm.loop !72

650:                                              ; preds = %638, %577
  %651 = load i8, ptr %40, align 1, !tbaa !67, !range !69, !noundef !70
  %652 = trunc i8 %651 to i1
  br i1 %652, label %654, label %653

653:                                              ; preds = %650
  store i32 25, ptr %10, align 4
  br label %1127

654:                                              ; preds = %650
  store i32 0, ptr %41, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #13
  %655 = load ptr, ptr %37, align 8, !tbaa !5
  %656 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %655) #13
  %657 = getelementptr inbounds %"struct.std::_List_iterator", ptr %53, i32 0, i32 0
  store ptr %656, ptr %657, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %53, i64 8, i1 false), !tbaa.struct !62
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #13
  br label %658

658:                                              ; preds = %709, %654
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #13
  %659 = load ptr, ptr %37, align 8, !tbaa !5
  %660 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %659) #13
  %661 = getelementptr inbounds %"struct.std::_List_iterator", ptr %54, i32 0, i32 0
  store ptr %660, ptr %661, align 8
  %662 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %54) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #13
  br i1 %662, label %663, label %713

663:                                              ; preds = %658
  %664 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %665 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %664, i32 0, i32 4
  %666 = load i32, ptr %665, align 8, !tbaa !61
  %667 = icmp ne i32 %666, -286331154
  br i1 %667, label %668, label %708

668:                                              ; preds = %663
  %669 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %670 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %669, i32 0, i32 4
  %671 = load i32, ptr %670, align 8, !tbaa !61
  %672 = load i32, ptr %41, align 4, !tbaa !13
  %673 = icmp ne i32 %671, %672
  br i1 %673, label %674, label %708

674:                                              ; preds = %668
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #13
  %675 = load ptr, ptr %37, align 8, !tbaa !5
  %676 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %675) #13
  %677 = getelementptr inbounds %"struct.std::_List_iterator", ptr %55, i32 0, i32 0
  store ptr %676, ptr %677, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %44, ptr align 8 %55, i64 8, i1 false), !tbaa.struct !62
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #13
  br label %678

678:                                              ; preds = %686, %674
  %679 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #13
  %680 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %679, i32 0, i32 4
  %681 = load i32, ptr %680, align 8, !tbaa !61
  %682 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %683 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %682, i32 0, i32 4
  %684 = load i32, ptr %683, align 8, !tbaa !61
  %685 = icmp ne i32 %681, %684
  br i1 %685, label %686, label %688

686:                                              ; preds = %678
  %687 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #13
  br label %678, !llvm.loop !73

688:                                              ; preds = %678
  %689 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #13
  %690 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %689, i32 0, i32 4
  %691 = load i32, ptr %690, align 8, !tbaa !61
  %692 = icmp ne i32 %691, -286331154
  br i1 %692, label %693, label %697

693:                                              ; preds = %688
  %694 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %695 unwind label %587

695:                                              ; preds = %693
  invoke void @_ZN6Assimp6Logger5errorEPKc(ptr noundef nonnull align 8 dereferenceable(12) %694, ptr noundef @.str.18)
          to label %696 unwind label %587

696:                                              ; preds = %695
  br label %709

697:                                              ; preds = %688
  %698 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #13
  %699 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  call void @_ZSt4swapIN6Assimp17STransformVecInfoEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 8 dereferenceable(64) %698, ptr noundef nonnull align 8 dereferenceable(64) %699) #13
  %700 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %701 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %700, i32 0, i32 4
  %702 = load i32, ptr %701, align 8, !tbaa !61
  %703 = load i32, ptr %42, align 4, !tbaa !13
  %704 = icmp eq i32 %702, %703
  br i1 %704, label %705, label %707

705:                                              ; preds = %697
  %706 = load i32, ptr %41, align 4, !tbaa !13
  store i32 %706, ptr %42, align 4, !tbaa !13
  br label %707

707:                                              ; preds = %705, %697
  br label %708

708:                                              ; preds = %707, %668, %663
  br label %709

709:                                              ; preds = %708, %696
  %710 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %711 = load i32, ptr %41, align 4, !tbaa !13
  %712 = add i32 %711, 1
  store i32 %712, ptr %41, align 4, !tbaa !13
  br label %658, !llvm.loop !74

713:                                              ; preds = %658
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #13
  store i32 0, ptr %57, align 4, !tbaa !13
  br label %714

714:                                              ; preds = %731, %713
  %715 = load i32, ptr %57, align 4, !tbaa !13
  %716 = icmp ult i32 %715, 8
  br i1 %716, label %718, label %717

717:                                              ; preds = %714
  store i32 37, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #13
  br label %734

718:                                              ; preds = %714
  %719 = load ptr, ptr %36, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.aiMesh, ptr %719, i32 0, i32 8
  %721 = load i32, ptr %57, align 4, !tbaa !13
  %722 = zext i32 %721 to i64
  %723 = getelementptr inbounds [8 x ptr], ptr %720, i64 0, i64 %722
  %724 = load ptr, ptr %723, align 8, !tbaa !5
  %725 = icmp ne ptr %724, null
  %726 = xor i1 %725, true
  %727 = load i32, ptr %57, align 4, !tbaa !13
  %728 = zext i32 %727 to i64
  %729 = getelementptr inbounds [8 x i8], ptr %56, i64 0, i64 %728
  %730 = zext i1 %726 to i8
  store i8 %730, ptr %729, align 1, !tbaa !67
  br label %731

731:                                              ; preds = %718
  %732 = load i32, ptr %57, align 4, !tbaa !13
  %733 = add i32 %732, 1
  store i32 %733, ptr %57, align 4, !tbaa !13
  br label %714, !llvm.loop !75

734:                                              ; preds = %717
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #13
  %735 = load ptr, ptr %37, align 8, !tbaa !5
  %736 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %735) #13
  %737 = getelementptr inbounds %"struct.std::_List_iterator", ptr %58, i32 0, i32 0
  store ptr %736, ptr %737, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %58, i64 8, i1 false), !tbaa.struct !62
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #13
  br label %738

738:                                              ; preds = %749, %734
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #13
  %739 = load ptr, ptr %37, align 8, !tbaa !5
  %740 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %739) #13
  %741 = getelementptr inbounds %"struct.std::_List_iterator", ptr %59, i32 0, i32 0
  store ptr %740, ptr %741, align 8
  %742 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %59) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #13
  br i1 %742, label %743, label %751

743:                                              ; preds = %738
  %744 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %745 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %744, i32 0, i32 1
  %746 = load i32, ptr %745, align 4, !tbaa !28
  %747 = zext i32 %746 to i64
  %748 = getelementptr inbounds [8 x i8], ptr %56, i64 0, i64 %747
  store i8 1, ptr %748, align 1, !tbaa !67
  br label %749

749:                                              ; preds = %743
  %750 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  br label %738, !llvm.loop !76

751:                                              ; preds = %738
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #13
  store i32 0, ptr %60, align 4, !tbaa !13
  br label %752

752:                                              ; preds = %771, %751
  %753 = load i32, ptr %60, align 4, !tbaa !13
  %754 = icmp ult i32 %753, 8
  br i1 %754, label %756, label %755

755:                                              ; preds = %752
  store i32 43, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #13
  br label %778

756:                                              ; preds = %752
  %757 = load i32, ptr %60, align 4, !tbaa !13
  %758 = zext i32 %757 to i64
  %759 = getelementptr inbounds [8 x i8], ptr %56, i64 0, i64 %758
  %760 = load i8, ptr %759, align 1, !tbaa !67, !range !69, !noundef !70
  %761 = trunc i8 %760 to i1
  br i1 %761, label %762, label %763

762:                                              ; preds = %756
  br label %771

763:                                              ; preds = %756
  %764 = load ptr, ptr %37, align 8, !tbaa !5
  %765 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE12emplace_backIJEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %764)
          to label %766 unwind label %774

766:                                              ; preds = %763
  %767 = load i32, ptr %60, align 4, !tbaa !13
  %768 = load ptr, ptr %37, align 8, !tbaa !5
  %769 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %768) #13
  %770 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %769, i32 0, i32 1
  store i32 %767, ptr %770, align 4, !tbaa !28
  br label %771

771:                                              ; preds = %766, %762
  %772 = load i32, ptr %60, align 4, !tbaa !13
  %773 = add i32 %772, 1
  store i32 %773, ptr %60, align 4, !tbaa !13
  br label %752, !llvm.loop !77

774:                                              ; preds = %763
  %775 = landingpad { ptr, i32 }
          cleanup
  %776 = extractvalue { ptr, i32 } %775, 0
  store ptr %776, ptr %7, align 8
  %777 = extractvalue { ptr, i32 } %775, 1
  store i32 %777, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #13
  br label %1135

778:                                              ; preds = %755
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #13
  %779 = load ptr, ptr %37, align 8, !tbaa !5
  %780 = call noundef i64 @_ZNKSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %779) #13
  %781 = trunc i64 %780 to i32
  store i32 %781, ptr %61, align 4, !tbaa !13
  %782 = load i32, ptr %61, align 4, !tbaa !13
  %783 = icmp ugt i32 %782, 8
  br i1 %783, label %784, label %803

784:                                              ; preds = %778
  %785 = invoke noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv()
          to label %786 unwind label %794

786:                                              ; preds = %784
  br i1 %785, label %802, label %787

787:                                              ; preds = %786
  %788 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %789 unwind label %794

789:                                              ; preds = %787
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #13
  %790 = load ptr, ptr %37, align 8, !tbaa !5
  %791 = call noundef i64 @_ZNKSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %790) #13
  %792 = trunc i64 %791 to i32
  store i32 %792, ptr %62, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #13
  store i32 8, ptr %63, align 4, !tbaa !13
  invoke void @_ZN6Assimp6Logger5errorIJjRA32_KciRA11_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %788, ptr noundef nonnull align 4 dereferenceable(4) %62, ptr noundef nonnull align 1 dereferenceable(32) @.str.19, ptr noundef nonnull align 4 dereferenceable(4) %63, ptr noundef nonnull align 1 dereferenceable(11) @.str.20)
          to label %793 unwind label %798

793:                                              ; preds = %789
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #13
  br label %802

794:                                              ; preds = %787, %784
  %795 = landingpad { ptr, i32 }
          cleanup
  %796 = extractvalue { ptr, i32 } %795, 0
  store ptr %796, ptr %7, align 8
  %797 = extractvalue { ptr, i32 } %795, 1
  store i32 %797, ptr %8, align 4
  br label %1134

798:                                              ; preds = %789
  %799 = landingpad { ptr, i32 }
          cleanup
  %800 = extractvalue { ptr, i32 } %799, 0
  store ptr %800, ptr %7, align 8
  %801 = extractvalue { ptr, i32 } %799, 1
  store i32 %801, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #13
  br label %1134

802:                                              ; preds = %793, %786
  store i32 8, ptr %61, align 4, !tbaa !13
  br label %803

803:                                              ; preds = %802, %778
  call void @llvm.lifetime.start.p0(i64 64, ptr %64) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #13
  store i32 0, ptr %65, align 4, !tbaa !13
  br label %804

804:                                              ; preds = %818, %803
  %805 = load i32, ptr %65, align 4, !tbaa !13
  %806 = icmp ult i32 %805, 8
  br i1 %806, label %808, label %807

807:                                              ; preds = %804
  store i32 46, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #13
  br label %821

808:                                              ; preds = %804
  %809 = load ptr, ptr %36, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.aiMesh, ptr %809, i32 0, i32 8
  %811 = load i32, ptr %65, align 4, !tbaa !13
  %812 = zext i32 %811 to i64
  %813 = getelementptr inbounds [8 x ptr], ptr %810, i64 0, i64 %812
  %814 = load ptr, ptr %813, align 8, !tbaa !5
  %815 = load i32, ptr %65, align 4, !tbaa !13
  %816 = zext i32 %815 to i64
  %817 = getelementptr inbounds [8 x ptr], ptr %64, i64 0, i64 %816
  store ptr %814, ptr %817, align 8, !tbaa !5
  br label %818

818:                                              ; preds = %808
  %819 = load i32, ptr %65, align 4, !tbaa !13
  %820 = add i32 %819, 1
  store i32 %820, ptr %65, align 4, !tbaa !13
  br label %804, !llvm.loop !78

821:                                              ; preds = %807
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #13
  %822 = load ptr, ptr %37, align 8, !tbaa !5
  %823 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %822) #13
  %824 = getelementptr inbounds %"struct.std::_List_iterator", ptr %66, i32 0, i32 0
  store ptr %823, ptr %824, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %66, i64 8, i1 false), !tbaa.struct !62
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #13
  store i32 0, ptr %67, align 4, !tbaa !13
  br label %825

825:                                              ; preds = %1120, %821
  %826 = load i32, ptr %67, align 4, !tbaa !13
  %827 = zext i32 %826 to i64
  %828 = load ptr, ptr %37, align 8, !tbaa !5
  %829 = call noundef i64 @_ZNKSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %828) #13
  %830 = icmp ult i64 %827, %829
  br i1 %830, label %832, label %831

831:                                              ; preds = %825
  store i32 49, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #13
  br label %1126

832:                                              ; preds = %825
  %833 = load i32, ptr %67, align 4, !tbaa !13
  %834 = load i32, ptr %61, align 4, !tbaa !13
  %835 = icmp uge i32 %833, %834
  br i1 %835, label %836, label %845

836:                                              ; preds = %832
  %837 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %838 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %837, i32 0, i32 5
  %839 = load i32, ptr %42, align 4, !tbaa !13
  invoke void @_Z13UpdateUVIndexRKNSt7__cxx114listIN6Assimp12TTUpdateInfoESaIS2_EEEj(ptr noundef nonnull align 8 dereferenceable(24) %838, i32 noundef %839)
          to label %840 unwind label %841

840:                                              ; preds = %836
  br label %1120

841:                                              ; preds = %956, %931, %891, %888, %883, %850, %845, %836
  %842 = landingpad { ptr, i32 }
          cleanup
  %843 = extractvalue { ptr, i32 } %842, 0
  store ptr %843, ptr %7, align 8
  %844 = extractvalue { ptr, i32 } %842, 1
  store i32 %844, ptr %8, align 4
  br label %1125

845:                                              ; preds = %832
  %846 = load i32, ptr %32, align 4, !tbaa !13
  %847 = add i32 %846, 1
  store i32 %847, ptr %32, align 4, !tbaa !13
  %848 = invoke noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv()
          to label %849 unwind label %841

849:                                              ; preds = %845
  br i1 %848, label %893, label %850

850:                                              ; preds = %849
  %851 = getelementptr inbounds [1024 x i8], ptr %31, i64 0, i64 0
  %852 = load i32, ptr %35, align 4, !tbaa !13
  %853 = load i32, ptr %67, align 4, !tbaa !13
  %854 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %855 = getelementptr inbounds %struct.aiUVTransform, ptr %854, i32 0, i32 0
  %856 = getelementptr inbounds %class.aiVector2t, ptr %855, i32 0, i32 0
  %857 = load float, ptr %856, align 8, !tbaa !79
  %858 = fpext float %857 to double
  %859 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %860 = getelementptr inbounds %struct.aiUVTransform, ptr %859, i32 0, i32 0
  %861 = getelementptr inbounds %class.aiVector2t, ptr %860, i32 0, i32 1
  %862 = load float, ptr %861, align 4, !tbaa !80
  %863 = fpext float %862 to double
  %864 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %865 = getelementptr inbounds %struct.aiUVTransform, ptr %864, i32 0, i32 1
  %866 = getelementptr inbounds %class.aiVector2t, ptr %865, i32 0, i32 0
  %867 = load float, ptr %866, align 8, !tbaa !81
  %868 = fpext float %867 to double
  %869 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %870 = getelementptr inbounds %struct.aiUVTransform, ptr %869, i32 0, i32 1
  %871 = getelementptr inbounds %class.aiVector2t, ptr %870, i32 0, i32 1
  %872 = load float, ptr %871, align 4, !tbaa !82
  %873 = fpext float %872 to double
  %874 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %875 = getelementptr inbounds %struct.aiUVTransform, ptr %874, i32 0, i32 2
  %876 = load float, ptr %875, align 8, !tbaa !51
  %877 = fmul float %876, 0x404CA5DC20000000
  %878 = fpext float %877 to double
  %879 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %880 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %879, i32 0, i32 2
  %881 = load i32, ptr %880, align 8, !tbaa !42
  %882 = invoke noundef ptr @_ZL17MappingModeToChar16aiTextureMapMode(i32 noundef %881)
          to label %883 unwind label %841

883:                                              ; preds = %850
  %884 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %885 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %884, i32 0, i32 3
  %886 = load i32, ptr %885, align 4, !tbaa !43
  %887 = invoke noundef ptr @_ZL17MappingModeToChar16aiTextureMapMode(i32 noundef %886)
          to label %888 unwind label %841

888:                                              ; preds = %883
  %889 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %851, i64 noundef 1024, ptr noundef @.str.21, i32 noundef %852, i32 noundef %853, double noundef %858, double noundef %863, double noundef %868, double noundef %873, double noundef %878, ptr noundef %882, ptr noundef %887) #13
  %890 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %891 unwind label %841

891:                                              ; preds = %888
  invoke void @_ZN6Assimp6Logger4infoIJRA1024_cEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %890, ptr noundef nonnull align 1 dereferenceable(1024) %31)
          to label %892 unwind label %841

892:                                              ; preds = %891
  br label %893

893:                                              ; preds = %892, %849
  %894 = load ptr, ptr %36, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.aiMesh, ptr %894, i32 0, i32 8
  %896 = load i32, ptr %67, align 4, !tbaa !13
  %897 = zext i32 %896 to i64
  %898 = getelementptr inbounds [8 x ptr], ptr %895, i64 0, i64 %897
  %899 = load ptr, ptr %898, align 8, !tbaa !5
  %900 = icmp ne ptr %899, null
  br i1 %900, label %901, label %956

901:                                              ; preds = %893
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %44, ptr align 8 %43, i64 8, i1 false), !tbaa.struct !62
  %902 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #13
  %903 = load i32, ptr %67, align 4, !tbaa !13
  %904 = add i32 %903, 1
  store i32 %904, ptr %68, align 4, !tbaa !13
  br label %905

905:                                              ; preds = %921, %901
  %906 = load i32, ptr %68, align 4, !tbaa !13
  %907 = load i32, ptr %61, align 4, !tbaa !13
  %908 = icmp ult i32 %906, %907
  br i1 %908, label %910, label %909

909:                                              ; preds = %905
  store i32 52, ptr %10, align 4
  br label %925

910:                                              ; preds = %905
  %911 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #13
  %912 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %911, i32 0, i32 1
  %913 = load i32, ptr %912, align 4, !tbaa !28
  %914 = load i32, ptr %67, align 4, !tbaa !13
  %915 = icmp eq i32 %913, %914
  br i1 %915, label %916, label %920

916:                                              ; preds = %910
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #13
  %917 = load ptr, ptr %37, align 8, !tbaa !5
  %918 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %917) #13
  %919 = getelementptr inbounds %"struct.std::_List_iterator", ptr %69, i32 0, i32 0
  store ptr %918, ptr %919, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %44, ptr align 8 %69, i64 8, i1 false), !tbaa.struct !62
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #13
  store i32 52, ptr %10, align 4
  br label %925

920:                                              ; preds = %910
  br label %921

921:                                              ; preds = %920
  %922 = load i32, ptr %68, align 4, !tbaa !13
  %923 = add i32 %922, 1
  store i32 %923, ptr %68, align 4, !tbaa !13
  %924 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #13
  br label %905, !llvm.loop !83

925:                                              ; preds = %916, %909
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #13
  br label %926

926:                                              ; preds = %925
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #13
  %927 = load ptr, ptr %37, align 8, !tbaa !5
  %928 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %927) #13
  %929 = getelementptr inbounds %"struct.std::_List_iterator", ptr %70, i32 0, i32 0
  store ptr %928, ptr %929, align 8
  %930 = call noundef zeroext i1 @_ZSteqRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %70) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #13
  br i1 %930, label %931, label %955

931:                                              ; preds = %926
  %932 = load ptr, ptr %36, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.aiMesh, ptr %932, i32 0, i32 1
  %934 = load i32, ptr %933, align 4, !tbaa !84
  %935 = zext i32 %934 to i64
  %936 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %935, i64 12)
  %937 = extractvalue { i64, i1 } %936, 1
  %938 = extractvalue { i64, i1 } %936, 0
  %939 = select i1 %937, i64 -1, i64 %938
  %940 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %939) #16
          to label %941 unwind label %841

941:                                              ; preds = %931
  %942 = icmp eq i64 %935, 0
  br i1 %942, label %949, label %943

943:                                              ; preds = %941
  %944 = getelementptr inbounds %class.aiVector3t, ptr %940, i64 %935
  br label %945

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

949:                                              ; preds = %945, %941
  %950 = load ptr, ptr %36, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.aiMesh, ptr %950, i32 0, i32 8
  %952 = load i32, ptr %67, align 4, !tbaa !13
  %953 = zext i32 %952 to i64
  %954 = getelementptr inbounds [8 x ptr], ptr %951, i64 0, i64 %953
  store ptr %940, ptr %954, align 8, !tbaa !5
  br label %955

955:                                              ; preds = %949, %926
  br label %980

956:                                              ; preds = %893
  %957 = load ptr, ptr %36, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.aiMesh, ptr %957, i32 0, i32 1
  %959 = load i32, ptr %958, align 4, !tbaa !84
  %960 = zext i32 %959 to i64
  %961 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %960, i64 12)
  %962 = extractvalue { i64, i1 } %961, 1
  %963 = extractvalue { i64, i1 } %961, 0
  %964 = select i1 %962, i64 -1, i64 %963
  %965 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %964) #16
          to label %966 unwind label %841

966:                                              ; preds = %956
  %967 = icmp eq i64 %960, 0
  br i1 %967, label %974, label %968

968:                                              ; preds = %966
  %969 = getelementptr inbounds %class.aiVector3t, ptr %965, i64 %960
  br label %970

970:                                              ; preds = %970, %968
  %971 = phi ptr [ %965, %968 ], [ %972, %970 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %971) #13
  %972 = getelementptr inbounds %class.aiVector3t, ptr %971, i64 1
  %973 = icmp eq ptr %972, %969
  br i1 %973, label %974, label %970

974:                                              ; preds = %970, %966
  %975 = load ptr, ptr %36, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.aiMesh, ptr %975, i32 0, i32 8
  %977 = load i32, ptr %67, align 4, !tbaa !13
  %978 = zext i32 %977 to i64
  %979 = getelementptr inbounds [8 x ptr], ptr %976, i64 0, i64 %978
  store ptr %965, ptr %979, align 8, !tbaa !5
  br label %980

980:                                              ; preds = %974, %955
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #13
  %981 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %982 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %981, i32 0, i32 1
  %983 = load i32, ptr %982, align 4, !tbaa !28
  %984 = zext i32 %983 to i64
  %985 = getelementptr inbounds [8 x ptr], ptr %64, i64 0, i64 %984
  %986 = load ptr, ptr %985, align 8, !tbaa !5
  store ptr %986, ptr %71, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #13
  %987 = load ptr, ptr %36, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.aiMesh, ptr %987, i32 0, i32 8
  %989 = load i32, ptr %67, align 4, !tbaa !13
  %990 = zext i32 %989 to i64
  %991 = getelementptr inbounds [8 x ptr], ptr %988, i64 0, i64 %990
  %992 = load ptr, ptr %991, align 8, !tbaa !5
  store ptr %992, ptr %72, align 8, !tbaa !5
  %993 = load ptr, ptr %71, align 8, !tbaa !5
  %994 = icmp ne ptr null, %993
  br i1 %994, label %997, label %995

995:                                              ; preds = %980
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.22, ptr noundef @.str.16, i32 noundef 491)
          to label %996 unwind label %1010

996:                                              ; preds = %995
  br label %997

997:                                              ; preds = %996, %980
  %998 = phi i1 [ true, %980 ], [ false, %996 ]
  %999 = load ptr, ptr %72, align 8, !tbaa !5
  %1000 = load ptr, ptr %71, align 8, !tbaa !5
  %1001 = icmp ne ptr %999, %1000
  br i1 %1001, label %1002, label %1014

1002:                                             ; preds = %997
  %1003 = load ptr, ptr %72, align 8, !tbaa !5
  %1004 = load ptr, ptr %71, align 8, !tbaa !5
  %1005 = load ptr, ptr %36, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct.aiMesh, ptr %1005, i32 0, i32 1
  %1007 = load i32, ptr %1006, align 4, !tbaa !84
  %1008 = zext i32 %1007 to i64
  %1009 = mul i64 12, %1008
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1003, ptr align 4 %1004, i64 %1009, i1 false)
  br label %1014

1010:                                             ; preds = %1115, %1014, %995
  %1011 = landingpad { ptr, i32 }
          cleanup
  %1012 = extractvalue { ptr, i32 } %1011, 0
  store ptr %1012, ptr %7, align 8
  %1013 = extractvalue { ptr, i32 } %1011, 1
  store i32 %1013, ptr %8, align 4
  br label %1124

1014:                                             ; preds = %1002, %997
  %1015 = load ptr, ptr %72, align 8, !tbaa !5
  %1016 = load ptr, ptr %36, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.aiMesh, ptr %1016, i32 0, i32 1
  %1018 = load i32, ptr %1017, align 4, !tbaa !84
  %1019 = zext i32 %1018 to i64
  %1020 = getelementptr inbounds %class.aiVector3t, ptr %1015, i64 %1019
  store ptr %1020, ptr %73, align 8, !tbaa !5
  %1021 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %1022 = invoke noundef zeroext i1 @_ZNK6Assimp17STransformVecInfo15IsUntransformedEv(ptr noundef nonnull align 8 dereferenceable(64) %1021)
          to label %1023 unwind label %1010

1023:                                             ; preds = %1014
  br i1 %1022, label %1115, label %1024

1024:                                             ; preds = %1023
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #13
  %1025 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %1026 = getelementptr inbounds %struct.aiUVTransform, ptr %1025, i32 0, i32 0
  store ptr %1026, ptr %74, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #13
  %1027 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %1028 = getelementptr inbounds %struct.aiUVTransform, ptr %1027, i32 0, i32 1
  store ptr %1028, ptr %75, align 8, !tbaa !5
  %1029 = load i32, ptr %34, align 4, !tbaa !13
  %1030 = add i32 %1029, 1
  store i32 %1030, ptr %34, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 36, ptr %76) #13
  call void @_ZN12aiMatrix3x3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(36) %76) #13
  call void @llvm.lifetime.start.p0(i64 36, ptr %77) #13
  call void @_ZN12aiMatrix3x3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(36) %77) #13
  call void @llvm.lifetime.start.p0(i64 36, ptr %78) #13
  call void @_ZN12aiMatrix3x3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(36) %78) #13
  call void @llvm.lifetime.start.p0(i64 36, ptr %79) #13
  call void @_ZN12aiMatrix3x3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(36) %79) #13
  call void @llvm.lifetime.start.p0(i64 36, ptr %80) #13
  call void @_ZN12aiMatrix3x3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(36) %80) #13
  %1031 = load ptr, ptr %75, align 8, !tbaa !5
  %1032 = getelementptr inbounds %class.aiVector2t, ptr %1031, i32 0, i32 0
  %1033 = load float, ptr %1032, align 4, !tbaa !85
  %1034 = getelementptr inbounds %class.aiMatrix3x3t, ptr %79, i32 0, i32 0
  store float %1033, ptr %1034, align 4, !tbaa !86
  %1035 = load ptr, ptr %75, align 8, !tbaa !5
  %1036 = getelementptr inbounds %class.aiVector2t, ptr %1035, i32 0, i32 1
  %1037 = load float, ptr %1036, align 4, !tbaa !88
  %1038 = getelementptr inbounds %class.aiMatrix3x3t, ptr %79, i32 0, i32 4
  store float %1037, ptr %1038, align 4, !tbaa !89
  %1039 = getelementptr inbounds %class.aiMatrix3x3t, ptr %77, i32 0, i32 5
  store float 5.000000e-01, ptr %1039, align 4, !tbaa !90
  %1040 = getelementptr inbounds %class.aiMatrix3x3t, ptr %77, i32 0, i32 2
  store float 5.000000e-01, ptr %1040, align 4, !tbaa !91
  %1041 = getelementptr inbounds %class.aiMatrix3x3t, ptr %78, i32 0, i32 5
  store float -5.000000e-01, ptr %1041, align 4, !tbaa !90
  %1042 = getelementptr inbounds %class.aiMatrix3x3t, ptr %78, i32 0, i32 2
  store float -5.000000e-01, ptr %1042, align 4, !tbaa !91
  %1043 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %1044 = getelementptr inbounds %struct.aiUVTransform, ptr %1043, i32 0, i32 2
  %1045 = load float, ptr %1044, align 8, !tbaa !51
  %1046 = fcmp ogt float %1045, 0x3F81DF46A0000000
  br i1 %1046, label %1047, label %1057

1047:                                             ; preds = %1024
  %1048 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %1049 = getelementptr inbounds %struct.aiUVTransform, ptr %1048, i32 0, i32 2
  %1050 = load float, ptr %1049, align 8, !tbaa !51
  %1051 = invoke noundef nonnull align 4 dereferenceable(36) ptr @_ZN12aiMatrix3x3tIfE9RotationZEfRS0_(float noundef %1050, ptr noundef nonnull align 4 dereferenceable(36) %76)
          to label %1052 unwind label %1053

1052:                                             ; preds = %1047
  br label %1057

1053:                                             ; preds = %1047
  %1054 = landingpad { ptr, i32 }
          cleanup
  %1055 = extractvalue { ptr, i32 } %1054, 0
  store ptr %1055, ptr %7, align 8
  %1056 = extractvalue { ptr, i32 } %1054, 1
  store i32 %1056, ptr %8, align 4
  br label %1114

1057:                                             ; preds = %1052, %1024
  %1058 = load ptr, ptr %74, align 8, !tbaa !5
  %1059 = getelementptr inbounds %class.aiVector2t, ptr %1058, i32 0, i32 0
  %1060 = load float, ptr %1059, align 4, !tbaa !85
  %1061 = getelementptr inbounds %class.aiMatrix3x3t, ptr %80, i32 0, i32 2
  %1062 = load float, ptr %1061, align 4, !tbaa !91
  %1063 = fadd float %1062, %1060
  store float %1063, ptr %1061, align 4, !tbaa !91
  %1064 = load ptr, ptr %74, align 8, !tbaa !5
  %1065 = getelementptr inbounds %class.aiVector2t, ptr %1064, i32 0, i32 1
  %1066 = load float, ptr %1065, align 4, !tbaa !88
  %1067 = getelementptr inbounds %class.aiMatrix3x3t, ptr %80, i32 0, i32 5
  %1068 = load float, ptr %1067, align 4, !tbaa !90
  %1069 = fadd float %1068, %1066
  store float %1069, ptr %1067, align 4, !tbaa !90
  call void @llvm.lifetime.start.p0(i64 36, ptr %81) #13
  call void @llvm.lifetime.start.p0(i64 36, ptr %82) #13
  call void @llvm.lifetime.start.p0(i64 36, ptr %83) #13
  call void @llvm.lifetime.start.p0(i64 36, ptr %84) #13
  invoke void @_ZNK12aiMatrix3x3tIfEmlERKS0_(ptr dead_on_unwind writable sret(%class.aiMatrix3x3t) align 4 %84, ptr noundef nonnull align 4 dereferenceable(36) %77, ptr noundef nonnull align 4 dereferenceable(36) %79)
          to label %1070 unwind label %1105

1070:                                             ; preds = %1057
  invoke void @_ZNK12aiMatrix3x3tIfEmlERKS0_(ptr dead_on_unwind writable sret(%class.aiMatrix3x3t) align 4 %83, ptr noundef nonnull align 4 dereferenceable(36) %84, ptr noundef nonnull align 4 dereferenceable(36) %76)
          to label %1071 unwind label %1105

1071:                                             ; preds = %1070
  invoke void @_ZNK12aiMatrix3x3tIfEmlERKS0_(ptr dead_on_unwind writable sret(%class.aiMatrix3x3t) align 4 %82, ptr noundef nonnull align 4 dereferenceable(36) %83, ptr noundef nonnull align 4 dereferenceable(36) %78)
          to label %1072 unwind label %1105

1072:                                             ; preds = %1071
  invoke void @_ZNK12aiMatrix3x3tIfEmlERKS0_(ptr dead_on_unwind writable sret(%class.aiMatrix3x3t) align 4 %81, ptr noundef nonnull align 4 dereferenceable(36) %82, ptr noundef nonnull align 4 dereferenceable(36) %80)
          to label %1073 unwind label %1105

1073:                                             ; preds = %1072
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %76, ptr align 4 %81, i64 36, i1 false), !tbaa.struct !92
  call void @llvm.lifetime.end.p0(i64 36, ptr %84) #13
  call void @llvm.lifetime.end.p0(i64 36, ptr %83) #13
  call void @llvm.lifetime.end.p0(i64 36, ptr %82) #13
  call void @llvm.lifetime.end.p0(i64 36, ptr %81) #13
  %1074 = load ptr, ptr %72, align 8, !tbaa !5
  store ptr %1074, ptr %71, align 8, !tbaa !5
  br label %1075

1075:                                             ; preds = %1102, %1073
  %1076 = load ptr, ptr %71, align 8, !tbaa !5
  %1077 = load ptr, ptr %73, align 8, !tbaa !5
  %1078 = icmp ne ptr %1076, %1077
  br i1 %1078, label %1079, label %1113

1079:                                             ; preds = %1075
  %1080 = load ptr, ptr %71, align 8, !tbaa !5
  %1081 = getelementptr inbounds %class.aiVector3t, ptr %1080, i32 0, i32 2
  store float 1.000000e+00, ptr %1081, align 4, !tbaa !93
  call void @llvm.lifetime.start.p0(i64 12, ptr %85) #13
  %1082 = load ptr, ptr %71, align 8, !tbaa !5
  %1083 = invoke { <2 x float>, float } @_ZmlIfE10aiVector3tIT_ERK12aiMatrix3x3tIS1_ERKS2_(ptr noundef nonnull align 4 dereferenceable(36) %76, ptr noundef nonnull align 4 dereferenceable(12) %1082)
          to label %1084 unwind label %1109

1084:                                             ; preds = %1079
  store { <2 x float>, float } %1083, ptr %86, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %85, ptr align 8 %86, i64 12, i1 false)
  %1085 = load ptr, ptr %71, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1085, ptr align 4 %85, i64 12, i1 false), !tbaa.struct !94
  call void @llvm.lifetime.end.p0(i64 12, ptr %85) #13
  %1086 = load ptr, ptr %71, align 8, !tbaa !5
  %1087 = getelementptr inbounds %class.aiVector3t, ptr %1086, i32 0, i32 2
  %1088 = load float, ptr %1087, align 4, !tbaa !93
  %1089 = load ptr, ptr %71, align 8, !tbaa !5
  %1090 = getelementptr inbounds %class.aiVector3t, ptr %1089, i32 0, i32 0
  %1091 = load float, ptr %1090, align 4, !tbaa !95
  %1092 = fdiv float %1091, %1088
  store float %1092, ptr %1090, align 4, !tbaa !95
  %1093 = load ptr, ptr %71, align 8, !tbaa !5
  %1094 = getelementptr inbounds %class.aiVector3t, ptr %1093, i32 0, i32 2
  %1095 = load float, ptr %1094, align 4, !tbaa !93
  %1096 = load ptr, ptr %71, align 8, !tbaa !5
  %1097 = getelementptr inbounds %class.aiVector3t, ptr %1096, i32 0, i32 1
  %1098 = load float, ptr %1097, align 4, !tbaa !96
  %1099 = fdiv float %1098, %1095
  store float %1099, ptr %1097, align 4, !tbaa !96
  %1100 = load ptr, ptr %71, align 8, !tbaa !5
  %1101 = getelementptr inbounds %class.aiVector3t, ptr %1100, i32 0, i32 2
  store float 0.000000e+00, ptr %1101, align 4, !tbaa !93
  br label %1102

1102:                                             ; preds = %1084
  %1103 = load ptr, ptr %71, align 8, !tbaa !5
  %1104 = getelementptr inbounds %class.aiVector3t, ptr %1103, i32 1
  store ptr %1104, ptr %71, align 8, !tbaa !5
  br label %1075, !llvm.loop !97

1105:                                             ; preds = %1072, %1071, %1070, %1057
  %1106 = landingpad { ptr, i32 }
          cleanup
  %1107 = extractvalue { ptr, i32 } %1106, 0
  store ptr %1107, ptr %7, align 8
  %1108 = extractvalue { ptr, i32 } %1106, 1
  store i32 %1108, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 36, ptr %84) #13
  call void @llvm.lifetime.end.p0(i64 36, ptr %83) #13
  call void @llvm.lifetime.end.p0(i64 36, ptr %82) #13
  call void @llvm.lifetime.end.p0(i64 36, ptr %81) #13
  br label %1114

1109:                                             ; preds = %1079
  %1110 = landingpad { ptr, i32 }
          cleanup
  %1111 = extractvalue { ptr, i32 } %1110, 0
  store ptr %1111, ptr %7, align 8
  %1112 = extractvalue { ptr, i32 } %1110, 1
  store i32 %1112, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %85) #13
  br label %1114

1113:                                             ; preds = %1075
  call void @llvm.lifetime.end.p0(i64 36, ptr %80) #13
  call void @llvm.lifetime.end.p0(i64 36, ptr %79) #13
  call void @llvm.lifetime.end.p0(i64 36, ptr %78) #13
  call void @llvm.lifetime.end.p0(i64 36, ptr %77) #13
  call void @llvm.lifetime.end.p0(i64 36, ptr %76) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #13
  br label %1115

1114:                                             ; preds = %1109, %1105, %1053
  call void @llvm.lifetime.end.p0(i64 36, ptr %80) #13
  call void @llvm.lifetime.end.p0(i64 36, ptr %79) #13
  call void @llvm.lifetime.end.p0(i64 36, ptr %78) #13
  call void @llvm.lifetime.end.p0(i64 36, ptr %77) #13
  call void @llvm.lifetime.end.p0(i64 36, ptr %76) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #13
  br label %1124

1115:                                             ; preds = %1113, %1023
  %1116 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  %1117 = getelementptr inbounds %"struct.Assimp::STransformVecInfo", ptr %1116, i32 0, i32 5
  %1118 = load i32, ptr %67, align 4, !tbaa !13
  invoke void @_Z13UpdateUVIndexRKNSt7__cxx114listIN6Assimp12TTUpdateInfoESaIS2_EEEj(ptr noundef nonnull align 8 dereferenceable(24) %1117, i32 noundef %1118)
          to label %1119 unwind label %1010

1119:                                             ; preds = %1115
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #13
  br label %1120

1120:                                             ; preds = %1119, %840
  %1121 = load i32, ptr %67, align 4, !tbaa !13
  %1122 = add i32 %1121, 1
  store i32 %1122, ptr %67, align 4, !tbaa !13
  %1123 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  br label %825, !llvm.loop !98

1124:                                             ; preds = %1114, %1010
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #13
  br label %1125

1125:                                             ; preds = %1124, %841
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr %64) #13
  br label %1134

1126:                                             ; preds = %831
  call void @llvm.lifetime.end.p0(i64 64, ptr %64) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #13
  store i32 0, ptr %10, align 4
  br label %1127

1127:                                             ; preds = %1126, %653
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #13
  br label %1128

1128:                                             ; preds = %1127, %562
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #13
  %1129 = load i32, ptr %10, align 4
  switch i32 %1129, label %1166 [
    i32 0, label %1130
    i32 25, label %1131
  ]

1130:                                             ; preds = %1128
  br label %1131

1131:                                             ; preds = %1130, %1128
  %1132 = load i32, ptr %35, align 4, !tbaa !13
  %1133 = add i32 %1132, 1
  store i32 %1133, ptr %35, align 4, !tbaa !13
  br label %513, !llvm.loop !99

1134:                                             ; preds = %1125, %798, %794
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #13
  br label %1135

1135:                                             ; preds = %1134, %774
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #13
  br label %1136

1136:                                             ; preds = %1135, %625, %587
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #13
  br label %1137

1137:                                             ; preds = %1136, %569, %565
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #13
  br label %1158

1138:                                             ; preds = %519
  %1139 = invoke noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv()
          to label %1140 unwind label %1148

1140:                                             ; preds = %1138
  br i1 %1139, label %1157, label %1141

1141:                                             ; preds = %1140
  %1142 = load i32, ptr %34, align 4, !tbaa !13
  %1143 = icmp ne i32 %1142, 0
  br i1 %1143, label %1144, label %1152

1144:                                             ; preds = %1141
  %1145 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %1146 unwind label %1148

1146:                                             ; preds = %1144
  invoke void @_ZN6Assimp6Logger4infoIJRA31_KcRjRA23_S2_S5_RA13_S2_S5_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %1145, ptr noundef nonnull align 1 dereferenceable(31) @.str.23, ptr noundef nonnull align 4 dereferenceable(4) %32, ptr noundef nonnull align 1 dereferenceable(23) @.str.24, ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull align 1 dereferenceable(13) @.str.25, ptr noundef nonnull align 4 dereferenceable(4) %34, ptr noundef nonnull align 1 dereferenceable(2) @.str.26)
          to label %1147 unwind label %1148

1147:                                             ; preds = %1146
  br label %1156

1148:                                             ; preds = %1154, %1152, %1146, %1144, %1138
  %1149 = landingpad { ptr, i32 }
          cleanup
  %1150 = extractvalue { ptr, i32 } %1149, 0
  store ptr %1150, ptr %7, align 8
  %1151 = extractvalue { ptr, i32 } %1149, 1
  store i32 %1151, ptr %8, align 4
  br label %1158

1152:                                             ; preds = %1141
  %1153 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %1154 unwind label %1148

1154:                                             ; preds = %1152
  invoke void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %1153, ptr noundef @.str.27)
          to label %1155 unwind label %1148

1155:                                             ; preds = %1154
  br label %1156

1156:                                             ; preds = %1155, %1147
  br label %1157

1157:                                             ; preds = %1156, %1140
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #13
  call void @llvm.lifetime.end.p0(i64 1024, ptr %31) #13
  call void @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %5) #13
  ret void

1158:                                             ; preds = %1148, %1137
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #13
  call void @llvm.lifetime.end.p0(i64 1024, ptr %31) #13
  br label %1159

1159:                                             ; preds = %1158, %500
  call void @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #13
  br label %1160

1160:                                             ; preds = %1159, %101
  call void @llvm.lifetime.end.p0(i64 24, ptr %5) #13
  br label %1161

1161:                                             ; preds = %1160
  %1162 = load ptr, ptr %7, align 8
  %1163 = load i32, ptr %8, align 4
  %1164 = insertvalue { ptr, i32 } poison, ptr %1162, 0
  %1165 = insertvalue { ptr, i32 } %1164, i32 %1163, 1
  resume { ptr, i32 } %1165

1166:                                             ; preds = %1128, %502, %489, %285
  unreachable
}

declare void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) #2

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Assimp17STransformVecInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #5 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN18aiMaterialPropertyD2Ev(ptr noundef nonnull align 8 dereferenceable(1056)) unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6Assimp17STransformVecInfoeqERKS0_(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(64)) #10 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx114listIN6Assimp12TTUpdateInfoESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24), 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 @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6Assimp17STransformVecInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #9 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6aiMesh16GetNumUVChannelsEv(ptr noundef nonnull align 8 dereferenceable(1320)) #5 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6Assimp17STransformVecInfo15IsUntransformedEv(ptr noundef nonnull align 8 dereferenceable(64)) #9 align 2

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

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

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

declare void @_ZN6Assimp6Logger5errorEPKc(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZSt4swapIN6Assimp17STransformVecInfoEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(64)) #9

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

declare noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv() #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6Logger5errorIJjRA32_KciRA11_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(11)) #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef ptr @_ZL17MappingModeToChar16aiTextureMapMode(i32 noundef) #9

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6Logger4infoIJRA1024_cEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 1 dereferenceable(1024)) #0 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN12aiMatrix3x3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(36)) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(36) ptr @_ZN12aiMatrix3x3tIfE9RotationZEfRS0_(float noundef, ptr noundef nonnull align 4 dereferenceable(36)) #10 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK12aiMatrix3x3tIfEmlERKS0_(ptr dead_on_unwind noalias writable sret(%class.aiMatrix3x3t) align 4, ptr noundef nonnull align 4 dereferenceable(36), ptr noundef nonnull align 4 dereferenceable(36)) #10 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6Logger4infoIJRA31_KcRjRA23_S2_S5_RA13_S2_S5_RA2_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(23), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(13), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(2)) #0 align 2

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

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

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

!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, !11, i64 16}
!10 = !{!"_ZTS7aiScene", !11, i64 0, !6, i64 8, !11, i64 16, !6, i64 24, !11, i64 32, !6, i64 40, !11, i64 48, !6, i64 56, !11, i64 64, !6, i64 72, !11, i64 80, !6, i64 88, !11, i64 96, !6, i64 104, !6, i64 112, !12, i64 120, !11, i64 1148, !6, i64 1152, !6, i64 1160}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTS8aiString", !11, i64 0, !7, i64 4}
!13 = !{!11, !11, i64 0}
!14 = !{!10, !11, i64 32}
!15 = !{!10, !6, i64 40}
!16 = !{!17, !11, i64 8}
!17 = !{!"_ZTS10aiMaterial", !6, i64 0, !11, i64 8, !11, i64 12}
!18 = !{!17, !6, i64 0}
!19 = !{!20, !6, i64 8}
!20 = !{!"_ZTSN6Assimp12TTUpdateInfoE", !6, i64 0, !6, i64 8, !11, i64 16, !11, i64 20}
!21 = !{!22, !11, i64 1028}
!22 = !{!"_ZTS18aiMaterialProperty", !12, i64 0, !11, i64 1028, !11, i64 1032, !11, i64 1036, !23, i64 1040, !6, i64 1048}
!23 = !{!"_ZTS18aiPropertyTypeInfo", !7, i64 0}
!24 = !{!20, !11, i64 16}
!25 = !{!22, !11, i64 1032}
!26 = !{!20, !11, i64 20}
!27 = !{!22, !6, i64 1048}
!28 = !{!29, !11, i64 20}
!29 = !{!"_ZTSN6Assimp17STransformVecInfoE", !30, i64 0, !11, i64 20, !33, i64 24, !33, i64 28, !11, i64 32, !34, i64 40}
!30 = !{!"_ZTS13aiUVTransform", !31, i64 0, !31, i64 8, !32, i64 16}
!31 = !{!"_ZTS10aiVector2tIfE", !32, i64 0, !32, i64 4}
!32 = !{!"float", !7, i64 0}
!33 = !{!"_ZTS16aiTextureMapMode", !7, i64 0}
!34 = !{!"_ZTSNSt7__cxx114listIN6Assimp12TTUpdateInfoESaIS2_EEE", !35, i64 0}
!35 = !{!"_ZTSNSt7__cxx1110_List_baseIN6Assimp12TTUpdateInfoESaIS2_EEE", !36, i64 0}
!36 = !{!"_ZTSNSt7__cxx1110_List_baseIN6Assimp12TTUpdateInfoESaIS2_EE10_List_implE", !37, i64 0}
!37 = !{!"_ZTSNSt8__detail17_List_node_headerE", !38, i64 0, !39, i64 16}
!38 = !{!"_ZTSNSt8__detail15_List_node_baseE", !6, i64 0, !6, i64 8}
!39 = !{!"long", !7, i64 0}
!40 = !{!20, !6, i64 0}
!41 = !{!33, !33, i64 0}
!42 = !{!29, !33, i64 24}
!43 = !{!29, !33, i64 28}
!44 = !{!22, !11, i64 1036}
!45 = distinct !{!45, !46}
!46 = !{!"llvm.loop.mustprogress"}
!47 = distinct !{!47, !46}
!48 = !{!49, !11, i64 24}
!49 = !{!"_ZTSN6Assimp20TextureTransformStepE", !50, i64 0, !11, i64 24}
!50 = !{!"_ZTSN6Assimp11BaseProcessE", !6, i64 8, !6, i64 16}
!51 = !{!30, !32, i64 16}
!52 = !{i64 0, i64 4, !53, i64 4, i64 4, !53}
!53 = !{!32, !32, i64 0}
!54 = !{!10, !6, i64 24}
!55 = !{!56, !11, i64 232}
!56 = !{!"_ZTS6aiMesh", !11, i64 0, !11, i64 4, !11, 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, !11, i64 216, !6, i64 224, !11, i64 232, !12, i64 236, !11, i64 1264, !6, i64 1272, !57, i64 1280, !58, i64 1284, !6, i64 1312}
!57 = !{!"_ZTS16aiMorphingMethod", !7, i64 0}
!58 = !{!"_ZTS6aiAABB", !59, i64 0, !59, i64 12}
!59 = !{!"_ZTS10aiVector3tIfE", !32, i64 0, !32, i64 4, !32, i64 8}
!60 = distinct !{!60, !46}
!61 = !{!29, !11, i64 32}
!62 = !{i64 0, i64 8, !5}
!63 = distinct !{!63, !46}
!64 = distinct !{!64, !46}
!65 = distinct !{!65, !46}
!66 = distinct !{!66, !46}
!67 = !{!68, !68, i64 0}
!68 = !{!"bool", !7, i64 0}
!69 = !{i8 0, i8 2}
!70 = !{}
!71 = distinct !{!71, !46}
!72 = distinct !{!72, !46}
!73 = distinct !{!73, !46}
!74 = distinct !{!74, !46}
!75 = distinct !{!75, !46}
!76 = distinct !{!76, !46}
!77 = distinct !{!77, !46}
!78 = distinct !{!78, !46}
!79 = !{!30, !32, i64 0}
!80 = !{!30, !32, i64 4}
!81 = !{!30, !32, i64 8}
!82 = !{!30, !32, i64 12}
!83 = distinct !{!83, !46}
!84 = !{!56, !11, i64 4}
!85 = !{!31, !32, i64 0}
!86 = !{!87, !32, i64 0}
!87 = !{!"_ZTS12aiMatrix3x3tIfE", !32, i64 0, !32, i64 4, !32, i64 8, !32, i64 12, !32, i64 16, !32, i64 20, !32, i64 24, !32, i64 28, !32, i64 32}
!88 = !{!31, !32, i64 4}
!89 = !{!87, !32, i64 16}
!90 = !{!87, !32, i64 20}
!91 = !{!87, !32, i64 8}
!92 = !{i64 0, i64 4, !53, i64 4, i64 4, !53, i64 8, i64 4, !53, i64 12, i64 4, !53, i64 16, i64 4, !53, i64 20, i64 4, !53, i64 24, i64 4, !53, i64 28, i64 4, !53, i64 32, i64 4, !53}
!93 = !{!59, !32, i64 8}
!94 = !{i64 0, i64 4, !53, i64 4, i64 4, !53, i64 8, i64 4, !53}
!95 = !{!59, !32, i64 0}
!96 = !{!59, !32, i64 4}
!97 = distinct !{!97, !46}
!98 = distinct !{!98, !46}
!99 = distinct !{!99, !46}


; 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" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::list<Assimp::STransformVecInfo>, std::allocator<std::__cxx11::list<Assimp::STransformVecInfo>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::list<Assimp::STransformVecInfo>, std::allocator<std::__cxx11::list<Assimp::STransformVecInfo>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::list<Assimp::STransformVecInfo>, std::allocator<std::__cxx11::list<Assimp::STransformVecInfo>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::list<Assimp::STransformVecInfo>, std::allocator<std::__cxx11::list<Assimp::STransformVecInfo>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.0" = type { i8 }
%"struct.Assimp::STransformVecInfo" = type { %struct.aiUVTransform, i32, i32, i32, i32, %"class.std::__cxx11::list" }
%struct.aiUVTransform = type { %class.aiVector2t, %class.aiVector2t, float }
%class.aiVector2t = type { float, float }
%"class.std::__cxx11::list" = type { %"class.std::__cxx11::_List_base" }
%"class.std::__cxx11::_List_base" = type { %"struct.std::__cxx11::_List_base<Assimp::TTUpdateInfo, std::allocator<Assimp::TTUpdateInfo>>::_List_impl" }
%"struct.std::__cxx11::_List_base<Assimp::TTUpdateInfo, std::allocator<Assimp::TTUpdateInfo>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"struct.Assimp::TTUpdateInfo" = type { ptr, ptr, i32, i32 }
%"struct.std::_List_iterator" = type { ptr }
%"struct.std::_List_const_iterator.8" = type { ptr }
%class.aiMatrix3x3t = type { float, float, float, float, float, float, float, float, float }
%class.aiVector3t = type { float, float, float }

@.str.9 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [125 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [34 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp20TextureTransformStep21PreProcessUVTransformERNS_17STransformVecInfoE(ptr noundef nonnull align 8 dereferenceable(28), ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #0 align 2

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

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() local_unnamed_addr #2

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

; Function Attrs: nofree nounwind
declare noundef i32 @snprintf(ptr noalias nocapture noundef writeonly, i64 noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp20TextureTransformStep7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(28) %0, ptr nocapture noundef readonly %1) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::vector", align 8
  %4 = alloca %"class.std::allocator.0", align 1
  %5 = alloca %"struct.Assimp::STransformVecInfo", align 8
  %6 = alloca %"struct.Assimp::TTUpdateInfo", align 8
  %7 = alloca %class.aiVector2t, align 8
  %8 = alloca %class.aiVector2t, align 8
  %9 = alloca i32, align 4
  %10 = alloca %"struct.std::_List_iterator", align 8
  %11 = alloca %"struct.std::_List_iterator", align 8
  %12 = alloca %"struct.std::_List_iterator", align 8
  %13 = alloca [1024 x i8], align 16
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %"struct.std::_List_iterator", align 8
  %18 = alloca %"struct.std::_List_iterator", align 8
  %19 = alloca %"struct.std::_List_iterator", align 8
  %20 = alloca %"struct.std::_List_iterator", align 8
  %21 = alloca %"struct.std::_List_iterator", align 8
  %22 = alloca %"struct.std::_List_const_iterator.8", align 8
  %23 = alloca %"struct.std::_List_const_iterator.8", align 8
  %24 = alloca %"struct.std::_List_iterator", align 8
  %25 = alloca [8 x i8], align 8
  %26 = alloca %"struct.std::_List_iterator", align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca [8 x ptr], align 16
  %30 = alloca %"struct.std::_List_iterator", align 8
  %31 = alloca %class.aiMatrix3x3t, align 4
  %32 = alloca %class.aiMatrix3x3t, align 4
  %33 = alloca %class.aiMatrix3x3t, align 4
  %34 = alloca %class.aiMatrix3x3t, align 4
  %35 = alloca %class.aiMatrix3x3t, align 4
  %36 = alloca %class.aiMatrix3x3t, align 4
  %37 = alloca %class.aiMatrix3x3t, align 4
  %38 = alloca %class.aiMatrix3x3t, align 4
  %39 = alloca %class.aiMatrix3x3t, align 4
  %40 = tail call noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
  tail call void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %40, ptr noundef nonnull @.str.10)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #12
  %41 = getelementptr inbounds i8, ptr %1, i64 16
  %42 = load i32, ptr %41, align 8, !tbaa !5
  %43 = zext i32 %42 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #12
  call void @_ZNSaINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #12
  invoke void @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EEC2EmRKS6_(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %43, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %44 unwind label %74

44:                                               ; preds = %2
  call void @_ZNSt15__new_allocatorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #12
  %45 = getelementptr inbounds i8, ptr %1, i64 32
  %46 = load i32, ptr %45, align 8, !tbaa !12
  %.not370 = icmp eq i32 %46, 0
  br i1 %.not370, label %._crit_edge320, label %.lr.ph319

.lr.ph319:                                        ; preds = %44
  %47 = getelementptr inbounds i8, ptr %1, i64 40
  %48 = getelementptr inbounds i8, ptr %6, i64 8
  %49 = getelementptr inbounds i8, ptr %6, i64 16
  %50 = getelementptr inbounds i8, ptr %5, i64 28
  %51 = getelementptr inbounds i8, ptr %5, i64 24
  %52 = getelementptr inbounds i8, ptr %5, i64 20
  %53 = getelementptr inbounds i8, ptr %0, i64 24
  %54 = getelementptr inbounds i8, ptr %5, i64 16
  %55 = getelementptr inbounds i8, ptr %5, i64 8
  %56 = getelementptr inbounds i8, ptr %1, i64 24
  %57 = getelementptr inbounds i8, ptr %5, i64 32
  br label %76

._crit_edge320:                                   ; preds = %._crit_edge316, %44
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %13) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #12
  store i32 0, ptr %14, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #12
  store i32 0, ptr %15, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #12
  store i32 0, ptr %16, align 4, !tbaa !13
  %58 = load i32, ptr %41, align 8, !tbaa !5
  %.not375 = icmp eq i32 %58, 0
  br i1 %.not375, label %._crit_edge368, label %.lr.ph367

.lr.ph367:                                        ; preds = %._crit_edge320
  %59 = getelementptr inbounds i8, ptr %1, i64 24
  %60 = getelementptr inbounds i8, ptr %34, i64 16
  %61 = getelementptr inbounds i8, ptr %32, i64 20
  %62 = getelementptr inbounds i8, ptr %32, i64 8
  %63 = getelementptr inbounds i8, ptr %33, i64 20
  %64 = getelementptr inbounds i8, ptr %33, i64 8
  %65 = getelementptr inbounds i8, ptr %35, i64 8
  %66 = getelementptr inbounds i8, ptr %35, i64 20
  %67 = getelementptr inbounds i8, ptr %25, i64 1
  %68 = getelementptr inbounds i8, ptr %25, i64 2
  %69 = getelementptr inbounds i8, ptr %25, i64 3
  %70 = getelementptr inbounds i8, ptr %25, i64 4
  %71 = getelementptr inbounds i8, ptr %25, i64 5
  %72 = getelementptr inbounds i8, ptr %25, i64 6
  %73 = getelementptr inbounds i8, ptr %25, i64 7
  br label %301

74:                                               ; preds = %2
  %75 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #12
  br label %699

76:                                               ; preds = %.lr.ph319, %._crit_edge316
  %77 = phi i32 [ %46, %.lr.ph319 ], [ %83, %._crit_edge316 ]
  %indvars.iv391 = phi i64 [ 0, %.lr.ph319 ], [ %indvars.iv.next392, %._crit_edge316 ]
  %78 = load ptr, ptr %47, align 8, !tbaa !14
  %79 = getelementptr inbounds ptr, ptr %78, i64 %indvars.iv391
  %80 = load ptr, ptr %79, align 8, !tbaa !15
  %81 = getelementptr inbounds i8, ptr %80, i64 8
  %82 = load i32, ptr %81, align 8, !tbaa !16
  %.not371 = icmp eq i32 %82, 0
  br i1 %.not371, label %._crit_edge316, label %.lr.ph315

._crit_edge316.loopexit:                          ; preds = %295
  %.pre410 = load i32, ptr %45, align 8, !tbaa !12
  br label %._crit_edge316

._crit_edge316:                                   ; preds = %._crit_edge316.loopexit, %76
  %83 = phi i32 [ %.pre410, %._crit_edge316.loopexit ], [ %77, %76 ]
  %indvars.iv.next392 = add nuw nsw i64 %indvars.iv391, 1
  %84 = zext i32 %83 to i64
  %85 = icmp ult i64 %indvars.iv.next392, %84
  br i1 %85, label %76, label %._crit_edge320, !llvm.loop !18

.lr.ph315:                                        ; preds = %76, %295
  %indvars.iv388 = phi i64 [ %indvars.iv.next389, %295 ], [ 0, %76 ]
  %86 = load ptr, ptr %80, align 8, !tbaa !20
  %87 = getelementptr inbounds ptr, ptr %86, i64 %indvars.iv388
  %88 = load ptr, ptr %87, align 8, !tbaa !15
  %89 = getelementptr inbounds i8, ptr %88, i64 4
  %90 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %89, ptr noundef nonnull dereferenceable(1) @.str.11) #13
  %.not260 = icmp eq i32 %90, 0
  br i1 %.not260, label %91, label %295

91:                                               ; preds = %.lr.ph315
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #12
  call void @_ZN6Assimp17STransformVecInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(64) %5) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #12
  call void @_ZN6Assimp12TTUpdateInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #12
  store ptr %80, ptr %48, align 8, !tbaa !21
  %92 = getelementptr inbounds i8, ptr %88, i64 1028
  %93 = getelementptr inbounds i8, ptr %88, i64 1032
  %94 = load <2 x i32>, ptr %92, align 4, !tbaa !13
  store <2 x i32> %94, ptr %49, align 8, !tbaa !13
  %95 = load i32, ptr %81, align 8, !tbaa !16
  %.not372 = icmp eq i32 %95, 0
  br i1 %.not372, label %._crit_edge301, label %.lr.ph300

._crit_edge301:                                   ; preds = %170, %91
  %96 = load i32, ptr %53, align 8, !tbaa !23
  %97 = and i32 %96, 2
  %.not261 = icmp eq i32 %97, 0
  br i1 %.not261, label %174, label %175

.lr.ph300:                                        ; preds = %91, %170
  %98 = phi i32 [ %171, %170 ], [ %95, %91 ]
  %.0206298 = phi i32 [ %172, %170 ], [ 0, %91 ]
  %99 = load ptr, ptr %80, align 8, !tbaa !20
  %100 = zext i32 %.0206298 to i64
  %101 = getelementptr inbounds ptr, ptr %99, i64 %100
  %102 = load ptr, ptr %101, align 8, !tbaa !15
  %103 = getelementptr inbounds i8, ptr %102, i64 1028
  %104 = load i32, ptr %103, align 4, !tbaa !26
  %105 = load i32, ptr %92, align 4, !tbaa !26
  %.not271 = icmp eq i32 %104, %105
  br i1 %.not271, label %106, label %170

106:                                              ; preds = %.lr.ph300
  %107 = getelementptr inbounds i8, ptr %102, i64 1032
  %108 = load i32, ptr %107, align 8, !tbaa !29
  %109 = load i32, ptr %93, align 8, !tbaa !29
  %.not272 = icmp eq i32 %108, %109
  br i1 %.not272, label %110, label %170

110:                                              ; preds = %106
  %111 = getelementptr inbounds i8, ptr %102, i64 4
  %112 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %111, ptr noundef nonnull dereferenceable(1) @.str.9) #13
  %.not273 = icmp eq i32 %112, 0
  br i1 %.not273, label %113, label %117

113:                                              ; preds = %110
  %114 = getelementptr inbounds i8, ptr %102, i64 1048
  %115 = load ptr, ptr %114, align 8, !tbaa !30
  %116 = load i32, ptr %115, align 4, !tbaa !13
  store i32 %116, ptr %52, align 4, !tbaa !31
  store ptr %115, ptr %6, align 8, !tbaa !43
  br label %170

117:                                              ; preds = %110
  %118 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %111, ptr noundef nonnull dereferenceable(1) @.str.12) #13
  %.not274 = icmp eq i32 %118, 0
  br i1 %.not274, label %119, label %123

119:                                              ; preds = %117
  %120 = getelementptr inbounds i8, ptr %102, i64 1048
  %121 = load ptr, ptr %120, align 8, !tbaa !30
  %122 = load i32, ptr %121, align 4, !tbaa !44
  store i32 %122, ptr %51, align 8, !tbaa !45
  br label %170

123:                                              ; preds = %117
  %124 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %111, ptr noundef nonnull dereferenceable(1) @.str.13) #13
  %.not275 = icmp eq i32 %124, 0
  br i1 %.not275, label %125, label %129

125:                                              ; preds = %123
  %126 = getelementptr inbounds i8, ptr %102, i64 1048
  %127 = load ptr, ptr %126, align 8, !tbaa !30
  %128 = load i32, ptr %127, align 4, !tbaa !44
  store i32 %128, ptr %50, align 4, !tbaa !46
  br label %170

129:                                              ; preds = %123
  %130 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %111, ptr noundef nonnull dereferenceable(1) @.str.14) #13
  %.not276 = icmp eq i32 %130, 0
  br i1 %.not276, label %131, label %170

131:                                              ; preds = %129
  %132 = getelementptr inbounds i8, ptr %102, i64 1036
  %133 = load i32, ptr %132, align 4, !tbaa !47
  %134 = icmp ugt i32 %133, 19
  br i1 %134, label %136, label %135

135:                                              ; preds = %131
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.16, i32 noundef 252)
          to label %136 unwind label %150

136:                                              ; preds = %135, %131
  %137 = getelementptr inbounds i8, ptr %102, i64 1048
  %138 = load ptr, ptr %137, align 8, !tbaa !30
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %5, ptr noundef nonnull align 1 dereferenceable(20) %138, i64 20, i1 false)
  %139 = load i32, ptr %81, align 8, !tbaa !16
  %140 = add i32 %139, -1
  store i32 %140, ptr %81, align 8, !tbaa !16
  %141 = icmp ult i32 %.0206298, %140
  br i1 %141, label %.lr.ph.preheader, label %._crit_edge.thread

.lr.ph.preheader:                                 ; preds = %136
  %wide.trip.count = zext i32 %140 to i64
  %142 = sub nsw i64 %wide.trip.count, %100
  %xtraiter = and i64 %142, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader, %.lr.ph.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %.lr.ph.prol ], [ %100, %.lr.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph.prol ], [ 0, %.lr.ph.preheader ]
  %143 = load ptr, ptr %80, align 8, !tbaa !20
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %144 = getelementptr inbounds ptr, ptr %143, i64 %indvars.iv.next.prol
  %145 = load ptr, ptr %144, align 8, !tbaa !15
  %146 = getelementptr inbounds ptr, ptr %143, i64 %indvars.iv.prol
  store ptr %145, ptr %146, align 8, !tbaa !15
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol, !llvm.loop !48

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader
  %indvars.iv.unr = phi i64 [ %100, %.lr.ph.preheader ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %147 = sub nsw i64 %100, %wide.trip.count
  %148 = icmp ugt i64 %147, -4
  br i1 %148, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %.lr.ph.prol.loopexit
  %149 = icmp eq ptr %102, null
  br i1 %149, label %168, label %._crit_edge.thread

150:                                              ; preds = %135
  %151 = landingpad { ptr, i32 }
          cleanup
  br label %294

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %.lr.ph ], [ %indvars.iv.unr, %.lr.ph.prol.loopexit ]
  %152 = load ptr, ptr %80, align 8, !tbaa !20
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %153 = getelementptr inbounds ptr, ptr %152, i64 %indvars.iv.next
  %154 = load ptr, ptr %153, align 8, !tbaa !15
  %155 = getelementptr inbounds ptr, ptr %152, i64 %indvars.iv
  store ptr %154, ptr %155, align 8, !tbaa !15
  %156 = load ptr, ptr %80, align 8, !tbaa !20
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %157 = getelementptr inbounds ptr, ptr %156, i64 %indvars.iv.next.1
  %158 = load ptr, ptr %157, align 8, !tbaa !15
  %159 = getelementptr inbounds ptr, ptr %156, i64 %indvars.iv.next
  store ptr %158, ptr %159, align 8, !tbaa !15
  %160 = load ptr, ptr %80, align 8, !tbaa !20
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
  %161 = getelementptr inbounds ptr, ptr %160, i64 %indvars.iv.next.2
  %162 = load ptr, ptr %161, align 8, !tbaa !15
  %163 = getelementptr inbounds ptr, ptr %160, i64 %indvars.iv.next.1
  store ptr %162, ptr %163, align 8, !tbaa !15
  %164 = load ptr, ptr %80, align 8, !tbaa !20
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %165 = getelementptr inbounds ptr, ptr %164, i64 %indvars.iv.next.3
  %166 = load ptr, ptr %165, align 8, !tbaa !15
  %167 = getelementptr inbounds ptr, ptr %164, i64 %indvars.iv.next.2
  store ptr %166, ptr %167, align 8, !tbaa !15
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, %wide.trip.count
  br i1 %exitcond.not.3, label %._crit_edge, label %.lr.ph, !llvm.loop !50

._crit_edge.thread:                               ; preds = %136, %._crit_edge
  call void @_ZN18aiMaterialPropertyD2Ev(ptr noundef nonnull align 8 dereferenceable(1056) %102) #12
  call void @_ZdlPvm(ptr noundef nonnull %102, i64 noundef 1056) #14
  %.pre.pre = load i32, ptr %81, align 8, !tbaa !16
  br label %168

168:                                              ; preds = %._crit_edge.thread, %._crit_edge
  %.pre = phi i32 [ %.pre.pre, %._crit_edge.thread ], [ %140, %._crit_edge ]
  %169 = add i32 %.0206298, -1
  br label %170

170:                                              ; preds = %113, %125, %168, %129, %119, %.lr.ph300, %106
  %171 = phi i32 [ %98, %106 ], [ %98, %.lr.ph300 ], [ %98, %129 ], [ %.pre, %168 ], [ %98, %125 ], [ %98, %119 ], [ %98, %113 ]
  %.2208 = phi i32 [ %.0206298, %106 ], [ %.0206298, %.lr.ph300 ], [ %.0206298, %129 ], [ %169, %168 ], [ %.0206298, %125 ], [ %.0206298, %119 ], [ %.0206298, %113 ]
  %172 = add i32 %.2208, 1
  %173 = icmp ult i32 %172, %171
  br i1 %173, label %.lr.ph300, label %._crit_edge301, !llvm.loop !51

174:                                              ; preds = %._crit_edge301
  store float 0.000000e+00, ptr %54, align 8, !tbaa !52
  br label %175

175:                                              ; preds = %174, %._crit_edge301
  %176 = and i32 %96, 1
  %.not262 = icmp eq i32 %176, 0
  br i1 %.not262, label %177, label %179

177:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #12
  call void @_ZN10aiVector2tIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %7, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %178 = load i64, ptr %7, align 8
  store i64 %178, ptr %55, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #12
  %.pre409 = load i32, ptr %53, align 8, !tbaa !23
  br label %179

179:                                              ; preds = %177, %175
  %180 = phi i32 [ %.pre409, %177 ], [ %96, %175 ]
  %181 = and i32 %180, 4
  %.not263 = icmp eq i32 %181, 0
  br i1 %.not263, label %182, label %184

182:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #12
  call void @_ZN10aiVector2tIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %8, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %183 = load i64, ptr %8, align 8
  store i64 %183, ptr %5, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #12
  br label %184

184:                                              ; preds = %182, %179
  invoke void @_ZN6Assimp20TextureTransformStep21PreProcessUVTransformERNS_17STransformVecInfoE(ptr noundef nonnull align 8 dereferenceable(28) %0, ptr noundef nonnull align 8 dereferenceable(64) %5)
          to label %185 unwind label %198

185:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #12
  store i32 7, ptr %9, align 4, !tbaa !13
  %186 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %52, ptr noundef nonnull align 4 dereferenceable(4) %9)
  %187 = load i32, ptr %186, align 4, !tbaa !13
  store i32 %187, ptr %52, align 4, !tbaa !31
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #12
  %188 = load i32, ptr %41, align 8, !tbaa !5
  %.not373 = icmp eq i32 %188, 0
  br i1 %.not373, label %.critedge282, label %.lr.ph305

.lr.ph305:                                        ; preds = %185
  %189 = load ptr, ptr %56, align 8, !tbaa !53
  %wide.trip.count383 = zext i32 %188 to i64
  %xtraiter431 = and i64 %wide.trip.count383, 3
  %190 = icmp ult i32 %188, 4
  br i1 %190, label %._crit_edge306.unr-lcssa, label %.lr.ph305.new

.lr.ph305.new:                                    ; preds = %.lr.ph305
  %unroll_iter = and i64 %wide.trip.count383, 4294967292
  br label %200

._crit_edge306.unr-lcssa:                         ; preds = %200, %.lr.ph305
  %spec.select.lcssa.ph = phi i32 [ poison, %.lr.ph305 ], [ %spec.select.3, %200 ]
  %indvars.iv380.unr = phi i64 [ 0, %.lr.ph305 ], [ %indvars.iv.next381.3, %200 ]
  %.0210303.unr = phi i32 [ 0, %.lr.ph305 ], [ %spec.select.3, %200 ]
  %lcmp.mod432.not = icmp eq i64 %xtraiter431, 0
  br i1 %lcmp.mod432.not, label %._crit_edge306, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge306.unr-lcssa, %.epil.preheader
  %indvars.iv380.epil = phi i64 [ %indvars.iv.next381.epil, %.epil.preheader ], [ %indvars.iv380.unr, %._crit_edge306.unr-lcssa ]
  %.0210303.epil = phi i32 [ %spec.select.epil, %.epil.preheader ], [ %.0210303.unr, %._crit_edge306.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %._crit_edge306.unr-lcssa ]
  %191 = getelementptr inbounds ptr, ptr %189, i64 %indvars.iv380.epil
  %192 = load ptr, ptr %191, align 8, !tbaa !15
  %193 = getelementptr inbounds i8, ptr %192, i64 232
  %194 = load i32, ptr %193, align 8, !tbaa !54
  %195 = zext i32 %194 to i64
  %196 = icmp eq i64 %indvars.iv391, %195
  %197 = zext i1 %196 to i32
  %spec.select.epil = add i32 %.0210303.epil, %197
  %indvars.iv.next381.epil = add nuw nsw i64 %indvars.iv380.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter431
  br i1 %epil.iter.cmp.not, label %._crit_edge306, label %.epil.preheader, !llvm.loop !59

._crit_edge306:                                   ; preds = %.epil.preheader, %._crit_edge306.unr-lcssa
  %spec.select.lcssa = phi i32 [ %spec.select.lcssa.ph, %._crit_edge306.unr-lcssa ], [ %spec.select.epil, %.epil.preheader ]
  switch i32 %spec.select.lcssa, label %229 [
    i32 0, label %.critedge282
    i32 1, label %230
  ]

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

200:                                              ; preds = %200, %.lr.ph305.new
  %indvars.iv380 = phi i64 [ 0, %.lr.ph305.new ], [ %indvars.iv.next381.3, %200 ]
  %.0210303 = phi i32 [ 0, %.lr.ph305.new ], [ %spec.select.3, %200 ]
  %niter = phi i64 [ 0, %.lr.ph305.new ], [ %niter.next.3, %200 ]
  %201 = getelementptr inbounds ptr, ptr %189, i64 %indvars.iv380
  %202 = load ptr, ptr %201, align 8, !tbaa !15
  %203 = getelementptr inbounds i8, ptr %202, i64 232
  %204 = load i32, ptr %203, align 8, !tbaa !54
  %205 = zext i32 %204 to i64
  %206 = icmp eq i64 %indvars.iv391, %205
  %207 = zext i1 %206 to i32
  %spec.select = add i32 %.0210303, %207
  %indvars.iv.next381 = or disjoint i64 %indvars.iv380, 1
  %208 = getelementptr inbounds ptr, ptr %189, i64 %indvars.iv.next381
  %209 = load ptr, ptr %208, align 8, !tbaa !15
  %210 = getelementptr inbounds i8, ptr %209, i64 232
  %211 = load i32, ptr %210, align 8, !tbaa !54
  %212 = zext i32 %211 to i64
  %213 = icmp eq i64 %indvars.iv391, %212
  %214 = zext i1 %213 to i32
  %spec.select.1 = add i32 %spec.select, %214
  %indvars.iv.next381.1 = or disjoint i64 %indvars.iv380, 2
  %215 = getelementptr inbounds ptr, ptr %189, i64 %indvars.iv.next381.1
  %216 = load ptr, ptr %215, align 8, !tbaa !15
  %217 = getelementptr inbounds i8, ptr %216, i64 232
  %218 = load i32, ptr %217, align 8, !tbaa !54
  %219 = zext i32 %218 to i64
  %220 = icmp eq i64 %indvars.iv391, %219
  %221 = zext i1 %220 to i32
  %spec.select.2 = add i32 %spec.select.1, %221
  %indvars.iv.next381.2 = or disjoint i64 %indvars.iv380, 3
  %222 = getelementptr inbounds ptr, ptr %189, i64 %indvars.iv.next381.2
  %223 = load ptr, ptr %222, align 8, !tbaa !15
  %224 = getelementptr inbounds i8, ptr %223, i64 232
  %225 = load i32, ptr %224, align 8, !tbaa !54
  %226 = zext i32 %225 to i64
  %227 = icmp eq i64 %indvars.iv391, %226
  %228 = zext i1 %227 to i32
  %spec.select.3 = add i32 %spec.select.2, %228
  %indvars.iv.next381.3 = add nuw nsw i64 %indvars.iv380, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge306.unr-lcssa, label %200, !llvm.loop !60

229:                                              ; preds = %._crit_edge306
  store i32 -1, ptr %57, align 8, !tbaa !61
  br label %230

230:                                              ; preds = %._crit_edge306, %229
  br i1 %.not373, label %._crit_edge312, label %.lr.ph311

.lr.ph311:                                        ; preds = %230, %290
  %indvars.iv385 = phi i64 [ %indvars.iv.next386, %290 ], [ 0, %230 ]
  %231 = load ptr, ptr %56, align 8, !tbaa !53
  %232 = getelementptr inbounds ptr, ptr %231, i64 %indvars.iv385
  %233 = load ptr, ptr %232, align 8, !tbaa !15
  %234 = getelementptr inbounds i8, ptr %233, i64 232
  %235 = load i32, ptr %234, align 8, !tbaa !54
  %236 = zext i32 %235 to i64
  %.not266 = icmp eq i64 %indvars.iv391, %236
  br i1 %.not266, label %237, label %290

237:                                              ; preds = %.lr.ph311
  %238 = getelementptr inbounds i8, ptr %233, i64 112
  %239 = load ptr, ptr %238, align 8, !tbaa !15
  %.not267 = icmp eq ptr %239, null
  br i1 %.not267, label %290, label %240

240:                                              ; preds = %237
  %241 = load i32, ptr %52, align 4, !tbaa !31
  %242 = zext i32 %241 to i64
  %243 = getelementptr inbounds [8 x ptr], ptr %238, i64 0, i64 %242
  %244 = load ptr, ptr %243, align 8, !tbaa !15
  %.not268 = icmp eq ptr %244, null
  %spec.store.select = select i1 %.not268, i32 0, i32 %241
  %245 = getelementptr inbounds i8, ptr %233, i64 176
  %246 = getelementptr inbounds [8 x i32], ptr %245, i64 0, i64 %242
  %247 = load i32, ptr %246, align 4, !tbaa !13
  %248 = icmp ugt i32 %247, 2
  br i1 %248, label %249, label %254

249:                                              ; preds = %240
  %250 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %251 unwind label %252

251:                                              ; preds = %249
  invoke void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12) %250, ptr noundef nonnull @.str.17)
          to label %290 unwind label %252

252:                                              ; preds = %251, %249
  %253 = landingpad { ptr, i32 }
          cleanup
  br label %294

254:                                              ; preds = %240
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #12
  call void @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #12
  %255 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv385) #12
  %256 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %255) #12
  store ptr %256, ptr %10, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #12
  %257 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv385) #12
  %258 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %257) #12
  store ptr %258, ptr %11, align 8
  %259 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #12
  br i1 %259, label %.lr.ph308, label %.loopexit289

.lr.ph308:                                        ; preds = %254, %272
  %260 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #12
  %261 = invoke noundef zeroext i1 @_ZNK6Assimp17STransformVecInfoeqERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %260, ptr noundef nonnull align 8 dereferenceable(64) %5)
          to label %262 unwind label %.loopexit290

262:                                              ; preds = %.lr.ph308
  br i1 %261, label %263, label %272

263:                                              ; preds = %262
  %264 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #12
  %265 = getelementptr inbounds i8, ptr %264, i64 20
  %266 = load i32, ptr %265, align 4, !tbaa !31
  %267 = icmp eq i32 %266, %spec.store.select
  br i1 %267, label %268, label %272

268:                                              ; preds = %263
  %269 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #12
  %270 = getelementptr inbounds i8, ptr %269, i64 40
  invoke void @_ZNSt7__cxx114listIN6Assimp12TTUpdateInfoESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %270, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %.loopexit289 unwind label %.loopexit.split-lp291

.loopexit290:                                     ; preds = %.lr.ph308
  %lpad.loopexit292 = landingpad { ptr, i32 }
          cleanup
  br label %271

.loopexit.split-lp291:                            ; preds = %268, %280, %282
  %lpad.loopexit.split-lp293 = landingpad { ptr, i32 }
          cleanup
  br label %271

271:                                              ; preds = %.loopexit.split-lp291, %.loopexit290
  %lpad.phi294 = phi { ptr, i32 } [ %lpad.loopexit292, %.loopexit290 ], [ %lpad.loopexit.split-lp293, %.loopexit.split-lp291 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  br label %294

272:                                              ; preds = %262, %263
  %273 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #12
  %274 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv385) #12
  %275 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %274) #12
  store ptr %275, ptr %11, align 8
  %276 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #12
  br i1 %276, label %.lr.ph308, label %.loopexit289, !llvm.loop !62

.loopexit289:                                     ; preds = %272, %254, %268
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #12
  %277 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv385) #12
  %278 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %277) #12
  store ptr %278, ptr %12, align 8
  %279 = call noundef zeroext i1 @_ZSteqRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %12) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #12
  br i1 %279, label %280, label %289

280:                                              ; preds = %.loopexit289
  %281 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv385) #12
  invoke void @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %281, ptr noundef nonnull align 8 dereferenceable(64) %5)
          to label %282 unwind label %.loopexit.split-lp291

282:                                              ; preds = %280
  %283 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv385) #12
  %284 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %283) #12
  %285 = getelementptr inbounds i8, ptr %284, i64 20
  store i32 %spec.store.select, ptr %285, align 4, !tbaa !31
  %286 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv385) #12
  %287 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %286) #12
  %288 = getelementptr inbounds i8, ptr %287, i64 40
  invoke void @_ZNSt7__cxx114listIN6Assimp12TTUpdateInfoESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %288, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %289 unwind label %.loopexit.split-lp291

289:                                              ; preds = %282, %.loopexit289
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  br label %290

290:                                              ; preds = %289, %251, %.lr.ph311, %237
  %indvars.iv.next386 = add nuw nsw i64 %indvars.iv385, 1
  %291 = load i32, ptr %41, align 8, !tbaa !5
  %292 = zext i32 %291 to i64
  %293 = icmp ult i64 %indvars.iv.next386, %292
  br i1 %293, label %.lr.ph311, label %._crit_edge312, !llvm.loop !63

._crit_edge312:                                   ; preds = %290, %230
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #12
  call void @_ZN6Assimp17STransformVecInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %5) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #12
  br label %295

294:                                              ; preds = %252, %271, %198, %150
  %.pn277 = phi { ptr, i32 } [ %151, %150 ], [ %199, %198 ], [ %253, %252 ], [ %lpad.phi294, %271 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #12
  call void @_ZN6Assimp17STransformVecInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %5) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #12
  br label %698

.critedge282:                                     ; preds = %185, %._crit_edge306
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #12
  call void @_ZN6Assimp17STransformVecInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %5) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #12
  br label %295

295:                                              ; preds = %._crit_edge312, %.lr.ph315, %.critedge282
  %indvars.iv.next389 = add nuw nsw i64 %indvars.iv388, 1
  %296 = load i32, ptr %81, align 8, !tbaa !16
  %297 = zext i32 %296 to i64
  %298 = icmp ult i64 %indvars.iv.next389, %297
  br i1 %298, label %.lr.ph315, label %._crit_edge316.loopexit, !llvm.loop !64

._crit_edge368.loopexit:                          ; preds = %678
  %299 = icmp eq i32 %679, 0
  br label %._crit_edge368

._crit_edge368:                                   ; preds = %._crit_edge368.loopexit, %._crit_edge320
  %.not = phi i1 [ %299, %._crit_edge368.loopexit ], [ true, %._crit_edge320 ]
  %300 = invoke noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv()
          to label %686 unwind label %691

301:                                              ; preds = %.lr.ph367, %678
  %302 = phi i32 [ 0, %.lr.ph367 ], [ %679, %678 ]
  %303 = phi i32 [ 0, %.lr.ph367 ], [ %680, %678 ]
  %304 = phi i32 [ 0, %.lr.ph367 ], [ %310, %678 ]
  %indvars.iv406 = phi i64 [ 0, %.lr.ph367 ], [ %indvars.iv.next407, %678 ]
  %305 = load ptr, ptr %59, align 8, !tbaa !53
  %306 = getelementptr inbounds ptr, ptr %305, i64 %indvars.iv406
  %307 = load ptr, ptr %306, align 8, !tbaa !15
  %308 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv406) #12
  %309 = call noundef i32 @_ZNK6aiMesh16GetNumUVChannelsEv(ptr noundef nonnull align 8 dereferenceable(1320) %307)
  %310 = add i32 %304, %309
  store i32 %310, ptr %15, align 4, !tbaa !13
  %311 = getelementptr inbounds i8, ptr %307, i64 112
  %312 = load ptr, ptr %311, align 8, !tbaa !15
  %.not238 = icmp eq ptr %312, null
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #12
  br i1 %.not238, label %.critedge, label %313

313:                                              ; preds = %301
  %314 = call noundef zeroext i1 @_ZNKSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  br i1 %314, label %.critedge, label %315

315:                                              ; preds = %313
  %316 = call noundef i64 @_ZNKSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  %317 = icmp eq i64 %316, 1
  br i1 %317, label %318, label %.critedge2

318:                                              ; preds = %315
  %319 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  store ptr %319, ptr %17, align 8
  %320 = call noundef ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #12
  %321 = call noundef zeroext i1 @_ZNK6Assimp17STransformVecInfo15IsUntransformedEv(ptr noundef nonnull align 8 dereferenceable(64) %320)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #12
  br i1 %321, label %322, label %325

.critedge:                                        ; preds = %301, %313
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #12
  br label %322

322:                                              ; preds = %.critedge, %318
  %323 = call noundef i32 @_ZNK6aiMesh16GetNumUVChannelsEv(ptr noundef nonnull align 8 dereferenceable(1320) %307)
  %324 = add i32 %303, %323
  store i32 %324, ptr %14, align 4, !tbaa !13
  br label %678

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

325:                                              ; preds = %.critedge2, %318
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #12
  call void @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #12
  call void @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #12
  %326 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  store ptr %326, ptr %18, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #12
  %327 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  store ptr %327, ptr %20, align 8
  %328 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %20) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #12
  br i1 %328, label %.lr.ph325, label %.critedge369

.lr.ph325:                                        ; preds = %325, %359
  %.0222323 = phi i1 [ %.1223, %359 ], [ false, %325 ]
  %.0224322 = phi i1 [ %spec.select283, %359 ], [ false, %325 ]
  %.0227321 = phi i32 [ %361, %359 ], [ 0, %325 ]
  %329 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %330 = call noundef zeroext i1 @_ZNK6Assimp17STransformVecInfo15IsUntransformedEv(ptr noundef nonnull align 8 dereferenceable(64) %329)
  %not. = xor i1 %330, true
  %spec.select283 = select i1 %not., i1 true, i1 %.0224322
  %331 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %332 = getelementptr inbounds i8, ptr %331, i64 32
  %333 = load i32, ptr %332, align 8, !tbaa !61
  %334 = icmp eq i32 %333, -1
  br i1 %334, label %335, label %338

.loopexit287:                                     ; preds = %393, %395
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %685

.loopexit.split-lp:                               ; preds = %._crit_edge329
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %685

335:                                              ; preds = %.lr.ph325
  %336 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %337 = getelementptr inbounds i8, ptr %336, i64 32
  store i32 %.0227321, ptr %337, align 8, !tbaa !61
  br label %359

338:                                              ; preds = %.lr.ph325
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #12
  br i1 %.0222323, label %.critedge4, label %339

339:                                              ; preds = %338
  %340 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  store ptr %340, ptr %21, align 8
  %341 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %21) #12
  br i1 %341, label %342, label %.critedge4

342:                                              ; preds = %339
  %343 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %344 = call noundef zeroext i1 @_ZNK6Assimp17STransformVecInfo15IsUntransformedEv(ptr noundef nonnull align 8 dereferenceable(64) %343)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #12
  br i1 %344, label %345, label %359

345:                                              ; preds = %342
  %346 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  store ptr %346, ptr %19, align 8, !tbaa !15
  %347 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  br i1 %347, label %.lr.ph328, label %._crit_edge329

.lr.ph328:                                        ; preds = %345, %350
  %348 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #12
  %349 = call noundef zeroext i1 @_ZNK6Assimp17STransformVecInfo15IsUntransformedEv(ptr noundef nonnull align 8 dereferenceable(64) %348)
  br i1 %349, label %350, label %._crit_edge329

350:                                              ; preds = %.lr.ph328
  %351 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #12
  %352 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  br i1 %352, label %.lr.ph328, label %._crit_edge329, !llvm.loop !65

._crit_edge329:                                   ; preds = %350, %.lr.ph328, %345
  call void @_ZNSt20_List_const_iteratorIN6Assimp17STransformVecInfoEEC2ERKSt14_List_iteratorIS1_E(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %19) #12
  %353 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %354 = load ptr, ptr %22, align 8
  %355 = invoke ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE6insertESt20_List_const_iteratorIS2_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %308, ptr %354, ptr noundef nonnull align 8 dereferenceable(64) %353)
          to label %356 unwind label %.loopexit.split-lp

356:                                              ; preds = %._crit_edge329
  call void @_ZNSt20_List_const_iteratorIN6Assimp17STransformVecInfoEEC2ERKSt14_List_iteratorIS1_E(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %357 = load ptr, ptr %23, align 8
  %358 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5eraseESt20_List_const_iteratorIS2_E(ptr noundef nonnull align 8 dereferenceable(24) %308, ptr %357) #12
  br label %.loopexit288

.critedge4:                                       ; preds = %338, %339
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #12
  br label %359

359:                                              ; preds = %342, %.critedge4, %335
  %.1223 = phi i1 [ true, %335 ], [ %.0222323, %.critedge4 ], [ false, %342 ]
  %360 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %361 = add i32 %.0227321, 1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #12
  %362 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  store ptr %362, ptr %20, align 8
  %363 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %20) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #12
  br i1 %363, label %.lr.ph325, label %.loopexit288, !llvm.loop !66

.loopexit288:                                     ; preds = %359, %356
  br i1 %spec.select283, label %364, label %.critedge369

364:                                              ; preds = %.loopexit288
  %365 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  store ptr %365, ptr %18, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #12
  %366 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  store ptr %366, ptr %24, align 8
  %367 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #12
  br i1 %367, label %.lr.ph338, label %._crit_edge339

.lr.ph338:                                        ; preds = %364, %403
  %.1228336 = phi i32 [ %405, %403 ], [ 0, %364 ]
  %.0229335 = phi i32 [ %.1230, %403 ], [ 0, %364 ]
  %368 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %369 = getelementptr inbounds i8, ptr %368, i64 32
  %370 = load i32, ptr %369, align 8, !tbaa !61
  %.not253 = icmp eq i32 %370, -286331154
  br i1 %.not253, label %403, label %371

371:                                              ; preds = %.lr.ph338
  %372 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %373 = getelementptr inbounds i8, ptr %372, i64 32
  %374 = load i32, ptr %373, align 8, !tbaa !61
  %.not254 = icmp eq i32 %374, %.1228336
  br i1 %.not254, label %403, label %375

375:                                              ; preds = %371
  %376 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  store ptr %376, ptr %19, align 8, !tbaa !15
  %377 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #12
  %378 = getelementptr inbounds i8, ptr %377, i64 32
  %379 = load i32, ptr %378, align 8, !tbaa !61
  %380 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %381 = getelementptr inbounds i8, ptr %380, i64 32
  %382 = load i32, ptr %381, align 8, !tbaa !61
  %.not255331 = icmp eq i32 %379, %382
  br i1 %.not255331, label %._crit_edge334, label %.lr.ph333

.lr.ph333:                                        ; preds = %375, %.lr.ph333
  %383 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #12
  %384 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #12
  %385 = getelementptr inbounds i8, ptr %384, i64 32
  %386 = load i32, ptr %385, align 8, !tbaa !61
  %387 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %388 = getelementptr inbounds i8, ptr %387, i64 32
  %389 = load i32, ptr %388, align 8, !tbaa !61
  %.not255 = icmp eq i32 %386, %389
  br i1 %.not255, label %._crit_edge334, label %.lr.ph333, !llvm.loop !67

._crit_edge334:                                   ; preds = %.lr.ph333, %375
  %390 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #12
  %391 = getelementptr inbounds i8, ptr %390, i64 32
  %392 = load i32, ptr %391, align 8, !tbaa !61
  %.not256 = icmp eq i32 %392, -286331154
  br i1 %.not256, label %396, label %393

393:                                              ; preds = %._crit_edge334
  %394 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %395 unwind label %.loopexit287

395:                                              ; preds = %393
  invoke void @_ZN6Assimp6Logger5errorEPKc(ptr noundef nonnull align 8 dereferenceable(12) %394, ptr noundef nonnull @.str.18)
          to label %403 unwind label %.loopexit287

396:                                              ; preds = %._crit_edge334
  %397 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #12
  %398 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  call void @_ZSt4swapIN6Assimp17STransformVecInfoEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 8 dereferenceable(64) %397, ptr noundef nonnull align 8 dereferenceable(64) %398) #12
  %399 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %400 = getelementptr inbounds i8, ptr %399, i64 32
  %401 = load i32, ptr %400, align 8, !tbaa !61
  %402 = icmp eq i32 %401, %.0229335
  %spec.select284 = select i1 %402, i32 %.1228336, i32 %.0229335
  br label %403

403:                                              ; preds = %396, %.lr.ph338, %371, %395
  %.1230 = phi i32 [ %.0229335, %395 ], [ %.0229335, %371 ], [ %.0229335, %.lr.ph338 ], [ %spec.select284, %396 ]
  %404 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %405 = add i32 %.1228336, 1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #12
  %406 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  store ptr %406, ptr %24, align 8
  %407 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #12
  br i1 %407, label %.lr.ph338, label %._crit_edge339, !llvm.loop !68

._crit_edge339:                                   ; preds = %403, %364
  %.0229.lcssa = phi i32 [ 0, %364 ], [ %.1230, %403 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #12
  %408 = load <8 x ptr>, ptr %311, align 8, !tbaa !15
  %409 = icmp eq <8 x ptr> %408, zeroinitializer
  %410 = zext <8 x i1> %409 to <8 x i8>
  store <8 x i8> %410, ptr %25, align 8, !tbaa !69
  %411 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  store ptr %411, ptr %18, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #12
  %412 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  store ptr %412, ptr %26, align 8
  %413 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %26) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #12
  %414 = extractelement <8 x i1> %409, i64 0
  %415 = zext i1 %414 to i8
  br i1 %413, label %.lr.ph343, label %.preheader

.preheader.loopexit:                              ; preds = %.lr.ph343
  %.pre411 = load i8, ptr %25, align 8, !tbaa !69, !range !71
  br label %.preheader

.preheader:                                       ; preds = %.preheader.loopexit, %._crit_edge339
  %416 = phi i8 [ %.pre411, %.preheader.loopexit ], [ %415, %._crit_edge339 ]
  %417 = trunc nuw i8 %416 to i1
  br i1 %417, label %431, label %426

.lr.ph343:                                        ; preds = %._crit_edge339, %.lr.ph343
  %418 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %419 = getelementptr inbounds i8, ptr %418, i64 20
  %420 = load i32, ptr %419, align 4, !tbaa !31
  %421 = zext i32 %420 to i64
  %422 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 %421
  store i8 1, ptr %422, align 1, !tbaa !69
  %423 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #12
  %424 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  store ptr %424, ptr %26, align 8
  %425 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %26) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #12
  br i1 %425, label %.lr.ph343, label %.preheader.loopexit, !llvm.loop !72

426:                                              ; preds = %.preheader
  %427 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE12emplace_backIJEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %308)
          to label %428 unwind label %491

428:                                              ; preds = %426
  %429 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  %430 = getelementptr inbounds i8, ptr %429, i64 20
  store i32 0, ptr %430, align 4, !tbaa !31
  br label %431

431:                                              ; preds = %.preheader, %428
  %432 = load i8, ptr %67, align 1, !tbaa !69, !range !71, !noundef !73
  %433 = trunc nuw i8 %432 to i1
  br i1 %433, label %439, label %434

434:                                              ; preds = %431
  %435 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE12emplace_backIJEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %308)
          to label %436 unwind label %491

436:                                              ; preds = %434
  %437 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  %438 = getelementptr inbounds i8, ptr %437, i64 20
  store i32 1, ptr %438, align 4, !tbaa !31
  br label %439

439:                                              ; preds = %436, %431
  %440 = load i8, ptr %68, align 2, !tbaa !69, !range !71, !noundef !73
  %441 = trunc nuw i8 %440 to i1
  br i1 %441, label %447, label %442

442:                                              ; preds = %439
  %443 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE12emplace_backIJEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %308)
          to label %444 unwind label %491

444:                                              ; preds = %442
  %445 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  %446 = getelementptr inbounds i8, ptr %445, i64 20
  store i32 2, ptr %446, align 4, !tbaa !31
  br label %447

447:                                              ; preds = %444, %439
  %448 = load i8, ptr %69, align 1, !tbaa !69, !range !71, !noundef !73
  %449 = trunc nuw i8 %448 to i1
  br i1 %449, label %455, label %450

450:                                              ; preds = %447
  %451 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE12emplace_backIJEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %308)
          to label %452 unwind label %491

452:                                              ; preds = %450
  %453 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  %454 = getelementptr inbounds i8, ptr %453, i64 20
  store i32 3, ptr %454, align 4, !tbaa !31
  br label %455

455:                                              ; preds = %452, %447
  %456 = load i8, ptr %70, align 4, !tbaa !69, !range !71, !noundef !73
  %457 = trunc nuw i8 %456 to i1
  br i1 %457, label %463, label %458

458:                                              ; preds = %455
  %459 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE12emplace_backIJEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %308)
          to label %460 unwind label %491

460:                                              ; preds = %458
  %461 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  %462 = getelementptr inbounds i8, ptr %461, i64 20
  store i32 4, ptr %462, align 4, !tbaa !31
  br label %463

463:                                              ; preds = %460, %455
  %464 = load i8, ptr %71, align 1, !tbaa !69, !range !71, !noundef !73
  %465 = trunc nuw i8 %464 to i1
  br i1 %465, label %471, label %466

466:                                              ; preds = %463
  %467 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE12emplace_backIJEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %308)
          to label %468 unwind label %491

468:                                              ; preds = %466
  %469 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  %470 = getelementptr inbounds i8, ptr %469, i64 20
  store i32 5, ptr %470, align 4, !tbaa !31
  br label %471

471:                                              ; preds = %468, %463
  %472 = load i8, ptr %72, align 2, !tbaa !69, !range !71, !noundef !73
  %473 = trunc nuw i8 %472 to i1
  br i1 %473, label %479, label %474

474:                                              ; preds = %471
  %475 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE12emplace_backIJEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %308)
          to label %476 unwind label %491

476:                                              ; preds = %474
  %477 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  %478 = getelementptr inbounds i8, ptr %477, i64 20
  store i32 6, ptr %478, align 4, !tbaa !31
  br label %479

479:                                              ; preds = %476, %471
  %480 = load i8, ptr %73, align 1, !tbaa !69, !range !71, !noundef !73
  %481 = trunc nuw i8 %480 to i1
  br i1 %481, label %487, label %482

482:                                              ; preds = %479
  %483 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE12emplace_backIJEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %308)
          to label %484 unwind label %491

484:                                              ; preds = %482
  %485 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  %486 = getelementptr inbounds i8, ptr %485, i64 20
  store i32 7, ptr %486, align 4, !tbaa !31
  br label %487

487:                                              ; preds = %484, %479
  %488 = call noundef i64 @_ZNKSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  %489 = trunc i64 %488 to i32
  %490 = icmp ugt i32 %489, 8
  br i1 %490, label %493, label %506

491:                                              ; preds = %482, %474, %466, %458, %450, %442, %434, %426
  %492 = landingpad { ptr, i32 }
          cleanup
  br label %684

493:                                              ; preds = %487
  %494 = invoke noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv()
          to label %495 unwind label %502

495:                                              ; preds = %493
  br i1 %494, label %506, label %496

496:                                              ; preds = %495
  %497 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %498 unwind label %502

498:                                              ; preds = %496
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #12
  %499 = call noundef i64 @_ZNKSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  %500 = trunc i64 %499 to i32
  store i32 %500, ptr %27, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #12
  store i32 8, ptr %28, align 4, !tbaa !13
  invoke void @_ZN6Assimp6Logger5errorIJjRA32_KciRA11_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %497, ptr noundef nonnull align 4 dereferenceable(4) %27, ptr noundef nonnull align 1 dereferenceable(32) @.str.19, ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef nonnull align 1 dereferenceable(11) @.str.20)
          to label %501 unwind label %504

501:                                              ; preds = %498
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #12
  br label %506

502:                                              ; preds = %496, %493
  %503 = landingpad { ptr, i32 }
          cleanup
  br label %684

504:                                              ; preds = %498
  %505 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #12
  br label %684

506:                                              ; preds = %495, %501, %487
  %.0218 = phi i32 [ %489, %487 ], [ 8, %501 ], [ 8, %495 ]
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %29) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %29, ptr noundef nonnull align 8 dereferenceable(64) %311, i64 64, i1 false), !tbaa !15
  %507 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  store ptr %507, ptr %18, align 8, !tbaa !15
  %508 = call noundef i64 @_ZNKSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  %.not376 = icmp eq i64 %508, 0
  br i1 %.not376, label %._crit_edge361, label %.lr.ph360

.lr.ph360:                                        ; preds = %506
  %509 = getelementptr inbounds i8, ptr %307, i64 4
  %510 = trunc nuw i64 %indvars.iv406 to i32
  br label %513

._crit_edge361:                                   ; preds = %667, %506
  %511 = phi i32 [ %302, %506 ], [ %668, %667 ]
  %512 = phi i32 [ %303, %506 ], [ %669, %667 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %29) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #12
  br label %.critedge369

513:                                              ; preds = %.lr.ph360, %667
  %514 = phi i32 [ %302, %.lr.ph360 ], [ %668, %667 ]
  %515 = phi i32 [ %303, %.lr.ph360 ], [ %669, %667 ]
  %516 = phi i64 [ 0, %.lr.ph360 ], [ %672, %667 ]
  %.0215355 = phi i32 [ 0, %.lr.ph360 ], [ %670, %667 ]
  %.not239 = icmp ult i32 %.0215355, %.0218
  br i1 %.not239, label %522, label %517

517:                                              ; preds = %513
  %518 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %519 = getelementptr inbounds i8, ptr %518, i64 40
  invoke void @_Z13UpdateUVIndexRKNSt7__cxx114listIN6Assimp12TTUpdateInfoESaIS2_EEEj(ptr noundef nonnull align 8 dereferenceable(24) %519, i32 noundef %.0229.lcssa)
          to label %667 unwind label %520

520:                                              ; preds = %588, %575, %557, %526, %522, %517
  %521 = landingpad { ptr, i32 }
          cleanup
  br label %675

522:                                              ; preds = %513
  %523 = add i32 %515, 1
  store i32 %523, ptr %14, align 4, !tbaa !13
  %524 = invoke noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv()
          to label %525 unwind label %520

525:                                              ; preds = %522
  br i1 %524, label %558, label %526

526:                                              ; preds = %525
  %527 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %528 = load float, ptr %527, align 8, !tbaa !74
  %529 = fpext float %528 to double
  %530 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %531 = getelementptr inbounds i8, ptr %530, i64 4
  %532 = load float, ptr %531, align 4, !tbaa !75
  %533 = fpext float %532 to double
  %534 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %535 = getelementptr inbounds i8, ptr %534, i64 8
  %536 = load float, ptr %535, align 8, !tbaa !76
  %537 = fpext float %536 to double
  %538 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %539 = getelementptr inbounds i8, ptr %538, i64 12
  %540 = load float, ptr %539, align 4, !tbaa !77
  %541 = fpext float %540 to double
  %542 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %543 = getelementptr inbounds i8, ptr %542, i64 16
  %544 = load float, ptr %543, align 8, !tbaa !52
  %545 = fmul float %544, 0x404CA5DC20000000
  %546 = fpext float %545 to double
  %547 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %548 = getelementptr inbounds i8, ptr %547, i64 24
  %549 = load i32, ptr %548, align 8, !tbaa !45
  %550 = call noundef ptr @_ZL17MappingModeToChar16aiTextureMapMode(i32 noundef %549)
  %551 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %552 = getelementptr inbounds i8, ptr %551, i64 28
  %553 = load i32, ptr %552, align 4, !tbaa !46
  %554 = call noundef ptr @_ZL17MappingModeToChar16aiTextureMapMode(i32 noundef %553)
  %555 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %13, i64 noundef 1024, ptr noundef nonnull @.str.21, i32 noundef %510, i32 noundef %.0215355, double noundef %529, double noundef %533, double noundef %537, double noundef %541, double noundef %546, ptr noundef %550, ptr noundef %554) #12
  %556 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %557 unwind label %520

557:                                              ; preds = %526
  invoke void @_ZN6Assimp6Logger4infoIJRA1024_cEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %556, ptr noundef nonnull align 1 dereferenceable(1024) %13)
          to label %558 unwind label %520

558:                                              ; preds = %557, %525
  %559 = getelementptr inbounds [8 x ptr], ptr %311, i64 0, i64 %516
  %560 = load ptr, ptr %559, align 8, !tbaa !15
  %.not240 = icmp eq ptr %560, null
  br i1 %.not240, label %588, label %561

561:                                              ; preds = %558
  %562 = load i64, ptr %18, align 8, !tbaa !15
  store i64 %562, ptr %19, align 8, !tbaa !15
  %563 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #12
  %.0214346 = add nuw nsw i32 %.0215355, 1
  %564 = icmp ult i32 %.0214346, %.0218
  br i1 %564, label %.lr.ph349, label %.loopexit286

.lr.ph349:                                        ; preds = %561, %571
  %.0214347 = phi i32 [ %.0214, %571 ], [ %.0214346, %561 ]
  %565 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #12
  %566 = getelementptr inbounds i8, ptr %565, i64 20
  %567 = load i32, ptr %566, align 4, !tbaa !31
  %568 = icmp eq i32 %567, %.0215355
  br i1 %568, label %569, label %571

569:                                              ; preds = %.lr.ph349
  %570 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  store ptr %570, ptr %19, align 8, !tbaa !15
  br label %.loopexit286

571:                                              ; preds = %.lr.ph349
  %572 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #12
  %.0214 = add nuw i32 %.0214347, 1
  %exitcond405.not = icmp eq i32 %.0214, %.0218
  br i1 %exitcond405.not, label %.loopexit286, label %.lr.ph349, !llvm.loop !78

.loopexit286:                                     ; preds = %571, %561, %569
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #12
  %573 = call ptr @_ZNSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  store ptr %573, ptr %30, align 8
  %574 = call noundef zeroext i1 @_ZSteqRKSt14_List_iteratorIN6Assimp17STransformVecInfoEES4_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %30) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #12
  br i1 %574, label %575, label %601

575:                                              ; preds = %.loopexit286
  %576 = load i32, ptr %509, align 4, !tbaa !79
  %577 = zext i32 %576 to i64
  %578 = mul nuw nsw i64 %577, 12
  %579 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %578) #15
          to label %580 unwind label %520

580:                                              ; preds = %575
  %581 = icmp eq i32 %576, 0
  br i1 %581, label %.sink.split, label %582

582:                                              ; preds = %580
  %583 = getelementptr inbounds %class.aiVector3t, ptr %579, i64 %577
  br label %584

584:                                              ; preds = %584, %582
  %585 = phi ptr [ %579, %582 ], [ %586, %584 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %585) #12
  %586 = getelementptr inbounds i8, ptr %585, i64 12
  %587 = icmp eq ptr %586, %583
  br i1 %587, label %.sink.split, label %584

588:                                              ; preds = %558
  %589 = load i32, ptr %509, align 4, !tbaa !79
  %590 = zext i32 %589 to i64
  %591 = mul nuw nsw i64 %590, 12
  %592 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %591) #15
          to label %593 unwind label %520

593:                                              ; preds = %588
  %594 = icmp eq i32 %589, 0
  br i1 %594, label %.sink.split, label %595

595:                                              ; preds = %593
  %596 = getelementptr inbounds %class.aiVector3t, ptr %592, i64 %590
  br label %597

597:                                              ; preds = %597, %595
  %598 = phi ptr [ %592, %595 ], [ %599, %597 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %598) #12
  %599 = getelementptr inbounds i8, ptr %598, i64 12
  %600 = icmp eq ptr %599, %596
  br i1 %600, label %.sink.split, label %597

.sink.split:                                      ; preds = %584, %597, %593, %580
  %.sink = phi ptr [ %579, %580 ], [ %592, %593 ], [ %592, %597 ], [ %579, %584 ]
  store ptr %.sink, ptr %559, align 8, !tbaa !15
  br label %601

601:                                              ; preds = %.sink.split, %.loopexit286
  %602 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %603 = getelementptr inbounds i8, ptr %602, i64 20
  %604 = load i32, ptr %603, align 4, !tbaa !31
  %605 = zext i32 %604 to i64
  %606 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %605
  %607 = load ptr, ptr %606, align 8, !tbaa !15
  %608 = load ptr, ptr %559, align 8, !tbaa !15
  %.not241 = icmp eq ptr %607, null
  br i1 %.not241, label %609, label %610

609:                                              ; preds = %601
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.16, i32 noundef 491)
          to label %610 unwind label %615

610:                                              ; preds = %609, %601
  %.not242 = icmp eq ptr %608, %607
  br i1 %.not242, label %617, label %611

611:                                              ; preds = %610
  %612 = load i32, ptr %509, align 4, !tbaa !79
  %613 = zext i32 %612 to i64
  %614 = mul nuw nsw i64 %613, 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %608, ptr align 4 %607, i64 %614, i1 false)
  br label %617

615:                                              ; preds = %663, %609
  %616 = landingpad { ptr, i32 }
          cleanup
  br label %675

617:                                              ; preds = %611, %610
  %618 = load i32, ptr %509, align 4, !tbaa !79
  %619 = zext i32 %618 to i64
  %620 = getelementptr inbounds %class.aiVector3t, ptr %608, i64 %619
  %621 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %622 = call noundef zeroext i1 @_ZNK6Assimp17STransformVecInfo15IsUntransformedEv(ptr noundef nonnull align 8 dereferenceable(64) %621)
  br i1 %622, label %663, label %623

623:                                              ; preds = %617
  %624 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %625 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %626 = getelementptr inbounds i8, ptr %625, i64 8
  %627 = add i32 %514, 1
  store i32 %627, ptr %16, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %31) #12
  call void @_ZN12aiMatrix3x3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(36) %31) #12
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %32) #12
  call void @_ZN12aiMatrix3x3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(36) %32) #12
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %33) #12
  call void @_ZN12aiMatrix3x3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(36) %33) #12
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %34) #12
  call void @_ZN12aiMatrix3x3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(36) %34) #12
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %35) #12
  call void @_ZN12aiMatrix3x3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(36) %35) #12
  %628 = load float, ptr %626, align 8, !tbaa !80
  store float %628, ptr %34, align 4, !tbaa !81
  %629 = getelementptr inbounds i8, ptr %625, i64 12
  %630 = load float, ptr %629, align 4, !tbaa !83
  store float %630, ptr %60, align 4, !tbaa !84
  store float 5.000000e-01, ptr %61, align 4, !tbaa !85
  store float 5.000000e-01, ptr %62, align 4, !tbaa !86
  store float -5.000000e-01, ptr %63, align 4, !tbaa !85
  store float -5.000000e-01, ptr %64, align 4, !tbaa !86
  %631 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %632 = getelementptr inbounds i8, ptr %631, i64 16
  %633 = load float, ptr %632, align 8, !tbaa !52
  %634 = fcmp ogt float %633, 0x3F81DF46A0000000
  br i1 %634, label %635, label %642

635:                                              ; preds = %623
  %636 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %637 = getelementptr inbounds i8, ptr %636, i64 16
  %638 = load float, ptr %637, align 8, !tbaa !52
  %639 = invoke noundef nonnull align 4 dereferenceable(36) ptr @_ZN12aiMatrix3x3tIfE9RotationZEfRS0_(float noundef %638, ptr noundef nonnull align 4 dereferenceable(36) %31)
          to label %642 unwind label %640

640:                                              ; preds = %635
  %641 = landingpad { ptr, i32 }
          cleanup
  br label %662

642:                                              ; preds = %635, %623
  %643 = load float, ptr %624, align 8, !tbaa !80
  %644 = load float, ptr %65, align 4, !tbaa !86
  %645 = fadd float %643, %644
  store float %645, ptr %65, align 4, !tbaa !86
  %646 = getelementptr inbounds i8, ptr %624, i64 4
  %647 = load float, ptr %646, align 4, !tbaa !83
  %648 = load float, ptr %66, align 4, !tbaa !85
  %649 = fadd float %647, %648
  store float %649, ptr %66, align 4, !tbaa !85
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %36) #12
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %37) #12
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %38) #12
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %39) #12
  invoke void @_ZNK12aiMatrix3x3tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix3x3t) align 4 %39, ptr noundef nonnull align 4 dereferenceable(36) %32, ptr noundef nonnull align 4 dereferenceable(36) %34)
          to label %650 unwind label %660

650:                                              ; preds = %642
  invoke void @_ZNK12aiMatrix3x3tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix3x3t) align 4 %38, ptr noundef nonnull align 4 dereferenceable(36) %39, ptr noundef nonnull align 4 dereferenceable(36) %31)
          to label %651 unwind label %660

651:                                              ; preds = %650
  invoke void @_ZNK12aiMatrix3x3tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix3x3t) align 4 %37, ptr noundef nonnull align 4 dereferenceable(36) %38, ptr noundef nonnull align 4 dereferenceable(36) %33)
          to label %652 unwind label %660

652:                                              ; preds = %651
  invoke void @_ZNK12aiMatrix3x3tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix3x3t) align 4 %36, ptr noundef nonnull align 4 dereferenceable(36) %37, ptr noundef nonnull align 4 dereferenceable(36) %35)
          to label %653 unwind label %660

653:                                              ; preds = %652
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %31, ptr noundef nonnull align 4 dereferenceable(36) %36, i64 36, i1 false), !tbaa.struct !87
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %39) #12
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %38) #12
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %37) #12
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %36) #12
  %.not244350 = icmp eq i32 %618, 0
  br i1 %.not244350, label %._crit_edge354, label %.lr.ph353

.lr.ph353:                                        ; preds = %653, %.lr.ph353
  %.0212351 = phi ptr [ %659, %.lr.ph353 ], [ %608, %653 ]
  %654 = getelementptr inbounds i8, ptr %.0212351, i64 8
  store float 1.000000e+00, ptr %654, align 4, !tbaa !89
  %655 = call { <2 x float>, float } @_ZmlIfE10aiVector3tIT_ERK12aiMatrix3x3tIS1_ERKS2_(ptr noundef nonnull align 4 dereferenceable(36) %31, ptr noundef nonnull align 4 dereferenceable(12) %.0212351)
  %.fca.0.extract = extractvalue { <2 x float>, float } %655, 0
  %.fca.1.extract = extractvalue { <2 x float>, float } %655, 1
  %656 = insertelement <2 x float> poison, float %.fca.1.extract, i64 0
  %657 = shufflevector <2 x float> %656, <2 x float> poison, <2 x i32> zeroinitializer
  %658 = fdiv <2 x float> %.fca.0.extract, %657
  store <2 x float> %658, ptr %.0212351, align 4, !tbaa !88
  store float 0.000000e+00, ptr %654, align 4, !tbaa !89
  %659 = getelementptr inbounds i8, ptr %.0212351, i64 12
  %.not244 = icmp eq ptr %659, %620
  br i1 %.not244, label %._crit_edge354, label %.lr.ph353, !llvm.loop !90

660:                                              ; preds = %652, %651, %650, %642
  %661 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %39) #12
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %38) #12
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %37) #12
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %36) #12
  br label %662

._crit_edge354:                                   ; preds = %.lr.ph353, %653
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %35) #12
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %34) #12
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %33) #12
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %32) #12
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %31) #12
  br label %663

662:                                              ; preds = %660, %640
  %.pn = phi { ptr, i32 } [ %661, %660 ], [ %641, %640 ]
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %35) #12
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %34) #12
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %33) #12
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %32) #12
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %31) #12
  br label %675

663:                                              ; preds = %._crit_edge354, %617
  %664 = phi i32 [ %627, %._crit_edge354 ], [ %514, %617 ]
  %665 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt14_List_iteratorIN6Assimp17STransformVecInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %666 = getelementptr inbounds i8, ptr %665, i64 40
  invoke void @_Z13UpdateUVIndexRKNSt7__cxx114listIN6Assimp12TTUpdateInfoESaIS2_EEEj(ptr noundef nonnull align 8 dereferenceable(24) %666, i32 noundef %.0215355)
          to label %667 unwind label %615

667:                                              ; preds = %663, %517
  %668 = phi i32 [ %664, %663 ], [ %514, %517 ]
  %669 = phi i32 [ %523, %663 ], [ %515, %517 ]
  %670 = add i32 %.0215355, 1
  %671 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  %672 = zext i32 %670 to i64
  %673 = call noundef i64 @_ZNKSt7__cxx114listIN6Assimp17STransformVecInfoESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #12
  %674 = icmp ugt i64 %673, %672
  br i1 %674, label %513, label %._crit_edge361, !llvm.loop !91

675:                                              ; preds = %615, %662, %520
  %.pn247 = phi { ptr, i32 } [ %521, %520 ], [ %616, %615 ], [ %.pn, %662 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %29) #12
  br label %684

.critedge369:                                     ; preds = %325, %.loopexit288, %._crit_edge361
  %676 = phi i32 [ %302, %325 ], [ %302, %.loopexit288 ], [ %511, %._crit_edge361 ]
  %677 = phi i32 [ %303, %325 ], [ %303, %.loopexit288 ], [ %512, %._crit_edge361 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #12
  br label %678

678:                                              ; preds = %.critedge369, %322
  %679 = phi i32 [ %676, %.critedge369 ], [ %302, %322 ]
  %680 = phi i32 [ %677, %.critedge369 ], [ %324, %322 ]
  %indvars.iv.next407 = add nuw nsw i64 %indvars.iv406, 1
  %681 = load i32, ptr %41, align 8, !tbaa !5
  %682 = zext i32 %681 to i64
  %683 = icmp ult i64 %indvars.iv.next407, %682
  br i1 %683, label %301, label %._crit_edge368.loopexit, !llvm.loop !92

684:                                              ; preds = %502, %504, %675, %491
  %.pn250 = phi { ptr, i32 } [ %492, %491 ], [ %.pn247, %675 ], [ %505, %504 ], [ %503, %502 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #12
  br label %685

685:                                              ; preds = %.loopexit287, %.loopexit.split-lp, %684
  %.pn257 = phi { ptr, i32 } [ %.pn250, %684 ], [ %lpad.loopexit, %.loopexit287 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #12
  br label %697

686:                                              ; preds = %._crit_edge368
  br i1 %300, label %696, label %687

687:                                              ; preds = %686
  br i1 %.not, label %693, label %688

688:                                              ; preds = %687
  %689 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %690 unwind label %691

690:                                              ; preds = %688
  invoke void @_ZN6Assimp6Logger4infoIJRA31_KcRjRA23_S2_S5_RA13_S2_S5_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %689, ptr noundef nonnull align 1 dereferenceable(31) @.str.23, ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 1 dereferenceable(23) @.str.24, ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 1 dereferenceable(13) @.str.25, ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 1 dereferenceable(2) @.str.26)
          to label %696 unwind label %691

691:                                              ; preds = %695, %693, %690, %688, %._crit_edge368
  %692 = landingpad { ptr, i32 }
          cleanup
  br label %697

693:                                              ; preds = %687
  %694 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %695 unwind label %691

695:                                              ; preds = %693
  invoke void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %694, ptr noundef nonnull @.str.27)
          to label %696 unwind label %691

696:                                              ; preds = %690, %695, %686
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %13) #12
  call void @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #12
  ret void

697:                                              ; preds = %691, %685
  %.pn257.pn = phi { ptr, i32 } [ %.pn257, %685 ], [ %692, %691 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %13) #12
  br label %698

698:                                              ; preds = %697, %294
  %.pn277.pn = phi { ptr, i32 } [ %.pn277, %294 ], [ %.pn257.pn, %697 ]
  call void @_ZNSt6vectorINSt7__cxx114listIN6Assimp17STransformVecInfoESaIS3_EEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #12
  br label %699

699:                                              ; preds = %698, %74
  %.pn277.pn.pn = phi { ptr, i32 } [ %.pn277.pn, %698 ], [ %75, %74 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #12
  resume { ptr, i32 } %.pn277.pn.pn
}

declare void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) local_unnamed_addr #2

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Assimp17STransformVecInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #5 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN18aiMaterialPropertyD2Ev(ptr noundef nonnull align 8 dereferenceable(1056)) unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx114listIN6Assimp12TTUpdateInfoESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24), 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 @_ZNSt14_List_iteratorIN6Assimp17STransformVecInfoEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6Assimp17STransformVecInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #9 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6aiMesh16GetNumUVChannelsEv(ptr noundef nonnull align 8 dereferenceable(1320)) local_unnamed_addr #5 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6Assimp17STransformVecInfo15IsUntransformedEv(ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #9 align 2

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

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

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

declare void @_ZN6Assimp6Logger5errorEPKc(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZSt4swapIN6Assimp17STransformVecInfoEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #9

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

declare noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv() local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6Logger5errorIJjRA32_KciRA11_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(11)) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef ptr @_ZL17MappingModeToChar16aiTextureMapMode(i32 noundef) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6Logger4infoIJRA1024_cEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 1 dereferenceable(1024)) local_unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN12aiMatrix3x3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(36)) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(36) ptr @_ZN12aiMatrix3x3tIfE9RotationZEfRS0_(float noundef, ptr noundef nonnull align 4 dereferenceable(36)) local_unnamed_addr #10 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK12aiMatrix3x3tIfEmlERKS0_(ptr dead_on_unwind noalias writable sret(%class.aiMatrix3x3t) align 4, ptr noundef nonnull align 4 dereferenceable(36), ptr noundef nonnull align 4 dereferenceable(36)) local_unnamed_addr #10 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6Logger4infoIJRA31_KcRjRA23_S2_S5_RA13_S2_S5_RA2_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(23), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(13), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #0 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 16}
!6 = !{!"_ZTS7aiScene", !7, i64 0, !10, i64 8, !7, i64 16, !10, i64 24, !7, i64 32, !10, i64 40, !7, i64 48, !10, i64 56, !7, i64 64, !10, i64 72, !7, i64 80, !10, i64 88, !7, i64 96, !10, i64 104, !10, i64 112, !11, i64 120, !7, i64 1148, !10, i64 1152, !10, i64 1160}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"_ZTS8aiString", !7, i64 0, !8, i64 4}
!12 = !{!6, !7, i64 32}
!13 = !{!7, !7, i64 0}
!14 = !{!6, !10, i64 40}
!15 = !{!10, !10, i64 0}
!16 = !{!17, !7, i64 8}
!17 = !{!"_ZTS10aiMaterial", !10, i64 0, !7, i64 8, !7, i64 12}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = !{!17, !10, i64 0}
!21 = !{!22, !10, i64 8}
!22 = !{!"_ZTSN6Assimp12TTUpdateInfoE", !10, i64 0, !10, i64 8, !7, i64 16, !7, i64 20}
!23 = !{!24, !7, i64 24}
!24 = !{!"_ZTSN6Assimp20TextureTransformStepE", !25, i64 0, !7, i64 24}
!25 = !{!"_ZTSN6Assimp11BaseProcessE", !10, i64 8, !10, i64 16}
!26 = !{!27, !7, i64 1028}
!27 = !{!"_ZTS18aiMaterialProperty", !11, i64 0, !7, i64 1028, !7, i64 1032, !7, i64 1036, !28, i64 1040, !10, i64 1048}
!28 = !{!"_ZTS18aiPropertyTypeInfo", !8, i64 0}
!29 = !{!27, !7, i64 1032}
!30 = !{!27, !10, i64 1048}
!31 = !{!32, !7, i64 20}
!32 = !{!"_ZTSN6Assimp17STransformVecInfoE", !33, i64 0, !7, i64 20, !36, i64 24, !36, i64 28, !7, i64 32, !37, i64 40}
!33 = !{!"_ZTS13aiUVTransform", !34, i64 0, !34, i64 8, !35, i64 16}
!34 = !{!"_ZTS10aiVector2tIfE", !35, i64 0, !35, i64 4}
!35 = !{!"float", !8, i64 0}
!36 = !{!"_ZTS16aiTextureMapMode", !8, i64 0}
!37 = !{!"_ZTSNSt7__cxx114listIN6Assimp12TTUpdateInfoESaIS2_EEE", !38, i64 0}
!38 = !{!"_ZTSNSt7__cxx1110_List_baseIN6Assimp12TTUpdateInfoESaIS2_EEE", !39, i64 0}
!39 = !{!"_ZTSNSt7__cxx1110_List_baseIN6Assimp12TTUpdateInfoESaIS2_EE10_List_implE", !40, i64 0}
!40 = !{!"_ZTSNSt8__detail17_List_node_headerE", !41, i64 0, !42, i64 16}
!41 = !{!"_ZTSNSt8__detail15_List_node_baseE", !10, i64 0, !10, i64 8}
!42 = !{!"long", !8, i64 0}
!43 = !{!22, !10, i64 0}
!44 = !{!36, !36, i64 0}
!45 = !{!32, !36, i64 24}
!46 = !{!32, !36, i64 28}
!47 = !{!27, !7, i64 1036}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.unroll.disable"}
!50 = distinct !{!50, !19}
!51 = distinct !{!51, !19}
!52 = !{!33, !35, i64 16}
!53 = !{!6, !10, i64 24}
!54 = !{!55, !7, i64 232}
!55 = !{!"_ZTS6aiMesh", !7, i64 0, !7, i64 4, !7, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !8, i64 48, !8, i64 112, !8, i64 176, !10, i64 208, !7, i64 216, !10, i64 224, !7, i64 232, !11, i64 236, !7, i64 1264, !10, i64 1272, !56, i64 1280, !57, i64 1284, !10, i64 1312}
!56 = !{!"_ZTS16aiMorphingMethod", !8, i64 0}
!57 = !{!"_ZTS6aiAABB", !58, i64 0, !58, i64 12}
!58 = !{!"_ZTS10aiVector3tIfE", !35, i64 0, !35, i64 4, !35, i64 8}
!59 = distinct !{!59, !49}
!60 = distinct !{!60, !19}
!61 = !{!32, !7, i64 32}
!62 = distinct !{!62, !19}
!63 = distinct !{!63, !19}
!64 = distinct !{!64, !19}
!65 = distinct !{!65, !19}
!66 = distinct !{!66, !19}
!67 = distinct !{!67, !19}
!68 = distinct !{!68, !19}
!69 = !{!70, !70, i64 0}
!70 = !{!"bool", !8, i64 0}
!71 = !{i8 0, i8 2}
!72 = distinct !{!72, !19}
!73 = !{}
!74 = !{!33, !35, i64 0}
!75 = !{!33, !35, i64 4}
!76 = !{!33, !35, i64 8}
!77 = !{!33, !35, i64 12}
!78 = distinct !{!78, !19}
!79 = !{!55, !7, i64 4}
!80 = !{!34, !35, i64 0}
!81 = !{!82, !35, i64 0}
!82 = !{!"_ZTS12aiMatrix3x3tIfE", !35, i64 0, !35, i64 4, !35, i64 8, !35, i64 12, !35, i64 16, !35, i64 20, !35, i64 24, !35, i64 28, !35, i64 32}
!83 = !{!34, !35, i64 4}
!84 = !{!82, !35, i64 16}
!85 = !{!82, !35, i64 20}
!86 = !{!82, !35, i64 8}
!87 = !{i64 0, i64 4, !88, i64 4, i64 4, !88, i64 8, i64 4, !88, i64 12, i64 4, !88, i64 16, i64 4, !88, i64 20, i64 4, !88, i64 24, i64 4, !88, i64 28, i64 4, !88, i64 32, i64 4, !88}
!88 = !{!35, !35, i64 0}
!89 = !{!58, !35, i64 8}
!90 = distinct !{!90, !19}
!91 = distinct !{!91, !19}
!92 = distinct !{!92, !19}


; Effective O3 passes: AggressiveInstCombinePass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass