; LLVM IR from Overload-Technologies/Overload :: Dependencies/assimp/code/AssetLib/FBX/FBXDocument.ll (ZN6Assimp3FBX10LazyObject3GetEb)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.12" = type { i8 }
%"class.Assimp::FBX::LazyObject" = type <{ ptr, ptr, %"class.std::unique_ptr", i64, i32, [4 x i8] }>
%"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.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"struct.Assimp::FBX::ImportSettings" = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }

@.str = external hidden unnamed_addr constant [51 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@_ZTISt9bad_alloc = external constant ptr
@_ZTISt9exception = external constant ptr
@.str.2 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [19 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN6Assimp3FBX10LazyObject3GetEb(ptr noundef nonnull align 8 dereferenceable(36) %0, i1 noundef zeroext %1) #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i8, align 1
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator.12", align 1
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator.12", align 1
  %16 = alloca i64, align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator.12", align 1
  %24 = alloca ptr, align 8
  %25 = alloca i64, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  %29 = zext i1 %1 to i8
  store i8 %29, ptr %5, align 1, !tbaa !9
  %30 = load ptr, ptr %4, align 8
  %31 = call noundef zeroext i1 @_ZNK6Assimp3FBX10LazyObject18IsBeingConstructedEv(ptr noundef nonnull align 8 dereferenceable(36) %30)
  br i1 %31, label %34, label %32

32:                                               ; preds = %2
  %33 = call noundef zeroext i1 @_ZNK6Assimp3FBX10LazyObject17FailedToConstructEv(ptr noundef nonnull align 8 dereferenceable(36) %30)
  br i1 %33, label %34, label %35

34:                                               ; preds = %32, %2
  store ptr null, ptr %3, align 8
  br label %740

35:                                               ; preds = %32
  %36 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %37 = call noundef zeroext i1 @_ZNKSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #11
  br i1 %37, label %38, label %41

38:                                               ; preds = %35
  %39 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %40 = call noundef ptr @_ZNKSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #11
  store ptr %40, ptr %3, align 8
  br label %740

41:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #11
  %42 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %43 = load ptr, ptr %42, align 8, !tbaa !11
  %44 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNK6Assimp3FBX7Element8KeyTokenEv(ptr noundef nonnull align 8 dereferenceable(40) %43)
  store ptr %44, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #11
  %45 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %46 = load ptr, ptr %45, align 8, !tbaa !11
  %47 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX7Element6TokensEv(ptr noundef nonnull align 8 dereferenceable(40) %46)
  store ptr %47, ptr %7, align 8, !tbaa !5
  %48 = load ptr, ptr %7, align 8, !tbaa !5
  %49 = call noundef i64 @_ZNKSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %48) #11
  %50 = icmp ult i64 %49, 3
  br i1 %50, label %51, label %65

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

52:                                               ; preds = %51
  %53 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %54 = load ptr, ptr %53, align 8, !tbaa !11
  invoke void @_ZN6Assimp3FBX4Util8DOMErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKNS0_7ElementE(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef %54) #12
          to label %55 unwind label %60

55:                                               ; preds = %52
  unreachable

56:                                               ; preds = %51
  %57 = landingpad { ptr, i32 }
          cleanup
  %58 = extractvalue { ptr, i32 } %57, 0
  store ptr %58, ptr %10, align 8
  %59 = extractvalue { ptr, i32 } %57, 1
  store i32 %59, ptr %11, align 4
  br label %64

60:                                               ; preds = %52
  %61 = landingpad { ptr, i32 }
          cleanup
  %62 = extractvalue { ptr, i32 } %61, 0
  store ptr %62, ptr %10, align 8
  %63 = extractvalue { ptr, i32 } %61, 1
  store i32 %63, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #11
  br label %64

64:                                               ; preds = %60, %56
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #11
  br label %739

65:                                               ; preds = %41
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #11
  %66 = load ptr, ptr %7, align 8, !tbaa !5
  %67 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef 1) #11
  %68 = load ptr, ptr %67, align 8, !tbaa !5
  call void @_ZN6Assimp3FBX18ParseTokenAsStringB5cxx11ERKNS0_5TokenERPKc(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(36) %68, ptr noundef nonnull align 8 dereferenceable(8) %12)
  %69 = load ptr, ptr %12, align 8, !tbaa !5
  %70 = icmp ne ptr %69, null
  br i1 %70, label %71, label %86

71:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #11
  %72 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef %72, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %73 unwind label %77

73:                                               ; preds = %71
  %74 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %75 = load ptr, ptr %74, align 8, !tbaa !11
  invoke void @_ZN6Assimp3FBX4Util8DOMErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKNS0_7ElementE(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef %75) #12
          to label %76 unwind label %81

76:                                               ; preds = %73
  unreachable

77:                                               ; preds = %71
  %78 = landingpad { ptr, i32 }
          cleanup
  %79 = extractvalue { ptr, i32 } %78, 0
  store ptr %79, ptr %10, align 8
  %80 = extractvalue { ptr, i32 } %78, 1
  store i32 %80, ptr %11, align 4
  br label %85

81:                                               ; preds = %73
  %82 = landingpad { ptr, i32 }
          cleanup
  %83 = extractvalue { ptr, i32 } %82, 0
  store ptr %83, ptr %10, align 8
  %84 = extractvalue { ptr, i32 } %82, 1
  store i32 %84, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #11
  br label %85

85:                                               ; preds = %81, %77
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #11
  br label %738

86:                                               ; preds = %65
  %87 = load ptr, ptr %7, align 8, !tbaa !5
  %88 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %87, i64 noundef 1) #11
  %89 = load ptr, ptr %88, align 8, !tbaa !5
  %90 = invoke noundef zeroext i1 @_ZNK6Assimp3FBX5Token8IsBinaryEv(ptr noundef nonnull align 8 dereferenceable(36) %89)
          to label %91 unwind label %98

91:                                               ; preds = %86
  br i1 %90, label %92, label %155

92:                                               ; preds = %91
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #11
  store i64 0, ptr %16, align 8, !tbaa !21
  br label %93

93:                                               ; preds = %150, %92
  %94 = load i64, ptr %16, align 8, !tbaa !21
  %95 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  %96 = icmp ult i64 %94, %95
  br i1 %96, label %102, label %97

97:                                               ; preds = %93
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #11
  br label %154

98:                                               ; preds = %86
  %99 = landingpad { ptr, i32 }
          cleanup
  %100 = extractvalue { ptr, i32 } %99, 0
  store ptr %100, ptr %10, align 8
  %101 = extractvalue { ptr, i32 } %99, 1
  store i32 %101, ptr %11, align 4
  br label %738

102:                                              ; preds = %93
  %103 = load i64, ptr %16, align 8, !tbaa !21
  %104 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %13, i64 noundef %103)
          to label %105 unwind label %126

105:                                              ; preds = %102
  %106 = load i8, ptr %104, align 1, !tbaa !22
  %107 = sext i8 %106 to i32
  %108 = icmp eq i32 %107, 0
  br i1 %108, label %109, label %149

109:                                              ; preds = %105
  %110 = load i64, ptr %16, align 8, !tbaa !21
  %111 = add i64 %110, 1
  %112 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %13, i64 noundef %111)
          to label %113 unwind label %126

113:                                              ; preds = %109
  %114 = load i8, ptr %112, align 1, !tbaa !22
  %115 = sext i8 %114 to i32
  %116 = icmp eq i32 %115, 1
  br i1 %116, label %117, label %149

117:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #11
  %118 = load i64, ptr %16, align 8, !tbaa !21
  %119 = add i64 %118, 2
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %13, i64 noundef %119, i64 noundef -1)
          to label %120 unwind label %130

120:                                              ; preds = %117
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.1)
          to label %121 unwind label %134

121:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #11
  %122 = load i64, ptr %16, align 8, !tbaa !21
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(32) %13, i64 noundef 0, i64 noundef %122)
          to label %123 unwind label %138

123:                                              ; preds = %121
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %124 unwind label %142

124:                                              ; preds = %123
  %125 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(32) %17) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #11
  br label %149

126:                                              ; preds = %109, %102
  %127 = landingpad { ptr, i32 }
          cleanup
  %128 = extractvalue { ptr, i32 } %127, 0
  store ptr %128, ptr %10, align 8
  %129 = extractvalue { ptr, i32 } %127, 1
  store i32 %129, ptr %11, align 4
  br label %153

130:                                              ; preds = %117
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %10, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %11, align 4
  br label %148

134:                                              ; preds = %120
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %10, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %11, align 4
  br label %147

138:                                              ; preds = %121
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %10, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %11, align 4
  br label %146

142:                                              ; preds = %123
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %10, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #11
  br label %146

146:                                              ; preds = %142, %138
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #11
  br label %147

147:                                              ; preds = %146, %134
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #11
  br label %148

148:                                              ; preds = %147, %130
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #11
  br label %153

149:                                              ; preds = %124, %113, %105
  br label %150

150:                                              ; preds = %149
  %151 = load i64, ptr %16, align 8, !tbaa !21
  %152 = add i64 %151, 1
  store i64 %152, ptr %16, align 8, !tbaa !21
  br label %93, !llvm.loop !23

153:                                              ; preds = %148, %126
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #11
  br label %738

154:                                              ; preds = %97
  br label %155

155:                                              ; preds = %154, %91
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #11
  %156 = load ptr, ptr %7, align 8, !tbaa !5
  %157 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %156, i64 noundef 2) #11
  %158 = load ptr, ptr %157, align 8, !tbaa !5
  invoke void @_ZN6Assimp3FBX18ParseTokenAsStringB5cxx11ERKNS0_5TokenERPKc(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(36) %158, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %159 unwind label %168

159:                                              ; preds = %155
  %160 = load ptr, ptr %12, align 8, !tbaa !5
  %161 = icmp ne ptr %160, null
  br i1 %161, label %162, label %181

162:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #11
  %163 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef %163, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %164 unwind label %172

164:                                              ; preds = %162
  %165 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %166 = load ptr, ptr %165, align 8, !tbaa !11
  invoke void @_ZN6Assimp3FBX4Util8DOMErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKNS0_7ElementE(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef %166) #12
          to label %167 unwind label %176

167:                                              ; preds = %164
  unreachable

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

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

176:                                              ; preds = %164
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %10, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #11
  br label %180

180:                                              ; preds = %176, %172
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #11
  br label %736

181:                                              ; preds = %159
  %182 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 4
  %183 = load i32, ptr %182, align 8, !tbaa !25
  %184 = or i32 %183, 1
  store i32 %184, ptr %182, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #11
  %185 = load ptr, ptr %6, align 8, !tbaa !5
  %186 = invoke noundef ptr @_ZNK6Assimp3FBX5Token5beginEv(ptr noundef nonnull align 8 dereferenceable(36) %185)
          to label %187 unwind label %216

187:                                              ; preds = %181
  store ptr %186, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #11
  %188 = load ptr, ptr %6, align 8, !tbaa !5
  %189 = invoke noundef ptr @_ZNK6Assimp3FBX5Token3endEv(ptr noundef nonnull align 8 dereferenceable(36) %188)
          to label %190 unwind label %220

190:                                              ; preds = %187
  %191 = load ptr, ptr %6, align 8, !tbaa !5
  %192 = invoke noundef ptr @_ZNK6Assimp3FBX5Token5beginEv(ptr noundef nonnull align 8 dereferenceable(36) %191)
          to label %193 unwind label %220

193:                                              ; preds = %190
  %194 = ptrtoint ptr %189 to i64
  %195 = ptrtoint ptr %192 to i64
  %196 = sub i64 %194, %195
  store i64 %196, ptr %25, align 8, !tbaa !21
  %197 = load ptr, ptr %24, align 8, !tbaa !5
  %198 = load i64, ptr %25, align 8, !tbaa !21
  %199 = call i32 @strncmp(ptr noundef %197, ptr noundef @.str.2, i64 noundef %198) #13
  %200 = icmp ne i32 %199, 0
  br i1 %200, label %267, label %201

201:                                              ; preds = %193
  %202 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %203 = call i32 @strcmp(ptr noundef %202, ptr noundef @.str.3) #13
  %204 = icmp ne i32 %203, 0
  br i1 %204, label %228, label %205

205:                                              ; preds = %201
  %206 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %207 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 1000) #14
          to label %208 unwind label %220

