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

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

%"class.std::vector.0" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::allocator.4" = type { i8 }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%struct.aiMesh = type { i32, i32, i32, ptr, ptr, ptr, ptr, [8 x ptr], [8 x ptr], [8 x i32], ptr, i32, ptr, i32, %struct.aiString, i32, ptr, i32, %struct.aiAABB, ptr }
%struct.aiString = type { i32, [1024 x i8] }
%struct.aiAABB = type { %class.aiVector3t, %class.aiVector3t }
%class.aiVector3t = type { float, float, float }
%struct.aiFace = type { i32, ptr }
%"class.Assimp::FindInvalidDataProcess" = type <{ %"class.Assimp::BaseProcess", float, i8, [3 x i8] }>
%"class.Assimp::BaseProcess" = type { ptr, ptr, ptr }

@.str.11 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [11 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #1

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() #2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN6Assimp22FindInvalidDataProcess11ProcessMeshEP6aiMesh(ptr noundef nonnull align 8 dereferenceable(29) %0, ptr noundef %1) #3 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i8, align 1
  %7 = alloca %"class.std::vector.0", align 8
  %8 = alloca i8, align 1
  %9 = alloca %"class.std::allocator.4", align 1
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca %"struct.std::_Bit_reference", align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca %"struct.std::_Bit_reference", align 8
  %22 = alloca %"struct.std::_Bit_reference", align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %23 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #6
  store i8 0, ptr %6, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 40, ptr %7) #6
  %24 = load ptr, ptr %5, align 8, !tbaa !5
  %25 = getelementptr inbounds %struct.aiMesh, ptr %24, i32 0, i32 1
  %26 = load i32, ptr %25, align 4, !tbaa !11
  %27 = zext i32 %26 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #6
  %28 = load ptr, ptr %5, align 8, !tbaa !5
  %29 = getelementptr inbounds %struct.aiMesh, ptr %28, i32 0, i32 2
  %30 = load i32, ptr %29, align 8, !tbaa !19
  %31 = icmp ne i32 %30, 0
  %32 = zext i1 %31 to i8
  store i8 %32, ptr %8, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #6
  call void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  invoke void @_ZNSt6vectorIbSaIbEEC2EmRKbRKS0_(ptr noundef nonnull align 8 dereferenceable(40) %7, i64 noundef %27, ptr noundef nonnull align 1 dereferenceable(1) %8, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %33 unwind label %41

33:                                               ; preds = %2
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  store i32 0, ptr %12, align 4, !tbaa !20
  br label %34

34:                                               ; preds = %83, %33
  %35 = load i32, ptr %12, align 4, !tbaa !20
  %36 = load ptr, ptr %5, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.aiMesh, ptr %36, i32 0, i32 2
  %38 = load i32, ptr %37, align 8, !tbaa !19
  %39 = icmp ult i32 %35, %38
  br i1 %39, label %45, label %40

40:                                               ; preds = %34
  store i32 2, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  br label %86

41:                                               ; preds = %2
  %42 = landingpad { ptr, i32 }
          cleanup
  %43 = extractvalue { ptr, i32 } %42, 0
  store ptr %43, ptr %10, align 8
  %44 = extractvalue { ptr, i32 } %42, 1
  store i32 %44, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #6
  br label %354

45:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  %46 = load ptr, ptr %5, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct.aiMesh, ptr %46, i32 0, i32 10
  %48 = load ptr, ptr %47, align 8, !tbaa !21
  %49 = load i32, ptr %12, align 4, !tbaa !20
  %50 = zext i32 %49 to i64
  %51 = getelementptr inbounds %struct.aiFace, ptr %48, i64 %50
  store ptr %51, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  store i32 0, ptr %15, align 4, !tbaa !20
  br label %52

52:                                               ; preds = %75, %45
  %53 = load i32, ptr %15, align 4, !tbaa !20
  %54 = load ptr, ptr %14, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.aiFace, ptr %54, i32 0, i32 0
  %56 = load i32, ptr %55, align 8, !tbaa !22
  %57 = icmp ult i32 %53, %56
  br i1 %57, label %59, label %58

58:                                               ; preds = %52
  store i32 5, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  br label %82

59:                                               ; preds = %52
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #6
  %60 = load ptr, ptr %14, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.aiFace, ptr %60, i32 0, i32 1
  %62 = load ptr, ptr %61, align 8, !tbaa !24
  %63 = load i32, ptr %15, align 4, !tbaa !20
  %64 = zext i32 %63 to i64
  %65 = getelementptr inbounds i32, ptr %62, i64 %64
  %66 = load i32, ptr %65, align 4, !tbaa !20
  %67 = zext i32 %66 to i64
  %68 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %7, i64 noundef %67)
          to label %69 unwind label %78

69:                                               ; preds = %59
  %70 = getelementptr inbounds { ptr, i64 }, ptr %16, i32 0, i32 0
  %71 = extractvalue { ptr, i64 } %68, 0
  store ptr %71, ptr %70, align 8
  %72 = getelementptr inbounds { ptr, i64 }, ptr %16, i32 0, i32 1
  %73 = extractvalue { ptr, i64 } %68, 1
  store i64 %73, ptr %72, align 8
  %74 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %16, i1 noundef zeroext false) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #6
  br label %75

75:                                               ; preds = %69
  %76 = load i32, ptr %15, align 4, !tbaa !20
  %77 = add i32 %76, 1
  store i32 %77, ptr %15, align 4, !tbaa !20
  br label %52, !llvm.loop !25

78:                                               ; preds = %59
  %79 = landingpad { ptr, i32 }
          cleanup
  %80 = extractvalue { ptr, i32 } %79, 0
  store ptr %80, ptr %10, align 8
  %81 = extractvalue { ptr, i32 } %79, 1
  store i32 %81, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  br label %353

82:                                               ; preds = %58
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  br label %83

83:                                               ; preds = %82
  %84 = load i32, ptr %12, align 4, !tbaa !20
  %85 = add i32 %84, 1
  store i32 %85, ptr %12, align 4, !tbaa !20
  br label %34, !llvm.loop !27

86:                                               ; preds = %40
  %87 = load ptr, ptr %5, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.aiMesh, ptr %87, i32 0, i32 3
  %89 = load ptr, ptr %88, align 8, !tbaa !28
  %90 = icmp ne ptr %89, null
  br i1 %90, label %91, label %107

91:                                               ; preds = %86
  %92 = load ptr, ptr %5, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.aiMesh, ptr %92, i32 0, i32 3
  %94 = load ptr, ptr %5, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.aiMesh, ptr %94, i32 0, i32 1
  %96 = load i32, ptr %95, align 4, !tbaa !11
  %97 = invoke noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8) %93, i32 noundef %96, ptr noundef @.str.11, ptr noundef nonnull align 8 dereferenceable(40) %7, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %98 unwind label %103

98:                                               ; preds = %91
  br i1 %97, label %99, label %107

99:                                               ; preds = %98
  %100 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %101 unwind label %103

101:                                              ; preds = %99
  invoke void @_ZN6Assimp6Logger5errorEPKc(ptr noundef nonnull align 8 dereferenceable(12) %100, ptr noundef @.str.12)
          to label %102 unwind label %103

102:                                              ; preds = %101
  store i32 2, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %351

103:                                              ; preds = %328, %306, %292, %101, %99, %91
  %104 = landingpad { ptr, i32 }
          cleanup
  %105 = extractvalue { ptr, i32 } %104, 0
  store ptr %105, ptr %10, align 8
  %106 = extractvalue { ptr, i32 } %104, 1
  store i32 %106, ptr %11, align 4
  br label %353

107:                                              ; preds = %98, %86
  %108 = getelementptr inbounds %"class.Assimp::FindInvalidDataProcess", ptr %23, i32 0, i32 2
  %109 = load i8, ptr %108, align 4, !tbaa !29, !range !32, !noundef !33
  %110 = trunc i8 %109 to i1
  br i1 %110, label %182, label %111

111:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  store i32 0, ptr %17, align 4, !tbaa !20
  br label %112

112:                                              ; preds = %178, %111
  %113 = load i32, ptr %17, align 4, !tbaa !20
  %114 = icmp ult i32 %113, 8
  br i1 %114, label %115, label %123

115:                                              ; preds = %112
  %116 = load ptr, ptr %5, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.aiMesh, ptr %116, i32 0, i32 8
  %118 = load i32, ptr %17, align 4, !tbaa !20
  %119 = zext i32 %118 to i64
  %120 = getelementptr inbounds [8 x ptr], ptr %117, i64 0, i64 %119
  %121 = load ptr, ptr %120, align 8, !tbaa !5
  %122 = icmp ne ptr %121, null
  br label %123

123:                                              ; preds = %115, %112
  %124 = phi i1 [ false, %112 ], [ %122, %115 ]
  br i1 %124, label %126, label %125

