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

; 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::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.47" }
%"struct.std::_Head_base.47" = type { ptr }
%"class.Assimp::MakeVerboseFormatProcess" = type { %"class.Assimp::BaseProcess" }
%"class.Assimp::BaseProcess" = type { ptr, ptr, ptr }
%"class.Assimp::FlipWindingOrderProcess" = type { %"class.Assimp::BaseProcess" }
%"class.Assimp::FlipUVsProcess" = type { %"class.Assimp::BaseProcess" }
%"class.Assimp::MakeLeftHandedProcess" = type { %"class.Assimp::BaseProcess" }
%"class.Assimp::JoinVerticesProcess" = type { %"class.Assimp::BaseProcess" }
%"class.Assimp::ExportProperties" = type { %"class.std::map", %"class.std::map.26", %"class.std::map.31", %"class.std::map.36", %"class.std::map.41" }
%"class.std::map" = type { %"class.std::_Rb_tree.21" }
%"class.std::_Rb_tree.21" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, int>, std::_Select1st<std::pair<const unsigned int, int>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, int>, std::_Select1st<std::pair<const unsigned int, int>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.26" = type { %"class.std::_Rb_tree.27" }
%"class.std::_Rb_tree.27" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, float>, std::_Select1st<std::pair<const unsigned int, float>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, float>, std::_Select1st<std::pair<const unsigned int, float>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.31" = type { %"class.std::_Rb_tree.32" }
%"class.std::_Rb_tree.32" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const unsigned int, std::__cxx11::basic_string<char>>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const unsigned int, std::__cxx11::basic_string<char>>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.36" = type { %"class.std::_Rb_tree.37" }
%"class.std::_Rb_tree.37" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, aiMatrix4x4t<float>>, std::_Select1st<std::pair<const unsigned int, aiMatrix4x4t<float>>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, aiMatrix4x4t<float>>, std::_Select1st<std::pair<const unsigned int, aiMatrix4x4t<float>>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.41" = type { %"class.std::_Rb_tree.42" }
%"class.std::_Rb_tree.42" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, std::function<void *(void *)>>, std::_Select1st<std::pair<const unsigned int, std::function<void *(void *)>>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, std::function<void *(void *)>>, std::_Select1st<std::pair<const unsigned int, std::function<void *(void *)>>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%struct.ExceptionSwallower = type { i8 }
%"class.Assimp::Exporter" = type { ptr }
%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] }
%"class.Assimp::ExporterPimpl" = type { ptr, %"class.std::shared_ptr", i8, ptr, i8, %"class.std::vector.11", %"class.std::__cxx11::basic_string", %"class.std::vector.16" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<Assimp::BaseProcess *, std::allocator<Assimp::BaseProcess *>>::_Vector_impl" }
%"struct.std::_Vector_base<Assimp::BaseProcess *, std::allocator<Assimp::BaseProcess *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Assimp::BaseProcess *, std::allocator<Assimp::BaseProcess *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Assimp::BaseProcess *, std::allocator<Assimp::BaseProcess *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.16" = type { %"struct.std::_Vector_base.17" }
%"struct.std::_Vector_base.17" = type { %"struct.std::_Vector_base<Assimp::Exporter::ExportFormatEntry, std::allocator<Assimp::Exporter::ExportFormatEntry>>::_Vector_impl" }
%"struct.std::_Vector_base<Assimp::Exporter::ExportFormatEntry, std::allocator<Assimp::Exporter::ExportFormatEntry>>::_Vector_impl" = type { %"struct.std::_Vector_base<Assimp::Exporter::ExportFormatEntry, std::allocator<Assimp::Exporter::ExportFormatEntry>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Assimp::Exporter::ExportFormatEntry, std::allocator<Assimp::Exporter::ExportFormatEntry>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.Assimp::Exporter::ExportFormatEntry" = type <{ %struct.aiExportFormatDesc, ptr, i32, [4 x i8] }>
%struct.aiExportFormatDesc = type { ptr, ptr, ptr }
%"struct.Assimp::ScenePrivateData" = type <{ ptr, i32, i8, [3 x i8] }>

@.str = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTI17DeadlyExportError = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.5 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [20 x i8], align 1
@_ZTIN6Assimp11BaseProcessE = external constant ptr
@_ZTIN6Assimp14FlipUVsProcessE = external constant ptr
@_ZTIN6Assimp23FlipWindingOrderProcessE = external constant ptr
@_ZTIN6Assimp21MakeLeftHandedProcessE = external constant ptr
@_ZTIN6Assimp20PretransformVerticesE = external constant ptr
@.str.7 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [47 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

declare ptr @__cxa_begin_catch(ptr)

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN6Assimp8Exporter6ExportEPK7aiScenePKcS5_jPKNS_16ExportPropertiesE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, ptr noundef %5) #4 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i8, align 1
  %17 = alloca i64, align 8
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca %"class.std::unique_ptr", align 8
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i8, align 1
  %26 = alloca i8, align 1
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca %"class.Assimp::MakeVerboseFormatProcess", align 8
  %30 = alloca %"class.Assimp::FlipWindingOrderProcess", align 8
  %31 = alloca %"class.Assimp::FlipUVsProcess", align 8
  %32 = alloca %"class.Assimp::MakeLeftHandedProcess", align 8
  %33 = alloca i8, align 1
  %34 = alloca i32, align 4
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca %"class.Assimp::JoinVerticesProcess", align 8
  %38 = alloca %"class.Assimp::ExportProperties", align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator", align 1
  %44 = alloca %struct.ExceptionSwallower, align 1
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store i32 %4, ptr %12, align 4, !tbaa !9
  store ptr %5, ptr %13, align 8, !tbaa !5
  %45 = load ptr, ptr %8, align 8
  %46 = getelementptr inbounds %"class.Assimp::Exporter", ptr %45, i32 0, i32 0
  %47 = load ptr, ptr %46, align 8, !tbaa !11
  %48 = icmp ne ptr null, %47
  br i1 %48, label %51, label %49

49:                                               ; preds = %6
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 368)
          to label %50 unwind label %86

50:                                               ; preds = %49
  br label %51

51:                                               ; preds = %50, %6
  %52 = phi i1 [ true, %6 ], [ false, %50 ]
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #11
  %53 = load ptr, ptr %9, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.aiScene, ptr %53, i32 0, i32 0
  %55 = load i32, ptr %54, align 8, !tbaa !13
  %56 = and i32 %55, 8
  %57 = icmp ne i32 %56, 0
  br i1 %57, label %58, label %62

58:                                               ; preds = %51
  %59 = load ptr, ptr %9, align 8, !tbaa !5
  %60 = invoke noundef zeroext i1 @_ZN6Assimp24MakeVerboseFormatProcess15IsVerboseFormatEPK7aiScene(ptr noundef %59)
          to label %61 unwind label %90

61:                                               ; preds = %58
  br label %62

62:                                               ; preds = %61, %51
  %63 = phi i1 [ true, %51 ], [ %60, %61 ]
  %64 = zext i1 %63 to i8
  store i8 %64, ptr %16, align 1, !tbaa !16
  %65 = getelementptr inbounds %"class.Assimp::Exporter", ptr %45, i32 0, i32 0
  %66 = load ptr, ptr %65, align 8, !tbaa !11
  %67 = getelementptr inbounds %"class.Assimp::ExporterPimpl", ptr %66, i32 0, i32 3
  %68 = load ptr, ptr %67, align 8, !tbaa !18
  %69 = load ptr, ptr %68, align 8, !tbaa !34
  %70 = getelementptr inbounds ptr, ptr %69, i64 5
  %71 = load ptr, ptr %70, align 8
  invoke void %71(ptr noundef nonnull align 8 dereferenceable(8) %68, i32 noundef 0, i32 noundef 4)
          to label %72 unwind label %90

72:                                               ; preds = %62
  %73 = getelementptr inbounds %"class.Assimp::Exporter", ptr %45, i32 0, i32 0
  %74 = load ptr, ptr %73, align 8, !tbaa !11
  %75 = getelementptr inbounds %"class.Assimp::ExporterPimpl", ptr %74, i32 0, i32 6
  %76 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef @.str.4)
          to label %77 unwind label %90

77:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #11
  store i64 0, ptr %17, align 8, !tbaa !36
  br label %78

78:                                               ; preds = %497, %77
  %79 = load i64, ptr %17, align 8, !tbaa !36
  %80 = getelementptr inbounds %"class.Assimp::Exporter", ptr %45, i32 0, i32 0
  %81 = load ptr, ptr %80, align 8, !tbaa !11
  %82 = getelementptr inbounds %"class.Assimp::ExporterPimpl", ptr %81, i32 0, i32 7
  %83 = call noundef i64 @_ZNKSt6vectorIN6Assimp8Exporter17ExportFormatEntryESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %82) #11
  %84 = icmp ult i64 %79, %83
  br i1 %84, label %94, label %85

85:                                               ; preds = %78
  store i32 2, ptr %18, align 4
  br label %501

86:                                               ; preds = %49
  %87 = landingpad { ptr, i32 }
          catch ptr null
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %14, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %15, align 4
  br label %524

90:                                               ; preds = %72, %62, %58
  %91 = landingpad { ptr, i32 }
          catch ptr null
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %14, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %15, align 4
  br label %523

94:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #11
  %95 = getelementptr inbounds %"class.Assimp::Exporter", ptr %45, i32 0, i32 0
  %96 = load ptr, ptr %95, align 8, !tbaa !11
  %97 = getelementptr inbounds %"class.Assimp::ExporterPimpl", ptr %96, i32 0, i32 7
  %98 = load i64, ptr %17, align 8, !tbaa !36
  %99 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNSt6vectorIN6Assimp8Exporter17ExportFormatEntryESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %97, i64 noundef %98) #11
  store ptr %99, ptr %19, align 8, !tbaa !5
  %100 = load ptr, ptr %19, align 8, !tbaa !5
  %101 = getelementptr inbounds %"struct.Assimp::Exporter::ExportFormatEntry", ptr %100, i32 0, i32 0
  %102 = getelementptr inbounds %struct.aiExportFormatDesc, ptr %101, i32 0, i32 0
  %103 = load ptr, ptr %102, align 8, !tbaa !37
  %104 = load ptr, ptr %10, align 8, !tbaa !5
  %105 = call i32 @strcmp(ptr noundef %103, ptr noundef %104) #8
  %106 = icmp ne i32 %105, 0
  br i1 %106, label %493, label %107

107:                                              ; preds = %94
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #11
  store ptr null, ptr %20, align 8, !tbaa !5
  %108 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN6Assimp13SceneCombiner9CopySceneEPP7aiScenePKS1_b(ptr noundef %20, ptr noundef %108, i1 noundef zeroext true)
          to label %109 unwind label %156