208:                                              ; preds = %205
  %209 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %210 = load i64, ptr %209, align 8, !tbaa !26
  %211 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %212 = load ptr, ptr %211, align 8, !tbaa !11
  %213 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %214 = load ptr, ptr %213, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX12MeshGeometryC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(1000) %207, i64 noundef %210, ptr noundef nonnull align 8 dereferenceable(40) %212, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(336) %214)
          to label %215 unwind label %224

215:                                              ; preds = %208
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %206, ptr noundef %207) #11
  br label %228

216:                                              ; preds = %181
  %217 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %10, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %11, align 4
  br label %659

220:                                              ; preds = %631, %611, %591, %571, %551, %531, %511, %491, %470, %438, %419, %400, %381, %352, %333, %314, %295, %276, %251, %232, %205, %190, %187
  %221 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %10, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %11, align 4
  br label %658

224:                                              ; preds = %208
  %225 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %10, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %207, i64 noundef 1000) #15
  br label %658

228:                                              ; preds = %215, %201
  %229 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %230 = call i32 @strcmp(ptr noundef %229, ptr noundef @.str.4) #13
  %231 = icmp ne i32 %230, 0
  br i1 %231, label %247, label %232

232:                                              ; preds = %228
  %233 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %234 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 192) #14
          to label %235 unwind label %220

235:                                              ; preds = %232
  %236 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %237 = load i64, ptr %236, align 8, !tbaa !26
  %238 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %239 = load ptr, ptr %238, align 8, !tbaa !11
  %240 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %241 = load ptr, ptr %240, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX13ShapeGeometryC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(192) %234, i64 noundef %237, ptr noundef nonnull align 8 dereferenceable(40) %239, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(336) %241)
          to label %242 unwind label %243

242:                                              ; preds = %235
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %233, ptr noundef %234) #11
  br label %247

243:                                              ; preds = %235
  %244 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %10, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %234, i64 noundef 192) #15
  br label %658

247:                                              ; preds = %242, %228
  %248 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %249 = call i32 @strcmp(ptr noundef %248, ptr noundef @.str.5) #13
  %250 = icmp ne i32 %249, 0
  br i1 %250, label %266, label %251

251:                                              ; preds = %247
  %252 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %253 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 168) #14
          to label %254 unwind label %220

254:                                              ; preds = %251
  %255 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %256 = load i64, ptr %255, align 8, !tbaa !26
  %257 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %258 = load ptr, ptr %257, align 8, !tbaa !11
  %259 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %260 = load ptr, ptr %259, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX12LineGeometryC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(168) %253, i64 noundef %256, ptr noundef nonnull align 8 dereferenceable(40) %258, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(336) %260)
          to label %261 unwind label %262

261:                                              ; preds = %254
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %252, ptr noundef %253) #11
  br label %266

262:                                              ; preds = %254
  %263 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %10, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %253, i64 noundef 168) #15
  br label %658

266:                                              ; preds = %261, %247
  br label %657

267:                                              ; preds = %193
  %268 = load ptr, ptr %24, align 8, !tbaa !5
  %269 = load i64, ptr %25, align 8, !tbaa !21
  %270 = call i32 @strncmp(ptr noundef %268, ptr noundef @.str.6, i64 noundef %269) #13
  %271 = icmp ne i32 %270, 0
  br i1 %271, label %372, label %272

272:                                              ; preds = %267
  %273 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %274 = call i32 @strcmp(ptr noundef %273, ptr noundef @.str.7) #13
  %275 = icmp ne i32 %274, 0
  br i1 %275, label %291, label %276

276:                                              ; preds = %272
  %277 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %278 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 72) #14
          to label %279 unwind label %220

279:                                              ; preds = %276
  %280 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %281 = load i64, ptr %280, align 8, !tbaa !26
  %282 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %283 = load ptr, ptr %282, align 8, !tbaa !11
  %284 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %285 = load ptr, ptr %284, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX6CameraC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %278, i64 noundef %281, ptr noundef nonnull align 8 dereferenceable(40) %283, ptr noundef nonnull align 8 dereferenceable(336) %285, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %286 unwind label %287

286:                                              ; preds = %279
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %277, ptr noundef %278) #11
  br label %371

287:                                              ; preds = %279
  %288 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %10, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %278, i64 noundef 72) #15
  br label %658

291:                                              ; preds = %272
  %292 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %293 = call i32 @strcmp(ptr noundef %292, ptr noundef @.str.8) #13
  %294 = icmp ne i32 %293, 0
  br i1 %294, label %310, label %295

295:                                              ; preds = %291
  %296 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %297 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 144) #14
          to label %298 unwind label %220

298:                                              ; preds = %295
  %299 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %300 = load i64, ptr %299, align 8, !tbaa !26
  %301 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %302 = load ptr, ptr %301, align 8, !tbaa !11
  %303 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %304 = load ptr, ptr %303, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX14CameraSwitcherC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(144) %297, i64 noundef %300, ptr noundef nonnull align 8 dereferenceable(40) %302, ptr noundef nonnull align 8 dereferenceable(336) %304, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %305 unwind label %306

305:                                              ; preds = %298
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %296, ptr noundef %297) #11
  br label %370

306:                                              ; preds = %298
  %307 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %10, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %297, i64 noundef 144) #15
  br label %658

310:                                              ; preds = %291
  %311 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %312 = call i32 @strcmp(ptr noundef %311, ptr noundef @.str.9) #13
  %313 = icmp ne i32 %312, 0
  br i1 %313, label %329, label %314

314:                                              ; preds = %310
  %315 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %316 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 72) #14
          to label %317 unwind label %220

317:                                              ; preds = %314
  %318 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %319 = load i64, ptr %318, align 8, !tbaa !26
  %320 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %321 = load ptr, ptr %320, align 8, !tbaa !11
  %322 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %323 = load ptr, ptr %322, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX5LightC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %316, i64 noundef %319, ptr noundef nonnull align 8 dereferenceable(40) %321, ptr noundef nonnull align 8 dereferenceable(336) %323, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %324 unwind label %325

324:                                              ; preds = %317
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %315, ptr noundef %316) #11
  br label %369

325:                                              ; preds = %317
  %326 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %327 = extractvalue { ptr, i32 } %326, 0
  store ptr %327, ptr %10, align 8
  %328 = extractvalue { ptr, i32 } %326, 1
  store i32 %328, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %316, i64 noundef 72) #15
  br label %658

329:                                              ; preds = %310
  %330 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %331 = call i32 @strcmp(ptr noundef %330, ptr noundef @.str.10) #13
  %332 = icmp ne i32 %331, 0
  br i1 %332, label %348, label %333

333:                                              ; preds = %329
  %334 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %335 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 72) #14
          to label %336 unwind label %220

336:                                              ; preds = %333
  %337 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %338 = load i64, ptr %337, align 8, !tbaa !26
  %339 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %340 = load ptr, ptr %339, align 8, !tbaa !11
  %341 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %342 = load ptr, ptr %341, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX4NullC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %335, i64 noundef %338, ptr noundef nonnull align 8 dereferenceable(40) %340, ptr noundef nonnull align 8 dereferenceable(336) %342, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %343 unwind label %344

343:                                              ; preds = %336
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %334, ptr noundef %335) #11
  br label %368

344:                                              ; preds = %336
  %345 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %10, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %335, i64 noundef 72) #15
  br label %658

348:                                              ; preds = %329
  %349 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %350 = call i32 @strcmp(ptr noundef %349, ptr noundef @.str.11) #13
  %351 = icmp ne i32 %350, 0
  br i1 %351, label %367, label %352

352:                                              ; preds = %348
  %353 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %354 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 72) #14
          to label %355 unwind label %220

355:                                              ; preds = %352
  %356 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %357 = load i64, ptr %356, align 8, !tbaa !26
  %358 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %359 = load ptr, ptr %358, align 8, !tbaa !11
  %360 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %361 = load ptr, ptr %360, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX8LimbNodeC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %354, i64 noundef %357, ptr noundef nonnull align 8 dereferenceable(40) %359, ptr noundef nonnull align 8 dereferenceable(336) %361, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %362 unwind label %363

362:                                              ; preds = %355
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %353, ptr noundef %354) #11
  br label %367

363:                                              ; preds = %355
  %364 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %365 = extractvalue { ptr, i32 } %364, 0
  store ptr %365, ptr %10, align 8
  %366 = extractvalue { ptr, i32 } %364, 1
  store i32 %366, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %354, i64 noundef 72) #15
  br label %658

367:                                              ; preds = %362, %348
  br label %368

368:                                              ; preds = %367, %343
  br label %369

369:                                              ; preds = %368, %324
  br label %370

370:                                              ; preds = %369, %305
  br label %371

371:                                              ; preds = %370, %286
  br label %656

372:                                              ; preds = %267
  %373 = load ptr, ptr %24, align 8, !tbaa !5
  %374 = load i64, ptr %25, align 8, !tbaa !21
  %375 = call i32 @strncmp(ptr noundef %373, ptr noundef @.str.12, i64 noundef %374) #13
  %376 = icmp ne i32 %375, 0
  br i1 %376, label %457, label %377

377:                                              ; preds = %372
  %378 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %379 = call i32 @strcmp(ptr noundef %378, ptr noundef @.str.13) #13
  %380 = icmp ne i32 %379, 0
  br i1 %380, label %396, label %381

381:                                              ; preds = %377
  %382 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %383 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 256) #14
          to label %384 unwind label %220

384:                                              ; preds = %381
  %385 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %386 = load i64, ptr %385, align 8, !tbaa !26
  %387 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %388 = load ptr, ptr %387, align 8, !tbaa !11
  %389 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %390 = load ptr, ptr %389, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX7ClusterC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(256) %383, i64 noundef %386, ptr noundef nonnull align 8 dereferenceable(40) %388, ptr noundef nonnull align 8 dereferenceable(336) %390, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %391 unwind label %392

391:                                              ; preds = %384
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %382, ptr noundef %383) #11
  br label %456

392:                                              ; preds = %384
  %393 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %394 = extractvalue { ptr, i32 } %393, 0
  store ptr %394, ptr %10, align 8
  %395 = extractvalue { ptr, i32 } %393, 1
  store i32 %395, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %383, i64 noundef 256) #15
  br label %658

396:                                              ; preds = %377
  %397 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %398 = call i32 @strcmp(ptr noundef %397, ptr noundef @.str.14) #13
  %399 = icmp ne i32 %398, 0
  br i1 %399, label %415, label %400

400:                                              ; preds = %396
  %401 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %402 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 104) #14
          to label %403 unwind label %220