125:                                              ; preds = %123
  store i32 8, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  br label %181

126:                                              ; preds = %123
  %127 = load ptr, ptr %5, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.aiMesh, ptr %127, i32 0, i32 8
  %129 = load i32, ptr %17, align 4, !tbaa !20
  %130 = zext i32 %129 to i64
  %131 = getelementptr inbounds [8 x ptr], ptr %128, i64 0, i64 %130
  %132 = load ptr, ptr %5, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.aiMesh, ptr %132, i32 0, i32 1
  %134 = load i32, ptr %133, align 4, !tbaa !11
  %135 = invoke noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8) %131, i32 noundef %134, ptr noundef @.str.13, ptr noundef nonnull align 8 dereferenceable(40) %7, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %136 unwind label %149

136:                                              ; preds = %126
  br i1 %135, label %137, label %177

137:                                              ; preds = %136
  %138 = load ptr, ptr %5, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.aiMesh, ptr %138, i32 0, i32 9
  %140 = load i32, ptr %17, align 4, !tbaa !20
  %141 = zext i32 %140 to i64
  %142 = getelementptr inbounds [8 x i32], ptr %139, i64 0, i64 %141
  store i32 0, ptr %142, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  %143 = load i32, ptr %17, align 4, !tbaa !20
  %144 = add i32 %143, 1
  store i32 %144, ptr %18, align 4, !tbaa !20
  br label %145

145:                                              ; preds = %173, %137
  %146 = load i32, ptr %18, align 4, !tbaa !20
  %147 = icmp ult i32 %146, 8
  br i1 %147, label %153, label %148

148:                                              ; preds = %145
  store i32 11, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  br label %176

149:                                              ; preds = %126
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %10, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  br label %353

153:                                              ; preds = %145
  %154 = load ptr, ptr %5, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.aiMesh, ptr %154, i32 0, i32 8
  %156 = load i32, ptr %18, align 4, !tbaa !20
  %157 = zext i32 %156 to i64
  %158 = getelementptr inbounds [8 x ptr], ptr %155, i64 0, i64 %157
  %159 = load ptr, ptr %158, align 8, !tbaa !5
  %160 = icmp eq ptr %159, null
  br i1 %160, label %162, label %161

161:                                              ; preds = %153
  call void @_ZdaPv(ptr noundef %159) #7
  br label %162

162:                                              ; preds = %161, %153
  %163 = load ptr, ptr %5, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.aiMesh, ptr %163, i32 0, i32 8
  %165 = load i32, ptr %18, align 4, !tbaa !20
  %166 = zext i32 %165 to i64
  %167 = getelementptr inbounds [8 x ptr], ptr %164, i64 0, i64 %166
  store ptr null, ptr %167, align 8, !tbaa !5
  %168 = load ptr, ptr %5, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.aiMesh, ptr %168, i32 0, i32 9
  %170 = load i32, ptr %18, align 4, !tbaa !20
  %171 = zext i32 %170 to i64
  %172 = getelementptr inbounds [8 x i32], ptr %169, i64 0, i64 %171
  store i32 0, ptr %172, align 4, !tbaa !20
  br label %173

173:                                              ; preds = %162
  %174 = load i32, ptr %18, align 4, !tbaa !20
  %175 = add i32 %174, 1
  store i32 %175, ptr %18, align 4, !tbaa !20
  br label %145, !llvm.loop !34

176:                                              ; preds = %148
  store i8 1, ptr %6, align 1, !tbaa !9
  br label %177

177:                                              ; preds = %176, %136
  br label %178

178:                                              ; preds = %177
  %179 = load i32, ptr %17, align 4, !tbaa !20
  %180 = add i32 %179, 1
  store i32 %180, ptr %17, align 4, !tbaa !20
  br label %112, !llvm.loop !35

181:                                              ; preds = %125
  br label %182

182:                                              ; preds = %181, %107
  %183 = load ptr, ptr %5, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.aiMesh, ptr %183, i32 0, i32 4
  %185 = load ptr, ptr %184, align 8, !tbaa !36
  %186 = icmp ne ptr %185, null
  br i1 %186, label %192, label %187

187:                                              ; preds = %182
  %188 = load ptr, ptr %5, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.aiMesh, ptr %188, i32 0, i32 5
  %190 = load ptr, ptr %189, align 8, !tbaa !37
  %191 = icmp ne ptr %190, null
  br i1 %191, label %192, label %346

192:                                              ; preds = %187, %182
  %193 = load ptr, ptr %5, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.aiMesh, ptr %193, i32 0, i32 0
  %195 = load i32, ptr %194, align 8, !tbaa !38
  %196 = and i32 1, %195
  %197 = icmp ne i32 %196, 0
  br i1 %197, label %204, label %198

198:                                              ; preds = %192
  %199 = load ptr, ptr %5, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.aiMesh, ptr %199, i32 0, i32 0
  %201 = load i32, ptr %200, align 8, !tbaa !38
  %202 = and i32 2, %201
  %203 = icmp ne i32 %202, 0
  br i1 %203, label %204, label %287

204:                                              ; preds = %198, %192
  %205 = load ptr, ptr %5, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.aiMesh, ptr %205, i32 0, i32 0
  %207 = load i32, ptr %206, align 8, !tbaa !38
  %208 = and i32 4, %207
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %216, label %210

210:                                              ; preds = %204
  %211 = load ptr, ptr %5, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.aiMesh, ptr %211, i32 0, i32 0
  %213 = load i32, ptr %212, align 8, !tbaa !38
  %214 = and i32 8, %213
  %215 = icmp ne i32 %214, 0
  br i1 %215, label %216, label %282

216:                                              ; preds = %210, %204
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  store i32 0, ptr %19, align 4, !tbaa !20
  br label %217

217:                                              ; preds = %277, %216
  %218 = load i32, ptr %19, align 4, !tbaa !20
  %219 = load ptr, ptr %5, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.aiMesh, ptr %219, i32 0, i32 2
  %221 = load i32, ptr %220, align 8, !tbaa !19
  %222 = icmp ult i32 %218, %221
  br i1 %222, label %224, label %223

223:                                              ; preds = %217
  store i32 14, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  br label %281

224:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  %225 = load ptr, ptr %5, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.aiMesh, ptr %225, i32 0, i32 10
  %227 = load ptr, ptr %226, align 8, !tbaa !21
  %228 = load i32, ptr %19, align 4, !tbaa !20
  %229 = zext i32 %228 to i64
  %230 = getelementptr inbounds %struct.aiFace, ptr %227, i64 %229
  store ptr %230, ptr %20, align 8, !tbaa !5
  %231 = load ptr, ptr %20, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.aiFace, ptr %231, i32 0, i32 0
  %233 = load i32, ptr %232, align 8, !tbaa !22
  %234 = icmp ult i32 %233, 3
  br i1 %234, label %235, label %276

235:                                              ; preds = %224
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #6
  %236 = load ptr, ptr %20, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.aiFace, ptr %236, i32 0, i32 1
  %238 = load ptr, ptr %237, align 8, !tbaa !24
  %239 = getelementptr inbounds i32, ptr %238, i64 0
  %240 = load i32, ptr %239, align 4, !tbaa !20
  %241 = zext i32 %240 to i64
  %242 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %7, i64 noundef %241)
          to label %243 unwind label %267

243:                                              ; preds = %235
  %244 = getelementptr inbounds { ptr, i64 }, ptr %21, i32 0, i32 0
  %245 = extractvalue { ptr, i64 } %242, 0
  store ptr %245, ptr %244, align 8
  %246 = getelementptr inbounds { ptr, i64 }, ptr %21, i32 0, i32 1
  %247 = extractvalue { ptr, i64 } %242, 1
  store i64 %247, ptr %246, align 8
  %248 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %21, i1 noundef zeroext true) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #6
  %249 = load ptr, ptr %20, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.aiFace, ptr %249, i32 0, i32 0
  %251 = load i32, ptr %250, align 8, !tbaa !22
  %252 = icmp eq i32 %251, 2
  br i1 %252, label %253, label %275

253:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #6
  %254 = load ptr, ptr %20, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.aiFace, ptr %254, i32 0, i32 1
  %256 = load ptr, ptr %255, align 8, !tbaa !24
  %257 = getelementptr inbounds i32, ptr %256, i64 1
  %258 = load i32, ptr %257, align 4, !tbaa !20
  %259 = zext i32 %258 to i64
  %260 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %7, i64 noundef %259)
          to label %261 unwind label %271

261:                                              ; preds = %253
  %262 = getelementptr inbounds { ptr, i64 }, ptr %22, i32 0, i32 0
  %263 = extractvalue { ptr, i64 } %260, 0
  store ptr %263, ptr %262, align 8
  %264 = getelementptr inbounds { ptr, i64 }, ptr %22, i32 0, i32 1
  %265 = extractvalue { ptr, i64 } %260, 1
  store i64 %265, ptr %264, align 8
  %266 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %22, i1 noundef zeroext true) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #6
  br label %275