109:                                              ; preds = %107
  %110 = getelementptr inbounds %"class.Assimp::Exporter", ptr %45, i32 0, i32 0
  %111 = load ptr, ptr %110, align 8, !tbaa !11
  %112 = getelementptr inbounds %"class.Assimp::ExporterPimpl", ptr %111, i32 0, i32 3
  %113 = load ptr, ptr %112, align 8, !tbaa !18
  %114 = load ptr, ptr %113, align 8, !tbaa !34
  %115 = getelementptr inbounds ptr, ptr %114, i64 5
  %116 = load ptr, ptr %115, align 8
  invoke void %116(ptr noundef nonnull align 8 dereferenceable(8) %113, i32 noundef 1, i32 noundef 4)
          to label %117 unwind label %156

117:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #11
  %118 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZNSt10unique_ptrI7aiSceneSt14default_deleteIS0_EEC2IS2_vEEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef %118) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #11
  %119 = load ptr, ptr %9, align 8, !tbaa !5
  %120 = invoke noundef ptr @_ZN6Assimp9ScenePrivEPK7aiScene(ptr noundef %119)
          to label %121 unwind label %160

121:                                              ; preds = %117
  store ptr %120, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #11
  store i32 25165828, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #11
  %122 = load ptr, ptr %19, align 8, !tbaa !5
  %123 = getelementptr inbounds %"struct.Assimp::Exporter::ExportFormatEntry", ptr %122, i32 0, i32 2
  %124 = load i32, ptr %123, align 8, !tbaa !40
  %125 = load i32, ptr %12, align 4, !tbaa !9
  %126 = or i32 %124, %125
  %127 = load ptr, ptr %22, align 8, !tbaa !5
  %128 = icmp ne ptr %127, null
  br i1 %128, label %129, label %139

129:                                              ; preds = %121
  %130 = load ptr, ptr %22, align 8, !tbaa !5
  %131 = getelementptr inbounds %"struct.Assimp::ScenePrivateData", ptr %130, i32 0, i32 2
  %132 = load i8, ptr %131, align 4, !tbaa !41, !range !43, !noundef !44
  %133 = trunc i8 %132 to i1
  br i1 %133, label %139, label %134

134:                                              ; preds = %129
  %135 = load ptr, ptr %22, align 8, !tbaa !5
  %136 = getelementptr inbounds %"struct.Assimp::ScenePrivateData", ptr %135, i32 0, i32 1
  %137 = load i32, ptr %136, align 8, !tbaa !45
  %138 = and i32 %137, -25165829
  br label %140

139:                                              ; preds = %129, %121
  br label %140

140:                                              ; preds = %139, %134
  %141 = phi i32 [ %138, %134 ], [ 0, %139 ]
  %142 = xor i32 %141, -1
  %143 = and i32 %126, %142
  store i32 %143, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #11
  store i8 0, ptr %25, align 1, !tbaa !16
  %144 = load i8, ptr %16, align 1, !tbaa !16, !range !43, !noundef !44
  %145 = trunc i8 %144 to i1
  br i1 %145, label %231, label %146

146:                                              ; preds = %140
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #11
  store i8 0, ptr %26, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #11
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %147

147:                                              ; preds = %195, %146
  %148 = load i32, ptr %27, align 4, !tbaa !9
  %149 = zext i32 %148 to i64
  %150 = getelementptr inbounds %"class.Assimp::Exporter", ptr %45, i32 0, i32 0
  %151 = load ptr, ptr %150, align 8, !tbaa !11
  %152 = getelementptr inbounds %"class.Assimp::ExporterPimpl", ptr %151, i32 0, i32 5
  %153 = call noundef i64 @_ZNKSt6vectorIPN6Assimp11BaseProcessESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %152) #11
  %154 = icmp ult i64 %149, %153
  br i1 %154, label %164, label %155

155:                                              ; preds = %147
  store i32 5, ptr %18, align 4
  br label %198

156:                                              ; preds = %109, %107
  %157 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %14, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %15, align 4
  br label %463

160:                                              ; preds = %117
  %161 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %14, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %15, align 4
  br label %462

164:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #11
  %165 = getelementptr inbounds %"class.Assimp::Exporter", ptr %45, i32 0, i32 0
  %166 = load ptr, ptr %165, align 8, !tbaa !11
  %167 = getelementptr inbounds %"class.Assimp::ExporterPimpl", ptr %166, i32 0, i32 5
  %168 = load i32, ptr %27, align 4, !tbaa !9
  %169 = zext i32 %168 to i64
  %170 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN6Assimp11BaseProcessESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %167, i64 noundef %169) #11
  %171 = load ptr, ptr %170, align 8, !tbaa !5
  store ptr %171, ptr %28, align 8, !tbaa !5
  %172 = load ptr, ptr %28, align 8, !tbaa !5
  %173 = load i32, ptr %24, align 4, !tbaa !9
  %174 = load ptr, ptr %172, align 8, !tbaa !34
  %175 = getelementptr inbounds ptr, ptr %174, i64 2
  %176 = load ptr, ptr %175, align 8
  %177 = invoke noundef zeroext i1 %176(ptr noundef nonnull align 8 dereferenceable(24) %172, i32 noundef %173)
          to label %178 unwind label %187

178:                                              ; preds = %164
  br i1 %177, label %179, label %191

179:                                              ; preds = %178
  %180 = load ptr, ptr %28, align 8, !tbaa !5
  %181 = load ptr, ptr %180, align 8, !tbaa !34
  %182 = getelementptr inbounds ptr, ptr %181, i64 3
  %183 = load ptr, ptr %182, align 8
  %184 = invoke noundef zeroext i1 %183(ptr noundef nonnull align 8 dereferenceable(24) %180)
          to label %185 unwind label %187

185:                                              ; preds = %179
  br i1 %184, label %186, label %191

186:                                              ; preds = %185
  store i8 1, ptr %26, align 1, !tbaa !16
  store i32 5, ptr %18, align 4
  br label %192

187:                                              ; preds = %179, %164
  %188 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %14, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #11
  br label %230

191:                                              ; preds = %185, %178
  store i32 0, ptr %18, align 4
  br label %192

192:                                              ; preds = %191, %186
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #11
  %193 = load i32, ptr %18, align 4
  switch i32 %193, label %198 [
    i32 0, label %194
  ]

194:                                              ; preds = %192
  br label %195

195:                                              ; preds = %194
  %196 = load i32, ptr %27, align 4, !tbaa !9
  %197 = add i32 %196, 1
  store i32 %197, ptr %27, align 4, !tbaa !9
  br label %147, !llvm.loop !46

198:                                              ; preds = %192, %155
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #11
  br label %199

199:                                              ; preds = %198
  %200 = load i8, ptr %26, align 1, !tbaa !16, !range !43, !noundef !44
  %201 = trunc i8 %200 to i1
  br i1 %201, label %208, label %202

202:                                              ; preds = %199
  %203 = load ptr, ptr %19, align 8, !tbaa !5
  %204 = getelementptr inbounds %"struct.Assimp::Exporter::ExportFormatEntry", ptr %203, i32 0, i32 2
  %205 = load i32, ptr %204, align 8, !tbaa !40
  %206 = and i32 %205, 2
  %207 = icmp ne i32 %206, 0
  br i1 %207, label %208, label %229

208:                                              ; preds = %202, %199
  %209 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %210 unwind label %220

210:                                              ; preds = %208
  invoke void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %209, ptr noundef @.str.5)
          to label %211 unwind label %220

211:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #11
  call void @_ZN6Assimp24MakeVerboseFormatProcessC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #11
  %212 = call noundef ptr @_ZNKSt10unique_ptrI7aiSceneSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  invoke void @_ZN6Assimp24MakeVerboseFormatProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef %212)
          to label %213 unwind label %224

213:                                              ; preds = %211
  %214 = load ptr, ptr %19, align 8, !tbaa !5
  %215 = getelementptr inbounds %"struct.Assimp::Exporter::ExportFormatEntry", ptr %214, i32 0, i32 2
  %216 = load i32, ptr %215, align 8, !tbaa !40
  %217 = and i32 %216, 2
  %218 = icmp ne i32 %217, 0
  br i1 %218, label %228, label %219

219:                                              ; preds = %213
  store i8 1, ptr %25, align 1, !tbaa !16
  br label %228

220:                                              ; preds = %210, %208
  %221 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %14, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %15, align 4
  br label %230

224:                                              ; preds = %211
  %225 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %14, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %15, align 4
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #11
  br label %230

228:                                              ; preds = %219, %213
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #11
  br label %229

229:                                              ; preds = %228, %202
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #11
  br label %231

230:                                              ; preds = %224, %220, %187
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #11
  br label %461

231:                                              ; preds = %229, %140
  %232 = getelementptr inbounds %"class.Assimp::Exporter", ptr %45, i32 0, i32 0
  %233 = load ptr, ptr %232, align 8, !tbaa !11
  %234 = getelementptr inbounds %"class.Assimp::ExporterPimpl", ptr %233, i32 0, i32 3
  %235 = load ptr, ptr %234, align 8, !tbaa !18
  %236 = load ptr, ptr %235, align 8, !tbaa !34
  %237 = getelementptr inbounds ptr, ptr %236, i64 5
  %238 = load ptr, ptr %237, align 8
  invoke void %238(ptr noundef nonnull align 8 dereferenceable(8) %235, i32 noundef 2, i32 noundef 4)
          to label %239 unwind label %249

239:                                              ; preds = %231
  %240 = load i32, ptr %24, align 4, !tbaa !9
  %241 = icmp ne i32 %240, 0
  br i1 %241, label %242, label %400

242:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 24, ptr %30) #11
  call void @_ZN6Assimp23FlipWindingOrderProcessC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #11
  %243 = load i32, ptr %24, align 4, !tbaa !9
  %244 = invoke noundef zeroext i1 @_ZNK6Assimp23FlipWindingOrderProcess8IsActiveEj(ptr noundef nonnull align 8 dereferenceable(24) %30, i32 noundef %243)
          to label %245 unwind label %253

245:                                              ; preds = %242
  br i1 %244, label %246, label %257

246:                                              ; preds = %245
  %247 = call noundef ptr @_ZNKSt10unique_ptrI7aiSceneSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  invoke void @_ZN6Assimp23FlipWindingOrderProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef %247)
          to label %248 unwind label %253

248:                                              ; preds = %246
  br label %257

249:                                              ; preds = %400, %231
  %250 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %14, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %15, align 4
  br label %461

253:                                              ; preds = %246, %242
  %254 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %14, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %15, align 4
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #11
  br label %461