403:                                              ; preds = %400
  %404 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %405 = load i64, ptr %404, align 8, !tbaa !26
  %406 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %407 = load ptr, ptr %406, align 8, !tbaa !11
  %408 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %409 = load ptr, ptr %408, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX4SkinC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(104) %402, i64 noundef %405, ptr noundef nonnull align 8 dereferenceable(40) %407, ptr noundef nonnull align 8 dereferenceable(336) %409, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %410 unwind label %411

410:                                              ; preds = %403
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %401, ptr noundef %402) #11
  br label %455

411:                                              ; preds = %403
  %412 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %10, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %402, i64 noundef 104) #15
  br label %658

415:                                              ; preds = %396
  %416 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %417 = call i32 @strcmp(ptr noundef %416, ptr noundef @.str.15) #13
  %418 = icmp ne i32 %417, 0
  br i1 %418, label %434, label %419

419:                                              ; preds = %415
  %420 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %421 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 128) #14
          to label %422 unwind label %220

422:                                              ; preds = %419
  %423 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %424 = load i64, ptr %423, align 8, !tbaa !26
  %425 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %426 = load ptr, ptr %425, align 8, !tbaa !11
  %427 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %428 = load ptr, ptr %427, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX10BlendShapeC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(128) %421, i64 noundef %424, ptr noundef nonnull align 8 dereferenceable(40) %426, ptr noundef nonnull align 8 dereferenceable(336) %428, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %429 unwind label %430

429:                                              ; preds = %422
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %420, ptr noundef %421) #11
  br label %454

430:                                              ; preds = %422
  %431 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %10, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %421, i64 noundef 128) #15
  br label %658

434:                                              ; preds = %415
  %435 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %436 = call i32 @strcmp(ptr noundef %435, ptr noundef @.str.16) #13
  %437 = icmp ne i32 %436, 0
  br i1 %437, label %453, label %438

438:                                              ; preds = %434
  %439 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %440 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 160) #14
          to label %441 unwind label %220

441:                                              ; preds = %438
  %442 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %443 = load i64, ptr %442, align 8, !tbaa !26
  %444 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %445 = load ptr, ptr %444, align 8, !tbaa !11
  %446 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %447 = load ptr, ptr %446, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX17BlendShapeChannelC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(160) %440, i64 noundef %443, ptr noundef nonnull align 8 dereferenceable(40) %445, ptr noundef nonnull align 8 dereferenceable(336) %447, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %448 unwind label %449

448:                                              ; preds = %441
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %439, ptr noundef %440) #11
  br label %453

449:                                              ; preds = %441
  %450 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %451 = extractvalue { ptr, i32 } %450, 0
  store ptr %451, ptr %10, align 8
  %452 = extractvalue { ptr, i32 } %450, 1
  store i32 %452, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %440, i64 noundef 160) #15
  br label %658

453:                                              ; preds = %448, %434
  br label %454

454:                                              ; preds = %453, %429
  br label %455

455:                                              ; preds = %454, %410
  br label %456

456:                                              ; preds = %455, %391
  br label %655

457:                                              ; preds = %372
  %458 = load ptr, ptr %24, align 8, !tbaa !5
  %459 = load i64, ptr %25, align 8, !tbaa !21
  %460 = call i32 @strncmp(ptr noundef %458, ptr noundef @.str.17, i64 noundef %459) #13
  %461 = icmp ne i32 %460, 0
  br i1 %461, label %486, label %462

462:                                              ; preds = %457
  %463 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %464 = call i32 @strcmp(ptr noundef %463, ptr noundef @.str.18) #13
  %465 = icmp ne i32 %464, 0
  br i1 %465, label %466, label %485

466:                                              ; preds = %462
  %467 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %468 = call i32 @strcmp(ptr noundef %467, ptr noundef @.str.19) #13
  %469 = icmp ne i32 %468, 0
  br i1 %469, label %470, label %485

470:                                              ; preds = %466
  %471 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %472 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 208) #14
          to label %473 unwind label %220

473:                                              ; preds = %470
  %474 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %475 = load i64, ptr %474, align 8, !tbaa !26
  %476 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %477 = load ptr, ptr %476, align 8, !tbaa !11
  %478 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %479 = load ptr, ptr %478, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX5ModelC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(208) %472, i64 noundef %475, ptr noundef nonnull align 8 dereferenceable(40) %477, ptr noundef nonnull align 8 dereferenceable(336) %479, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %480 unwind label %481

480:                                              ; preds = %473
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %471, ptr noundef %472) #11
  br label %485

481:                                              ; preds = %473
  %482 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %10, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %472, i64 noundef 208) #15
  br label %658

485:                                              ; preds = %480, %466, %462
  br label %654

486:                                              ; preds = %457
  %487 = load ptr, ptr %24, align 8, !tbaa !5
  %488 = load i64, ptr %25, align 8, !tbaa !21
  %489 = call i32 @strncmp(ptr noundef %487, ptr noundef @.str.20, i64 noundef %488) #13
  %490 = icmp ne i32 %489, 0
  br i1 %490, label %506, label %491

491:                                              ; preds = %486
  %492 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %493 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 208) #14
          to label %494 unwind label %220

494:                                              ; preds = %491
  %495 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %496 = load i64, ptr %495, align 8, !tbaa !26
  %497 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %498 = load ptr, ptr %497, align 8, !tbaa !11
  %499 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %500 = load ptr, ptr %499, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX8MaterialC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(208) %493, i64 noundef %496, ptr noundef nonnull align 8 dereferenceable(40) %498, ptr noundef nonnull align 8 dereferenceable(336) %500, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %501 unwind label %502

501:                                              ; preds = %494
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %492, ptr noundef %493) #11
  br label %653

502:                                              ; preds = %494
  %503 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %504 = extractvalue { ptr, i32 } %503, 0
  store ptr %504, ptr %10, align 8
  %505 = extractvalue { ptr, i32 } %503, 1
  store i32 %505, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %493, i64 noundef 208) #15
  br label %658

506:                                              ; preds = %486
  %507 = load ptr, ptr %24, align 8, !tbaa !5
  %508 = load i64, ptr %25, align 8, !tbaa !21
  %509 = call i32 @strncmp(ptr noundef %507, ptr noundef @.str.21, i64 noundef %508) #13
  %510 = icmp ne i32 %509, 0
  br i1 %510, label %526, label %511

511:                                              ; preds = %506
  %512 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %513 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 248) #14
          to label %514 unwind label %220

514:                                              ; preds = %511
  %515 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %516 = load i64, ptr %515, align 8, !tbaa !26
  %517 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %518 = load ptr, ptr %517, align 8, !tbaa !11
  %519 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %520 = load ptr, ptr %519, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX7TextureC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(248) %513, i64 noundef %516, ptr noundef nonnull align 8 dereferenceable(40) %518, ptr noundef nonnull align 8 dereferenceable(336) %520, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %521 unwind label %522

521:                                              ; preds = %514
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %512, ptr noundef %513) #11
  br label %652

522:                                              ; preds = %514
  %523 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %10, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %513, i64 noundef 248) #15
  br label %658

526:                                              ; preds = %506
  %527 = load ptr, ptr %24, align 8, !tbaa !5
  %528 = load i64, ptr %25, align 8, !tbaa !21
  %529 = call i32 @strncmp(ptr noundef %527, ptr noundef @.str.22, i64 noundef %528) #13
  %530 = icmp ne i32 %529, 0
  br i1 %530, label %546, label %531

531:                                              ; preds = %526
  %532 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %533 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 88) #14
          to label %534 unwind label %220

534:                                              ; preds = %531
  %535 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %536 = load i64, ptr %535, align 8, !tbaa !26
  %537 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %538 = load ptr, ptr %537, align 8, !tbaa !11
  %539 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %540 = load ptr, ptr %539, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX14LayeredTextureC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(88) %533, i64 noundef %536, ptr noundef nonnull align 8 dereferenceable(40) %538, ptr noundef nonnull align 8 dereferenceable(336) %540, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %541 unwind label %542

541:                                              ; preds = %534
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %532, ptr noundef %533) #11
  br label %651

542:                                              ; preds = %534
  %543 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %544 = extractvalue { ptr, i32 } %543, 0
  store ptr %544, ptr %10, align 8
  %545 = extractvalue { ptr, i32 } %543, 1
  store i32 %545, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %533, i64 noundef 88) #15
  br label %658

546:                                              ; preds = %526
  %547 = load ptr, ptr %24, align 8, !tbaa !5
  %548 = load i64, ptr %25, align 8, !tbaa !21
  %549 = call i32 @strncmp(ptr noundef %547, ptr noundef @.str.23, i64 noundef %548) #13
  %550 = icmp ne i32 %549, 0
  br i1 %550, label %566, label %551

551:                                              ; preds = %546
  %552 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %553 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 184) #14
          to label %554 unwind label %220

554:                                              ; preds = %551
  %555 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %556 = load i64, ptr %555, align 8, !tbaa !26
  %557 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %558 = load ptr, ptr %557, align 8, !tbaa !11
  %559 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %560 = load ptr, ptr %559, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX5VideoC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(184) %553, i64 noundef %556, ptr noundef nonnull align 8 dereferenceable(40) %558, ptr noundef nonnull align 8 dereferenceable(336) %560, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %561 unwind label %562

561:                                              ; preds = %554
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %552, ptr noundef %553) #11
  br label %650

562:                                              ; preds = %554
  %563 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %564 = extractvalue { ptr, i32 } %563, 0
  store ptr %564, ptr %10, align 8
  %565 = extractvalue { ptr, i32 } %563, 1
  store i32 %565, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %553, i64 noundef 184) #15
  br label %658

566:                                              ; preds = %546
  %567 = load ptr, ptr %24, align 8, !tbaa !5
  %568 = load i64, ptr %25, align 8, !tbaa !21
  %569 = call i32 @strncmp(ptr noundef %567, ptr noundef @.str.24, i64 noundef %568) #13
  %570 = icmp ne i32 %569, 0
  br i1 %570, label %586, label %571

571:                                              ; preds = %566
  %572 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %573 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 96) #14
          to label %574 unwind label %220

574:                                              ; preds = %571
  %575 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %576 = load i64, ptr %575, align 8, !tbaa !26
  %577 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %578 = load ptr, ptr %577, align 8, !tbaa !11
  %579 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %580 = load ptr, ptr %579, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX14AnimationStackC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(96) %573, i64 noundef %576, ptr noundef nonnull align 8 dereferenceable(40) %578, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(336) %580)
          to label %581 unwind label %582

581:                                              ; preds = %574
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %572, ptr noundef %573) #11
  br label %649

582:                                              ; preds = %574
  %583 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %584 = extractvalue { ptr, i32 } %583, 0
  store ptr %584, ptr %10, align 8
  %585 = extractvalue { ptr, i32 } %583, 1
  store i32 %585, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %573, i64 noundef 96) #15
  br label %658

586:                                              ; preds = %566
  %587 = load ptr, ptr %24, align 8, !tbaa !5
  %588 = load i64, ptr %25, align 8, !tbaa !21
  %589 = call i32 @strncmp(ptr noundef %587, ptr noundef @.str.25, i64 noundef %588) #13
  %590 = icmp ne i32 %589, 0
  br i1 %590, label %606, label %591

591:                                              ; preds = %586
  %592 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %593 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #14
          to label %594 unwind label %220

594:                                              ; preds = %591
  %595 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %596 = load i64, ptr %595, align 8, !tbaa !26
  %597 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %598 = load ptr, ptr %597, align 8, !tbaa !11
  %599 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %600 = load ptr, ptr %599, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX14AnimationLayerC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(80) %593, i64 noundef %596, ptr noundef nonnull align 8 dereferenceable(40) %598, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(336) %600)
          to label %601 unwind label %602