267:                                              ; preds = %235
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %10, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #6
  br label %280

271:                                              ; preds = %253
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %10, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #6
  br label %280

275:                                              ; preds = %261, %243
  br label %276

276:                                              ; preds = %275, %224
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  br label %277

277:                                              ; preds = %276
  %278 = load i32, ptr %19, align 4, !tbaa !20
  %279 = add i32 %278, 1
  store i32 %279, ptr %19, align 4, !tbaa !20
  br label %217, !llvm.loop !39

280:                                              ; preds = %271, %267
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  br label %353

281:                                              ; preds = %223
  br label %286

282:                                              ; preds = %210
  %283 = load i8, ptr %6, align 1, !tbaa !9, !range !32, !noundef !33
  %284 = trunc i8 %283 to i1
  %285 = zext i1 %284 to i32
  store i32 %285, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %351

286:                                              ; preds = %281
  br label %287

287:                                              ; preds = %286, %198
  %288 = load ptr, ptr %5, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.aiMesh, ptr %288, i32 0, i32 4
  %290 = load ptr, ptr %289, align 8, !tbaa !36
  %291 = icmp ne ptr %290, null
  br i1 %291, label %292, label %301

292:                                              ; preds = %287
  %293 = load ptr, ptr %5, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.aiMesh, ptr %293, i32 0, i32 4
  %295 = load ptr, ptr %5, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.aiMesh, ptr %295, i32 0, i32 1
  %297 = load i32, ptr %296, align 4, !tbaa !11
  %298 = invoke noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8) %294, i32 noundef %297, ptr noundef @.str.14, ptr noundef nonnull align 8 dereferenceable(40) %7, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %299 unwind label %103

299:                                              ; preds = %292
  br i1 %298, label %300, label %301

300:                                              ; preds = %299
  store i8 1, ptr %6, align 1, !tbaa !9
  br label %301

301:                                              ; preds = %300, %299, %287
  %302 = load ptr, ptr %5, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.aiMesh, ptr %302, i32 0, i32 5
  %304 = load ptr, ptr %303, align 8, !tbaa !37
  %305 = icmp ne ptr %304, null
  br i1 %305, label %306, label %323

306:                                              ; preds = %301
  %307 = load ptr, ptr %5, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.aiMesh, ptr %307, i32 0, i32 5
  %309 = load ptr, ptr %5, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.aiMesh, ptr %309, i32 0, i32 1
  %311 = load i32, ptr %310, align 4, !tbaa !11
  %312 = invoke noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8) %308, i32 noundef %311, ptr noundef @.str.15, ptr noundef nonnull align 8 dereferenceable(40) %7, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %313 unwind label %103

313:                                              ; preds = %306
  br i1 %312, label %314, label %323

314:                                              ; preds = %313
  %315 = load ptr, ptr %5, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.aiMesh, ptr %315, i32 0, i32 6
  %317 = load ptr, ptr %316, align 8, !tbaa !40
  %318 = icmp eq ptr %317, null
  br i1 %318, label %320, label %319

319:                                              ; preds = %314
  call void @_ZdaPv(ptr noundef %317) #7
  br label %320

320:                                              ; preds = %319, %314
  %321 = load ptr, ptr %5, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.aiMesh, ptr %321, i32 0, i32 6
  store ptr null, ptr %322, align 8, !tbaa !40
  store i8 1, ptr %6, align 1, !tbaa !9
  br label %323

323:                                              ; preds = %320, %313, %301
  %324 = load ptr, ptr %5, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.aiMesh, ptr %324, i32 0, i32 6
  %326 = load ptr, ptr %325, align 8, !tbaa !40
  %327 = icmp ne ptr %326, null
  br i1 %327, label %328, label %345

328:                                              ; preds = %323
  %329 = load ptr, ptr %5, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.aiMesh, ptr %329, i32 0, i32 6
  %331 = load ptr, ptr %5, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.aiMesh, ptr %331, i32 0, i32 1
  %333 = load i32, ptr %332, align 4, !tbaa !11
  %334 = invoke noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8) %330, i32 noundef %333, ptr noundef @.str.16, ptr noundef nonnull align 8 dereferenceable(40) %7, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %335 unwind label %103

335:                                              ; preds = %328
  br i1 %334, label %336, label %345

336:                                              ; preds = %335
  %337 = load ptr, ptr %5, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.aiMesh, ptr %337, i32 0, i32 5
  %339 = load ptr, ptr %338, align 8, !tbaa !37
  %340 = icmp eq ptr %339, null
  br i1 %340, label %342, label %341

341:                                              ; preds = %336
  call void @_ZdaPv(ptr noundef %339) #7
  br label %342

342:                                              ; preds = %341, %336
  %343 = load ptr, ptr %5, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.aiMesh, ptr %343, i32 0, i32 5
  store ptr null, ptr %344, align 8, !tbaa !37
  store i8 1, ptr %6, align 1, !tbaa !9
  br label %345

345:                                              ; preds = %342, %335, %323
  br label %346

346:                                              ; preds = %345, %187
  %347 = load i8, ptr %6, align 1, !tbaa !9, !range !32, !noundef !33
  %348 = trunc i8 %347 to i1
  %349 = zext i1 %348 to i64
  %350 = select i1 %348, i32 1, i32 0
  store i32 %350, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %351

351:                                              ; preds = %346, %282, %102
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #6
  %352 = load i32, ptr %3, align 4
  ret i32 %352

353:                                              ; preds = %280, %149, %103, %78
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #6
  br label %354

354:                                              ; preds = %353, %41
  call void @llvm.lifetime.end.p0(i64 40, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #6
  br label %355

355:                                              ; preds = %354
  %356 = load ptr, ptr %10, align 8
  %357 = load i32, ptr %11, align 4
  %358 = insertvalue { ptr, i32 } poison, ptr %356, 0
  %359 = insertvalue { ptr, i32 } %358, i32 %357, 1
  resume { ptr, i32 } %359
}

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(40), i1 noundef zeroext, i1 noundef zeroext) #5

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress 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 #4 = { 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 #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 }
attributes #7 = { builtin nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !13, i64 4}
!12 = !{!"_ZTS6aiMesh", !13, i64 0, !13, i64 4, !13, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !7, i64 48, !7, i64 112, !7, i64 176, !6, i64 208, !13, i64 216, !6, i64 224, !13, i64 232, !14, i64 236, !13, i64 1264, !6, i64 1272, !15, i64 1280, !16, i64 1284, !6, i64 1312}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS8aiString", !13, i64 0, !7, i64 4}
!15 = !{!"_ZTS16aiMorphingMethod", !7, i64 0}
!16 = !{!"_ZTS6aiAABB", !17, i64 0, !17, i64 12}
!17 = !{!"_ZTS10aiVector3tIfE", !18, i64 0, !18, i64 4, !18, i64 8}
!18 = !{!"float", !7, i64 0}
!19 = !{!12, !13, i64 8}
!20 = !{!13, !13, i64 0}
!21 = !{!12, !6, i64 208}
!22 = !{!23, !13, i64 0}
!23 = !{!"_ZTS6aiFace", !13, i64 0, !6, i64 8}
!24 = !{!23, !6, i64 8}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = distinct !{!27, !26}
!28 = !{!12, !6, i64 16}
!29 = !{!30, !10, i64 28}
!30 = !{!"_ZTSN6Assimp22FindInvalidDataProcessE", !31, i64 0, !18, i64 24, !10, i64 28}
!31 = !{!"_ZTSN6Assimp11BaseProcessE", !6, i64 8, !6, i64 16}
!32 = !{i8 0, i8 2}
!33 = !{}
!34 = distinct !{!34, !26}
!35 = distinct !{!35, !26}
!36 = !{!12, !6, i64 24}
!37 = !{!12, !6, i64 32}
!38 = !{!12, !13, i64 0}
!39 = distinct !{!39, !26}
!40 = !{!12, !6, i64 40}


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

%"class.std::vector.0" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::allocator.4" = type { i8 }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%struct.aiFace = type { i32, ptr }