257:                                              ; preds = %248, %245
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #11
  invoke void @_ZN6Assimp14FlipUVsProcessC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %31)
          to label %258 unwind label %265

258:                                              ; preds = %257
  %259 = load i32, ptr %24, align 4, !tbaa !9
  %260 = invoke noundef zeroext i1 @_ZNK6Assimp14FlipUVsProcess8IsActiveEj(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef %259)
          to label %261 unwind label %269

261:                                              ; preds = %258
  br i1 %260, label %262, label %273

262:                                              ; preds = %261
  %263 = call noundef ptr @_ZNKSt10unique_ptrI7aiSceneSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  invoke void @_ZN6Assimp14FlipUVsProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef %263)
          to label %264 unwind label %269

264:                                              ; preds = %262
  br label %273

265:                                              ; preds = %257
  %266 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %14, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %15, align 4
  br label %280

269:                                              ; preds = %262, %258
  %270 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  %271 = extractvalue { ptr, i32 } %270, 0
  store ptr %271, ptr %14, align 8
  %272 = extractvalue { ptr, i32 } %270, 1
  store i32 %272, ptr %15, align 4
  call void @_ZN6Assimp14FlipUVsProcessD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #11
  br label %280

273:                                              ; preds = %264, %261
  call void @_ZN6Assimp14FlipUVsProcessD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #11
  call void @_ZN6Assimp21MakeLeftHandedProcessC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #11
  %274 = load i32, ptr %24, align 4, !tbaa !9
  %275 = invoke noundef zeroext i1 @_ZNK6Assimp21MakeLeftHandedProcess8IsActiveEj(ptr noundef nonnull align 8 dereferenceable(24) %32, i32 noundef %274)
          to label %276 unwind label %281

276:                                              ; preds = %273
  br i1 %275, label %277, label %285

277:                                              ; preds = %276
  %278 = call noundef ptr @_ZNKSt10unique_ptrI7aiSceneSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  invoke void @_ZN6Assimp21MakeLeftHandedProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef %278)
          to label %279 unwind label %281

279:                                              ; preds = %277
  br label %285

280:                                              ; preds = %269, %265
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #11
  br label %461

281:                                              ; preds = %277, %273
  %282 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %14, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %15, align 4
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #11
  br label %461

285:                                              ; preds = %279, %276
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #11
  store i8 0, ptr %33, align 1, !tbaa !16
  %286 = load ptr, ptr %13, align 8, !tbaa !5
  %287 = icmp ne ptr null, %286
  br i1 %287, label %288, label %297

288:                                              ; preds = %285
  %289 = load ptr, ptr %13, align 8, !tbaa !5
  %290 = invoke noundef zeroext i1 @_ZNK6Assimp16ExportProperties15GetPropertyBoolEPKcb(ptr noundef nonnull align 8 dereferenceable(240) %289, ptr noundef @.str.6, i1 noundef zeroext false)
          to label %291 unwind label %293

291:                                              ; preds = %288
  %292 = zext i1 %290 to i8
  store i8 %292, ptr %33, align 1, !tbaa !16
  br label %297

293:                                              ; preds = %288
  %294 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %14, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %15, align 4
  br label %399

297:                                              ; preds = %291, %285
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #11
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %298

298:                                              ; preds = %377, %297
  %299 = load i32, ptr %34, align 4, !tbaa !9
  %300 = zext i32 %299 to i64
  %301 = getelementptr inbounds %"class.Assimp::Exporter", ptr %45, i32 0, i32 0
  %302 = load ptr, ptr %301, align 8, !tbaa !11
  %303 = getelementptr inbounds %"class.Assimp::ExporterPimpl", ptr %302, i32 0, i32 5
  %304 = call noundef i64 @_ZNKSt6vectorIPN6Assimp11BaseProcessESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %303) #11
  %305 = icmp ult i64 %300, %304
  br i1 %305, label %307, label %306

306:                                              ; preds = %298
  store i32 8, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #11
  br label %380

307:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #11
  %308 = getelementptr inbounds %"class.Assimp::Exporter", ptr %45, i32 0, i32 0
  %309 = load ptr, ptr %308, align 8, !tbaa !11
  %310 = getelementptr inbounds %"class.Assimp::ExporterPimpl", ptr %309, i32 0, i32 5
  %311 = load i32, ptr %34, align 4, !tbaa !9
  %312 = zext i32 %311 to i64
  %313 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN6Assimp11BaseProcessESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %310, i64 noundef %312) #11
  %314 = load ptr, ptr %313, align 8, !tbaa !5
  store ptr %314, ptr %35, align 8, !tbaa !5
  %315 = load ptr, ptr %35, align 8, !tbaa !5
  %316 = load i32, ptr %24, align 4, !tbaa !9
  %317 = load ptr, ptr %315, align 8, !tbaa !34
  %318 = getelementptr inbounds ptr, ptr %317, i64 2
  %319 = load ptr, ptr %318, align 8
  %320 = invoke noundef zeroext i1 %319(ptr noundef nonnull align 8 dereferenceable(24) %315, i32 noundef %316)
          to label %321 unwind label %327

321:                                              ; preds = %307
  br i1 %320, label %322, label %373

322:                                              ; preds = %321
  %323 = load ptr, ptr %35, align 8, !tbaa !5
  %324 = icmp eq ptr %323, null
  br i1 %324, label %331, label %325

325:                                              ; preds = %322
  %326 = call ptr @__dynamic_cast(ptr %323, ptr @_ZTIN6Assimp11BaseProcessE, ptr @_ZTIN6Assimp14FlipUVsProcessE, i64 0) #11
  br label %332

327:                                              ; preds = %366, %307
  %328 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %14, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #11
  br label %399

331:                                              ; preds = %322
  br label %332

332:                                              ; preds = %331, %325
  %333 = phi ptr [ %326, %325 ], [ null, %331 ]
  %334 = icmp ne ptr %333, null
  br i1 %334, label %373, label %335

335:                                              ; preds = %332
  %336 = load ptr, ptr %35, align 8, !tbaa !5
  %337 = icmp eq ptr %336, null
  br i1 %337, label %340, label %338

338:                                              ; preds = %335
  %339 = call ptr @__dynamic_cast(ptr %336, ptr @_ZTIN6Assimp11BaseProcessE, ptr @_ZTIN6Assimp23FlipWindingOrderProcessE, i64 0) #11
  br label %341

340:                                              ; preds = %335
  br label %341

341:                                              ; preds = %340, %338
  %342 = phi ptr [ %339, %338 ], [ null, %340 ]
  %343 = icmp ne ptr %342, null
  br i1 %343, label %373, label %344

344:                                              ; preds = %341
  %345 = load ptr, ptr %35, align 8, !tbaa !5
  %346 = icmp eq ptr %345, null
  br i1 %346, label %349, label %347

347:                                              ; preds = %344
  %348 = call ptr @__dynamic_cast(ptr %345, ptr @_ZTIN6Assimp11BaseProcessE, ptr @_ZTIN6Assimp21MakeLeftHandedProcessE, i64 0) #11
  br label %350

349:                                              ; preds = %344
  br label %350

350:                                              ; preds = %349, %347
  %351 = phi ptr [ %348, %347 ], [ null, %349 ]
  %352 = icmp ne ptr %351, null
  br i1 %352, label %373, label %353

353:                                              ; preds = %350
  %354 = load ptr, ptr %35, align 8, !tbaa !5
  %355 = icmp eq ptr %354, null
  br i1 %355, label %358, label %356

356:                                              ; preds = %353
  %357 = call ptr @__dynamic_cast(ptr %354, ptr @_ZTIN6Assimp11BaseProcessE, ptr @_ZTIN6Assimp20PretransformVerticesE, i64 0) #11
  br label %359

358:                                              ; preds = %353
  br label %359

359:                                              ; preds = %358, %356
  %360 = phi ptr [ %357, %356 ], [ null, %358 ]
  %361 = icmp ne ptr %360, null
  br i1 %361, label %362, label %366

362:                                              ; preds = %359
  %363 = load i8, ptr %33, align 1, !tbaa !16, !range !43, !noundef !44
  %364 = trunc i8 %363 to i1
  br i1 %364, label %365, label %366

365:                                              ; preds = %362
  store i32 10, ptr %18, align 4
  br label %374

366:                                              ; preds = %362, %359
  %367 = load ptr, ptr %35, align 8, !tbaa !5
  %368 = call noundef ptr @_ZNKSt10unique_ptrI7aiSceneSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  %369 = load ptr, ptr %367, align 8, !tbaa !34
  %370 = getelementptr inbounds ptr, ptr %369, i64 5
  %371 = load ptr, ptr %370, align 8
  invoke void %371(ptr noundef nonnull align 8 dereferenceable(24) %367, ptr noundef %368)
          to label %372 unwind label %327

372:                                              ; preds = %366
  br label %373

373:                                              ; preds = %372, %350, %341, %332, %321
  store i32 0, ptr %18, align 4
  br label %374

374:                                              ; preds = %373, %365
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  %375 = load i32, ptr %18, align 4
  switch i32 %375, label %545 [
    i32 0, label %376
    i32 10, label %377
  ]

376:                                              ; preds = %374
  br label %377

377:                                              ; preds = %376, %374
  %378 = load i32, ptr %34, align 4, !tbaa !9
  %379 = add i32 %378, 1
  store i32 %379, ptr %34, align 4, !tbaa !9
  br label %298, !llvm.loop !48

380:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #11
  %381 = call noundef ptr @_ZNKSt10unique_ptrI7aiSceneSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  %382 = invoke noundef ptr @_ZN6Assimp9ScenePrivEP7aiScene(ptr noundef %381)
          to label %383 unwind label %395

383:                                              ; preds = %380
  store ptr %382, ptr %36, align 8, !tbaa !5
  %384 = load ptr, ptr %36, align 8, !tbaa !5
  %385 = icmp ne ptr null, %384
  br i1 %385, label %388, label %386

386:                                              ; preds = %383
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 480)
          to label %387 unwind label %395

387:                                              ; preds = %386
  br label %388

388:                                              ; preds = %387, %383
  %389 = phi i1 [ true, %383 ], [ false, %387 ]
  %390 = load i32, ptr %24, align 4, !tbaa !9
  %391 = load ptr, ptr %36, align 8, !tbaa !5
  %392 = getelementptr inbounds %"struct.Assimp::ScenePrivateData", ptr %391, i32 0, i32 1
  %393 = load i32, ptr %392, align 8, !tbaa !45
  %394 = or i32 %393, %390
  store i32 %394, ptr %392, align 8, !tbaa !45
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #11
  br label %400

395:                                              ; preds = %386, %380
  %396 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %14, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #11
  br label %399