601:                                              ; preds = %594
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %592, ptr noundef %593) #11
  br label %648

602:                                              ; preds = %594
  %603 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %604 = extractvalue { ptr, i32 } %603, 0
  store ptr %604, ptr %10, align 8
  %605 = extractvalue { ptr, i32 } %603, 1
  store i32 %605, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %593, i64 noundef 80) #15
  br label %658

606:                                              ; preds = %586
  %607 = load ptr, ptr %24, align 8, !tbaa !5
  %608 = load i64, ptr %25, align 8, !tbaa !21
  %609 = call i32 @strncmp(ptr noundef %607, ptr noundef @.str.26, i64 noundef %608) #13
  %610 = icmp ne i32 %609, 0
  br i1 %610, label %626, label %611

611:                                              ; preds = %606
  %612 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %613 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 152) #14
          to label %614 unwind label %220

614:                                              ; preds = %611
  %615 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %616 = load i64, ptr %615, align 8, !tbaa !26
  %617 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %618 = load ptr, ptr %617, align 8, !tbaa !11
  %619 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %620 = load ptr, ptr %619, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX14AnimationCurveC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(152) %613, i64 noundef %616, ptr noundef nonnull align 8 dereferenceable(40) %618, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(336) %620)
          to label %621 unwind label %622

621:                                              ; preds = %614
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %612, ptr noundef %613) #11
  br label %647

622:                                              ; preds = %614
  %623 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %624 = extractvalue { ptr, i32 } %623, 0
  store ptr %624, ptr %10, align 8
  %625 = extractvalue { ptr, i32 } %623, 1
  store i32 %625, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %613, i64 noundef 152) #15
  br label %658

626:                                              ; preds = %606
  %627 = load ptr, ptr %24, align 8, !tbaa !5
  %628 = load i64, ptr %25, align 8, !tbaa !21
  %629 = call i32 @strncmp(ptr noundef %627, ptr noundef @.str.27, i64 noundef %628) #13
  %630 = icmp ne i32 %629, 0
  br i1 %630, label %646, label %631

631:                                              ; preds = %626
  %632 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %633 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 168) #14
          to label %634 unwind label %220

634:                                              ; preds = %631
  %635 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 3
  %636 = load i64, ptr %635, align 8, !tbaa !26
  %637 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 1
  %638 = load ptr, ptr %637, align 8, !tbaa !11
  %639 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %640 = load ptr, ptr %639, align 8, !tbaa !27
  invoke void @_ZN6Assimp3FBX18AnimationCurveNodeC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentEPKPKcm(ptr noundef nonnull align 8 dereferenceable(168) %633, i64 noundef %636, ptr noundef nonnull align 8 dereferenceable(40) %638, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(336) %640, ptr noundef null, i64 noundef 0)
          to label %641 unwind label %642

641:                                              ; preds = %634
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %632, ptr noundef %633) #11
  br label %646

642:                                              ; preds = %634
  %643 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  %644 = extractvalue { ptr, i32 } %643, 0
  store ptr %644, ptr %10, align 8
  %645 = extractvalue { ptr, i32 } %643, 1
  store i32 %645, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %633, i64 noundef 168) #15
  br label %658

646:                                              ; preds = %641, %626
  br label %647

647:                                              ; preds = %646, %621
  br label %648

648:                                              ; preds = %647, %601
  br label %649

649:                                              ; preds = %648, %581
  br label %650

650:                                              ; preds = %649, %561
  br label %651

651:                                              ; preds = %650, %541
  br label %652

652:                                              ; preds = %651, %521
  br label %653

653:                                              ; preds = %652, %501
  br label %654

654:                                              ; preds = %653, %485
  br label %655

655:                                              ; preds = %654, %456
  br label %656

656:                                              ; preds = %655, %371
  br label %657

657:                                              ; preds = %656, %266
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  br label %725

658:                                              ; preds = %642, %622, %602, %582, %562, %542, %522, %502, %481, %449, %430, %411, %392, %363, %344, %325, %306, %287, %262, %243, %224, %220
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #11
  br label %659

659:                                              ; preds = %658, %216
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  br label %660

660:                                              ; preds = %659
  %661 = load i32, ptr %11, align 4
  %662 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9bad_alloc) #11
  %663 = icmp eq i32 %661, %662
  br i1 %663, label %664, label %673

664:                                              ; preds = %660
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #11
  %665 = load ptr, ptr %10, align 8
  %666 = call ptr @__cxa_begin_catch(ptr %665) #11
  store ptr %666, ptr %28, align 8
  %667 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 4
  %668 = load i32, ptr %667, align 8, !tbaa !25
  %669 = and i32 %668, -2
  store i32 %669, ptr %667, align 8, !tbaa !25
  %670 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 4
  %671 = load i32, ptr %670, align 8, !tbaa !25
  %672 = or i32 %671, 2
  store i32 %672, ptr %670, align 8, !tbaa !25
  invoke void @__cxa_rethrow() #12
          to label %750 unwind label %720

673:                                              ; preds = %660
  %674 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9exception) #11
  %675 = icmp eq i32 %661, %674
  br i1 %675, label %676, label %736

676:                                              ; preds = %673
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #11
  %677 = load ptr, ptr %10, align 8
  %678 = call ptr @__cxa_begin_catch(ptr %677) #11
  store ptr %678, ptr %26, align 8
  %679 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 4
  %680 = load i32, ptr %679, align 8, !tbaa !25
  %681 = and i32 %680, -2
  store i32 %681, ptr %679, align 8, !tbaa !25
  %682 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 4
  %683 = load i32, ptr %682, align 8, !tbaa !25
  %684 = or i32 %683, 2
  store i32 %684, ptr %682, align 8, !tbaa !25
  %685 = load i8, ptr %5, align 1, !tbaa !9, !range !28, !noundef !29
  %686 = trunc i8 %685 to i1
  br i1 %686, label %695, label %687

687:                                              ; preds = %676
  %688 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 0
  %689 = load ptr, ptr %688, align 8, !tbaa !27
  %690 = invoke noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336) %689)
          to label %691 unwind label %696

691:                                              ; preds = %687
  %692 = getelementptr inbounds %"struct.Assimp::FBX::ImportSettings", ptr %690, i32 0, i32 0
  %693 = load i8, ptr %692, align 1, !tbaa !30, !range !28, !noundef !29
  %694 = trunc i8 %693 to i1
  br i1 %694, label %695, label %700

695:                                              ; preds = %691, %676
  invoke void @__cxa_rethrow() #12
          to label %750 unwind label %696

696:                                              ; preds = %705, %703, %700, %695, %687
  %697 = landingpad { ptr, i32 }
          cleanup
  %698 = extractvalue { ptr, i32 } %697, 0
  store ptr %698, ptr %10, align 8
  %699 = extractvalue { ptr, i32 } %697, 1
  store i32 %699, ptr %11, align 4
  invoke void @__cxa_end_catch()
          to label %718 unwind label %747

700:                                              ; preds = %691
  %701 = invoke noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv()
          to label %702 unwind label %696

702:                                              ; preds = %700
  br i1 %701, label %712, label %703

703:                                              ; preds = %702
  %704 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %705 unwind label %696

705:                                              ; preds = %703
  %706 = load ptr, ptr %26, align 8, !tbaa !5
  %707 = load ptr, ptr %706, align 8, !tbaa !32
  %708 = getelementptr inbounds ptr, ptr %707, i64 2
  %709 = load ptr, ptr %708, align 8
  %710 = call noundef ptr %709(ptr noundef nonnull align 8 dereferenceable(8) %706) #11
  invoke void @_ZN6Assimp6Logger5errorEPKc(ptr noundef nonnull align 8 dereferenceable(12) %704, ptr noundef %710)
          to label %711 unwind label %696

711:                                              ; preds = %705
  br label %712

712:                                              ; preds = %711, %702
  store ptr null, ptr %3, align 8
  store i32 1, ptr %27, align 4
  invoke void @__cxa_end_catch()
          to label %713 unwind label %714

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

714:                                              ; preds = %712
  %715 = landingpad { ptr, i32 }
          cleanup
  %716 = extractvalue { ptr, i32 } %715, 0
  store ptr %716, ptr %10, align 8
  %717 = extractvalue { ptr, i32 } %715, 1
  store i32 %717, ptr %11, align 4
  br label %719

718:                                              ; preds = %696
  br label %719

719:                                              ; preds = %718, %714
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  br label %736

720:                                              ; preds = %664
  %721 = landingpad { ptr, i32 }
          cleanup
  %722 = extractvalue { ptr, i32 } %721, 0
  store ptr %722, ptr %10, align 8
  %723 = extractvalue { ptr, i32 } %721, 1
  store i32 %723, ptr %11, align 4
  invoke void @__cxa_end_catch()
          to label %724 unwind label %747

724:                                              ; preds = %720
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #11
  br label %736

725:                                              ; preds = %657
  %726 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %727 = call noundef zeroext i1 @_ZNKSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %726) #11
  br i1 %727, label %729, label %728

728:                                              ; preds = %725
  br label %729

729:                                              ; preds = %728, %725
  %730 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 4
  %731 = load i32, ptr %730, align 8, !tbaa !25
  %732 = and i32 %731, -2
  store i32 %732, ptr %730, align 8, !tbaa !25
  %733 = getelementptr inbounds %"class.Assimp::FBX::LazyObject", ptr %30, i32 0, i32 2
  %734 = call noundef ptr @_ZNKSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %733) #11
  store ptr %734, ptr %3, align 8
  store i32 1, ptr %27, align 4
  br label %735

735:                                              ; preds = %729, %713
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #11
  br label %740

736:                                              ; preds = %724, %719, %673, %180
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  br label %737

737:                                              ; preds = %736, %168
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #11
  br label %738

738:                                              ; preds = %737, %153, %98, %85
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  br label %739

739:                                              ; preds = %738, %64
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #11
  br label %742

740:                                              ; preds = %735, %38, %34
  %741 = load ptr, ptr %3, align 8
  ret ptr %741

742:                                              ; preds = %739
  %743 = load ptr, ptr %10, align 8
  %744 = load i32, ptr %11, align 4
  %745 = insertvalue { ptr, i32 } poison, ptr %743, 0
  %746 = insertvalue { ptr, i32 } %745, i32 %744, 1
  resume { ptr, i32 } %746

747:                                              ; preds = %720, %696
  %748 = landingpad { ptr, i32 }
          catch ptr null
  %749 = extractvalue { ptr, i32 } %748, 0
  call void @__clang_call_terminate(ptr %749) #16
  unreachable

750:                                              ; preds = %695, %664
  unreachable
}

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

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

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

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

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

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

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

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

; Function Attrs: noreturn
declare void @_ZN6Assimp3FBX4Util8DOMErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKNS0_7ElementE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #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 #0 align 2

declare i32 @__gxx_personality_v0(...)

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

declare void @_ZN6Assimp3FBX18ParseTokenAsStringB5cxx11ERKNS0_5TokenERPKc(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(36), ptr noundef nonnull align 8 dereferenceable(8)) #4

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

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

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

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

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

; 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) #5

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

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

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

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

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

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

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

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

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

declare void @_ZN6Assimp3FBX12MeshGeometryC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(1000), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(336)) unnamed_addr #4

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

declare void @_ZN6Assimp3FBX13ShapeGeometryC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(192), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(336)) unnamed_addr #4

declare void @_ZN6Assimp3FBX12LineGeometryC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(168), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(336)) unnamed_addr #4