@.str.11 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [11 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) local_unnamed_addr #1

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local noundef range(i32 0, 3) i32 @_ZN6Assimp22FindInvalidDataProcess11ProcessMeshEP6aiMesh(ptr nocapture noundef nonnull readonly align 8 dereferenceable(29) %0, ptr noundef %1) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::vector.0", align 8
  %4 = alloca i8, align 1
  %5 = alloca %"class.std::allocator.4", align 1
  %6 = alloca %"struct.std::_Bit_reference", align 8
  %7 = alloca %"struct.std::_Bit_reference", align 8
  %8 = alloca %"struct.std::_Bit_reference", align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %3) #6
  %9 = getelementptr inbounds i8, ptr %1, i64 4
  %10 = load i32, ptr %9, align 4, !tbaa !5
  %11 = zext i32 %10 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #6
  %12 = getelementptr inbounds i8, ptr %1, i64 8
  %13 = load i32, ptr %12, align 8, !tbaa !16
  %14 = icmp ne i32 %13, 0
  %15 = zext i1 %14 to i8
  store i8 %15, ptr %4, align 1, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #6
  call void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  invoke void @_ZNSt6vectorIbSaIbEEC2EmRKbRKS0_(ptr noundef nonnull align 8 dereferenceable(40) %3, i64 noundef %11, ptr noundef nonnull align 1 dereferenceable(1) %4, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %16 unwind label %22

16:                                               ; preds = %2
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #6
  %17 = load i32, ptr %12, align 8, !tbaa !16
  %.not112 = icmp eq i32 %17, 0
  br i1 %.not112, label %._crit_edge103, label %.lr.ph102

.lr.ph102:                                        ; preds = %16
  %18 = getelementptr inbounds i8, ptr %1, i64 208
  %19 = getelementptr inbounds i8, ptr %6, i64 8
  br label %24

._crit_edge103:                                   ; preds = %._crit_edge, %16
  %20 = getelementptr inbounds i8, ptr %1, i64 16
  %21 = load ptr, ptr %20, align 8, !tbaa !19
  %.not = icmp eq ptr %21, null
  br i1 %.not, label %57, label %48

22:                                               ; preds = %2
  %23 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #6
  br label %343

24:                                               ; preds = %.lr.ph102, %._crit_edge
  %25 = phi i32 [ %17, %.lr.ph102 ], [ %30, %._crit_edge ]
  %indvars.iv116 = phi i64 [ 0, %.lr.ph102 ], [ %indvars.iv.next117, %._crit_edge ]
  %26 = load ptr, ptr %18, align 8, !tbaa !20
  %27 = getelementptr inbounds %struct.aiFace, ptr %26, i64 %indvars.iv116
  %28 = load i32, ptr %27, align 8, !tbaa !21
  %.not113 = icmp eq i32 %28, 0
  br i1 %.not113, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %24
  %29 = getelementptr inbounds i8, ptr %27, i64 8
  br label %33

._crit_edge.loopexit:                             ; preds = %39
  %.pre = load i32, ptr %12, align 8, !tbaa !16
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %24
  %30 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %25, %24 ]
  %indvars.iv.next117 = add nuw nsw i64 %indvars.iv116, 1
  %31 = zext i32 %30 to i64
  %32 = icmp ult i64 %indvars.iv.next117, %31
  br i1 %32, label %24, label %._crit_edge103, !llvm.loop !23

33:                                               ; preds = %.lr.ph, %39
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %39 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #6
  %34 = load ptr, ptr %29, align 8, !tbaa !25
  %35 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv
  %36 = load i32, ptr %35, align 4, !tbaa !26
  %37 = zext i32 %36 to i64
  %38 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %3, i64 noundef %37)
          to label %39 unwind label %46

39:                                               ; preds = %33
  %40 = extractvalue { ptr, i64 } %38, 0
  store ptr %40, ptr %6, align 8
  %41 = extractvalue { ptr, i64 } %38, 1
  store i64 %41, ptr %19, align 8
  %42 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %6, i1 noundef zeroext false) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %43 = load i32, ptr %27, align 8, !tbaa !21
  %44 = zext i32 %43 to i64
  %45 = icmp ult i64 %indvars.iv.next, %44
  br i1 %45, label %33, label %._crit_edge.loopexit, !llvm.loop !27

46:                                               ; preds = %33
  %47 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  br label %342

48:                                               ; preds = %._crit_edge103
  %49 = load i32, ptr %9, align 4, !tbaa !5
  %50 = invoke noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8) %20, i32 noundef %49, ptr noundef nonnull @.str.11, ptr noundef nonnull align 8 dereferenceable(40) %3, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %51 unwind label %55

51:                                               ; preds = %48
  br i1 %50, label %52, label %57

52:                                               ; preds = %51
  %53 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %54 unwind label %55

54:                                               ; preds = %52
  invoke void @_ZN6Assimp6Logger5errorEPKc(ptr noundef nonnull align 8 dereferenceable(12) %53, ptr noundef nonnull @.str.12)
          to label %341 unwind label %55

55:                                               ; preds = %330, %317, %310, %54, %52, %48
  %56 = landingpad { ptr, i32 }
          cleanup
  br label %342

57:                                               ; preds = %51, %._crit_edge103
  %58 = getelementptr inbounds i8, ptr %0, i64 28
  %59 = load i8, ptr %58, align 4, !tbaa !28, !range !31, !noundef !32
  %60 = trunc nuw i8 %59 to i1
  br i1 %60, label %.critedge, label %.preheader97

.preheader97:                                     ; preds = %57
  %61 = getelementptr inbounds i8, ptr %1, i64 112
  %62 = getelementptr inbounds i8, ptr %1, i64 176
  %63 = load ptr, ptr %61, align 8, !tbaa !33
  %.not81 = icmp eq ptr %63, null
  br i1 %.not81, label %.critedge, label %64

64:                                               ; preds = %.preheader97
  %65 = load i32, ptr %9, align 4, !tbaa !5
  %66 = invoke noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8) %61, i32 noundef %65, ptr noundef nonnull @.str.13, ptr noundef nonnull align 8 dereferenceable(40) %3, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %67 unwind label %71

67:                                               ; preds = %64
  br i1 %66, label %.lr.ph107.preheader, label %.loopexit96

.lr.ph107.preheader:                              ; preds = %67
  store i32 0, ptr %62, align 4, !tbaa !26
  %68 = getelementptr inbounds i8, ptr %1, i64 120
  %69 = load ptr, ptr %68, align 8, !tbaa !33
  %70 = icmp eq ptr %69, null
  br i1 %70, label %.lr.ph107.1125, label %73

71:                                               ; preds = %254, %242, %225, %203, %176, %144, %107, %64
  %72 = landingpad { ptr, i32 }
          cleanup
  br label %342

73:                                               ; preds = %.lr.ph107.preheader
  call void @_ZdaPv(ptr noundef nonnull %69) #7
  br label %.lr.ph107.1125

.lr.ph107.1125:                                   ; preds = %73, %.lr.ph107.preheader
  store ptr null, ptr %68, align 8, !tbaa !33
  %74 = getelementptr inbounds i8, ptr %1, i64 180
  store i32 0, ptr %74, align 4, !tbaa !26
  %75 = getelementptr inbounds i8, ptr %1, i64 128
  %76 = load ptr, ptr %75, align 8, !tbaa !33
  %77 = icmp eq ptr %76, null
  br i1 %77, label %.lr.ph107.2126, label %78

78:                                               ; preds = %.lr.ph107.1125
  call void @_ZdaPv(ptr noundef nonnull %76) #7
  br label %.lr.ph107.2126

.lr.ph107.2126:                                   ; preds = %78, %.lr.ph107.1125
  store ptr null, ptr %75, align 8, !tbaa !33
  %79 = getelementptr inbounds i8, ptr %1, i64 184
  store i32 0, ptr %79, align 4, !tbaa !26
  %80 = getelementptr inbounds i8, ptr %1, i64 136
  %81 = load ptr, ptr %80, align 8, !tbaa !33
  %82 = icmp eq ptr %81, null
  br i1 %82, label %.lr.ph107.3127, label %83

83:                                               ; preds = %.lr.ph107.2126
  call void @_ZdaPv(ptr noundef nonnull %81) #7
  br label %.lr.ph107.3127

.lr.ph107.3127:                                   ; preds = %83, %.lr.ph107.2126
  store ptr null, ptr %80, align 8, !tbaa !33
  %84 = getelementptr inbounds i8, ptr %1, i64 188
  store i32 0, ptr %84, align 4, !tbaa !26
  %85 = getelementptr inbounds i8, ptr %1, i64 144
  %86 = load ptr, ptr %85, align 8, !tbaa !33
  %87 = icmp eq ptr %86, null
  br i1 %87, label %.lr.ph107.4128, label %88

88:                                               ; preds = %.lr.ph107.3127
  call void @_ZdaPv(ptr noundef nonnull %86) #7
  br label %.lr.ph107.4128

.lr.ph107.4128:                                   ; preds = %88, %.lr.ph107.3127
  store ptr null, ptr %85, align 8, !tbaa !33
  %89 = getelementptr inbounds i8, ptr %1, i64 192
  store i32 0, ptr %89, align 4, !tbaa !26
  %90 = getelementptr inbounds i8, ptr %1, i64 152
  %91 = load ptr, ptr %90, align 8, !tbaa !33
  %92 = icmp eq ptr %91, null
  br i1 %92, label %.lr.ph107.5129, label %93