399:                                              ; preds = %395, %327, %293
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #11
  br label %461

400:                                              ; preds = %388, %239
  %401 = getelementptr inbounds %"class.Assimp::Exporter", ptr %45, i32 0, i32 0
  %402 = load ptr, ptr %401, align 8, !tbaa !11
  %403 = getelementptr inbounds %"class.Assimp::ExporterPimpl", ptr %402, i32 0, i32 3
  %404 = load ptr, ptr %403, align 8, !tbaa !18
  %405 = load ptr, ptr %404, align 8, !tbaa !34
  %406 = getelementptr inbounds ptr, ptr %405, i64 5
  %407 = load ptr, ptr %406, align 8
  invoke void %407(ptr noundef nonnull align 8 dereferenceable(8) %404, i32 noundef 3, i32 noundef 4)
          to label %408 unwind label %249

408:                                              ; preds = %400
  %409 = load i8, ptr %25, align 1, !tbaa !16, !range !43, !noundef !44
  %410 = trunc i8 %409 to i1
  br i1 %410, label %411, label %418

411:                                              ; preds = %408
  call void @llvm.lifetime.start.p0(i64 24, ptr %37) #11
  call void @_ZN6Assimp19JoinVerticesProcessC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #11
  %412 = call noundef ptr @_ZNKSt10unique_ptrI7aiSceneSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  invoke void @_ZN6Assimp19JoinVerticesProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef %412)
          to label %413 unwind label %414

413:                                              ; preds = %411
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #11
  br label %418

414:                                              ; preds = %411
  %415 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  %416 = extractvalue { ptr, i32 } %415, 0
  store ptr %416, ptr %14, align 8
  %417 = extractvalue { ptr, i32 } %415, 1
  store i32 %417, ptr %15, align 4
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #11
  br label %461

418:                                              ; preds = %413, %408
  call void @llvm.lifetime.start.p0(i64 240, ptr %38) #11
  invoke void @_ZN6Assimp16ExportPropertiesC1Ev(ptr noundef nonnull align 8 dereferenceable(240) %38)
          to label %419 unwind label %452

419:                                              ; preds = %418
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #11
  %420 = load ptr, ptr %13, align 8, !tbaa !5
  %421 = icmp ne ptr %420, null
  br i1 %421, label %422, label %424

422:                                              ; preds = %419
  %423 = load ptr, ptr %13, align 8, !tbaa !5
  br label %425

424:                                              ; preds = %419
  br label %425

425:                                              ; preds = %424, %422
  %426 = phi ptr [ %423, %422 ], [ %38, %424 ]
  store ptr %426, ptr %39, align 8, !tbaa !5
  %427 = load ptr, ptr %39, align 8, !tbaa !5
  %428 = load i32, ptr %24, align 4, !tbaa !9
  %429 = and i32 %428, 2
  %430 = icmp ne i32 %429, 0
  %431 = invoke noundef zeroext i1 @_ZN6Assimp16ExportProperties15SetPropertyBoolEPKcb(ptr noundef nonnull align 8 dereferenceable(240) %427, ptr noundef @.str.8, i1 noundef zeroext %430)
          to label %432 unwind label %456

432:                                              ; preds = %425
  %433 = load ptr, ptr %19, align 8, !tbaa !5
  %434 = getelementptr inbounds %"struct.Assimp::Exporter::ExportFormatEntry", ptr %433, i32 0, i32 1
  %435 = load ptr, ptr %434, align 8, !tbaa !49
  %436 = load ptr, ptr %11, align 8, !tbaa !5
  %437 = getelementptr inbounds %"class.Assimp::Exporter", ptr %45, i32 0, i32 0
  %438 = load ptr, ptr %437, align 8, !tbaa !11
  %439 = getelementptr inbounds %"class.Assimp::ExporterPimpl", ptr %438, i32 0, i32 1
  %440 = call noundef ptr @_ZNKSt12__shared_ptrIN6Assimp8IOSystemELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %439) #11
  %441 = call noundef ptr @_ZNKSt10unique_ptrI7aiSceneSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  %442 = load ptr, ptr %39, align 8, !tbaa !5
  invoke void %435(ptr noundef %436, ptr noundef %440, ptr noundef %441, ptr noundef %442)
          to label %443 unwind label %456

443:                                              ; preds = %432
  %444 = getelementptr inbounds %"class.Assimp::Exporter", ptr %45, i32 0, i32 0
  %445 = load ptr, ptr %444, align 8, !tbaa !11
  %446 = getelementptr inbounds %"class.Assimp::ExporterPimpl", ptr %445, i32 0, i32 3
  %447 = load ptr, ptr %446, align 8, !tbaa !18
  %448 = load ptr, ptr %447, align 8, !tbaa !34
  %449 = getelementptr inbounds ptr, ptr %448, i64 5
  %450 = load ptr, ptr %449, align 8
  invoke void %450(ptr noundef nonnull align 8 dereferenceable(8) %447, i32 noundef 4, i32 noundef 4)
          to label %451 unwind label %456

451:                                              ; preds = %443
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  call void @_ZN6Assimp16ExportPropertiesD2Ev(ptr noundef nonnull align 8 dereferenceable(240) %38) #11
  call void @llvm.lifetime.end.p0(i64 240, ptr %38) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  call void @_ZNSt10unique_ptrI7aiSceneSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #11
  br label %492

452:                                              ; preds = %418
  %453 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  %454 = extractvalue { ptr, i32 } %453, 0
  store ptr %454, ptr %14, align 8
  %455 = extractvalue { ptr, i32 } %453, 1
  store i32 %455, ptr %15, align 4
  br label %460

456:                                              ; preds = %443, %432, %425
  %457 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  %458 = extractvalue { ptr, i32 } %457, 0
  store ptr %458, ptr %14, align 8
  %459 = extractvalue { ptr, i32 } %457, 1
  store i32 %459, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  call void @_ZN6Assimp16ExportPropertiesD2Ev(ptr noundef nonnull align 8 dereferenceable(240) %38) #11
  br label %460

460:                                              ; preds = %456, %452
  call void @llvm.lifetime.end.p0(i64 240, ptr %38) #11
  br label %461

461:                                              ; preds = %460, %414, %399, %281, %280, %253, %249, %230
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  br label %462

462:                                              ; preds = %461, %160
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  call void @_ZNSt10unique_ptrI7aiSceneSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #11
  br label %463

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

464:                                              ; preds = %463
  %465 = load i32, ptr %15, align 4
  %466 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTI17DeadlyExportError) #11
  %467 = icmp eq i32 %465, %466
  br i1 %467, label %468, label %500

468:                                              ; preds = %464
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #11
  %469 = load ptr, ptr %14, align 8
  %470 = call ptr @__cxa_begin_catch(ptr %469) #11
  store ptr %470, ptr %40, align 8
  %471 = load ptr, ptr %40, align 8, !tbaa !5
  %472 = load ptr, ptr %471, align 8, !tbaa !34
  %473 = getelementptr inbounds ptr, ptr %472, i64 2
  %474 = load ptr, ptr %473, align 8
  %475 = call noundef ptr %474(ptr noundef nonnull align 8 dereferenceable(16) %471) #11
  %476 = getelementptr inbounds %"class.Assimp::Exporter", ptr %45, i32 0, i32 0
  %477 = load ptr, ptr %476, align 8, !tbaa !11
  %478 = getelementptr inbounds %"class.Assimp::ExporterPimpl", ptr %477, i32 0, i32 6
  %479 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %478, ptr noundef %475)
          to label %480 unwind label %481

480:                                              ; preds = %468
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %18, align 4
  invoke void @__cxa_end_catch()
          to label %485 unwind label %486

481:                                              ; preds = %468
  %482 = landingpad { ptr, i32 }
          catch ptr null
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %14, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %15, align 4
  invoke void @__cxa_end_catch()
          to label %490 unwind label %542

485:                                              ; preds = %480
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #11
  br label %494

486:                                              ; preds = %480
  %487 = landingpad { ptr, i32 }
          catch ptr null
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %14, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %15, align 4
  br label %491

490:                                              ; preds = %481
  br label %491

491:                                              ; preds = %490, %486
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #11
  br label %500

492:                                              ; preds = %451
  store i32 0, ptr %7, align 4
  store i32 1, ptr %18, align 4
  br label %494

493:                                              ; preds = %94
  store i32 0, ptr %18, align 4
  br label %494

494:                                              ; preds = %493, %492, %485
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #11
  %495 = load i32, ptr %18, align 4
  switch i32 %495, label %501 [
    i32 0, label %496
  ]

496:                                              ; preds = %494
  br label %497

497:                                              ; preds = %496
  %498 = load i64, ptr %17, align 8, !tbaa !36
  %499 = add i64 %498, 1
  store i64 %499, ptr %17, align 8, !tbaa !36
  br label %78, !llvm.loop !50

500:                                              ; preds = %491, %464
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #11
  br label %523

501:                                              ; preds = %494, %85
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #11
  %502 = load i32, ptr %18, align 4
  switch i32 %502, label %511 [
    i32 2, label %503
  ]

503:                                              ; preds = %501
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %504 unwind label %514

504:                                              ; preds = %503
  %505 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef %505)
          to label %506 unwind label %518

506:                                              ; preds = %504
  %507 = getelementptr inbounds %"class.Assimp::Exporter", ptr %45, i32 0, i32 0
  %508 = load ptr, ptr %507, align 8, !tbaa !11
  %509 = getelementptr inbounds %"class.Assimp::ExporterPimpl", ptr %508, i32 0, i32 6
  %510 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %509, ptr noundef nonnull align 8 dereferenceable(32) %41) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #11
  store i32 0, ptr %18, align 4
  br label %511

511:                                              ; preds = %506, %501
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #11
  %512 = load i32, ptr %18, align 4
  switch i32 %512, label %545 [
    i32 0, label %513
    i32 1, label %535
  ]

513:                                              ; preds = %511
  br label %534

514:                                              ; preds = %503
  %515 = landingpad { ptr, i32 }
          catch ptr null
  %516 = extractvalue { ptr, i32 } %515, 0
  store ptr %516, ptr %14, align 8
  %517 = extractvalue { ptr, i32 } %515, 1
  store i32 %517, ptr %15, align 4
  br label %522

518:                                              ; preds = %504
  %519 = landingpad { ptr, i32 }
          catch ptr null
  %520 = extractvalue { ptr, i32 } %519, 0
  store ptr %520, ptr %14, align 8
  %521 = extractvalue { ptr, i32 } %519, 1
  store i32 %521, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #11
  br label %522

522:                                              ; preds = %518, %514
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #11
  br label %523

523:                                              ; preds = %522, %500, %90
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #11
  br label %524