declare void @_ZN6Assimp3FBX6CameraC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX14CameraSwitcherC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(144), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX5LightC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX4NullC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX8LimbNodeC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX7ClusterC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(256), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX4SkinC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(104), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX10BlendShapeC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(128), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX17BlendShapeChannelC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(160), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX5ModelC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(208), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX8MaterialC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(208), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX7TextureC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(248), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX14LayeredTextureC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(88), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX5VideoC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(184), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX14AnimationStackC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(96), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(336)) unnamed_addr #4

declare void @_ZN6Assimp3FBX14AnimationLayerC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(80), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(336)) unnamed_addr #4

declare void @_ZN6Assimp3FBX14AnimationCurveC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(152), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(336)) unnamed_addr #4

declare void @_ZN6Assimp3FBX18AnimationCurveNodeC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentEPKPKcm(ptr noundef nonnull align 8 dereferenceable(168), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef, i64 noundef) unnamed_addr #4

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

declare ptr @__cxa_begin_catch(ptr)

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

declare void @__cxa_rethrow()

declare noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv() #4

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() #4

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

declare void @__cxa_end_catch()

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !6, i64 8}
!12 = !{!"_ZTSN6Assimp3FBX10LazyObjectE", !6, i64 0, !6, i64 8, !13, i64 16, !19, i64 24, !20, i64 32}
!13 = !{!"_ZTSSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE", !14, i64 0}
!14 = !{!"_ZTSSt15__uniq_ptr_dataIKN6Assimp3FBX6ObjectESt14default_deleteIS3_ELb1ELb1EE", !15, i64 0}
!15 = !{!"_ZTSSt15__uniq_ptr_implIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE", !16, i64 0}
!16 = !{!"_ZTSSt5tupleIJPKN6Assimp3FBX6ObjectESt14default_deleteIS3_EEE", !17, i64 0}
!17 = !{!"_ZTSSt11_Tuple_implILm0EJPKN6Assimp3FBX6ObjectESt14default_deleteIS3_EEE", !18, i64 0}
!18 = !{!"_ZTSSt10_Head_baseILm0EPKN6Assimp3FBX6ObjectELb0EE", !6, i64 0}
!19 = !{!"long", !7, i64 0}
!20 = !{!"int", !7, i64 0}
!21 = !{!19, !19, i64 0}
!22 = !{!7, !7, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!12, !20, i64 32}
!26 = !{!12, !19, i64 24}
!27 = !{!12, !6, i64 0}
!28 = !{i8 0, i8 2}
!29 = !{}
!30 = !{!31, !10, i64 0}
!31 = !{!"_ZTSN6Assimp3FBX14ImportSettingsE", !10, i64 0, !10, i64 1, !10, i64 2, !10, i64 3, !10, i64 4, !10, i64 5, !10, i64 6, !10, i64 7, !10, i64 8, !10, i64 9, !10, i64 10, !10, i64 11, !10, i64 12, !10, i64 13, !10, i64 14}
!32 = !{!33, !33, i64 0}
!33 = !{!"vtable pointer", !8, i64 0}


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

%"class.std::__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.12" = type { i8 }

@.str = external hidden unnamed_addr constant [51 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@_ZTISt9bad_alloc = external constant ptr
@_ZTISt9exception = external constant ptr
@.str.2 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [19 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN6Assimp3FBX10LazyObject3GetEb(ptr noundef nonnull align 8 dereferenceable(36) %0, i1 noundef zeroext %1) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator.12", align 1
  %5 = alloca ptr, align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator.12", align 1
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator.12", align 1
  %16 = tail call noundef zeroext i1 @_ZNK6Assimp3FBX10LazyObject18IsBeingConstructedEv(ptr noundef nonnull align 8 dereferenceable(36) %0)
  br i1 %16, label %427, label %17

17:                                               ; preds = %2
  %18 = tail call noundef zeroext i1 @_ZNK6Assimp3FBX10LazyObject17FailedToConstructEv(ptr noundef nonnull align 8 dereferenceable(36) %0)
  br i1 %18, label %427, label %19

19:                                               ; preds = %17
  %20 = getelementptr inbounds i8, ptr %0, i64 16
  %21 = tail call noundef zeroext i1 @_ZNKSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #11
  br i1 %21, label %22, label %24

22:                                               ; preds = %19
  %23 = tail call noundef ptr @_ZNKSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #11
  br label %427

24:                                               ; preds = %19
  %25 = getelementptr inbounds i8, ptr %0, i64 8
  %26 = load ptr, ptr %25, align 8, !tbaa !5
  %27 = tail call noundef nonnull align 8 dereferenceable(36) ptr @_ZNK6Assimp3FBX7Element8KeyTokenEv(ptr noundef nonnull align 8 dereferenceable(40) %26)
  %28 = load ptr, ptr %25, align 8, !tbaa !5
  %29 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX7Element6TokensEv(ptr noundef nonnull align 8 dereferenceable(40) %28)
  %30 = tail call noundef i64 @_ZNKSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #11
  %31 = icmp ult i64 %30, 3
  br i1 %31, label %32, label %41

32:                                               ; preds = %24
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %33 unwind label %36

33:                                               ; preds = %32
  %34 = load ptr, ptr %25, align 8, !tbaa !5
  invoke void @_ZN6Assimp3FBX4Util8DOMErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKNS0_7ElementE(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef %34) #12
          to label %35 unwind label %38

35:                                               ; preds = %33
  unreachable

36:                                               ; preds = %32
  %37 = landingpad { ptr, i32 }
          cleanup
  br label %40

38:                                               ; preds = %33
  %39 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #11
  br label %40

40:                                               ; preds = %38, %36
  %.pn98 = phi { ptr, i32 } [ %39, %38 ], [ %37, %36 ]
  %.045 = extractvalue { ptr, i32 } %.pn98, 0
  %.047 = extractvalue { ptr, i32 } %.pn98, 1
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #11
  br label %424

41:                                               ; preds = %24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #11
  %42 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef 1) #11
  %43 = load ptr, ptr %42, align 8, !tbaa !18
  call void @_ZN6Assimp3FBX18ParseTokenAsStringB5cxx11ERKNS0_5TokenERPKc(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(36) %43, ptr noundef nonnull align 8 dereferenceable(8) %5)
  %44 = load ptr, ptr %5, align 8, !tbaa !18
  %.not = icmp eq ptr %44, null
  br i1 %.not, label %54, label %45

45:                                               ; preds = %41
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull %44, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %46 unwind label %49

46:                                               ; preds = %45
  %47 = load ptr, ptr %25, align 8, !tbaa !5
  invoke void @_ZN6Assimp3FBX4Util8DOMErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKNS0_7ElementE(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef %47) #12
          to label %48 unwind label %51

48:                                               ; preds = %46
  unreachable

49:                                               ; preds = %45
  %50 = landingpad { ptr, i32 }
          cleanup
  br label %53

51:                                               ; preds = %46
  %52 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #11
  br label %53

53:                                               ; preds = %51, %49
  %.pn96 = phi { ptr, i32 } [ %52, %51 ], [ %50, %49 ]
  %.146 = extractvalue { ptr, i32 } %.pn96, 0
  %.148 = extractvalue { ptr, i32 } %.pn96, 1
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #11
  br label %423

54:                                               ; preds = %41
  %55 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef 1) #11
  %56 = load ptr, ptr %55, align 8, !tbaa !18
  %57 = call noundef zeroext i1 @_ZNK6Assimp3FBX5Token8IsBinaryEv(ptr noundef nonnull align 8 dereferenceable(36) %56)
  br i1 %57, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %54
  %58 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #11
  %.not101 = icmp eq i64 %58, 0
  br i1 %.not101, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader, %.lr.ph._crit_edge
  %.059100 = phi i64 [ %62, %.lr.ph._crit_edge ], [ 0, %.preheader ]
  %59 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef %.059100)
  %60 = load i8, ptr %59, align 1, !tbaa !19
  %61 = icmp eq i8 %60, 0
  %62 = add nuw i64 %.059100, 1
  br i1 %61, label %63, label %.lr.ph._crit_edge

63:                                               ; preds = %.lr.ph
  %64 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef %62)
  %65 = load i8, ptr %64, align 1, !tbaa !19
  %66 = icmp eq i8 %65, 1
  br i1 %66, label %67, label %.lr.ph._crit_edge

67:                                               ; preds = %63
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #11
  %68 = add i64 %.059100, 2
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef %68, i64 noundef -1)
          to label %69 unwind label %74

69:                                               ; preds = %67
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.1)
          to label %70 unwind label %76

70:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #11
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef 0, i64 noundef %.059100)
          to label %71 unwind label %78

71:                                               ; preds = %70
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %72 unwind label %80

72:                                               ; preds = %71
  %73 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %9) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #11
  br label %.lr.ph._crit_edge

74:                                               ; preds = %67
  %75 = landingpad { ptr, i32 }
          cleanup
  br label %84

76:                                               ; preds = %69
  %77 = landingpad { ptr, i32 }
          cleanup
  br label %83

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

80:                                               ; preds = %71
  %81 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #11
  br label %82

82:                                               ; preds = %80, %78
  %.pn92 = phi { ptr, i32 } [ %81, %80 ], [ %79, %78 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #11
  br label %83

83:                                               ; preds = %82, %76
  %.pn92.pn = phi { ptr, i32 } [ %.pn92, %82 ], [ %77, %76 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #11
  br label %84

84:                                               ; preds = %83, %74
  %.pn92.pn.pn = phi { ptr, i32 } [ %.pn92.pn, %83 ], [ %75, %74 ]
  %.4 = extractvalue { ptr, i32 } %.pn92.pn.pn, 0
  %.451 = extractvalue { ptr, i32 } %.pn92.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #11
  br label %423

.lr.ph._crit_edge:                                ; preds = %.lr.ph, %63, %72
  %85 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #11
  %86 = icmp ult i64 %62, %85
  br i1 %86, label %.lr.ph, label %.loopexit, !llvm.loop !20

.loopexit:                                        ; preds = %.lr.ph._crit_edge, %.preheader, %54
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #11
  %87 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef 2) #11
  %88 = load ptr, ptr %87, align 8, !tbaa !18
  invoke void @_ZN6Assimp3FBX18ParseTokenAsStringB5cxx11ERKNS0_5TokenERPKc(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(36) %88, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %89 unwind label %95

89:                                               ; preds = %.loopexit
  %90 = load ptr, ptr %5, align 8, !tbaa !18
  %.not60 = icmp eq ptr %90, null
  br i1 %.not60, label %104, label %91

91:                                               ; preds = %89
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull %90, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %92 unwind label %99

92:                                               ; preds = %91
  %93 = load ptr, ptr %25, align 8, !tbaa !5
  invoke void @_ZN6Assimp3FBX4Util8DOMErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKNS0_7ElementE(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef %93) #12
          to label %94 unwind label %101

94:                                               ; preds = %92
  unreachable

95:                                               ; preds = %.loopexit
  %96 = landingpad { ptr, i32 }
          cleanup
  %97 = extractvalue { ptr, i32 } %96, 0
  %98 = extractvalue { ptr, i32 } %96, 1
  br label %422

99:                                               ; preds = %91
  %100 = landingpad { ptr, i32 }
          cleanup
  br label %103

101:                                              ; preds = %92
  %102 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #11
  br label %103

103:                                              ; preds = %101, %99
  %.pn90 = phi { ptr, i32 } [ %102, %101 ], [ %100, %99 ]
  %.5 = extractvalue { ptr, i32 } %.pn90, 0
  %.552 = extractvalue { ptr, i32 } %.pn90, 1
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #11
  br label %421

104:                                              ; preds = %89
  %105 = getelementptr inbounds i8, ptr %0, i64 32
  %106 = load i32, ptr %105, align 8, !tbaa !22
  %107 = or i32 %106, 1
  store i32 %107, ptr %105, align 8, !tbaa !22
  %108 = call noundef ptr @_ZNK6Assimp3FBX5Token5beginEv(ptr noundef nonnull align 8 dereferenceable(36) %27)
  %109 = call noundef ptr @_ZNK6Assimp3FBX5Token3endEv(ptr noundef nonnull align 8 dereferenceable(36) %27)
  %110 = call noundef ptr @_ZNK6Assimp3FBX5Token5beginEv(ptr noundef nonnull align 8 dereferenceable(36) %27)
  %111 = ptrtoint ptr %109 to i64
  %112 = ptrtoint ptr %110 to i64
  %113 = sub i64 %111, %112
  %114 = call i32 @strncmp(ptr noundef %108, ptr noundef nonnull @.str.2, i64 noundef %113) #13
  %.not61 = icmp eq i32 %114, 0
  br i1 %.not61, label %115, label %155

115:                                              ; preds = %104
  %116 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  %117 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %116, ptr noundef nonnull dereferenceable(1) @.str.3) #13
  %.not62 = icmp eq i32 %117, 0
  br i1 %.not62, label %118, label %130

118:                                              ; preds = %115
  %119 = invoke noalias noundef nonnull dereferenceable(1000) ptr @_Znwm(i64 noundef 1000) #14
          to label %120 unwind label %126

120:                                              ; preds = %118
  %121 = getelementptr inbounds i8, ptr %0, i64 24
  %122 = load i64, ptr %121, align 8, !tbaa !23
  %123 = load ptr, ptr %25, align 8, !tbaa !5
  %124 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX12MeshGeometryC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(1000) %119, i64 noundef %122, ptr noundef nonnull align 8 dereferenceable(40) %123, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(336) %124)
          to label %125 unwind label %128