93:                                               ; preds = %.lr.ph107.4128
  call void @_ZdaPv(ptr noundef nonnull %91) #7
  br label %.lr.ph107.5129

.lr.ph107.5129:                                   ; preds = %93, %.lr.ph107.4128
  store ptr null, ptr %90, align 8, !tbaa !33
  %94 = getelementptr inbounds i8, ptr %1, i64 196
  store i32 0, ptr %94, align 4, !tbaa !26
  %95 = getelementptr inbounds i8, ptr %1, i64 160
  %96 = load ptr, ptr %95, align 8, !tbaa !33
  %97 = icmp eq ptr %96, null
  br i1 %97, label %.lr.ph107.6130, label %98

98:                                               ; preds = %.lr.ph107.5129
  call void @_ZdaPv(ptr noundef nonnull %96) #7
  br label %.lr.ph107.6130

.lr.ph107.6130:                                   ; preds = %98, %.lr.ph107.5129
  store ptr null, ptr %95, align 8, !tbaa !33
  %99 = getelementptr inbounds i8, ptr %1, i64 200
  store i32 0, ptr %99, align 4, !tbaa !26
  %100 = getelementptr inbounds i8, ptr %1, i64 168
  %101 = load ptr, ptr %100, align 8, !tbaa !33
  %102 = icmp eq ptr %101, null
  br i1 %102, label %.loopexit96.loopexit, label %103

103:                                              ; preds = %.lr.ph107.6130
  call void @_ZdaPv(ptr noundef nonnull %101) #7
  br label %.loopexit96.loopexit

.loopexit96.loopexit:                             ; preds = %103, %.lr.ph107.6130
  store ptr null, ptr %100, align 8, !tbaa !33
  %104 = getelementptr inbounds i8, ptr %1, i64 204
  store i32 0, ptr %104, align 4, !tbaa !26
  br label %.loopexit96

.loopexit96:                                      ; preds = %.loopexit96.loopexit, %67
  %.1 = phi i8 [ 0, %67 ], [ 1, %.loopexit96.loopexit ]
  %105 = getelementptr inbounds i8, ptr %1, i64 120
  %106 = load ptr, ptr %105, align 8, !tbaa !33
  %.not81.1 = icmp eq ptr %106, null
  br i1 %.not81.1, label %.critedge, label %107

107:                                              ; preds = %.loopexit96
  %108 = load i32, ptr %9, align 4, !tbaa !5
  %109 = invoke noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8) %105, i32 noundef %108, ptr noundef nonnull @.str.13, ptr noundef nonnull align 8 dereferenceable(40) %3, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %110 unwind label %71

110:                                              ; preds = %107
  br i1 %109, label %.lr.ph107.preheader.1, label %.loopexit96.1

.lr.ph107.preheader.1:                            ; preds = %110
  %111 = getelementptr inbounds i8, ptr %1, i64 180
  store i32 0, ptr %111, align 4, !tbaa !26
  %112 = getelementptr inbounds i8, ptr %1, i64 128
  %113 = load ptr, ptr %112, align 8, !tbaa !33
  %114 = icmp eq ptr %113, null
  br i1 %114, label %.lr.ph107.1.1, label %115

115:                                              ; preds = %.lr.ph107.preheader.1
  call void @_ZdaPv(ptr noundef nonnull %113) #7
  br label %.lr.ph107.1.1

.lr.ph107.1.1:                                    ; preds = %115, %.lr.ph107.preheader.1
  store ptr null, ptr %112, align 8, !tbaa !33
  %116 = getelementptr inbounds i8, ptr %1, i64 184
  store i32 0, ptr %116, align 4, !tbaa !26
  %117 = getelementptr inbounds i8, ptr %1, i64 136
  %118 = load ptr, ptr %117, align 8, !tbaa !33
  %119 = icmp eq ptr %118, null
  br i1 %119, label %.lr.ph107.1.2, label %120

120:                                              ; preds = %.lr.ph107.1.1
  call void @_ZdaPv(ptr noundef nonnull %118) #7
  br label %.lr.ph107.1.2

.lr.ph107.1.2:                                    ; preds = %120, %.lr.ph107.1.1
  store ptr null, ptr %117, align 8, !tbaa !33
  %121 = getelementptr inbounds i8, ptr %1, i64 188
  store i32 0, ptr %121, align 4, !tbaa !26
  %122 = getelementptr inbounds i8, ptr %1, i64 144
  %123 = load ptr, ptr %122, align 8, !tbaa !33
  %124 = icmp eq ptr %123, null
  br i1 %124, label %.lr.ph107.1.3, label %125

125:                                              ; preds = %.lr.ph107.1.2
  call void @_ZdaPv(ptr noundef nonnull %123) #7
  br label %.lr.ph107.1.3

.lr.ph107.1.3:                                    ; preds = %125, %.lr.ph107.1.2
  store ptr null, ptr %122, align 8, !tbaa !33
  %126 = getelementptr inbounds i8, ptr %1, i64 192
  store i32 0, ptr %126, align 4, !tbaa !26
  %127 = getelementptr inbounds i8, ptr %1, i64 152
  %128 = load ptr, ptr %127, align 8, !tbaa !33
  %129 = icmp eq ptr %128, null
  br i1 %129, label %.lr.ph107.1.4, label %130

130:                                              ; preds = %.lr.ph107.1.3
  call void @_ZdaPv(ptr noundef nonnull %128) #7
  br label %.lr.ph107.1.4

.lr.ph107.1.4:                                    ; preds = %130, %.lr.ph107.1.3
  store ptr null, ptr %127, align 8, !tbaa !33
  %131 = getelementptr inbounds i8, ptr %1, i64 196
  store i32 0, ptr %131, align 4, !tbaa !26
  %132 = getelementptr inbounds i8, ptr %1, i64 160
  %133 = load ptr, ptr %132, align 8, !tbaa !33
  %134 = icmp eq ptr %133, null
  br i1 %134, label %.lr.ph107.1.5, label %135

135:                                              ; preds = %.lr.ph107.1.4
  call void @_ZdaPv(ptr noundef nonnull %133) #7
  br label %.lr.ph107.1.5

.lr.ph107.1.5:                                    ; preds = %135, %.lr.ph107.1.4
  store ptr null, ptr %132, align 8, !tbaa !33
  %136 = getelementptr inbounds i8, ptr %1, i64 200
  store i32 0, ptr %136, align 4, !tbaa !26
  %137 = getelementptr inbounds i8, ptr %1, i64 168
  %138 = load ptr, ptr %137, align 8, !tbaa !33
  %139 = icmp eq ptr %138, null
  br i1 %139, label %.loopexit96.loopexit.1, label %140

140:                                              ; preds = %.lr.ph107.1.5
  call void @_ZdaPv(ptr noundef nonnull %138) #7
  br label %.loopexit96.loopexit.1

.loopexit96.loopexit.1:                           ; preds = %140, %.lr.ph107.1.5
  store ptr null, ptr %137, align 8, !tbaa !33
  %141 = getelementptr inbounds i8, ptr %1, i64 204
  store i32 0, ptr %141, align 4, !tbaa !26
  br label %.loopexit96.1

.loopexit96.1:                                    ; preds = %.loopexit96.loopexit.1, %110
  %.1.1 = phi i8 [ %.1, %110 ], [ 1, %.loopexit96.loopexit.1 ]
  %142 = getelementptr inbounds i8, ptr %1, i64 128
  %143 = load ptr, ptr %142, align 8, !tbaa !33
  %.not81.2 = icmp eq ptr %143, null
  br i1 %.not81.2, label %.critedge, label %144

144:                                              ; preds = %.loopexit96.1
  %145 = load i32, ptr %9, align 4, !tbaa !5
  %146 = invoke noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8) %142, i32 noundef %145, ptr noundef nonnull @.str.13, ptr noundef nonnull align 8 dereferenceable(40) %3, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %147 unwind label %71

147:                                              ; preds = %144
  br i1 %146, label %.lr.ph107.preheader.2, label %.loopexit96.2

.lr.ph107.preheader.2:                            ; preds = %147
  %148 = getelementptr inbounds i8, ptr %1, i64 184
  store i32 0, ptr %148, align 4, !tbaa !26
  %149 = getelementptr inbounds i8, ptr %1, i64 136
  %150 = load ptr, ptr %149, align 8, !tbaa !33
  %151 = icmp eq ptr %150, null
  br i1 %151, label %.lr.ph107.2.1, label %152

152:                                              ; preds = %.lr.ph107.preheader.2
  call void @_ZdaPv(ptr noundef nonnull %150) #7
  br label %.lr.ph107.2.1