524:                                              ; preds = %523, %86
  %525 = load ptr, ptr %14, align 8
  %526 = call ptr @__cxa_begin_catch(ptr %525) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #11
  %527 = invoke noundef i32 @_ZNK18ExceptionSwallowerI8aiReturnEclEv(ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %528 unwind label %529

528:                                              ; preds = %524
  store i32 %527, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #11
  store i32 1, ptr %18, align 4
  call void @__cxa_end_catch()
  br label %535

529:                                              ; preds = %524
  %530 = landingpad { ptr, i32 }
          cleanup
  %531 = extractvalue { ptr, i32 } %530, 0
  store ptr %531, ptr %14, align 8
  %532 = extractvalue { ptr, i32 } %530, 1
  store i32 %532, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #11
  invoke void @__cxa_end_catch()
          to label %533 unwind label %542

533:                                              ; preds = %529
  br label %537

534:                                              ; preds = %513
  store i32 -1, ptr %7, align 4
  br label %535

535:                                              ; preds = %534, %528, %511
  %536 = load i32, ptr %7, align 4
  ret i32 %536

537:                                              ; preds = %533
  %538 = load ptr, ptr %14, align 8
  %539 = load i32, ptr %15, align 4
  %540 = insertvalue { ptr, i32 } poison, ptr %538, 0
  %541 = insertvalue { ptr, i32 } %540, i32 %539, 1
  resume { ptr, i32 } %541

542:                                              ; preds = %529, %481
  %543 = landingpad { ptr, i32 }
          catch ptr null
  %544 = extractvalue { ptr, i32 } %543, 0
  call void @__clang_call_terminate(ptr %544) #12
  unreachable

545:                                              ; preds = %511, %374
  unreachable
}

declare noundef zeroext i1 @_ZN6Assimp24MakeVerboseFormatProcess15IsVerboseFormatEPK7aiScene(ptr noundef) #2

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

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

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

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

declare void @_ZN6Assimp13SceneCombiner9CopySceneEPP7aiScenePKS1_b(ptr noundef, ptr noundef, i1 noundef zeroext) #2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN6Assimp9ScenePrivEPK7aiScene(ptr noundef) #6

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

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

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() #2

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

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

declare void @_ZN6Assimp24MakeVerboseFormatProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #2

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

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

declare noundef zeroext i1 @_ZNK6Assimp23FlipWindingOrderProcess8IsActiveEj(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) unnamed_addr #2

declare void @_ZN6Assimp23FlipWindingOrderProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #2

declare void @_ZN6Assimp14FlipUVsProcessC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2

declare noundef zeroext i1 @_ZNK6Assimp14FlipUVsProcess8IsActiveEj(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) unnamed_addr #2

declare void @_ZN6Assimp14FlipUVsProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #2

; Function Attrs: nounwind
declare void @_ZN6Assimp14FlipUVsProcessD1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7

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

declare noundef zeroext i1 @_ZNK6Assimp21MakeLeftHandedProcess8IsActiveEj(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) unnamed_addr #2

declare void @_ZN6Assimp21MakeLeftHandedProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6Assimp16ExportProperties15GetPropertyBoolEPKcb(ptr noundef nonnull align 8 dereferenceable(240), ptr noundef, i1 noundef zeroext) #4 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN6Assimp9ScenePrivEP7aiScene(ptr noundef) #6

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

declare void @_ZN6Assimp19JoinVerticesProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6Assimp16ExportProperties15SetPropertyBoolEPKcb(ptr noundef nonnull align 8 dereferenceable(240), ptr noundef, i1 noundef zeroext) #4 align 2

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

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

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

declare void @__cxa_end_catch()

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK18ExceptionSwallowerI8aiReturnEclEv(ptr noundef nonnull align 1 dereferenceable(1)) #4 align 2

declare void @_ZN6Assimp16ExportPropertiesC1Ev(ptr)

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"_ZTSN6Assimp8ExporterE", !6, i64 0}
!13 = !{!14, !10, i64 0}
!14 = !{!"_ZTS7aiScene", !10, i64 0, !6, i64 8, !10, i64 16, !6, i64 24, !10, i64 32, !6, i64 40, !10, i64 48, !6, i64 56, !10, i64 64, !6, i64 72, !10, i64 80, !6, i64 88, !10, i64 96, !6, i64 104, !6, i64 112, !15, i64 120, !10, i64 1148, !6, i64 1152, !6, i64 1160}
!15 = !{!"_ZTS8aiString", !10, i64 0, !7, i64 4}
!16 = !{!17, !17, i64 0}
!17 = !{!"bool", !7, i64 0}
!18 = !{!19, !6, i64 32}
!19 = !{!"_ZTSN6Assimp13ExporterPimplE", !6, i64 0, !20, i64 8, !17, i64 24, !6, i64 32, !17, i64 40, !23, i64 48, !27, i64 72, !30, i64 104}
!20 = !{!"_ZTSSt10shared_ptrIN6Assimp8IOSystemEE", !21, i64 0}
!21 = !{!"_ZTSSt12__shared_ptrIN6Assimp8IOSystemELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !22, i64 8}
!22 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!23 = !{!"_ZTSSt6vectorIPN6Assimp11BaseProcessESaIS2_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIPN6Assimp11BaseProcessESaIS2_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp11BaseProcessESaIS2_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp11BaseProcessESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !28, i64 0, !29, i64 8, !7, i64 16}
!28 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!29 = !{!"long", !7, i64 0}
!30 = !{!"_ZTSSt6vectorIN6Assimp8Exporter17ExportFormatEntryESaIS2_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseIN6Assimp8Exporter17ExportFormatEntryESaIS2_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIN6Assimp8Exporter17ExportFormatEntryESaIS2_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN6Assimp8Exporter17ExportFormatEntryESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!34 = !{!35, !35, i64 0}
!35 = !{!"vtable pointer", !8, i64 0}
!36 = !{!29, !29, i64 0}
!37 = !{!38, !6, i64 0}
!38 = !{!"_ZTSN6Assimp8Exporter17ExportFormatEntryE", !39, i64 0, !6, i64 24, !10, i64 32}
!39 = !{!"_ZTS18aiExportFormatDesc", !6, i64 0, !6, i64 8, !6, i64 16}
!40 = !{!38, !10, i64 32}
!41 = !{!42, !17, i64 12}
!42 = !{!"_ZTSN6Assimp16ScenePrivateDataE", !6, i64 0, !10, i64 8, !17, i64 12}
!43 = !{i8 0, i8 2}
!44 = !{}
!45 = !{!42, !10, i64 8}
!46 = distinct !{!46, !47}
!47 = !{!"llvm.loop.mustprogress"}
!48 = distinct !{!48, !47}
!49 = !{!38, !6, i64 24}
!50 = distinct !{!50, !47}


; 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::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.47" }
%"struct.std::_Head_base.47" = type { ptr }
%"class.Assimp::MakeVerboseFormatProcess" = type { %"class.Assimp::BaseProcess" }
%"class.Assimp::BaseProcess" = type { ptr, ptr, ptr }
%"class.Assimp::FlipWindingOrderProcess" = type { %"class.Assimp::BaseProcess" }
%"class.Assimp::FlipUVsProcess" = type { %"class.Assimp::BaseProcess" }
%"class.Assimp::MakeLeftHandedProcess" = type { %"class.Assimp::BaseProcess" }
%"class.Assimp::JoinVerticesProcess" = type { %"class.Assimp::BaseProcess" }
%"class.Assimp::ExportProperties" = type { %"class.std::map", %"class.std::map.26", %"class.std::map.31", %"class.std::map.36", %"class.std::map.41" }
%"class.std::map" = type { %"class.std::_Rb_tree.21" }
%"class.std::_Rb_tree.21" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, int>, std::_Select1st<std::pair<const unsigned int, int>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, int>, std::_Select1st<std::pair<const unsigned int, int>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.26" = type { %"class.std::_Rb_tree.27" }
%"class.std::_Rb_tree.27" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, float>, std::_Select1st<std::pair<const unsigned int, float>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, float>, std::_Select1st<std::pair<const unsigned int, float>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.31" = type { %"class.std::_Rb_tree.32" }
%"class.std::_Rb_tree.32" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const unsigned int, std::__cxx11::basic_string<char>>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const unsigned int, std::__cxx11::basic_string<char>>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.36" = type { %"class.std::_Rb_tree.37" }
%"class.std::_Rb_tree.37" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, aiMatrix4x4t<float>>, std::_Select1st<std::pair<const unsigned int, aiMatrix4x4t<float>>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, aiMatrix4x4t<float>>, std::_Select1st<std::pair<const unsigned int, aiMatrix4x4t<float>>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.41" = type { %"class.std::_Rb_tree.42" }
%"class.std::_Rb_tree.42" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, std::function<void *(void *)>>, std::_Select1st<std::pair<const unsigned int, std::function<void *(void *)>>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, std::function<void *(void *)>>, std::_Select1st<std::pair<const unsigned int, std::function<void *(void *)>>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%struct.ExceptionSwallower = type { i8 }

@.str = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTI17DeadlyExportError = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.5 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [20 x i8], align 1
@_ZTIN6Assimp11BaseProcessE = external constant ptr
@_ZTIN6Assimp14FlipUVsProcessE = external constant ptr
@_ZTIN6Assimp23FlipWindingOrderProcessE = external constant ptr
@_ZTIN6Assimp21MakeLeftHandedProcessE = external constant ptr
@_ZTIN6Assimp20PretransformVerticesE = external constant ptr
@.str.7 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [47 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN6Assimp8Exporter6ExportEPK7aiScenePKcS5_jPKNS_16ExportPropertiesE(ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, ptr noundef %5) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca %"class.std::unique_ptr", align 8
  %9 = alloca %"class.Assimp::MakeVerboseFormatProcess", align 8
  %10 = alloca %"class.Assimp::FlipWindingOrderProcess", align 8
  %11 = alloca %"class.Assimp::FlipUVsProcess", align 8
  %12 = alloca %"class.Assimp::MakeLeftHandedProcess", align 8
  %13 = alloca %"class.Assimp::JoinVerticesProcess", align 8
  %14 = alloca %"class.Assimp::ExportProperties", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator", align 1
  %18 = alloca %struct.ExceptionSwallower, align 1
  %19 = load ptr, ptr %0, align 8, !tbaa !5
  %.not = icmp eq ptr %19, null
  br i1 %.not, label %20, label %21

20:                                               ; preds = %6
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 368)
          to label %21 unwind label %42

21:                                               ; preds = %20, %6
  %22 = load i32, ptr %1, align 8, !tbaa !10
  %23 = and i32 %22, 8
  %.not96 = icmp eq i32 %23, 0
  br i1 %.not96, label %26, label %24

24:                                               ; preds = %21
  %25 = invoke noundef zeroext i1 @_ZN6Assimp24MakeVerboseFormatProcess15IsVerboseFormatEPK7aiScene(ptr noundef nonnull %1)
          to label %26 unwind label %45

26:                                               ; preds = %24, %21
  %27 = phi i1 [ true, %21 ], [ %25, %24 ]
  %28 = load ptr, ptr %0, align 8, !tbaa !5
  %29 = getelementptr inbounds i8, ptr %28, i64 32
  %30 = load ptr, ptr %29, align 8, !tbaa !14
  %31 = load ptr, ptr %30, align 8, !tbaa !31
  %32 = getelementptr inbounds i8, ptr %31, i64 40
  %33 = load ptr, ptr %32, align 8
  invoke void %33(ptr noundef nonnull align 8 dereferenceable(8) %30, i32 noundef 0, i32 noundef 4)
          to label %34 unwind label %45

34:                                               ; preds = %26
  %35 = load ptr, ptr %0, align 8, !tbaa !5
  %36 = getelementptr inbounds i8, ptr %35, i64 72
  %37 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull @.str.4)
          to label %.preheader134 unwind label %45

.preheader134:                                    ; preds = %34
  %38 = load ptr, ptr %0, align 8, !tbaa !5
  %39 = getelementptr inbounds i8, ptr %38, i64 104
  %40 = tail call noundef i64 @_ZNKSt6vectorIN6Assimp8Exporter17ExportFormatEntryESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %39) #11
  %.not120.not152.not = icmp eq i64 %40, 0
  br i1 %.not120.not152.not, label %.thread130, label %.lr.ph156

.lr.ph156:                                        ; preds = %.preheader134
  %.not105 = icmp eq ptr %5, null
  %41 = select i1 %.not105, ptr %14, ptr %5
  br label %48

42:                                               ; preds = %20
  %43 = landingpad { ptr, i32 }
          catch ptr null
  %44 = extractvalue { ptr, i32 } %43, 0
  br label %.loopexit

45:                                               ; preds = %34, %26, %24
  %46 = landingpad { ptr, i32 }
          catch ptr null
  %47 = extractvalue { ptr, i32 } %46, 0
  br label %.loopexit

48:                                               ; preds = %.lr.ph156, %.thread127
  %.077153 = phi i64 [ 0, %.lr.ph156 ], [ %269, %.thread127 ]
  %49 = load ptr, ptr %0, align 8, !tbaa !5
  %50 = getelementptr inbounds i8, ptr %49, i64 104
  %51 = tail call noundef nonnull align 8 dereferenceable(36) ptr @_ZNSt6vectorIN6Assimp8Exporter17ExportFormatEntryESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %50, i64 noundef %.077153) #11
  %52 = load ptr, ptr %51, align 8, !tbaa !33
  %53 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %52, ptr noundef nonnull dereferenceable(1) %2) #12
  %.not97.not = icmp eq i32 %53, 0
  br i1 %.not97.not, label %54, label %.thread127