125:                                              ; preds = %120
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull %119) #11
  br label %130

126:                                              ; preds = %363, %352, %341, %330, %319, %308, %297, %286, %275, %258, %246, %234, %222, %208, %196, %184, %172, %160, %146, %133, %118
  %127 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  br label %377

128:                                              ; preds = %120
  %129 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %119, i64 noundef 1000) #15
  br label %377

130:                                              ; preds = %125, %115
  %131 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  %132 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %131, ptr noundef nonnull dereferenceable(1) @.str.4) #13
  %.not63 = icmp eq i32 %132, 0
  br i1 %.not63, label %133, label %143

133:                                              ; preds = %130
  %134 = invoke noalias noundef nonnull dereferenceable(192) ptr @_Znwm(i64 noundef 192) #14
          to label %135 unwind label %126

135:                                              ; preds = %133
  %136 = getelementptr inbounds i8, ptr %0, i64 24
  %137 = load i64, ptr %136, align 8, !tbaa !23
  %138 = load ptr, ptr %25, align 8, !tbaa !5
  %139 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX13ShapeGeometryC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(192) %134, i64 noundef %137, ptr noundef nonnull align 8 dereferenceable(40) %138, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(336) %139)
          to label %140 unwind label %141

140:                                              ; preds = %135
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull %134) #11
  br label %143

141:                                              ; preds = %135
  %142 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %134, i64 noundef 192) #15
  br label %377

143:                                              ; preds = %140, %130
  %144 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  %145 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %144, ptr noundef nonnull dereferenceable(1) @.str.5) #13
  %.not64 = icmp eq i32 %145, 0
  br i1 %.not64, label %146, label %372

146:                                              ; preds = %143
  %147 = invoke noalias noundef nonnull dereferenceable(168) ptr @_Znwm(i64 noundef 168) #14
          to label %148 unwind label %126

148:                                              ; preds = %146
  %149 = getelementptr inbounds i8, ptr %0, i64 24
  %150 = load i64, ptr %149, align 8, !tbaa !23
  %151 = load ptr, ptr %25, align 8, !tbaa !5
  %152 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX12LineGeometryC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(168) %147, i64 noundef %150, ptr noundef nonnull align 8 dereferenceable(40) %151, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(336) %152)
          to label %.sink.split unwind label %153

153:                                              ; preds = %148
  %154 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %147, i64 noundef 168) #15
  br label %377

155:                                              ; preds = %104
  %156 = call i32 @strncmp(ptr noundef %108, ptr noundef nonnull @.str.6, i64 noundef %113) #13
  %.not65 = icmp eq i32 %156, 0
  br i1 %.not65, label %157, label %217

157:                                              ; preds = %155
  %158 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  %159 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %158, ptr noundef nonnull dereferenceable(1) @.str.7) #13
  %.not66 = icmp eq i32 %159, 0
  br i1 %.not66, label %160, label %169

160:                                              ; preds = %157
  %161 = invoke noalias noundef nonnull dereferenceable(72) ptr @_Znwm(i64 noundef 72) #14
          to label %162 unwind label %126

162:                                              ; preds = %160
  %163 = getelementptr inbounds i8, ptr %0, i64 24
  %164 = load i64, ptr %163, align 8, !tbaa !23
  %165 = load ptr, ptr %25, align 8, !tbaa !5
  %166 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX6CameraC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %161, i64 noundef %164, ptr noundef nonnull align 8 dereferenceable(40) %165, ptr noundef nonnull align 8 dereferenceable(336) %166, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %.sink.split unwind label %167

167:                                              ; preds = %162
  %168 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %161, i64 noundef 72) #15
  br label %377

169:                                              ; preds = %157
  %170 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  %171 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %170, ptr noundef nonnull dereferenceable(1) @.str.8) #13
  %.not67 = icmp eq i32 %171, 0
  br i1 %.not67, label %172, label %181

172:                                              ; preds = %169
  %173 = invoke noalias noundef nonnull dereferenceable(144) ptr @_Znwm(i64 noundef 144) #14
          to label %174 unwind label %126

174:                                              ; preds = %172
  %175 = getelementptr inbounds i8, ptr %0, i64 24
  %176 = load i64, ptr %175, align 8, !tbaa !23
  %177 = load ptr, ptr %25, align 8, !tbaa !5
  %178 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX14CameraSwitcherC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(144) %173, i64 noundef %176, ptr noundef nonnull align 8 dereferenceable(40) %177, ptr noundef nonnull align 8 dereferenceable(336) %178, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %.sink.split unwind label %179

179:                                              ; preds = %174
  %180 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %173, i64 noundef 144) #15
  br label %377

181:                                              ; preds = %169
  %182 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  %183 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %182, ptr noundef nonnull dereferenceable(1) @.str.9) #13
  %.not68 = icmp eq i32 %183, 0
  br i1 %.not68, label %184, label %193

184:                                              ; preds = %181
  %185 = invoke noalias noundef nonnull dereferenceable(72) ptr @_Znwm(i64 noundef 72) #14
          to label %186 unwind label %126

186:                                              ; preds = %184
  %187 = getelementptr inbounds i8, ptr %0, i64 24
  %188 = load i64, ptr %187, align 8, !tbaa !23
  %189 = load ptr, ptr %25, align 8, !tbaa !5
  %190 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX5LightC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %185, i64 noundef %188, ptr noundef nonnull align 8 dereferenceable(40) %189, ptr noundef nonnull align 8 dereferenceable(336) %190, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %.sink.split unwind label %191

191:                                              ; preds = %186
  %192 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %185, i64 noundef 72) #15
  br label %377

193:                                              ; preds = %181
  %194 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  %195 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %194, ptr noundef nonnull dereferenceable(1) @.str.10) #13
  %.not69 = icmp eq i32 %195, 0
  br i1 %.not69, label %196, label %205

196:                                              ; preds = %193
  %197 = invoke noalias noundef nonnull dereferenceable(72) ptr @_Znwm(i64 noundef 72) #14
          to label %198 unwind label %126

198:                                              ; preds = %196
  %199 = getelementptr inbounds i8, ptr %0, i64 24
  %200 = load i64, ptr %199, align 8, !tbaa !23
  %201 = load ptr, ptr %25, align 8, !tbaa !5
  %202 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX4NullC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %197, i64 noundef %200, ptr noundef nonnull align 8 dereferenceable(40) %201, ptr noundef nonnull align 8 dereferenceable(336) %202, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %.sink.split unwind label %203

203:                                              ; preds = %198
  %204 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %197, i64 noundef 72) #15
  br label %377

205:                                              ; preds = %193
  %206 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  %207 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %206, ptr noundef nonnull dereferenceable(1) @.str.11) #13
  %.not70 = icmp eq i32 %207, 0
  br i1 %.not70, label %208, label %372

208:                                              ; preds = %205
  %209 = invoke noalias noundef nonnull dereferenceable(72) ptr @_Znwm(i64 noundef 72) #14
          to label %210 unwind label %126

210:                                              ; preds = %208
  %211 = getelementptr inbounds i8, ptr %0, i64 24
  %212 = load i64, ptr %211, align 8, !tbaa !23
  %213 = load ptr, ptr %25, align 8, !tbaa !5
  %214 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX8LimbNodeC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %209, i64 noundef %212, ptr noundef nonnull align 8 dereferenceable(40) %213, ptr noundef nonnull align 8 dereferenceable(336) %214, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %.sink.split unwind label %215

215:                                              ; preds = %210
  %216 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %209, i64 noundef 72) #15
  br label %377

217:                                              ; preds = %155
  %218 = call i32 @strncmp(ptr noundef %108, ptr noundef nonnull @.str.12, i64 noundef %113) #13
  %.not71 = icmp eq i32 %218, 0
  br i1 %.not71, label %219, label %267

219:                                              ; preds = %217
  %220 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  %221 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %220, ptr noundef nonnull dereferenceable(1) @.str.13) #13
  %.not72 = icmp eq i32 %221, 0
  br i1 %.not72, label %222, label %231

222:                                              ; preds = %219
  %223 = invoke noalias noundef nonnull dereferenceable(256) ptr @_Znwm(i64 noundef 256) #14
          to label %224 unwind label %126

224:                                              ; preds = %222
  %225 = getelementptr inbounds i8, ptr %0, i64 24
  %226 = load i64, ptr %225, align 8, !tbaa !23
  %227 = load ptr, ptr %25, align 8, !tbaa !5
  %228 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX7ClusterC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(256) %223, i64 noundef %226, ptr noundef nonnull align 8 dereferenceable(40) %227, ptr noundef nonnull align 8 dereferenceable(336) %228, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %.sink.split unwind label %229

229:                                              ; preds = %224
  %230 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %223, i64 noundef 256) #15
  br label %377

231:                                              ; preds = %219
  %232 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  %233 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %232, ptr noundef nonnull dereferenceable(1) @.str.14) #13
  %.not73 = icmp eq i32 %233, 0
  br i1 %.not73, label %234, label %243

234:                                              ; preds = %231
  %235 = invoke noalias noundef nonnull dereferenceable(104) ptr @_Znwm(i64 noundef 104) #14
          to label %236 unwind label %126

236:                                              ; preds = %234
  %237 = getelementptr inbounds i8, ptr %0, i64 24
  %238 = load i64, ptr %237, align 8, !tbaa !23
  %239 = load ptr, ptr %25, align 8, !tbaa !5
  %240 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX4SkinC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(104) %235, i64 noundef %238, ptr noundef nonnull align 8 dereferenceable(40) %239, ptr noundef nonnull align 8 dereferenceable(336) %240, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %.sink.split unwind label %241