.lr.ph107.2.1:                                    ; preds = %152, %.lr.ph107.preheader.2
  store ptr null, ptr %149, align 8, !tbaa !33
  %153 = getelementptr inbounds i8, ptr %1, i64 188
  store i32 0, ptr %153, align 4, !tbaa !26
  %154 = getelementptr inbounds i8, ptr %1, i64 144
  %155 = load ptr, ptr %154, align 8, !tbaa !33
  %156 = icmp eq ptr %155, null
  br i1 %156, label %.lr.ph107.2.2, label %157

157:                                              ; preds = %.lr.ph107.2.1
  call void @_ZdaPv(ptr noundef nonnull %155) #7
  br label %.lr.ph107.2.2

.lr.ph107.2.2:                                    ; preds = %157, %.lr.ph107.2.1
  store ptr null, ptr %154, align 8, !tbaa !33
  %158 = getelementptr inbounds i8, ptr %1, i64 192
  store i32 0, ptr %158, align 4, !tbaa !26
  %159 = getelementptr inbounds i8, ptr %1, i64 152
  %160 = load ptr, ptr %159, align 8, !tbaa !33
  %161 = icmp eq ptr %160, null
  br i1 %161, label %.lr.ph107.2.3, label %162

162:                                              ; preds = %.lr.ph107.2.2
  call void @_ZdaPv(ptr noundef nonnull %160) #7
  br label %.lr.ph107.2.3

.lr.ph107.2.3:                                    ; preds = %162, %.lr.ph107.2.2
  store ptr null, ptr %159, align 8, !tbaa !33
  %163 = getelementptr inbounds i8, ptr %1, i64 196
  store i32 0, ptr %163, align 4, !tbaa !26
  %164 = getelementptr inbounds i8, ptr %1, i64 160
  %165 = load ptr, ptr %164, align 8, !tbaa !33
  %166 = icmp eq ptr %165, null
  br i1 %166, label %.lr.ph107.2.4, label %167

167:                                              ; preds = %.lr.ph107.2.3
  call void @_ZdaPv(ptr noundef nonnull %165) #7
  br label %.lr.ph107.2.4

.lr.ph107.2.4:                                    ; preds = %167, %.lr.ph107.2.3
  store ptr null, ptr %164, align 8, !tbaa !33
  %168 = getelementptr inbounds i8, ptr %1, i64 200
  store i32 0, ptr %168, align 4, !tbaa !26
  %169 = getelementptr inbounds i8, ptr %1, i64 168
  %170 = load ptr, ptr %169, align 8, !tbaa !33
  %171 = icmp eq ptr %170, null
  br i1 %171, label %.loopexit96.loopexit.2, label %172

172:                                              ; preds = %.lr.ph107.2.4
  call void @_ZdaPv(ptr noundef nonnull %170) #7
  br label %.loopexit96.loopexit.2

.loopexit96.loopexit.2:                           ; preds = %172, %.lr.ph107.2.4
  store ptr null, ptr %169, align 8, !tbaa !33
  %173 = getelementptr inbounds i8, ptr %1, i64 204
  store i32 0, ptr %173, align 4, !tbaa !26
  br label %.loopexit96.2

.loopexit96.2:                                    ; preds = %.loopexit96.loopexit.2, %147
  %.1.2 = phi i8 [ %.1.1, %147 ], [ 1, %.loopexit96.loopexit.2 ]
  %174 = getelementptr inbounds i8, ptr %1, i64 136
  %175 = load ptr, ptr %174, align 8, !tbaa !33
  %.not81.3 = icmp eq ptr %175, null
  br i1 %.not81.3, label %.critedge, label %176

176:                                              ; preds = %.loopexit96.2
  %177 = load i32, ptr %9, align 4, !tbaa !5
  %178 = invoke noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8) %174, i32 noundef %177, ptr noundef nonnull @.str.13, ptr noundef nonnull align 8 dereferenceable(40) %3, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %179 unwind label %71

179:                                              ; preds = %176
  br i1 %178, label %.lr.ph107.preheader.3, label %.loopexit96.3

.lr.ph107.preheader.3:                            ; preds = %179
  %180 = getelementptr inbounds i8, ptr %1, i64 188
  store i32 0, ptr %180, align 4, !tbaa !26
  %181 = getelementptr inbounds i8, ptr %1, i64 144
  %182 = load ptr, ptr %181, align 8, !tbaa !33
  %183 = icmp eq ptr %182, null
  br i1 %183, label %.lr.ph107.3.1, label %184

184:                                              ; preds = %.lr.ph107.preheader.3
  call void @_ZdaPv(ptr noundef nonnull %182) #7
  br label %.lr.ph107.3.1

.lr.ph107.3.1:                                    ; preds = %184, %.lr.ph107.preheader.3
  store ptr null, ptr %181, align 8, !tbaa !33
  %185 = getelementptr inbounds i8, ptr %1, i64 192
  store i32 0, ptr %185, align 4, !tbaa !26
  %186 = getelementptr inbounds i8, ptr %1, i64 152
  %187 = load ptr, ptr %186, align 8, !tbaa !33
  %188 = icmp eq ptr %187, null
  br i1 %188, label %.lr.ph107.3.2, label %189

189:                                              ; preds = %.lr.ph107.3.1
  call void @_ZdaPv(ptr noundef nonnull %187) #7
  br label %.lr.ph107.3.2

.lr.ph107.3.2:                                    ; preds = %189, %.lr.ph107.3.1
  store ptr null, ptr %186, align 8, !tbaa !33
  %190 = getelementptr inbounds i8, ptr %1, i64 196
  store i32 0, ptr %190, align 4, !tbaa !26
  %191 = getelementptr inbounds i8, ptr %1, i64 160
  %192 = load ptr, ptr %191, align 8, !tbaa !33
  %193 = icmp eq ptr %192, null
  br i1 %193, label %.lr.ph107.3.3, label %194

194:                                              ; preds = %.lr.ph107.3.2
  call void @_ZdaPv(ptr noundef nonnull %192) #7
  br label %.lr.ph107.3.3

.lr.ph107.3.3:                                    ; preds = %194, %.lr.ph107.3.2
  store ptr null, ptr %191, align 8, !tbaa !33
  %195 = getelementptr inbounds i8, ptr %1, i64 200
  store i32 0, ptr %195, align 4, !tbaa !26
  %196 = getelementptr inbounds i8, ptr %1, i64 168
  %197 = load ptr, ptr %196, align 8, !tbaa !33
  %198 = icmp eq ptr %197, null
  br i1 %198, label %.loopexit96.loopexit.3, label %199

199:                                              ; preds = %.lr.ph107.3.3
  call void @_ZdaPv(ptr noundef nonnull %197) #7
  br label %.loopexit96.loopexit.3

.loopexit96.loopexit.3:                           ; preds = %199, %.lr.ph107.3.3
  store ptr null, ptr %196, align 8, !tbaa !33
  %200 = getelementptr inbounds i8, ptr %1, i64 204
  store i32 0, ptr %200, align 4, !tbaa !26
  br label %.loopexit96.3

.loopexit96.3:                                    ; preds = %.loopexit96.loopexit.3, %179
  %.1.3 = phi i8 [ %.1.2, %179 ], [ 1, %.loopexit96.loopexit.3 ]
  %201 = getelementptr inbounds i8, ptr %1, i64 144
  %202 = load ptr, ptr %201, align 8, !tbaa !33
  %.not81.4 = icmp eq ptr %202, null
  br i1 %.not81.4, label %.critedge, label %203

203:                                              ; preds = %.loopexit96.3
  %204 = load i32, ptr %9, align 4, !tbaa !5
  %205 = invoke noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8) %201, i32 noundef %204, ptr noundef nonnull @.str.13, ptr noundef nonnull align 8 dereferenceable(40) %3, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %206 unwind label %71

206:                                              ; preds = %203
  br i1 %205, label %.lr.ph107.preheader.4, label %.loopexit96.4

.lr.ph107.preheader.4:                            ; preds = %206
  %207 = getelementptr inbounds i8, ptr %1, i64 192
  store i32 0, ptr %207, align 4, !tbaa !26
  %208 = getelementptr inbounds i8, ptr %1, i64 152
  %209 = load ptr, ptr %208, align 8, !tbaa !33
  %210 = icmp eq ptr %209, null
  br i1 %210, label %.lr.ph107.4.1, label %211

211:                                              ; preds = %.lr.ph107.preheader.4
  call void @_ZdaPv(ptr noundef nonnull %209) #7
  br label %.lr.ph107.4.1

.lr.ph107.4.1:                                    ; preds = %211, %.lr.ph107.preheader.4
  store ptr null, ptr %208, align 8, !tbaa !33
  %212 = getelementptr inbounds i8, ptr %1, i64 196
  store i32 0, ptr %212, align 4, !tbaa !26
  %213 = getelementptr inbounds i8, ptr %1, i64 160
  %214 = load ptr, ptr %213, align 8, !tbaa !33
  %215 = icmp eq ptr %214, null
  br i1 %215, label %.lr.ph107.4.2, label %216