54:                                               ; preds = %48
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #11
  store ptr null, ptr %7, align 8, !tbaa !36
  invoke void @_ZN6Assimp13SceneCombiner9CopySceneEPP7aiScenePKS1_b(ptr noundef nonnull %7, ptr noundef nonnull %1, i1 noundef zeroext true)
          to label %55 unwind label %84

55:                                               ; preds = %54
  %56 = load ptr, ptr %0, align 8, !tbaa !5
  %57 = getelementptr inbounds i8, ptr %56, i64 32
  %58 = load ptr, ptr %57, align 8, !tbaa !14
  %59 = load ptr, ptr %58, align 8, !tbaa !31
  %60 = getelementptr inbounds i8, ptr %59, i64 40
  %61 = load ptr, ptr %60, align 8
  invoke void %61(ptr noundef nonnull align 8 dereferenceable(8) %58, i32 noundef 1, i32 noundef 4)
          to label %62 unwind label %84

62:                                               ; preds = %55
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #11
  %63 = load ptr, ptr %7, align 8, !tbaa !36
  call void @_ZNSt10unique_ptrI7aiSceneSt14default_deleteIS0_EEC2IS2_vEEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef %63) #11
  %64 = invoke noundef ptr @_ZN6Assimp9ScenePrivEPK7aiScene(ptr noundef nonnull %1)
          to label %65 unwind label %86

65:                                               ; preds = %62
  %66 = getelementptr inbounds i8, ptr %51, i64 32
  %67 = load i32, ptr %66, align 8, !tbaa !37
  %68 = or i32 %67, %4
  %.not98 = icmp eq ptr %64, null
  br i1 %.not98, label %77, label %69

69:                                               ; preds = %65
  %70 = getelementptr inbounds i8, ptr %64, i64 12
  %71 = load i8, ptr %70, align 4, !tbaa !38, !range !40, !noundef !41
  %72 = trunc nuw i8 %71 to i1
  br i1 %72, label %77, label %73

73:                                               ; preds = %69
  %74 = getelementptr inbounds i8, ptr %64, i64 8
  %75 = load i32, ptr %74, align 8, !tbaa !42
  %76 = and i32 %75, -25165829
  br label %77

77:                                               ; preds = %65, %69, %73
  %78 = phi i32 [ %76, %73 ], [ 0, %69 ], [ 0, %65 ]
  %79 = xor i32 %78, -1
  %80 = and i32 %68, %79
  br i1 %27, label %126, label %.preheader

.preheader:                                       ; preds = %77
  %81 = load ptr, ptr %0, align 8, !tbaa !5
  %82 = getelementptr inbounds i8, ptr %81, i64 48
  %83 = call noundef i64 @_ZNKSt6vectorIPN6Assimp11BaseProcessESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %82) #11
  %.not158 = icmp eq i64 %83, 0
  br i1 %.not158, label %._crit_edge, label %.lr.ph

84:                                               ; preds = %55, %54
  %85 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  br label %251

86:                                               ; preds = %62
  %87 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  br label %250

.lr.ph:                                           ; preds = %.preheader, %106
  %88 = phi i64 [ %108, %106 ], [ 0, %.preheader ]
  %.084147 = phi i32 [ %107, %106 ], [ 0, %.preheader ]
  %89 = load ptr, ptr %0, align 8, !tbaa !5
  %90 = getelementptr inbounds i8, ptr %89, i64 48
  %91 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN6Assimp11BaseProcessESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %88) #11
  %92 = load ptr, ptr %91, align 8, !tbaa !36
  %93 = load ptr, ptr %92, align 8, !tbaa !31
  %94 = getelementptr inbounds i8, ptr %93, i64 16
  %95 = load ptr, ptr %94, align 8
  %96 = invoke noundef zeroext i1 %95(ptr noundef nonnull align 8 dereferenceable(24) %92, i32 noundef %80)
          to label %97 unwind label %104

97:                                               ; preds = %.lr.ph
  br i1 %96, label %98, label %106

98:                                               ; preds = %97
  %99 = load ptr, ptr %92, align 8, !tbaa !31
  %100 = getelementptr inbounds i8, ptr %99, i64 24
  %101 = load ptr, ptr %100, align 8
  %102 = invoke noundef zeroext i1 %101(ptr noundef nonnull align 8 dereferenceable(24) %92)
          to label %103 unwind label %104

103:                                              ; preds = %98
  br i1 %102, label %.thread125, label %106

104:                                              ; preds = %98, %.lr.ph
  %105 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  br label %250

106:                                              ; preds = %97, %103
  %107 = add i32 %.084147, 1
  %108 = zext i32 %107 to i64
  %109 = load ptr, ptr %0, align 8, !tbaa !5
  %110 = getelementptr inbounds i8, ptr %109, i64 48
  %111 = call noundef i64 @_ZNKSt6vectorIPN6Assimp11BaseProcessESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %110) #11
  %112 = icmp ugt i64 %111, %108
  br i1 %112, label %.lr.ph, label %._crit_edge, !llvm.loop !43

._crit_edge:                                      ; preds = %106, %.preheader
  %113 = load i32, ptr %66, align 8, !tbaa !37
  %114 = and i32 %113, 2
  %.not99 = icmp eq i32 %114, 0
  br i1 %.not99, label %126, label %.thread125

.thread125:                                       ; preds = %103, %._crit_edge
  %115 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %116 unwind label %122

116:                                              ; preds = %.thread125
  invoke void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %115, ptr noundef nonnull @.str.5)
          to label %117 unwind label %122

117:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #11
  call void @_ZN6Assimp24MakeVerboseFormatProcessC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #11
  %118 = call noundef ptr @_ZNKSt10unique_ptrI7aiSceneSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #11
  invoke void @_ZN6Assimp24MakeVerboseFormatProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef %118)
          to label %119 unwind label %124

119:                                              ; preds = %117
  %120 = load i32, ptr %66, align 8, !tbaa !37
  %121 = and i32 %120, 2
  %.not101 = icmp eq i32 %121, 0
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #11
  br label %126

122:                                              ; preds = %116, %.thread125
  %123 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  br label %250

124:                                              ; preds = %117
  %125 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #11
  br label %250

126:                                              ; preds = %._crit_edge, %119, %77
  %.290 = phi i1 [ false, %77 ], [ %.not101, %119 ], [ false, %._crit_edge ]
  %127 = load ptr, ptr %0, align 8, !tbaa !5
  %128 = getelementptr inbounds i8, ptr %127, i64 32
  %129 = load ptr, ptr %128, align 8, !tbaa !14
  %130 = load ptr, ptr %129, align 8, !tbaa !31
  %131 = getelementptr inbounds i8, ptr %130, i64 40
  %132 = load ptr, ptr %131, align 8
  invoke void %132(ptr noundef nonnull align 8 dereferenceable(8) %129, i32 noundef 2, i32 noundef 4)
          to label %133 unwind label %139

133:                                              ; preds = %126
  %.not102 = icmp eq i32 %80, 0
  br i1 %.not102, label %212, label %134

134:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #11
  call void @_ZN6Assimp23FlipWindingOrderProcessC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #11
  %135 = invoke noundef zeroext i1 @_ZNK6Assimp23FlipWindingOrderProcess8IsActiveEj(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef %80)
          to label %136 unwind label %141

136:                                              ; preds = %134
  br i1 %135, label %137, label %143

137:                                              ; preds = %136
  %138 = call noundef ptr @_ZNKSt10unique_ptrI7aiSceneSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #11
  invoke void @_ZN6Assimp23FlipWindingOrderProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef %138)
          to label %143 unwind label %141

139:                                              ; preds = %212, %126
  %140 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  br label %250

141:                                              ; preds = %137, %134
  %142 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #11
  br label %250