241:                                              ; preds = %236
  %242 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %235, i64 noundef 104) #15
  br label %377

243:                                              ; preds = %231
  %244 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  %245 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %244, ptr noundef nonnull dereferenceable(1) @.str.15) #13
  %.not74 = icmp eq i32 %245, 0
  br i1 %.not74, label %246, label %255

246:                                              ; preds = %243
  %247 = invoke noalias noundef nonnull dereferenceable(128) ptr @_Znwm(i64 noundef 128) #14
          to label %248 unwind label %126

248:                                              ; preds = %246
  %249 = getelementptr inbounds i8, ptr %0, i64 24
  %250 = load i64, ptr %249, align 8, !tbaa !23
  %251 = load ptr, ptr %25, align 8, !tbaa !5
  %252 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX10BlendShapeC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(128) %247, i64 noundef %250, ptr noundef nonnull align 8 dereferenceable(40) %251, ptr noundef nonnull align 8 dereferenceable(336) %252, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %.sink.split unwind label %253

253:                                              ; preds = %248
  %254 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %247, i64 noundef 128) #15
  br label %377

255:                                              ; preds = %243
  %256 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  %257 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %256, ptr noundef nonnull dereferenceable(1) @.str.16) #13
  %.not75 = icmp eq i32 %257, 0
  br i1 %.not75, label %258, label %372

258:                                              ; preds = %255
  %259 = invoke noalias noundef nonnull dereferenceable(160) ptr @_Znwm(i64 noundef 160) #14
          to label %260 unwind label %126

260:                                              ; preds = %258
  %261 = getelementptr inbounds i8, ptr %0, i64 24
  %262 = load i64, ptr %261, align 8, !tbaa !23
  %263 = load ptr, ptr %25, align 8, !tbaa !5
  %264 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX17BlendShapeChannelC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(160) %259, i64 noundef %262, ptr noundef nonnull align 8 dereferenceable(40) %263, ptr noundef nonnull align 8 dereferenceable(336) %264, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %.sink.split unwind label %265

265:                                              ; preds = %260
  %266 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %259, i64 noundef 160) #15
  br label %377

267:                                              ; preds = %217
  %268 = call i32 @strncmp(ptr noundef %108, ptr noundef nonnull @.str.17, i64 noundef %113) #13
  %.not76 = icmp eq i32 %268, 0
  br i1 %.not76, label %269, label %284

269:                                              ; preds = %267
  %270 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  %271 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %270, ptr noundef nonnull dereferenceable(1) @.str.18) #13
  %.not77 = icmp eq i32 %271, 0
  br i1 %.not77, label %372, label %272

272:                                              ; preds = %269
  %273 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  %274 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %273, ptr noundef nonnull dereferenceable(1) @.str.19) #13
  %.not78 = icmp eq i32 %274, 0
  br i1 %.not78, label %372, label %275

275:                                              ; preds = %272
  %276 = invoke noalias noundef nonnull dereferenceable(208) ptr @_Znwm(i64 noundef 208) #14
          to label %277 unwind label %126

277:                                              ; preds = %275
  %278 = getelementptr inbounds i8, ptr %0, i64 24
  %279 = load i64, ptr %278, align 8, !tbaa !23
  %280 = load ptr, ptr %25, align 8, !tbaa !5
  %281 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX5ModelC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(208) %276, i64 noundef %279, ptr noundef nonnull align 8 dereferenceable(40) %280, ptr noundef nonnull align 8 dereferenceable(336) %281, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %.sink.split unwind label %282

282:                                              ; preds = %277
  %283 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %276, i64 noundef 208) #15
  br label %377

284:                                              ; preds = %267
  %285 = call i32 @strncmp(ptr noundef %108, ptr noundef nonnull @.str.20, i64 noundef %113) #13
  %.not79 = icmp eq i32 %285, 0
  br i1 %.not79, label %286, label %295

286:                                              ; preds = %284
  %287 = invoke noalias noundef nonnull dereferenceable(208) ptr @_Znwm(i64 noundef 208) #14
          to label %288 unwind label %126

288:                                              ; preds = %286
  %289 = getelementptr inbounds i8, ptr %0, i64 24
  %290 = load i64, ptr %289, align 8, !tbaa !23
  %291 = load ptr, ptr %25, align 8, !tbaa !5
  %292 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX8MaterialC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(208) %287, i64 noundef %290, ptr noundef nonnull align 8 dereferenceable(40) %291, ptr noundef nonnull align 8 dereferenceable(336) %292, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %.sink.split unwind label %293

293:                                              ; preds = %288
  %294 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %287, i64 noundef 208) #15
  br label %377

295:                                              ; preds = %284
  %296 = call i32 @strncmp(ptr noundef %108, ptr noundef nonnull @.str.21, i64 noundef %113) #13
  %.not80 = icmp eq i32 %296, 0
  br i1 %.not80, label %297, label %306

297:                                              ; preds = %295
  %298 = invoke noalias noundef nonnull dereferenceable(248) ptr @_Znwm(i64 noundef 248) #14
          to label %299 unwind label %126

299:                                              ; preds = %297
  %300 = getelementptr inbounds i8, ptr %0, i64 24
  %301 = load i64, ptr %300, align 8, !tbaa !23
  %302 = load ptr, ptr %25, align 8, !tbaa !5
  %303 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX7TextureC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(248) %298, i64 noundef %301, ptr noundef nonnull align 8 dereferenceable(40) %302, ptr noundef nonnull align 8 dereferenceable(336) %303, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %.sink.split unwind label %304

304:                                              ; preds = %299
  %305 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %298, i64 noundef 248) #15
  br label %377

306:                                              ; preds = %295
  %307 = call i32 @strncmp(ptr noundef %108, ptr noundef nonnull @.str.22, i64 noundef %113) #13
  %.not81 = icmp eq i32 %307, 0
  br i1 %.not81, label %308, label %317

308:                                              ; preds = %306
  %309 = invoke noalias noundef nonnull dereferenceable(88) ptr @_Znwm(i64 noundef 88) #14
          to label %310 unwind label %126

310:                                              ; preds = %308
  %311 = getelementptr inbounds i8, ptr %0, i64 24
  %312 = load i64, ptr %311, align 8, !tbaa !23
  %313 = load ptr, ptr %25, align 8, !tbaa !5
  %314 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX14LayeredTextureC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(88) %309, i64 noundef %312, ptr noundef nonnull align 8 dereferenceable(40) %313, ptr noundef nonnull align 8 dereferenceable(336) %314, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %.sink.split unwind label %315

315:                                              ; preds = %310
  %316 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %309, i64 noundef 88) #15
  br label %377

317:                                              ; preds = %306
  %318 = call i32 @strncmp(ptr noundef %108, ptr noundef nonnull @.str.23, i64 noundef %113) #13
  %.not82 = icmp eq i32 %318, 0
  br i1 %.not82, label %319, label %328

319:                                              ; preds = %317
  %320 = invoke noalias noundef nonnull dereferenceable(184) ptr @_Znwm(i64 noundef 184) #14
          to label %321 unwind label %126

321:                                              ; preds = %319
  %322 = getelementptr inbounds i8, ptr %0, i64 24
  %323 = load i64, ptr %322, align 8, !tbaa !23
  %324 = load ptr, ptr %25, align 8, !tbaa !5
  %325 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX5VideoC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(184) %320, i64 noundef %323, ptr noundef nonnull align 8 dereferenceable(40) %324, ptr noundef nonnull align 8 dereferenceable(336) %325, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %.sink.split unwind label %326

326:                                              ; preds = %321
  %327 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %320, i64 noundef 184) #15
  br label %377

328:                                              ; preds = %317
  %329 = call i32 @strncmp(ptr noundef %108, ptr noundef nonnull @.str.24, i64 noundef %113) #13
  %.not83 = icmp eq i32 %329, 0
  br i1 %.not83, label %330, label %339

330:                                              ; preds = %328
  %331 = invoke noalias noundef nonnull dereferenceable(96) ptr @_Znwm(i64 noundef 96) #14
          to label %332 unwind label %126

332:                                              ; preds = %330
  %333 = getelementptr inbounds i8, ptr %0, i64 24
  %334 = load i64, ptr %333, align 8, !tbaa !23
  %335 = load ptr, ptr %25, align 8, !tbaa !5
  %336 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX14AnimationStackC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(96) %331, i64 noundef %334, ptr noundef nonnull align 8 dereferenceable(40) %335, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(336) %336)
          to label %.sink.split unwind label %337

337:                                              ; preds = %332
  %338 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %331, i64 noundef 96) #15
  br label %377

339:                                              ; preds = %328
  %340 = call i32 @strncmp(ptr noundef %108, ptr noundef nonnull @.str.25, i64 noundef %113) #13
  %.not84 = icmp eq i32 %340, 0
  br i1 %.not84, label %341, label %350

341:                                              ; preds = %339
  %342 = invoke noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #14
          to label %343 unwind label %126

343:                                              ; preds = %341
  %344 = getelementptr inbounds i8, ptr %0, i64 24
  %345 = load i64, ptr %344, align 8, !tbaa !23
  %346 = load ptr, ptr %25, align 8, !tbaa !5
  %347 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX14AnimationLayerC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(80) %342, i64 noundef %345, ptr noundef nonnull align 8 dereferenceable(40) %346, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(336) %347)
          to label %.sink.split unwind label %348

348:                                              ; preds = %343
  %349 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %342, i64 noundef 80) #15
  br label %377

350:                                              ; preds = %339
  %351 = call i32 @strncmp(ptr noundef %108, ptr noundef nonnull @.str.26, i64 noundef %113) #13
  %.not85 = icmp eq i32 %351, 0
  br i1 %.not85, label %352, label %361

352:                                              ; preds = %350
  %353 = invoke noalias noundef nonnull dereferenceable(152) ptr @_Znwm(i64 noundef 152) #14
          to label %354 unwind label %126

354:                                              ; preds = %352
  %355 = getelementptr inbounds i8, ptr %0, i64 24
  %356 = load i64, ptr %355, align 8, !tbaa !23
  %357 = load ptr, ptr %25, align 8, !tbaa !5
  %358 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX14AnimationCurveC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(152) %353, i64 noundef %356, ptr noundef nonnull align 8 dereferenceable(40) %357, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(336) %358)
          to label %.sink.split unwind label %359

359:                                              ; preds = %354
  %360 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %353, i64 noundef 152) #15
  br label %377

361:                                              ; preds = %350
  %362 = call i32 @strncmp(ptr noundef %108, ptr noundef nonnull @.str.27, i64 noundef %113) #13
  %.not86 = icmp eq i32 %362, 0
  br i1 %.not86, label %363, label %372

363:                                              ; preds = %361
  %364 = invoke noalias noundef nonnull dereferenceable(168) ptr @_Znwm(i64 noundef 168) #14
          to label %365 unwind label %126

365:                                              ; preds = %363
  %366 = getelementptr inbounds i8, ptr %0, i64 24
  %367 = load i64, ptr %366, align 8, !tbaa !23
  %368 = load ptr, ptr %25, align 8, !tbaa !5
  %369 = load ptr, ptr %0, align 8, !tbaa !24
  invoke void @_ZN6Assimp3FBX18AnimationCurveNodeC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentEPKPKcm(ptr noundef nonnull align 8 dereferenceable(168) %364, i64 noundef %367, ptr noundef nonnull align 8 dereferenceable(40) %368, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(336) %369, ptr noundef null, i64 noundef 0)
          to label %.sink.split unwind label %370