216:                                              ; preds = %.lr.ph107.4.1
  call void @_ZdaPv(ptr noundef nonnull %214) #7
  br label %.lr.ph107.4.2

.lr.ph107.4.2:                                    ; preds = %216, %.lr.ph107.4.1
  store ptr null, ptr %213, align 8, !tbaa !33
  %217 = getelementptr inbounds i8, ptr %1, i64 200
  store i32 0, ptr %217, align 4, !tbaa !26
  %218 = getelementptr inbounds i8, ptr %1, i64 168
  %219 = load ptr, ptr %218, align 8, !tbaa !33
  %220 = icmp eq ptr %219, null
  br i1 %220, label %.loopexit96.loopexit.4, label %221

221:                                              ; preds = %.lr.ph107.4.2
  call void @_ZdaPv(ptr noundef nonnull %219) #7
  br label %.loopexit96.loopexit.4

.loopexit96.loopexit.4:                           ; preds = %221, %.lr.ph107.4.2
  store ptr null, ptr %218, align 8, !tbaa !33
  %222 = getelementptr inbounds i8, ptr %1, i64 204
  store i32 0, ptr %222, align 4, !tbaa !26
  br label %.loopexit96.4

.loopexit96.4:                                    ; preds = %.loopexit96.loopexit.4, %206
  %.1.4 = phi i8 [ %.1.3, %206 ], [ 1, %.loopexit96.loopexit.4 ]
  %223 = getelementptr inbounds i8, ptr %1, i64 152
  %224 = load ptr, ptr %223, align 8, !tbaa !33
  %.not81.5 = icmp eq ptr %224, null
  br i1 %.not81.5, label %.critedge, label %225

225:                                              ; preds = %.loopexit96.4
  %226 = load i32, ptr %9, align 4, !tbaa !5
  %227 = invoke noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8) %223, i32 noundef %226, ptr noundef nonnull @.str.13, ptr noundef nonnull align 8 dereferenceable(40) %3, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %228 unwind label %71

228:                                              ; preds = %225
  br i1 %227, label %.lr.ph107.preheader.5, label %.loopexit96.5

.lr.ph107.preheader.5:                            ; preds = %228
  %229 = getelementptr inbounds i8, ptr %1, i64 196
  store i32 0, ptr %229, align 4, !tbaa !26
  %230 = getelementptr inbounds i8, ptr %1, i64 160
  %231 = load ptr, ptr %230, align 8, !tbaa !33
  %232 = icmp eq ptr %231, null
  br i1 %232, label %.lr.ph107.5.1, label %233

233:                                              ; preds = %.lr.ph107.preheader.5
  call void @_ZdaPv(ptr noundef nonnull %231) #7
  br label %.lr.ph107.5.1

.lr.ph107.5.1:                                    ; preds = %233, %.lr.ph107.preheader.5
  store ptr null, ptr %230, align 8, !tbaa !33
  %234 = getelementptr inbounds i8, ptr %1, i64 200
  store i32 0, ptr %234, align 4, !tbaa !26
  %235 = getelementptr inbounds i8, ptr %1, i64 168
  %236 = load ptr, ptr %235, align 8, !tbaa !33
  %237 = icmp eq ptr %236, null
  br i1 %237, label %.loopexit96.loopexit.5, label %238

238:                                              ; preds = %.lr.ph107.5.1
  call void @_ZdaPv(ptr noundef nonnull %236) #7
  br label %.loopexit96.loopexit.5

.loopexit96.loopexit.5:                           ; preds = %238, %.lr.ph107.5.1
  store ptr null, ptr %235, align 8, !tbaa !33
  %239 = getelementptr inbounds i8, ptr %1, i64 204
  store i32 0, ptr %239, align 4, !tbaa !26
  br label %.loopexit96.5

.loopexit96.5:                                    ; preds = %.loopexit96.loopexit.5, %228
  %.1.5 = phi i8 [ %.1.4, %228 ], [ 1, %.loopexit96.loopexit.5 ]
  %240 = getelementptr inbounds i8, ptr %1, i64 160
  %241 = load ptr, ptr %240, align 8, !tbaa !33
  %.not81.6 = icmp eq ptr %241, null
  br i1 %.not81.6, label %.critedge, label %242

242:                                              ; preds = %.loopexit96.5
  %243 = load i32, ptr %9, align 4, !tbaa !5
  %244 = invoke noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8) %240, i32 noundef %243, ptr noundef nonnull @.str.13, ptr noundef nonnull align 8 dereferenceable(40) %3, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %245 unwind label %71

245:                                              ; preds = %242
  br i1 %244, label %.lr.ph107.preheader.6, label %.loopexit96.6

.lr.ph107.preheader.6:                            ; preds = %245
  %246 = getelementptr inbounds i8, ptr %1, i64 200
  store i32 0, ptr %246, align 4, !tbaa !26
  %247 = getelementptr inbounds i8, ptr %1, i64 168
  %248 = load ptr, ptr %247, align 8, !tbaa !33
  %249 = icmp eq ptr %248, null
  br i1 %249, label %.loopexit96.loopexit.6, label %250

250:                                              ; preds = %.lr.ph107.preheader.6
  call void @_ZdaPv(ptr noundef nonnull %248) #7
  br label %.loopexit96.loopexit.6

.loopexit96.loopexit.6:                           ; preds = %250, %.lr.ph107.preheader.6
  store ptr null, ptr %247, align 8, !tbaa !33
  %251 = getelementptr inbounds i8, ptr %1, i64 204
  store i32 0, ptr %251, align 4, !tbaa !26
  br label %.loopexit96.6

.loopexit96.6:                                    ; preds = %.loopexit96.loopexit.6, %245
  %.1.6 = phi i8 [ %.1.5, %245 ], [ 1, %.loopexit96.loopexit.6 ]
  %252 = getelementptr inbounds i8, ptr %1, i64 168
  %253 = load ptr, ptr %252, align 8, !tbaa !33
  %.not81.7 = icmp eq ptr %253, null
  br i1 %.not81.7, label %.critedge, label %254

254:                                              ; preds = %.loopexit96.6
  %255 = load i32, ptr %9, align 4, !tbaa !5
  %256 = invoke noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8) %252, i32 noundef %255, ptr noundef nonnull @.str.13, ptr noundef nonnull align 8 dereferenceable(40) %3, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %257 unwind label %71

257:                                              ; preds = %254
  br i1 %256, label %258, label %.critedge

258:                                              ; preds = %257
  %259 = getelementptr inbounds i8, ptr %1, i64 204
  store i32 0, ptr %259, align 4, !tbaa !26
  br label %.critedge

.critedge:                                        ; preds = %.preheader97, %.loopexit96, %.loopexit96.1, %.loopexit96.2, %.loopexit96.3, %.loopexit96.4, %.loopexit96.5, %.loopexit96.6, %258, %257, %57
  %.2 = phi i8 [ 0, %57 ], [ 0, %.preheader97 ], [ %.1, %.loopexit96 ], [ %.1.1, %.loopexit96.1 ], [ %.1.2, %.loopexit96.2 ], [ %.1.3, %.loopexit96.3 ], [ %.1.4, %.loopexit96.4 ], [ %.1.5, %.loopexit96.5 ], [ %.1.6, %.loopexit96.6 ], [ %.1.6, %257 ], [ 1, %258 ]
  %260 = getelementptr inbounds i8, ptr %1, i64 24
  %261 = load ptr, ptr %260, align 8, !tbaa !34
  %.not82 = icmp eq ptr %261, null
  br i1 %.not82, label %262, label %265

262:                                              ; preds = %.critedge
  %263 = getelementptr inbounds i8, ptr %1, i64 32
  %264 = load ptr, ptr %263, align 8, !tbaa !35
  %.not83 = icmp eq ptr %264, null
  br i1 %.not83, label %339, label %265

265:                                              ; preds = %262, %.critedge
  %266 = load i32, ptr %1, align 8, !tbaa !36
  %267 = and i32 %266, 3
  %or.cond = icmp eq i32 %267, 0
  br i1 %or.cond, label %.loopexit, label %268

268:                                              ; preds = %265
  %269 = and i32 %266, 12
  %or.cond95 = icmp eq i32 %269, 0
  br i1 %or.cond95, label %341, label %.preheader

.preheader:                                       ; preds = %268
  %270 = load i32, ptr %12, align 8, !tbaa !16
  %.not114 = icmp eq i32 %270, 0
  br i1 %.not114, label %.loopexit, label %.lr.ph111

.lr.ph111:                                        ; preds = %.preheader
  %271 = getelementptr inbounds i8, ptr %1, i64 208
  %272 = getelementptr inbounds i8, ptr %7, i64 8
  %273 = getelementptr inbounds i8, ptr %8, i64 8
  br label %274

274:                                              ; preds = %.lr.ph111, %305
  %indvars.iv131 = phi i64 [ 0, %.lr.ph111 ], [ %indvars.iv.next132, %305 ]
  %275 = load ptr, ptr %271, align 8, !tbaa !20
  %276 = getelementptr inbounds %struct.aiFace, ptr %275, i64 %indvars.iv131
  %277 = load i32, ptr %276, align 8, !tbaa !21
  %278 = icmp ult i32 %277, 3
  br i1 %278, label %279, label %305

279:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #6
  %280 = getelementptr inbounds i8, ptr %276, i64 8
  %281 = load ptr, ptr %280, align 8, !tbaa !25
  %282 = load i32, ptr %281, align 4, !tbaa !26
  %283 = zext i32 %282 to i64
  %284 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %3, i64 noundef %283)
          to label %285 unwind label %301

285:                                              ; preds = %279
  %286 = extractvalue { ptr, i64 } %284, 0
  store ptr %286, ptr %7, align 8
  %287 = extractvalue { ptr, i64 } %284, 1
  store i64 %287, ptr %272, align 8
  %288 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %7, i1 noundef zeroext true) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  %289 = load i32, ptr %276, align 8, !tbaa !21
  %290 = icmp eq i32 %289, 2
  br i1 %290, label %291, label %305

291:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #6
  %292 = load ptr, ptr %280, align 8, !tbaa !25
  %293 = getelementptr inbounds i8, ptr %292, i64 4
  %294 = load i32, ptr %293, align 4, !tbaa !26
  %295 = zext i32 %294 to i64
  %296 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %3, i64 noundef %295)
          to label %297 unwind label %303

297:                                              ; preds = %291
  %298 = extractvalue { ptr, i64 } %296, 0
  store ptr %298, ptr %8, align 8
  %299 = extractvalue { ptr, i64 } %296, 1
  store i64 %299, ptr %273, align 8
  %300 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %8, i1 noundef zeroext true) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #6
  br label %305

301:                                              ; preds = %279
  %302 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  br label %342

303:                                              ; preds = %291
  %304 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #6
  br label %342

305:                                              ; preds = %285, %297, %274
  %indvars.iv.next132 = add nuw nsw i64 %indvars.iv131, 1
  %306 = load i32, ptr %12, align 8, !tbaa !16
  %307 = zext i32 %306 to i64
  %308 = icmp ult i64 %indvars.iv.next132, %307
  br i1 %308, label %274, label %.loopexit.loopexit, !llvm.loop !37

.loopexit.loopexit:                               ; preds = %305
  %.pre134 = load ptr, ptr %260, align 8, !tbaa !34
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %.preheader, %265
  %309 = phi ptr [ %.pre134, %.loopexit.loopexit ], [ %261, %.preheader ], [ %261, %265 ]
  %.not88 = icmp eq ptr %309, null
  br i1 %.not88, label %314, label %310

310:                                              ; preds = %.loopexit
  %311 = load i32, ptr %9, align 4, !tbaa !5
  %312 = invoke noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8) %260, i32 noundef %311, ptr noundef nonnull @.str.14, ptr noundef nonnull align 8 dereferenceable(40) %3, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %313 unwind label %55

313:                                              ; preds = %310
  %spec.select = select i1 %312, i8 1, i8 %.2
  br label %314

314:                                              ; preds = %313, %.loopexit
  %.3 = phi i8 [ %.2, %.loopexit ], [ %spec.select, %313 ]
  %315 = getelementptr inbounds i8, ptr %1, i64 32
  %316 = load ptr, ptr %315, align 8, !tbaa !35
  %.not89 = icmp eq ptr %316, null
  br i1 %.not89, label %327, label %317

317:                                              ; preds = %314
  %318 = load i32, ptr %9, align 4, !tbaa !5
  %319 = invoke noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8) %315, i32 noundef %318, ptr noundef nonnull @.str.15, ptr noundef nonnull align 8 dereferenceable(40) %3, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %320 unwind label %55

320:                                              ; preds = %317
  br i1 %319, label %321, label %327

321:                                              ; preds = %320
  %322 = getelementptr inbounds i8, ptr %1, i64 40
  %323 = load ptr, ptr %322, align 8, !tbaa !38
  %324 = icmp eq ptr %323, null
  br i1 %324, label %326, label %325

325:                                              ; preds = %321
  call void @_ZdaPv(ptr noundef nonnull %323) #7
  br label %326

326:                                              ; preds = %325, %321
  store ptr null, ptr %322, align 8, !tbaa !38
  br label %327

327:                                              ; preds = %326, %320, %314
  %.4 = phi i8 [ 1, %326 ], [ %.3, %320 ], [ %.3, %314 ]
  %328 = getelementptr inbounds i8, ptr %1, i64 40
  %329 = load ptr, ptr %328, align 8, !tbaa !38
  %.not90 = icmp eq ptr %329, null
  br i1 %.not90, label %339, label %330

330:                                              ; preds = %327
  %331 = load i32, ptr %9, align 4, !tbaa !5
  %332 = invoke noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8) %328, i32 noundef %331, ptr noundef nonnull @.str.16, ptr noundef nonnull align 8 dereferenceable(40) %3, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %333 unwind label %55

333:                                              ; preds = %330
  br i1 %332, label %334, label %339

334:                                              ; preds = %333
  %335 = load ptr, ptr %315, align 8, !tbaa !35
  %336 = icmp eq ptr %335, null
  br i1 %336, label %338, label %337

337:                                              ; preds = %334
  call void @_ZdaPv(ptr noundef nonnull %335) #7
  br label %338

338:                                              ; preds = %337, %334
  store ptr null, ptr %315, align 8, !tbaa !35
  br label %339

339:                                              ; preds = %327, %333, %338, %262
  %.5 = phi i8 [ 1, %338 ], [ %.4, %333 ], [ %.4, %327 ], [ %.2, %262 ]
  %340 = and i8 %.5, 1
  br label %341

341:                                              ; preds = %268, %54, %339
  %.0.shrunk = phi i8 [ %340, %339 ], [ 2, %54 ], [ %.2, %268 ]
  %.0 = zext nneg i8 %.0.shrunk to i32
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %3) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #6
  ret i32 %.0

342:                                              ; preds = %301, %303, %71, %55, %46
  %.pn92 = phi { ptr, i32 } [ %47, %46 ], [ %56, %55 ], [ %72, %71 ], [ %304, %303 ], [ %302, %301 ]
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %3) #6
  br label %343

343:                                              ; preds = %342, %22
  %.pn92.pn = phi { ptr, i32 } [ %.pn92, %342 ], [ %23, %22 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #6
  resume { ptr, i32 } %.pn92.pn
}

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z12ProcessArrayI10aiVector3tIfEEbRPT_jPKcRKSt6vectorIbSaIbEEbb(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(40), i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #5

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress 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 #4 = { 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 #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 }
attributes #7 = { builtin nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 4}
!6 = !{!"_ZTS6aiMesh", !7, i64 0, !7, i64 4, !7, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !8, i64 48, !8, i64 112, !8, i64 176, !10, i64 208, !7, i64 216, !10, i64 224, !7, i64 232, !11, i64 236, !7, i64 1264, !10, i64 1272, !12, i64 1280, !13, i64 1284, !10, i64 1312}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"_ZTS8aiString", !7, i64 0, !8, i64 4}
!12 = !{!"_ZTS16aiMorphingMethod", !8, i64 0}
!13 = !{!"_ZTS6aiAABB", !14, i64 0, !14, i64 12}
!14 = !{!"_ZTS10aiVector3tIfE", !15, i64 0, !15, i64 4, !15, i64 8}
!15 = !{!"float", !8, i64 0}
!16 = !{!6, !7, i64 8}
!17 = !{!18, !18, i64 0}
!18 = !{!"bool", !8, i64 0}
!19 = !{!6, !10, i64 16}
!20 = !{!6, !10, i64 208}
!21 = !{!22, !7, i64 0}
!22 = !{!"_ZTS6aiFace", !7, i64 0, !10, i64 8}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!22, !10, i64 8}
!26 = !{!7, !7, i64 0}
!27 = distinct !{!27, !24}
!28 = !{!29, !18, i64 28}
!29 = !{!"_ZTSN6Assimp22FindInvalidDataProcessE", !30, i64 0, !15, i64 24, !18, i64 28}
!30 = !{!"_ZTSN6Assimp11BaseProcessE", !10, i64 8, !10, i64 16}
!31 = !{i8 0, i8 2}
!32 = !{}
!33 = !{!10, !10, i64 0}
!34 = !{!6, !10, i64 24}
!35 = !{!6, !10, i64 32}
!36 = !{!6, !7, i64 0}
!37 = distinct !{!37, !24}
!38 = !{!6, !10, i64 40}


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