143:                                              ; preds = %137, %136
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #11
  invoke void @_ZN6Assimp14FlipUVsProcessC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %11)
          to label %144 unwind label %149

144:                                              ; preds = %143
  %145 = invoke noundef zeroext i1 @_ZNK6Assimp14FlipUVsProcess8IsActiveEj(ptr noundef nonnull align 8 dereferenceable(24) %11, i32 noundef %80)
          to label %146 unwind label %151

146:                                              ; preds = %144
  br i1 %145, label %147, label %153

147:                                              ; preds = %146
  %148 = call noundef ptr @_ZNKSt10unique_ptrI7aiSceneSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #11
  invoke void @_ZN6Assimp14FlipUVsProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef %148)
          to label %153 unwind label %151

149:                                              ; preds = %143
  %150 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  br label %158

151:                                              ; preds = %147, %144
  %152 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  call void @_ZN6Assimp14FlipUVsProcessD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #11
  br label %158

153:                                              ; preds = %147, %146
  call void @_ZN6Assimp14FlipUVsProcessD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #11
  call void @_ZN6Assimp21MakeLeftHandedProcessC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #11
  %154 = invoke noundef zeroext i1 @_ZNK6Assimp21MakeLeftHandedProcess8IsActiveEj(ptr noundef nonnull align 8 dereferenceable(24) %12, i32 noundef %80)
          to label %155 unwind label %159

155:                                              ; preds = %153
  br i1 %154, label %156, label %161

156:                                              ; preds = %155
  %157 = call noundef ptr @_ZNKSt10unique_ptrI7aiSceneSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #11
  invoke void @_ZN6Assimp21MakeLeftHandedProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef %157)
          to label %161 unwind label %159

158:                                              ; preds = %151, %149
  %.pn103 = phi { ptr, i32 } [ %152, %151 ], [ %150, %149 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #11
  br label %250

159:                                              ; preds = %156, %153
  %160 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #11
  br label %250

161:                                              ; preds = %156, %155
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #11
  br i1 %.not105, label %166, label %162

162:                                              ; preds = %161
  %163 = invoke noundef zeroext i1 @_ZNK6Assimp16ExportProperties15GetPropertyBoolEPKcb(ptr noundef nonnull align 8 dereferenceable(240) %5, ptr noundef nonnull @.str.6, i1 noundef zeroext false)
          to label %166 unwind label %164

164:                                              ; preds = %162
  %165 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  br label %250

166:                                              ; preds = %162, %161
  %.079 = phi i1 [ false, %161 ], [ %163, %162 ]
  %167 = load ptr, ptr %0, align 8, !tbaa !5
  %168 = getelementptr inbounds i8, ptr %167, i64 48
  %169 = call noundef i64 @_ZNKSt6vectorIPN6Assimp11BaseProcessESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %168) #11
  %.not159 = icmp eq i64 %169, 0
  br i1 %.not159, label %._crit_edge151, label %.lr.ph150

._crit_edge151:                                   ; preds = %197, %166
  %170 = call noundef ptr @_ZNKSt10unique_ptrI7aiSceneSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #11
  %171 = invoke noundef ptr @_ZN6Assimp9ScenePrivEP7aiScene(ptr noundef %170)
          to label %204 unwind label %210

.lr.ph150:                                        ; preds = %166, %197
  %172 = phi i64 [ %199, %197 ], [ 0, %166 ]
  %.078148 = phi i32 [ %198, %197 ], [ 0, %166 ]
  %173 = load ptr, ptr %0, align 8, !tbaa !5
  %174 = getelementptr inbounds i8, ptr %173, i64 48
  %175 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN6Assimp11BaseProcessESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %174, i64 noundef %172) #11
  %176 = load ptr, ptr %175, align 8, !tbaa !36
  %177 = load ptr, ptr %176, align 8, !tbaa !31
  %178 = getelementptr inbounds i8, ptr %177, i64 16
  %179 = load ptr, ptr %178, align 8
  %180 = invoke noundef zeroext i1 %179(ptr noundef nonnull align 8 dereferenceable(24) %176, i32 noundef %80)
          to label %181 unwind label %182

181:                                              ; preds = %.lr.ph150
  br i1 %180, label %184, label %197

182:                                              ; preds = %192, %.lr.ph150
  %183 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  br label %250

184:                                              ; preds = %181
  %185 = call ptr @__dynamic_cast(ptr nonnull %176, ptr nonnull @_ZTIN6Assimp11BaseProcessE, ptr nonnull @_ZTIN6Assimp14FlipUVsProcessE, i64 0) #11
  %.not110 = icmp eq ptr %185, null
  br i1 %.not110, label %186, label %197

186:                                              ; preds = %184
  %187 = call ptr @__dynamic_cast(ptr nonnull %176, ptr nonnull @_ZTIN6Assimp11BaseProcessE, ptr nonnull @_ZTIN6Assimp23FlipWindingOrderProcessE, i64 0) #11
  %.not111 = icmp eq ptr %187, null
  br i1 %.not111, label %188, label %197

188:                                              ; preds = %186
  %189 = call ptr @__dynamic_cast(ptr nonnull %176, ptr nonnull @_ZTIN6Assimp11BaseProcessE, ptr nonnull @_ZTIN6Assimp21MakeLeftHandedProcessE, i64 0) #11
  %.not112 = icmp eq ptr %189, null
  br i1 %.not112, label %190, label %197

190:                                              ; preds = %188
  %191 = call ptr @__dynamic_cast(ptr nonnull %176, ptr nonnull @_ZTIN6Assimp11BaseProcessE, ptr nonnull @_ZTIN6Assimp20PretransformVerticesE, i64 0) #11
  %.not113 = icmp ne ptr %191, null
  %brmerge.not = and i1 %.079, %.not113
  br i1 %brmerge.not, label %197, label %192

192:                                              ; preds = %190
  %193 = call noundef ptr @_ZNKSt10unique_ptrI7aiSceneSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #11
  %194 = load ptr, ptr %176, align 8, !tbaa !31
  %195 = getelementptr inbounds i8, ptr %194, i64 40
  %196 = load ptr, ptr %195, align 8
  invoke void %196(ptr noundef nonnull align 8 dereferenceable(24) %176, ptr noundef %193)
          to label %197 unwind label %182

197:                                              ; preds = %181, %184, %186, %188, %192, %190
  %198 = add i32 %.078148, 1
  %199 = zext i32 %198 to i64
  %200 = load ptr, ptr %0, align 8, !tbaa !5
  %201 = getelementptr inbounds i8, ptr %200, i64 48
  %202 = call noundef i64 @_ZNKSt6vectorIPN6Assimp11BaseProcessESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %201) #11
  %203 = icmp ugt i64 %202, %199
  br i1 %203, label %.lr.ph150, label %._crit_edge151, !llvm.loop !45

204:                                              ; preds = %._crit_edge151
  %.not106 = icmp eq ptr %171, null
  br i1 %.not106, label %205, label %206

205:                                              ; preds = %204
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 480)
          to label %206 unwind label %210

206:                                              ; preds = %205, %204
  %207 = getelementptr inbounds i8, ptr %171, i64 8
  %208 = load i32, ptr %207, align 8, !tbaa !42
  %209 = or i32 %208, %80
  store i32 %209, ptr %207, align 8, !tbaa !42
  br label %212

210:                                              ; preds = %205, %._crit_edge151
  %211 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  br label %250

212:                                              ; preds = %206, %133
  %213 = load ptr, ptr %0, align 8, !tbaa !5
  %214 = getelementptr inbounds i8, ptr %213, i64 32
  %215 = load ptr, ptr %214, align 8, !tbaa !14
  %216 = load ptr, ptr %215, align 8, !tbaa !31
  %217 = getelementptr inbounds i8, ptr %216, i64 40
  %218 = load ptr, ptr %217, align 8
  invoke void %218(ptr noundef nonnull align 8 dereferenceable(8) %215, i32 noundef 3, i32 noundef 4)
          to label %219 unwind label %139

219:                                              ; preds = %212
  br i1 %.290, label %220, label %225

220:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #11
  call void @_ZN6Assimp19JoinVerticesProcessC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #11
  %221 = call noundef ptr @_ZNKSt10unique_ptrI7aiSceneSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #11
  invoke void @_ZN6Assimp19JoinVerticesProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef %221)
          to label %222 unwind label %223

222:                                              ; preds = %220
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #11
  br label %225

223:                                              ; preds = %220
  %224 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #11
  br label %250

225:                                              ; preds = %222, %219
  call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %14) #11
  invoke void @_ZN6Assimp16ExportPropertiesC1Ev(ptr noundef nonnull align 8 dereferenceable(240) %14)
          to label %226 unwind label %245

226:                                              ; preds = %225
  %227 = and i32 %80, 2
  %228 = icmp ne i32 %227, 0
  %229 = invoke noundef zeroext i1 @_ZN6Assimp16ExportProperties15SetPropertyBoolEPKcb(ptr noundef nonnull align 8 dereferenceable(240) %41, ptr noundef nonnull @.str.8, i1 noundef zeroext %228)
          to label %230 unwind label %247

230:                                              ; preds = %226
  %231 = getelementptr inbounds i8, ptr %51, i64 24
  %232 = load ptr, ptr %231, align 8, !tbaa !46
  %233 = load ptr, ptr %0, align 8, !tbaa !5
  %234 = getelementptr inbounds i8, ptr %233, i64 8
  %235 = call noundef ptr @_ZNKSt12__shared_ptrIN6Assimp8IOSystemELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %234) #11
  %236 = call noundef ptr @_ZNKSt10unique_ptrI7aiSceneSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #11
  invoke void %232(ptr noundef %3, ptr noundef %235, ptr noundef %236, ptr noundef nonnull %41)
          to label %237 unwind label %247

237:                                              ; preds = %230
  %238 = load ptr, ptr %0, align 8, !tbaa !5
  %239 = getelementptr inbounds i8, ptr %238, i64 32
  %240 = load ptr, ptr %239, align 8, !tbaa !14
  %241 = load ptr, ptr %240, align 8, !tbaa !31
  %242 = getelementptr inbounds i8, ptr %241, i64 40
  %243 = load ptr, ptr %242, align 8
  invoke void %243(ptr noundef nonnull align 8 dereferenceable(8) %240, i32 noundef 4, i32 noundef 4)
          to label %244 unwind label %247

244:                                              ; preds = %237
  call void @_ZN6Assimp16ExportPropertiesD2Ev(ptr noundef nonnull align 8 dereferenceable(240) %14) #11
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %14) #11
  call void @_ZNSt10unique_ptrI7aiSceneSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #11
  br label %288

245:                                              ; preds = %225
  %246 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  br label %249

247:                                              ; preds = %237, %230, %226
  %248 = landingpad { ptr, i32 }
          catch ptr @_ZTI17DeadlyExportError
          catch ptr null
  call void @_ZN6Assimp16ExportPropertiesD2Ev(ptr noundef nonnull align 8 dereferenceable(240) %14) #11
  br label %249

249:                                              ; preds = %247, %245
  %.pn108 = phi { ptr, i32 } [ %248, %247 ], [ %246, %245 ]
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %14) #11
  br label %250

250:                                              ; preds = %139, %141, %158, %159, %223, %249, %124, %122, %104, %210, %182, %164, %86
  %.pn114.pn.pn = phi { ptr, i32 } [ %87, %86 ], [ %.pn108, %249 ], [ %224, %223 ], [ %140, %139 ], [ %160, %159 ], [ %.pn103, %158 ], [ %142, %141 ], [ %125, %124 ], [ %123, %122 ], [ %105, %104 ], [ %183, %182 ], [ %211, %210 ], [ %165, %164 ]
  call void @_ZNSt10unique_ptrI7aiSceneSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #11
  br label %251

251:                                              ; preds = %250, %84
  %.pn114.pn.pn.pn = phi { ptr, i32 } [ %.pn114.pn.pn, %250 ], [ %85, %84 ]
  %.6 = extractvalue { ptr, i32 } %.pn114.pn.pn.pn, 0
  %.676 = extractvalue { ptr, i32 } %.pn114.pn.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #11
  %252 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTI17DeadlyExportError) #11
  %253 = icmp eq i32 %.676, %252
  br i1 %253, label %254, label %.loopexit

254:                                              ; preds = %251
  %255 = call ptr @__cxa_begin_catch(ptr %.6) #11
  %256 = load ptr, ptr %255, align 8, !tbaa !31
  %257 = getelementptr inbounds i8, ptr %256, i64 16
  %258 = load ptr, ptr %257, align 8
  %259 = call noundef ptr %258(ptr noundef nonnull align 8 dereferenceable(16) %255) #11
  %260 = load ptr, ptr %0, align 8, !tbaa !5
  %261 = getelementptr inbounds i8, ptr %260, i64 72
  %262 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %261, ptr noundef %259)
          to label %263 unwind label %264

263:                                              ; preds = %254
  invoke void @__cxa_end_catch()
          to label %288 unwind label %266

264:                                              ; preds = %254
  %265 = landingpad { ptr, i32 }
          catch ptr null
  invoke void @__cxa_end_catch()
          to label %268 unwind label %290

266:                                              ; preds = %263
  %267 = landingpad { ptr, i32 }
          catch ptr null
  br label %268

268:                                              ; preds = %264, %266
  %.pn119 = phi { ptr, i32 } [ %267, %266 ], [ %265, %264 ]
  %.7 = extractvalue { ptr, i32 } %.pn119, 0
  br label %.loopexit

.thread127:                                       ; preds = %48
  %269 = add nuw i64 %.077153, 1
  %270 = load ptr, ptr %0, align 8, !tbaa !5
  %271 = getelementptr inbounds i8, ptr %270, i64 104
  %272 = tail call noundef i64 @_ZNKSt6vectorIN6Assimp8Exporter17ExportFormatEntryESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %271) #11
  %.not120.not = icmp ult i64 %269, %272
  br i1 %.not120.not, label %48, label %.thread130, !llvm.loop !47

.thread130:                                       ; preds = %.thread127, %.preheader134
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %273 unwind label %278

273:                                              ; preds = %.thread130
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef %2)
          to label %274 unwind label %280

274:                                              ; preds = %273
  %275 = load ptr, ptr %0, align 8, !tbaa !5
  %276 = getelementptr inbounds i8, ptr %275, i64 72
  %277 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %276, ptr noundef nonnull align 8 dereferenceable(32) %15) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #11
  br label %288

278:                                              ; preds = %.thread130
  %279 = landingpad { ptr, i32 }
          catch ptr null
  br label %282

280:                                              ; preds = %273
  %281 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #11
  br label %282

282:                                              ; preds = %280, %278
  %.pn121 = phi { ptr, i32 } [ %281, %280 ], [ %279, %278 ]
  %.9 = extractvalue { ptr, i32 } %.pn121, 0
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #11
  br label %.loopexit

.loopexit:                                        ; preds = %251, %45, %282, %268, %42
  %.11 = phi ptr [ %44, %42 ], [ %.9, %282 ], [ %47, %45 ], [ %.7, %268 ], [ %.6, %251 ]
  %283 = call ptr @__cxa_begin_catch(ptr %.11) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #11
  %284 = invoke noundef i32 @_ZNK18ExceptionSwallowerI8aiReturnEclEv(ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %285 unwind label %286

285:                                              ; preds = %.loopexit
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #11
  call void @__cxa_end_catch()
  br label %288

286:                                              ; preds = %.loopexit
  %287 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #11
  invoke void @__cxa_end_catch()
          to label %289 unwind label %290

288:                                              ; preds = %274, %244, %263, %285
  %.3 = phi i32 [ %284, %285 ], [ -1, %274 ], [ -1, %263 ], [ 0, %244 ]
  ret i32 %.3

289:                                              ; preds = %286
  resume { ptr, i32 } %287

290:                                              ; preds = %286, %264
  %291 = landingpad { ptr, i32 }
          catch ptr null
  %292 = extractvalue { ptr, i32 } %291, 0
  call void @__clang_call_terminate(ptr %292) #13
  unreachable
}

declare noundef zeroext i1 @_ZN6Assimp24MakeVerboseFormatProcess15IsVerboseFormatEPK7aiScene(ptr noundef) local_unnamed_addr #2

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

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

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

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

declare void @_ZN6Assimp13SceneCombiner9CopySceneEPP7aiScenePKS1_b(ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN6Assimp9ScenePrivEPK7aiScene(ptr noundef) local_unnamed_addr #6

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

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

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() local_unnamed_addr #2

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 @_ZN6Assimp24MakeVerboseFormatProcessC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

declare void @_ZN6Assimp24MakeVerboseFormatProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #2

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

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

declare noundef zeroext i1 @_ZNK6Assimp23FlipWindingOrderProcess8IsActiveEj(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) unnamed_addr #2

declare void @_ZN6Assimp23FlipWindingOrderProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #2

declare void @_ZN6Assimp14FlipUVsProcessC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2

declare noundef zeroext i1 @_ZNK6Assimp14FlipUVsProcess8IsActiveEj(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) unnamed_addr #2

declare void @_ZN6Assimp14FlipUVsProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #2

; Function Attrs: nounwind
declare void @_ZN6Assimp14FlipUVsProcessD1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7

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

declare noundef zeroext i1 @_ZNK6Assimp21MakeLeftHandedProcess8IsActiveEj(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) unnamed_addr #2

declare void @_ZN6Assimp21MakeLeftHandedProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6Assimp16ExportProperties15GetPropertyBoolEPKcb(ptr noundef nonnull align 8 dereferenceable(240), ptr noundef, i1 noundef zeroext) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nofree nounwind willreturn memory(read)
declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN6Assimp9ScenePrivEP7aiScene(ptr noundef) local_unnamed_addr #6

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

declare void @_ZN6Assimp19JoinVerticesProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6Assimp16ExportProperties15SetPropertyBoolEPKcb(ptr noundef nonnull align 8 dereferenceable(240), ptr noundef, i1 noundef zeroext) local_unnamed_addr #4 align 2

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

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

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

declare void @__cxa_end_catch() local_unnamed_addr

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK18ExceptionSwallowerI8aiReturnEclEv(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #4 align 2

declare void @_ZN6Assimp16ExportPropertiesC1Ev(ptr) local_unnamed_addr

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTSN6Assimp8ExporterE", !7, i64 0}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!11, !12, i64 0}
!11 = !{!"_ZTS7aiScene", !12, i64 0, !7, i64 8, !12, i64 16, !7, i64 24, !12, i64 32, !7, i64 40, !12, i64 48, !7, i64 56, !12, i64 64, !7, i64 72, !12, i64 80, !7, i64 88, !12, i64 96, !7, i64 104, !7, i64 112, !13, i64 120, !12, i64 1148, !7, i64 1152, !7, i64 1160}
!12 = !{!"int", !8, i64 0}
!13 = !{!"_ZTS8aiString", !12, i64 0, !8, i64 4}
!14 = !{!15, !7, i64 32}
!15 = !{!"_ZTSN6Assimp13ExporterPimplE", !7, i64 0, !16, i64 8, !19, i64 24, !7, i64 32, !19, i64 40, !20, i64 48, !24, i64 72, !27, i64 104}
!16 = !{!"_ZTSSt10shared_ptrIN6Assimp8IOSystemEE", !17, i64 0}
!17 = !{!"_ZTSSt12__shared_ptrIN6Assimp8IOSystemELN9__gnu_cxx12_Lock_policyE2EE", !7, i64 0, !18, i64 8}
!18 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !7, i64 0}
!19 = !{!"bool", !8, i64 0}
!20 = !{!"_ZTSSt6vectorIPN6Assimp11BaseProcessESaIS2_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIPN6Assimp11BaseProcessESaIS2_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp11BaseProcessESaIS2_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp11BaseProcessESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!24 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !25, i64 0, !26, i64 8, !8, i64 16}
!25 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !7, i64 0}
!26 = !{!"long", !8, i64 0}
!27 = !{!"_ZTSSt6vectorIN6Assimp8Exporter17ExportFormatEntryESaIS2_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIN6Assimp8Exporter17ExportFormatEntryESaIS2_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN6Assimp8Exporter17ExportFormatEntryESaIS2_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN6Assimp8Exporter17ExportFormatEntryESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!31 = !{!32, !32, i64 0}
!32 = !{!"vtable pointer", !9, i64 0}
!33 = !{!34, !7, i64 0}
!34 = !{!"_ZTSN6Assimp8Exporter17ExportFormatEntryE", !35, i64 0, !7, i64 24, !12, i64 32}
!35 = !{!"_ZTS18aiExportFormatDesc", !7, i64 0, !7, i64 8, !7, i64 16}
!36 = !{!7, !7, i64 0}
!37 = !{!34, !12, i64 32}
!38 = !{!39, !19, i64 12}
!39 = !{!"_ZTSN6Assimp16ScenePrivateDataE", !7, i64 0, !12, i64 8, !19, i64 12}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = !{!39, !12, i64 8}
!43 = distinct !{!43, !44}
!44 = !{!"llvm.loop.mustprogress"}
!45 = distinct !{!45, !44}
!46 = !{!34, !7, i64 24}
!47 = distinct !{!47, !44}


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