370:                                              ; preds = %365
  %371 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9bad_alloc
          catch ptr @_ZTISt9exception
  call void @_ZdlPvm(ptr noundef nonnull %364, i64 noundef 168) #15
  br label %377

.sink.split:                                      ; preds = %365, %354, %343, %332, %321, %310, %299, %288, %277, %260, %248, %236, %224, %210, %198, %186, %174, %162, %148
  %.sink = phi ptr [ %147, %148 ], [ %161, %162 ], [ %173, %174 ], [ %185, %186 ], [ %197, %198 ], [ %209, %210 ], [ %223, %224 ], [ %235, %236 ], [ %247, %248 ], [ %259, %260 ], [ %276, %277 ], [ %287, %288 ], [ %298, %299 ], [ %309, %310 ], [ %320, %321 ], [ %331, %332 ], [ %342, %343 ], [ %353, %354 ], [ %364, %365 ]
  call void @_ZNSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE5resetEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull %.sink) #11
  br label %372

372:                                              ; preds = %.sink.split, %205, %272, %269, %361, %255, %143
  %373 = call noundef zeroext i1 @_ZNKSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #11
  %374 = load i32, ptr %105, align 8, !tbaa !22
  %375 = and i32 %374, -2
  store i32 %375, ptr %105, align 8, !tbaa !22
  %376 = call noundef ptr @_ZNKSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #11
  br label %420

377:                                              ; preds = %370, %359, %348, %337, %326, %315, %304, %293, %282, %265, %253, %241, %229, %215, %203, %191, %179, %167, %153, %141, %128, %126
  %.pn = phi { ptr, i32 } [ %371, %370 ], [ %127, %126 ], [ %360, %359 ], [ %349, %348 ], [ %338, %337 ], [ %327, %326 ], [ %316, %315 ], [ %305, %304 ], [ %294, %293 ], [ %283, %282 ], [ %266, %265 ], [ %254, %253 ], [ %242, %241 ], [ %230, %229 ], [ %216, %215 ], [ %204, %203 ], [ %192, %191 ], [ %180, %179 ], [ %168, %167 ], [ %154, %153 ], [ %142, %141 ], [ %129, %128 ]
  %.6 = extractvalue { ptr, i32 } %.pn, 0
  %.653 = extractvalue { ptr, i32 } %.pn, 1
  %378 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9bad_alloc) #11
  %379 = icmp eq i32 %.653, %378
  br i1 %379, label %380, label %385

380:                                              ; preds = %377
  %381 = call ptr @__cxa_begin_catch(ptr %.6) #11
  %382 = load i32, ptr %105, align 8, !tbaa !22
  %383 = and i32 %382, -4
  %384 = or disjoint i32 %383, 2
  store i32 %384, ptr %105, align 8, !tbaa !22
  invoke void @__cxa_rethrow() #12
          to label %431 unwind label %415

385:                                              ; preds = %377
  %386 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #11
  %387 = icmp eq i32 %.653, %386
  br i1 %387, label %388, label %421

388:                                              ; preds = %385
  %389 = call ptr @__cxa_begin_catch(ptr %.6) #11
  %390 = load i32, ptr %105, align 8, !tbaa !22
  %391 = and i32 %390, -4
  %392 = or disjoint i32 %391, 2
  store i32 %392, ptr %105, align 8, !tbaa !22
  br i1 %1, label %398, label %393

393:                                              ; preds = %388
  %394 = load ptr, ptr %0, align 8, !tbaa !24
  %395 = call noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336) %394)
  %396 = load i8, ptr %395, align 1, !tbaa !25, !range !28, !noundef !29
  %397 = trunc nuw i8 %396 to i1
  br i1 %397, label %398, label %401

398:                                              ; preds = %393, %388
  invoke void @__cxa_rethrow() #12
          to label %431 unwind label %399

399:                                              ; preds = %406, %404, %401, %398
  %400 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %414 unwind label %428

401:                                              ; preds = %393
  %402 = invoke noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv()
          to label %403 unwind label %399

403:                                              ; preds = %401
  br i1 %402, label %411, label %404

404:                                              ; preds = %403
  %405 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %406 unwind label %399

406:                                              ; preds = %404
  %407 = load ptr, ptr %389, align 8, !tbaa !30
  %408 = getelementptr inbounds i8, ptr %407, i64 16
  %409 = load ptr, ptr %408, align 8
  %410 = call noundef ptr %409(ptr noundef nonnull align 8 dereferenceable(8) %389) #11
  invoke void @_ZN6Assimp6Logger5errorEPKc(ptr noundef nonnull align 8 dereferenceable(12) %405, ptr noundef %410)
          to label %411 unwind label %399

411:                                              ; preds = %406, %403
  invoke void @__cxa_end_catch()
          to label %420 unwind label %412

412:                                              ; preds = %411
  %413 = landingpad { ptr, i32 }
          cleanup
  br label %414

414:                                              ; preds = %399, %412
  %.pn88 = phi { ptr, i32 } [ %400, %399 ], [ %413, %412 ]
  %.7 = extractvalue { ptr, i32 } %.pn88, 0
  %.754 = extractvalue { ptr, i32 } %.pn88, 1
  br label %421

415:                                              ; preds = %380
  %416 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %417 unwind label %428

417:                                              ; preds = %415
  %418 = extractvalue { ptr, i32 } %416, 1
  %419 = extractvalue { ptr, i32 } %416, 0
  br label %421

420:                                              ; preds = %411, %372
  %.0 = phi ptr [ %376, %372 ], [ null, %411 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #11
  br label %427

421:                                              ; preds = %417, %414, %385, %103
  %.855 = phi i32 [ %.552, %103 ], [ %418, %417 ], [ %.754, %414 ], [ %.653, %385 ]
  %.8 = phi ptr [ %.5, %103 ], [ %419, %417 ], [ %.7, %414 ], [ %.6, %385 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  br label %422

422:                                              ; preds = %421, %95
  %.956 = phi i32 [ %.855, %421 ], [ %98, %95 ]
  %.9 = phi ptr [ %.8, %421 ], [ %97, %95 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #11
  br label %423

423:                                              ; preds = %422, %84, %53
  %.1057 = phi i32 [ %.148, %53 ], [ %.451, %84 ], [ %.956, %422 ]
  %.10 = phi ptr [ %.146, %53 ], [ %.4, %84 ], [ %.9, %422 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #11
  br label %424

424:                                              ; preds = %423, %40
  %.1158 = phi i32 [ %.047, %40 ], [ %.1057, %423 ]
  %.11 = phi ptr [ %.045, %40 ], [ %.10, %423 ]
  %425 = insertvalue { ptr, i32 } poison, ptr %.11, 0
  %426 = insertvalue { ptr, i32 } %425, i32 %.1158, 1
  resume { ptr, i32 } %426

427:                                              ; preds = %2, %17, %420, %22
  %.1 = phi ptr [ %23, %22 ], [ %.0, %420 ], [ null, %17 ], [ null, %2 ]
  ret ptr %.1

428:                                              ; preds = %415, %399
  %429 = landingpad { ptr, i32 }
          catch ptr null
  %430 = extractvalue { ptr, i32 } %429, 0
  call void @__clang_call_terminate(ptr %430) #16
  unreachable

431:                                              ; preds = %398, %380
  unreachable
}

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

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

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

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

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

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

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

; Function Attrs: noreturn
declare void @_ZN6Assimp3FBX4Util8DOMErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKNS0_7ElementE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #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 #0 align 2

declare i32 @__gxx_personality_v0(...)

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

declare void @_ZN6Assimp3FBX18ParseTokenAsStringB5cxx11ERKNS0_5TokenERPKc(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(36), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

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

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

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

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

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

; 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 #5

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

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

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

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

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

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

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

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

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

declare void @_ZN6Assimp3FBX12MeshGeometryC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(1000), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(336)) unnamed_addr #4

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

declare void @_ZN6Assimp3FBX13ShapeGeometryC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(192), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(336)) unnamed_addr #4

declare void @_ZN6Assimp3FBX12LineGeometryC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(168), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(336)) unnamed_addr #4

declare void @_ZN6Assimp3FBX6CameraC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX14CameraSwitcherC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(144), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX5LightC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX4NullC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX8LimbNodeC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX7ClusterC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(256), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX4SkinC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(104), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX10BlendShapeC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(128), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX17BlendShapeChannelC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(160), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX5ModelC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(208), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX8MaterialC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(208), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX7TextureC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(248), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX14LayeredTextureC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(88), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX5VideoC1EmRKNS0_7ElementERKNS0_8DocumentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(184), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp3FBX14AnimationStackC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(96), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(336)) unnamed_addr #4

declare void @_ZN6Assimp3FBX14AnimationLayerC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(80), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(336)) unnamed_addr #4

declare void @_ZN6Assimp3FBX14AnimationCurveC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentE(ptr noundef nonnull align 8 dereferenceable(152), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(336)) unnamed_addr #4

declare void @_ZN6Assimp3FBX18AnimationCurveNodeC1EmRKNS0_7ElementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8DocumentEPKPKcm(ptr noundef nonnull align 8 dereferenceable(168), i64 noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(336), ptr noundef, i64 noundef) unnamed_addr #4

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

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

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

declare void @__cxa_rethrow() local_unnamed_addr

declare noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv() local_unnamed_addr #4

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() local_unnamed_addr #4

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

declare void @__cxa_end_catch() local_unnamed_addr

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 8}
!6 = !{!"_ZTSN6Assimp3FBX10LazyObjectE", !7, i64 0, !7, i64 8, !10, i64 16, !16, i64 24, !17, i64 32}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSSt10unique_ptrIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE", !11, i64 0}
!11 = !{!"_ZTSSt15__uniq_ptr_dataIKN6Assimp3FBX6ObjectESt14default_deleteIS3_ELb1ELb1EE", !12, i64 0}
!12 = !{!"_ZTSSt15__uniq_ptr_implIKN6Assimp3FBX6ObjectESt14default_deleteIS3_EE", !13, i64 0}
!13 = !{!"_ZTSSt5tupleIJPKN6Assimp3FBX6ObjectESt14default_deleteIS3_EEE", !14, i64 0}
!14 = !{!"_ZTSSt11_Tuple_implILm0EJPKN6Assimp3FBX6ObjectESt14default_deleteIS3_EEE", !15, i64 0}
!15 = !{!"_ZTSSt10_Head_baseILm0EPKN6Assimp3FBX6ObjectELb0EE", !7, i64 0}
!16 = !{!"long", !8, i64 0}
!17 = !{!"int", !8, i64 0}
!18 = !{!7, !7, i64 0}
!19 = !{!8, !8, i64 0}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!6, !17, i64 32}
!23 = !{!6, !16, i64 24}
!24 = !{!6, !7, i64 0}
!25 = !{!26, !27, i64 0}
!26 = !{!"_ZTSN6Assimp3FBX14ImportSettingsE", !27, i64 0, !27, i64 1, !27, i64 2, !27, i64 3, !27, i64 4, !27, i64 5, !27, i64 6, !27, i64 7, !27, i64 8, !27, i64 9, !27, i64 10, !27, i64 11, !27, i64 12, !27, i64 13, !27, i64 14}
!27 = !{!"bool", !8, i64 0}
!28 = !{i8 0, i8 2}
!29 = !{}
!30 = !{!31, !31, i64 0}
!31 = !{!"vtable pointer", !9, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass