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

; 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::list" = type { %"class.std::__cxx11::_List_base" }
%"class.std::__cxx11::_List_base" = type { %"struct.std::__cxx11::_List_base<Assimp::ComputeUVMappingProcess::MappingInfo, std::allocator<Assimp::ComputeUVMappingProcess::MappingInfo>>::_List_impl" }
%"struct.std::__cxx11::_List_base<Assimp::ComputeUVMappingProcess::MappingInfo, std::allocator<Assimp::ComputeUVMappingProcess::MappingInfo>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"struct.Assimp::ComputeUVMappingProcess::MappingInfo" = type { i32, %class.aiVector3t, i32 }
%class.aiVector3t = type { float, float, float }
%"struct.std::_List_iterator" = type { ptr }
%struct.aiScene = type { i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, ptr, %struct.aiString, i32, ptr, ptr }
%struct.aiString = type { i32, [1024 x i8] }
%struct.aiMaterial = type { ptr, i32, i32 }
%struct.aiMaterialProperty = type { %struct.aiString, i32, i32, i32, i32, ptr }
%struct.aiMesh = type { i32, i32, i32, ptr, ptr, ptr, ptr, [8 x ptr], [8 x ptr], [8 x i32], ptr, i32, ptr, i32, %struct.aiString, i32, ptr, i32, %struct.aiAABB, ptr }
%struct.aiAABB = type { %class.aiVector3t, %class.aiVector3t }

@.str.3 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [83 x i8], align 1
@_ZTI17DeadlyImportError = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.5 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [184 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [28 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

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

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

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

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

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

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

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

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() #5

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp23ComputeUVMappingProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef %1) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca [1024 x i8], align 16
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::__cxx11::list", align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca %"struct.Assimp::ComputeUVMappingProcess::MappingInfo", align 4
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca %"struct.std::_List_iterator", align 8
  %20 = alloca %"struct.std::_List_iterator", align 8
  %21 = alloca %"struct.std::_List_iterator", align 8
  %22 = alloca %"struct.std::_List_iterator", align 8
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %27 = load ptr, ptr %3, align 8
  %28 = call noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
  call void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %28, ptr noundef @.str.3)
  call void @llvm.lifetime.start.p0(i64 1024, ptr %5) #11
  %29 = load ptr, ptr %4, align 8, !tbaa !5
  %30 = getelementptr inbounds %struct.aiScene, ptr %29, i32 0, i32 0
  %31 = load i32, ptr %30, align 8, !tbaa !9
  %32 = and i32 %31, 8
  %33 = icmp ne i32 %32, 0
  br i1 %33, label %34, label %41

34:                                               ; preds = %2
  %35 = call ptr @__cxa_allocate_exception(i64 16) #11
  invoke void @_ZN17DeadlyImportErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef @.str.4)
          to label %36 unwind label %37

36:                                               ; preds = %34
  call void @__cxa_throw(ptr %35, ptr @_ZTI17DeadlyImportError, ptr @_ZNSt13runtime_errorD2Ev) #12
  unreachable

37:                                               ; preds = %34
  %38 = landingpad { ptr, i32 }
          cleanup
  %39 = extractvalue { ptr, i32 } %38, 0
  store ptr %39, ptr %6, align 8
  %40 = extractvalue { ptr, i32 } %38, 1
  store i32 %40, ptr %7, align 4
  call void @__cxa_free_exception(ptr %35) #11
  br label %361

41:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #11
  call void @_ZNSt7__cxx114listIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #11
  store i32 0, ptr %9, align 4, !tbaa !13
  br label %42

42:                                               ; preds = %348, %41
  %43 = load i32, ptr %9, align 4, !tbaa !13
  %44 = load ptr, ptr %4, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.aiScene, ptr %44, i32 0, i32 4
  %46 = load i32, ptr %45, align 8, !tbaa !14
  %47 = icmp ult i32 %43, %46
  br i1 %47, label %49, label %48

48:                                               ; preds = %42
  store i32 2, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #11
  br label %352

49:                                               ; preds = %42
  call void @_ZNSt7__cxx114listIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #11
  %50 = load ptr, ptr %4, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.aiScene, ptr %50, i32 0, i32 5
  %52 = load ptr, ptr %51, align 8, !tbaa !15
  %53 = load i32, ptr %9, align 4, !tbaa !13
  %54 = zext i32 %53 to i64
  %55 = getelementptr inbounds ptr, ptr %52, i64 %54
  %56 = load ptr, ptr %55, align 8, !tbaa !5
  store ptr %56, ptr %11, align 8, !tbaa !5
  %57 = load ptr, ptr %11, align 8, !tbaa !5
  %58 = icmp eq ptr %57, null
  br i1 %58, label %59, label %67

59:                                               ; preds = %49
  %60 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %61 unwind label %63

61:                                               ; preds = %59
  invoke void @_ZN6Assimp6Logger4infoEPKc(ptr noundef nonnull align 8 dereferenceable(12) %60, ptr noundef @.str.5)
          to label %62 unwind label %63

62:                                               ; preds = %61
  store i32 4, ptr %10, align 4
  br label %345

63:                                               ; preds = %61, %59
  %64 = landingpad { ptr, i32 }
          cleanup
  %65 = extractvalue { ptr, i32 } %64, 0
  store ptr %65, ptr %6, align 8
  %66 = extractvalue { ptr, i32 } %64, 1
  store i32 %66, ptr %7, align 4
  br label %351

67:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #11
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %68

68:                                               ; preds = %341, %67
  %69 = load i32, ptr %12, align 4, !tbaa !13
  %70 = load ptr, ptr %11, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.aiMaterial, ptr %70, i32 0, i32 1
  %72 = load i32, ptr %71, align 8, !tbaa !16
  %73 = icmp ult i32 %69, %72
  br i1 %73, label %75, label %74

74:                                               ; preds = %68
  store i32 5, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #11
  br label %344

75:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #11
  %76 = load ptr, ptr %11, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.aiMaterial, ptr %76, i32 0, i32 0
  %78 = load ptr, ptr %77, align 8, !tbaa !18
  %79 = load i32, ptr %12, align 4, !tbaa !13
  %80 = zext i32 %79 to i64
  %81 = getelementptr inbounds ptr, ptr %78, i64 %80
  %82 = load ptr, ptr %81, align 8, !tbaa !5
  store ptr %82, ptr %13, align 8, !tbaa !5
  %83 = load ptr, ptr %13, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.aiMaterialProperty, ptr %83, i32 0, i32 0
  %85 = getelementptr inbounds %struct.aiString, ptr %84, i32 0, i32 1
  %86 = getelementptr inbounds [1024 x i8], ptr %85, i64 0, i64 0
  %87 = call i32 @strcmp(ptr noundef %86, ptr noundef @.str.6) #13
  %88 = icmp ne i32 %87, 0
  br i1 %88, label %337, label %89

89:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #11
  %90 = load ptr, ptr %13, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.aiMaterialProperty, ptr %90, i32 0, i32 5
  %92 = load ptr, ptr %91, align 8, !tbaa !19
  store ptr %92, ptr %14, align 8, !tbaa !5
  %93 = load ptr, ptr %14, align 8, !tbaa !5
  %94 = load i32, ptr %93, align 4, !tbaa !22
  %95 = icmp ne i32 0, %94
  br i1 %95, label %96, label %332

96:                                               ; preds = %89
  %97 = invoke noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv()
          to label %98 unwind label %117

98:                                               ; preds = %96
  br i1 %97, label %121, label %99

99:                                               ; preds = %98
  %100 = getelementptr inbounds [1024 x i8], ptr %5, i64 0, i64 0
  %101 = load ptr, ptr %13, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.aiMaterialProperty, ptr %101, i32 0, i32 1
  %103 = load i32, ptr %102, align 4, !tbaa !24
  %104 = invoke ptr @aiTextureTypeToString(i32 noundef %103)
          to label %105 unwind label %117

105:                                              ; preds = %99
  %106 = load ptr, ptr %13, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.aiMaterialProperty, ptr %106, i32 0, i32 2
  %108 = load i32, ptr %107, align 8, !tbaa !25
  %109 = load ptr, ptr %14, align 8, !tbaa !5
  %110 = load i32, ptr %109, align 4, !tbaa !22
  %111 = invoke noundef ptr @_ZN6Assimp19MappingTypeToStringE16aiTextureMapping(i32 noundef %110)
          to label %112 unwind label %117

112:                                              ; preds = %105
  %113 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %100, i64 noundef 1024, ptr noundef @.str.7, ptr noundef %104, i32 noundef %108, ptr noundef %111) #11
  %114 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %115 unwind label %117

115:                                              ; preds = %112
  invoke void @_ZN6Assimp6Logger4infoIJRA1024_cEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %114, ptr noundef nonnull align 1 dereferenceable(1024) %5)
          to label %116 unwind label %117

116:                                              ; preds = %115
  br label %121

117:                                              ; preds = %115, %112, %105, %99, %96
  %118 = landingpad { ptr, i32 }
          cleanup
  %119 = extractvalue { ptr, i32 } %118, 0
  store ptr %119, ptr %6, align 8
  %120 = extractvalue { ptr, i32 } %118, 1
  store i32 %120, ptr %7, align 4
  br label %336

121:                                              ; preds = %116, %98
  %122 = load ptr, ptr %14, align 8, !tbaa !5
  %123 = load i32, ptr %122, align 4, !tbaa !22
  %124 = icmp eq i32 5, %123
  br i1 %124, label %125, label %126

125:                                              ; preds = %121
  store i32 7, ptr %10, align 4
  br label %333

126:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 20, ptr %15) #11
  %127 = load ptr, ptr %14, align 8, !tbaa !5
  %128 = load i32, ptr %127, align 4, !tbaa !22
  invoke void @_ZN6Assimp23ComputeUVMappingProcess11MappingInfoC2E16aiTextureMapping(ptr noundef nonnull align 4 dereferenceable(20) %15, i32 noundef %128)
          to label %129 unwind label %137

129:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #11
  store i32 0, ptr %16, align 4, !tbaa !13
  br label %130

130:                                              ; preds = %181, %129
  %131 = load i32, ptr %16, align 4, !tbaa !13
  %132 = load ptr, ptr %11, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.aiMaterial, ptr %132, i32 0, i32 1
  %134 = load i32, ptr %133, align 8, !tbaa !16
  %135 = icmp ult i32 %131, %134
  br i1 %135, label %141, label %136

136:                                              ; preds = %130
  store i32 8, ptr %10, align 4
  br label %184

137:                                              ; preds = %126
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %6, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %7, align 4
  br label %331

141:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #11
  %142 = load ptr, ptr %11, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.aiMaterial, ptr %142, i32 0, i32 0
  %144 = load ptr, ptr %143, align 8, !tbaa !18
  %145 = load i32, ptr %16, align 4, !tbaa !13
  %146 = zext i32 %145 to i64
  %147 = getelementptr inbounds ptr, ptr %144, i64 %146
  %148 = load ptr, ptr %147, align 8, !tbaa !5
  store ptr %148, ptr %17, align 8, !tbaa !5
  %149 = load ptr, ptr %17, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.aiMaterialProperty, ptr %149, i32 0, i32 1
  %151 = load i32, ptr %150, align 4, !tbaa !24
  %152 = load ptr, ptr %13, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.aiMaterialProperty, ptr %152, i32 0, i32 1
  %154 = load i32, ptr %153, align 4, !tbaa !24
  %155 = icmp ne i32 %151, %154
  br i1 %155, label %164, label %156

156:                                              ; preds = %141
  %157 = load ptr, ptr %17, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.aiMaterialProperty, ptr %157, i32 0, i32 2
  %159 = load i32, ptr %158, align 8, !tbaa !25
  %160 = load ptr, ptr %13, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.aiMaterialProperty, ptr %160, i32 0, i32 2
  %162 = load i32, ptr %161, align 8, !tbaa !25
  %163 = icmp ne i32 %159, %162
  br i1 %163, label %164, label %165

164:                                              ; preds = %156, %141
  store i32 10, ptr %10, align 4
  br label %178

165:                                              ; preds = %156
  %166 = load ptr, ptr %17, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.aiMaterialProperty, ptr %166, i32 0, i32 0
  %168 = getelementptr inbounds %struct.aiString, ptr %167, i32 0, i32 1
  %169 = getelementptr inbounds [1024 x i8], ptr %168, i64 0, i64 0
  %170 = call i32 @strcmp(ptr noundef %169, ptr noundef @.str.8) #13
  %171 = icmp ne i32 %170, 0
  br i1 %171, label %177, label %172

172:                                              ; preds = %165
  %173 = load ptr, ptr %17, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.aiMaterialProperty, ptr %173, i32 0, i32 5
  %175 = load ptr, ptr %174, align 8, !tbaa !19
  %176 = getelementptr inbounds %"struct.Assimp::ComputeUVMappingProcess::MappingInfo", ptr %15, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %176, ptr align 4 %175, i64 12, i1 false), !tbaa.struct !26
  store i32 8, ptr %10, align 4
  br label %178

177:                                              ; preds = %165
  store i32 0, ptr %10, align 4
  br label %178

178:                                              ; preds = %177, %172, %164
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #11
  %179 = load i32, ptr %10, align 4
  switch i32 %179, label %184 [
    i32 0, label %180
    i32 10, label %181
  ]

180:                                              ; preds = %178
  br label %181

181:                                              ; preds = %180, %178
  %182 = load i32, ptr %16, align 4, !tbaa !13
  %183 = add i32 %182, 1
  store i32 %183, ptr %16, align 4, !tbaa !13
  br label %130, !llvm.loop !29

184:                                              ; preds = %178, %136
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  br label %185

185:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #11
  store i32 99999999, ptr %18, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #11
  %186 = call ptr @_ZNSt7__cxx114listIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #11
  %187 = getelementptr inbounds %"struct.std::_List_iterator", ptr %20, i32 0, i32 0
  store ptr %186, ptr %187, align 8
  %188 = call ptr @_ZNSt7__cxx114listIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #11
  %189 = getelementptr inbounds %"struct.std::_List_iterator", ptr %21, i32 0, i32 0
  store ptr %188, ptr %189, align 8
  %190 = getelementptr inbounds %"struct.std::_List_iterator", ptr %20, i32 0, i32 0
  %191 = load ptr, ptr %190, align 8
  %192 = getelementptr inbounds %"struct.std::_List_iterator", ptr %21, i32 0, i32 0
  %193 = load ptr, ptr %192, align 8
  %194 = invoke ptr @_ZSt4findISt14_List_iteratorIN6Assimp23ComputeUVMappingProcess11MappingInfoEES3_ET_S5_S5_RKT0_(ptr %191, ptr %193, ptr noundef nonnull align 4 dereferenceable(20) %15)
          to label %195 unwind label %204

195:                                              ; preds = %185
  %196 = getelementptr inbounds %"struct.std::_List_iterator", ptr %19, i32 0, i32 0
  store ptr %194, ptr %196, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #11
  %197 = call ptr @_ZNSt7__cxx114listIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #11
  %198 = getelementptr inbounds %"struct.std::_List_iterator", ptr %22, i32 0, i32 0
  store ptr %197, ptr %198, align 8
  %199 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp23ComputeUVMappingProcess11MappingInfoEES5_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %19) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  br i1 %199, label %200, label %208

200:                                              ; preds = %195
  %201 = call noundef nonnull align 4 dereferenceable(20) ptr @_ZNKSt14_List_iteratorIN6Assimp23ComputeUVMappingProcess11MappingInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #11
  %202 = getelementptr inbounds %"struct.Assimp::ComputeUVMappingProcess::MappingInfo", ptr %201, i32 0, i32 2
  %203 = load i32, ptr %202, align 4, !tbaa !31
  store i32 %203, ptr %18, align 4, !tbaa !13
  br label %319

204:                                              ; preds = %319, %315, %185
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %6, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %7, align 4
  br label %330

208:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #11
  store i32 0, ptr %23, align 4, !tbaa !13
  br label %209

209:                                              ; preds = %311, %208
  %210 = load i32, ptr %23, align 4, !tbaa !13
  %211 = load ptr, ptr %4, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.aiScene, ptr %211, i32 0, i32 2
  %213 = load i32, ptr %212, align 8, !tbaa !34
  %214 = icmp ult i32 %210, %213
  br i1 %214, label %216, label %215

215:                                              ; preds = %209
  store i32 11, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  br label %315

216:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #11
  %217 = load ptr, ptr %4, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.aiScene, ptr %217, i32 0, i32 3
  %219 = load ptr, ptr %218, align 8, !tbaa !35
  %220 = load i32, ptr %23, align 4, !tbaa !13
  %221 = zext i32 %220 to i64
  %222 = getelementptr inbounds ptr, ptr %219, i64 %221
  %223 = load ptr, ptr %222, align 8, !tbaa !5
  store ptr %223, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #11
  store i32 0, ptr %25, align 4, !tbaa !13
  %224 = load ptr, ptr %24, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.aiMesh, ptr %224, i32 0, i32 13
  %226 = load i32, ptr %225, align 8, !tbaa !36
  %227 = load i32, ptr %9, align 4, !tbaa !13
  %228 = icmp ne i32 %226, %227
  br i1 %228, label %239, label %229

229:                                              ; preds = %216
  %230 = load ptr, ptr %24, align 8, !tbaa !5
  %231 = invoke noundef i32 @_Z18FindEmptyUVChannelP6aiMesh(ptr noundef %230)
          to label %232 unwind label %240

232:                                              ; preds = %229
  store i32 %231, ptr %25, align 4, !tbaa !13
  %233 = icmp eq i32 %231, -1
  br i1 %233, label %239, label %234

234:                                              ; preds = %232
  %235 = load ptr, ptr %24, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.aiMesh, ptr %235, i32 0, i32 1
  %237 = load i32, ptr %236, align 4, !tbaa !40
  %238 = icmp ne i32 %237, 0
  br i1 %238, label %244, label %239

239:                                              ; preds = %234, %232, %216
  store i32 13, ptr %10, align 4
  br label %308

240:                                              ; preds = %229
  %241 = landingpad { ptr, i32 }
          cleanup
  %242 = extractvalue { ptr, i32 } %241, 0
  store ptr %242, ptr %6, align 8
  %243 = extractvalue { ptr, i32 } %241, 1
  store i32 %243, ptr %7, align 4
  br label %314

244:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #11
  %245 = load ptr, ptr %24, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.aiMesh, ptr %245, i32 0, i32 1
  %247 = load i32, ptr %246, align 4, !tbaa !40
  %248 = zext i32 %247 to i64
  %249 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %248, i64 12)
  %250 = extractvalue { i64, i1 } %249, 1
  %251 = extractvalue { i64, i1 } %249, 0
  %252 = select i1 %250, i64 -1, i64 %251
  %253 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %252) #14
          to label %254 unwind label %270

254:                                              ; preds = %244
  %255 = icmp eq i64 %248, 0
  br i1 %255, label %262, label %256

256:                                              ; preds = %254
  %257 = getelementptr inbounds %class.aiVector3t, ptr %253, i64 %248
  br label %258

258:                                              ; preds = %258, %256
  %259 = phi ptr [ %253, %256 ], [ %260, %258 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %259) #11
  %260 = getelementptr inbounds %class.aiVector3t, ptr %259, i64 1
  %261 = icmp eq ptr %260, %257
  br i1 %261, label %262, label %258

262:                                              ; preds = %258, %254
  %263 = load ptr, ptr %24, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.aiMesh, ptr %263, i32 0, i32 8
  %265 = load i32, ptr %25, align 4, !tbaa !13
  %266 = zext i32 %265 to i64
  %267 = getelementptr inbounds [8 x ptr], ptr %264, i64 0, i64 %266
  store ptr %253, ptr %267, align 8, !tbaa !5
  store ptr %253, ptr %26, align 8, !tbaa !5
  %268 = load ptr, ptr %14, align 8, !tbaa !5
  %269 = load i32, ptr %268, align 4, !tbaa !22
  switch i32 %269, label %293 [
    i32 1, label %274
    i32 2, label %279
    i32 4, label %284
    i32 3, label %289
  ]

270:                                              ; preds = %304, %302, %293, %289, %284, %279, %274, %244
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %6, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  br label %314

274:                                              ; preds = %262
  %275 = load ptr, ptr %24, align 8, !tbaa !5
  %276 = getelementptr inbounds %"struct.Assimp::ComputeUVMappingProcess::MappingInfo", ptr %15, i32 0, i32 1
  %277 = load ptr, ptr %26, align 8, !tbaa !5
  invoke void @_ZN6Assimp23ComputeUVMappingProcess20ComputeSphereMappingEP6aiMeshRK10aiVector3tIfEPS4_(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr noundef %275, ptr noundef nonnull align 4 dereferenceable(12) %276, ptr noundef %277)
          to label %278 unwind label %270

278:                                              ; preds = %274
  br label %295

279:                                              ; preds = %262
  %280 = load ptr, ptr %24, align 8, !tbaa !5
  %281 = getelementptr inbounds %"struct.Assimp::ComputeUVMappingProcess::MappingInfo", ptr %15, i32 0, i32 1
  %282 = load ptr, ptr %26, align 8, !tbaa !5
  invoke void @_ZN6Assimp23ComputeUVMappingProcess22ComputeCylinderMappingEP6aiMeshRK10aiVector3tIfEPS4_(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr noundef %280, ptr noundef nonnull align 4 dereferenceable(12) %281, ptr noundef %282)
          to label %283 unwind label %270

283:                                              ; preds = %279
  br label %295

284:                                              ; preds = %262
  %285 = load ptr, ptr %24, align 8, !tbaa !5
  %286 = getelementptr inbounds %"struct.Assimp::ComputeUVMappingProcess::MappingInfo", ptr %15, i32 0, i32 1
  %287 = load ptr, ptr %26, align 8, !tbaa !5
  invoke void @_ZN6Assimp23ComputeUVMappingProcess19ComputePlaneMappingEP6aiMeshRK10aiVector3tIfEPS4_(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr noundef %285, ptr noundef nonnull align 4 dereferenceable(12) %286, ptr noundef %287)
          to label %288 unwind label %270

288:                                              ; preds = %284
  br label %295

289:                                              ; preds = %262
  %290 = load ptr, ptr %24, align 8, !tbaa !5
  %291 = load ptr, ptr %26, align 8, !tbaa !5
  invoke void @_ZN6Assimp23ComputeUVMappingProcess17ComputeBoxMappingEP6aiMeshP10aiVector3tIfE(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr noundef %290, ptr noundef %291)
          to label %292 unwind label %270

292:                                              ; preds = %289
  br label %295

293:                                              ; preds = %262
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.9, ptr noundef @.str.10, i32 noundef 429)
          to label %294 unwind label %270

294:                                              ; preds = %293
  br label %295

295:                                              ; preds = %294, %292, %288, %283, %278
  %296 = load i32, ptr %23, align 4, !tbaa !13
  %297 = icmp ne i32 %296, 0
  br i1 %297, label %298, label %306

298:                                              ; preds = %295
  %299 = load i32, ptr %18, align 4, !tbaa !13
  %300 = load i32, ptr %25, align 4, !tbaa !13
  %301 = icmp ne i32 %299, %300
  br i1 %301, label %302, label %306

302:                                              ; preds = %298
  %303 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %304 unwind label %270

304:                                              ; preds = %302
  invoke void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12) %303, ptr noundef @.str.11)
          to label %305 unwind label %270

305:                                              ; preds = %304
  br label %306

306:                                              ; preds = %305, %298, %295
  %307 = load i32, ptr %25, align 4, !tbaa !13
  store i32 %307, ptr %18, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  store i32 0, ptr %10, align 4
  br label %308

308:                                              ; preds = %306, %239
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  %309 = load i32, ptr %10, align 4
  switch i32 %309, label %367 [
    i32 0, label %310
    i32 13, label %311
  ]

310:                                              ; preds = %308
  br label %311

311:                                              ; preds = %310, %308
  %312 = load i32, ptr %23, align 4, !tbaa !13
  %313 = add i32 %312, 1
  store i32 %313, ptr %23, align 4, !tbaa !13
  br label %209, !llvm.loop !41

314:                                              ; preds = %270, %240
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  br label %330

315:                                              ; preds = %215
  %316 = load i32, ptr %18, align 4, !tbaa !13
  %317 = getelementptr inbounds %"struct.Assimp::ComputeUVMappingProcess::MappingInfo", ptr %15, i32 0, i32 2
  store i32 %316, ptr %317, align 4, !tbaa !31
  invoke void @_ZNSt7__cxx114listIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 4 dereferenceable(20) %15)
          to label %318 unwind label %204

318:                                              ; preds = %315
  br label %319

319:                                              ; preds = %318, %200
  %320 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 0, ptr %320, align 4, !tbaa !22
  %321 = load ptr, ptr %11, align 8, !tbaa !5
  %322 = load ptr, ptr %13, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.aiMaterialProperty, ptr %322, i32 0, i32 1
  %324 = load i32, ptr %323, align 4, !tbaa !24
  %325 = load ptr, ptr %13, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.aiMaterialProperty, ptr %325, i32 0, i32 2
  %327 = load i32, ptr %326, align 8, !tbaa !25
  %328 = invoke noundef i32 @_ZN10aiMaterial11AddPropertyIjEE8aiReturnPKT_jPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %321, ptr noundef %18, i32 noundef 1, ptr noundef @.str.12, i32 noundef %324, i32 noundef %327)
          to label %329 unwind label %204

329:                                              ; preds = %319
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 20, ptr %15) #11
  br label %332

330:                                              ; preds = %314, %204
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #11
  br label %331

331:                                              ; preds = %330, %137
  call void @llvm.lifetime.end.p0(i64 20, ptr %15) #11
  br label %336

332:                                              ; preds = %329, %89
  store i32 0, ptr %10, align 4
  br label %333

333:                                              ; preds = %332, %125
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #11
  %334 = load i32, ptr %10, align 4
  switch i32 %334, label %338 [
    i32 0, label %335
  ]

335:                                              ; preds = %333
  br label %337

336:                                              ; preds = %331, %117
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #11
  br label %351

337:                                              ; preds = %335, %75
  store i32 0, ptr %10, align 4
  br label %338

338:                                              ; preds = %337, %333
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  %339 = load i32, ptr %10, align 4
  switch i32 %339, label %367 [
    i32 0, label %340
    i32 7, label %341
  ]

340:                                              ; preds = %338
  br label %341

341:                                              ; preds = %340, %338
  %342 = load i32, ptr %12, align 4, !tbaa !13
  %343 = add i32 %342, 1
  store i32 %343, ptr %12, align 4, !tbaa !13
  br label %68, !llvm.loop !42

344:                                              ; preds = %74
  store i32 0, ptr %10, align 4
  br label %345

345:                                              ; preds = %344, %62
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #11
  %346 = load i32, ptr %10, align 4
  switch i32 %346, label %367 [
    i32 0, label %347
    i32 4, label %348
  ]

347:                                              ; preds = %345
  br label %348

348:                                              ; preds = %347, %345
  %349 = load i32, ptr %9, align 4, !tbaa !13
  %350 = add i32 %349, 1
  store i32 %350, ptr %9, align 4, !tbaa !13
  br label %42, !llvm.loop !43

351:                                              ; preds = %336, %63
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #11
  br label %360

352:                                              ; preds = %48
  %353 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %354 unwind label %356

354:                                              ; preds = %352
  invoke void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %353, ptr noundef @.str.13)
          to label %355 unwind label %356

355:                                              ; preds = %354
  call void @_ZNSt7__cxx1110_List_baseIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #11
  call void @llvm.lifetime.end.p0(i64 1024, ptr %5) #11
  ret void

356:                                              ; preds = %354, %352
  %357 = landingpad { ptr, i32 }
          cleanup
  %358 = extractvalue { ptr, i32 } %357, 0
  store ptr %358, ptr %6, align 8
  %359 = extractvalue { ptr, i32 } %357, 1
  store i32 %359, ptr %7, align 4
  br label %360

360:                                              ; preds = %356, %351
  call void @_ZNSt7__cxx1110_List_baseIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #11
  br label %361

361:                                              ; preds = %360, %37
  call void @llvm.lifetime.end.p0(i64 1024, ptr %5) #11
  br label %362

362:                                              ; preds = %361
  %363 = load ptr, ptr %6, align 8
  %364 = load i32, ptr %7, align 4
  %365 = insertvalue { ptr, i32 } poison, ptr %363, 0
  %366 = insertvalue { ptr, i32 } %365, i32 %364, 1
  resume { ptr, i32 } %366

367:                                              ; preds = %345, %338, %308
  unreachable
}

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

declare ptr @__cxa_allocate_exception(i64)

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

declare i32 @__gxx_personality_v0(...)

declare void @__cxa_free_exception(ptr)

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #6

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

declare void @_ZN6Assimp6Logger4infoEPKc(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) #5

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

declare noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv() #5

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

declare ptr @aiTextureTypeToString(i32 noundef) #5

declare noundef ptr @_ZN6Assimp19MappingTypeToStringE16aiTextureMapping(i32 noundef) #5

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt4findISt14_List_iteratorIN6Assimp23ComputeUVMappingProcess11MappingInfoEES3_ET_S5_S5_RKT0_(ptr, ptr, ptr noundef nonnull align 4 dereferenceable(20)) #8

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z18FindEmptyUVChannelP6aiMesh(ptr noundef) #8

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx114listIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(20)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN10aiMaterial11AddPropertyIjEE8aiReturnPKT_jPKcjj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef) #4 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTS7aiScene", !11, i64 0, !6, i64 8, !11, i64 16, !6, i64 24, !11, i64 32, !6, i64 40, !11, i64 48, !6, i64 56, !11, i64 64, !6, i64 72, !11, i64 80, !6, i64 88, !11, i64 96, !6, i64 104, !6, i64 112, !12, i64 120, !11, i64 1148, !6, i64 1152, !6, i64 1160}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTS8aiString", !11, i64 0, !7, i64 4}
!13 = !{!11, !11, i64 0}
!14 = !{!10, !11, i64 32}
!15 = !{!10, !6, i64 40}
!16 = !{!17, !11, i64 8}
!17 = !{!"_ZTS10aiMaterial", !6, i64 0, !11, i64 8, !11, i64 12}
!18 = !{!17, !6, i64 0}
!19 = !{!20, !6, i64 1048}
!20 = !{!"_ZTS18aiMaterialProperty", !12, i64 0, !11, i64 1028, !11, i64 1032, !11, i64 1036, !21, i64 1040, !6, i64 1048}
!21 = !{!"_ZTS18aiPropertyTypeInfo", !7, i64 0}
!22 = !{!23, !23, i64 0}
!23 = !{!"_ZTS16aiTextureMapping", !7, i64 0}
!24 = !{!20, !11, i64 1028}
!25 = !{!20, !11, i64 1032}
!26 = !{i64 0, i64 4, !27, i64 4, i64 4, !27, i64 8, i64 4, !27}
!27 = !{!28, !28, i64 0}
!28 = !{!"float", !7, i64 0}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = !{!32, !11, i64 16}
!32 = !{!"_ZTSN6Assimp23ComputeUVMappingProcess11MappingInfoE", !23, i64 0, !33, i64 4, !11, i64 16}
!33 = !{!"_ZTS10aiVector3tIfE", !28, i64 0, !28, i64 4, !28, i64 8}
!34 = !{!10, !11, i64 16}
!35 = !{!10, !6, i64 24}
!36 = !{!37, !11, i64 232}
!37 = !{!"_ZTS6aiMesh", !11, i64 0, !11, i64 4, !11, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !7, i64 48, !7, i64 112, !7, i64 176, !6, i64 208, !11, i64 216, !6, i64 224, !11, i64 232, !12, i64 236, !11, i64 1264, !6, i64 1272, !38, i64 1280, !39, i64 1284, !6, i64 1312}
!38 = !{!"_ZTS16aiMorphingMethod", !7, i64 0}
!39 = !{!"_ZTS6aiAABB", !33, i64 0, !33, i64 12}
!40 = !{!37, !11, i64 4}
!41 = distinct !{!41, !30}
!42 = distinct !{!42, !30}
!43 = distinct !{!43, !30}


; 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::list" = type { %"class.std::__cxx11::_List_base" }
%"class.std::__cxx11::_List_base" = type { %"struct.std::__cxx11::_List_base<Assimp::ComputeUVMappingProcess::MappingInfo, std::allocator<Assimp::ComputeUVMappingProcess::MappingInfo>>::_List_impl" }
%"struct.std::__cxx11::_List_base<Assimp::ComputeUVMappingProcess::MappingInfo, std::allocator<Assimp::ComputeUVMappingProcess::MappingInfo>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"struct.Assimp::ComputeUVMappingProcess::MappingInfo" = type { i32, %class.aiVector3t, i32 }
%class.aiVector3t = type { float, float, float }
%"struct.std::_List_iterator" = type { ptr }

@.str.3 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [83 x i8], align 1
@_ZTI17DeadlyImportError = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.5 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [184 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [28 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

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

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

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

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

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

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

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

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp23ComputeUVMappingProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr nocapture noundef readonly %1) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca [1024 x i8], align 16
  %4 = alloca %"class.std::__cxx11::list", align 8
  %5 = alloca %"struct.Assimp::ComputeUVMappingProcess::MappingInfo", align 4
  %6 = alloca i32, align 4
  %7 = alloca %"struct.std::_List_iterator", align 8
  %8 = alloca %"struct.std::_List_iterator", align 8
  %9 = tail call noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
  tail call void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull @.str.3)
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %3) #11
  %10 = load i32, ptr %1, align 8, !tbaa !5
  %11 = and i32 %10, 8
  %.not = icmp eq i32 %11, 0
  br i1 %.not, label %17, label %12

12:                                               ; preds = %2
  %13 = tail call ptr @__cxa_allocate_exception(i64 16) #11
  invoke void @_ZN17DeadlyImportErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull @.str.4)
          to label %14 unwind label %15

14:                                               ; preds = %12
  tail call void @__cxa_throw(ptr nonnull %13, ptr nonnull @_ZTI17DeadlyImportError, ptr nonnull @_ZNSt13runtime_errorD2Ev) #12
  unreachable

15:                                               ; preds = %12
  %16 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %13) #11
  br label %173

17:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #11
  call void @_ZNSt7__cxx114listIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #11
  %18 = getelementptr inbounds i8, ptr %1, i64 32
  %19 = load i32, ptr %18, align 8, !tbaa !12
  %.not112 = icmp eq i32 %19, 0
  br i1 %.not112, label %._crit_edge111, label %.lr.ph110

.lr.ph110:                                        ; preds = %17
  %20 = getelementptr inbounds i8, ptr %1, i64 40
  %21 = getelementptr inbounds i8, ptr %5, i64 4
  %22 = getelementptr inbounds i8, ptr %1, i64 16
  %23 = getelementptr inbounds i8, ptr %1, i64 24
  %24 = getelementptr inbounds i8, ptr %5, i64 16
  br label %26

._crit_edge111:                                   ; preds = %.loopexit102, %17
  %25 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %168 unwind label %170

26:                                               ; preds = %.lr.ph110, %.loopexit102
  %indvars.iv124 = phi i64 [ 0, %.lr.ph110 ], [ %indvars.iv.next125, %.loopexit102 ]
  call void @_ZNSt7__cxx114listIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #11
  %27 = load ptr, ptr %20, align 8, !tbaa !13
  %28 = getelementptr inbounds ptr, ptr %27, i64 %indvars.iv124
  %29 = load ptr, ptr %28, align 8, !tbaa !14
  %30 = icmp eq ptr %29, null
  br i1 %30, label %33, label %.preheader101

.preheader101:                                    ; preds = %26
  %31 = getelementptr inbounds i8, ptr %29, i64 8
  %32 = load i32, ptr %31, align 8, !tbaa !15
  %.not113 = icmp eq i32 %32, 0
  br i1 %.not113, label %.loopexit102, label %.lr.ph107

33:                                               ; preds = %26
  %34 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %35 unwind label %36

35:                                               ; preds = %33
  invoke void @_ZN6Assimp6Logger4infoEPKc(ptr noundef nonnull align 8 dereferenceable(12) %34, ptr noundef nonnull @.str.5)
          to label %.loopexit102 unwind label %36

36:                                               ; preds = %35, %33
  %37 = landingpad { ptr, i32 }
          cleanup
  br label %172

.lr.ph107:                                        ; preds = %.preheader101, %.critedge
  %indvars.iv121 = phi i64 [ %indvars.iv.next122, %.critedge ], [ 0, %.preheader101 ]
  %38 = load ptr, ptr %29, align 8, !tbaa !17
  %39 = getelementptr inbounds ptr, ptr %38, i64 %indvars.iv121
  %40 = load ptr, ptr %39, align 8, !tbaa !14
  %41 = getelementptr inbounds i8, ptr %40, i64 4
  %42 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %41, ptr noundef nonnull dereferenceable(1) @.str.6) #13
  %.not80 = icmp eq i32 %42, 0
  br i1 %.not80, label %43, label %.critedge

43:                                               ; preds = %.lr.ph107
  %44 = getelementptr inbounds i8, ptr %40, i64 1048
  %45 = load ptr, ptr %44, align 8, !tbaa !18
  %46 = load i32, ptr %45, align 4, !tbaa !21
  %.not81 = icmp eq i32 %46, 0
  br i1 %.not81, label %.critedge, label %47

47:                                               ; preds = %43
  %48 = invoke noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv()
          to label %49 unwind label %63

49:                                               ; preds = %47
  br i1 %48, label %65, label %50

50:                                               ; preds = %49
  %51 = getelementptr inbounds i8, ptr %40, i64 1028
  %52 = load i32, ptr %51, align 4, !tbaa !23
  %53 = invoke ptr @aiTextureTypeToString(i32 noundef %52)
          to label %54 unwind label %63

54:                                               ; preds = %50
  %55 = getelementptr inbounds i8, ptr %40, i64 1032
  %56 = load i32, ptr %55, align 8, !tbaa !24
  %57 = load i32, ptr %45, align 4, !tbaa !21
  %58 = invoke noundef ptr @_ZN6Assimp19MappingTypeToStringE16aiTextureMapping(i32 noundef %57)
          to label %59 unwind label %63

59:                                               ; preds = %54
  %60 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %3, i64 noundef 1024, ptr noundef nonnull @.str.7, ptr noundef %53, i32 noundef %56, ptr noundef %58) #11
  %61 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %62 unwind label %63

62:                                               ; preds = %59
  invoke void @_ZN6Assimp6Logger4infoIJRA1024_cEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %61, ptr noundef nonnull align 1 dereferenceable(1024) %3)
          to label %65 unwind label %63

63:                                               ; preds = %62, %59, %54, %50, %47
  %64 = landingpad { ptr, i32 }
          cleanup
  br label %172

65:                                               ; preds = %62, %49
  %66 = load i32, ptr %45, align 4, !tbaa !21
  %67 = icmp eq i32 %66, 5
  br i1 %67, label %.critedge, label %68

68:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %5) #11
  invoke void @_ZN6Assimp23ComputeUVMappingProcess11MappingInfoC2E16aiTextureMapping(ptr noundef nonnull align 4 dereferenceable(20) %5, i32 noundef %66)
          to label %.preheader100 unwind label %74

.preheader100:                                    ; preds = %68
  %69 = load i32, ptr %31, align 8, !tbaa !15
  %.not114 = icmp eq i32 %69, 0
  br i1 %.not114, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader100
  %70 = load ptr, ptr %29, align 8, !tbaa !17
  %71 = getelementptr inbounds i8, ptr %40, i64 1028
  %72 = load i32, ptr %71, align 4, !tbaa !23
  %73 = getelementptr inbounds i8, ptr %40, i64 1032
  %wide.trip.count = zext i32 %69 to i64
  br label %76

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

76:                                               ; preds = %.lr.ph, %91
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %91 ]
  %77 = getelementptr inbounds ptr, ptr %70, i64 %indvars.iv
  %78 = load ptr, ptr %77, align 8, !tbaa !14
  %79 = getelementptr inbounds i8, ptr %78, i64 1028
  %80 = load i32, ptr %79, align 4, !tbaa !23
  %.not82 = icmp eq i32 %80, %72
  br i1 %.not82, label %81, label %91

81:                                               ; preds = %76
  %82 = getelementptr inbounds i8, ptr %78, i64 1032
  %83 = load i32, ptr %82, align 8, !tbaa !24
  %84 = load i32, ptr %73, align 8, !tbaa !24
  %.not83 = icmp eq i32 %83, %84
  br i1 %.not83, label %85, label %91

85:                                               ; preds = %81
  %86 = getelementptr inbounds i8, ptr %78, i64 4
  %87 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %86, ptr noundef nonnull dereferenceable(1) @.str.8) #13
  %.not84 = icmp eq i32 %87, 0
  br i1 %.not84, label %88, label %91

88:                                               ; preds = %85
  %89 = getelementptr inbounds i8, ptr %78, i64 1048
  %90 = load ptr, ptr %89, align 8, !tbaa !18
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %21, ptr noundef nonnull align 4 dereferenceable(12) %90, i64 12, i1 false), !tbaa.struct !25
  br label %.loopexit

91:                                               ; preds = %81, %76, %85
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit, label %76, !llvm.loop !28

.loopexit:                                        ; preds = %91, %.preheader100, %88
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #11
  store i32 99999999, ptr %6, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #11
  %92 = call ptr @_ZNSt7__cxx114listIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #11
  %93 = call ptr @_ZNSt7__cxx114listIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #11
  %94 = invoke ptr @_ZSt4findISt14_List_iteratorIN6Assimp23ComputeUVMappingProcess11MappingInfoEES3_ET_S5_S5_RKT0_(ptr %92, ptr %93, ptr noundef nonnull align 4 dereferenceable(20) %5)
          to label %95 unwind label %103

95:                                               ; preds = %.loopexit
  store ptr %94, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #11
  %96 = call ptr @_ZNSt7__cxx114listIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #11
  store ptr %96, ptr %8, align 8
  %97 = call noundef zeroext i1 @_ZStneRKSt14_List_iteratorIN6Assimp23ComputeUVMappingProcess11MappingInfoEES5_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %7) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #11
  br i1 %97, label %99, label %.preheader

.preheader:                                       ; preds = %95
  %98 = load i32, ptr %22, align 8, !tbaa !31
  %.not115 = icmp eq i32 %98, 0
  br i1 %.not115, label %._crit_edge, label %.lr.ph105

99:                                               ; preds = %95
  %100 = call noundef nonnull align 4 dereferenceable(20) ptr @_ZNKSt14_List_iteratorIN6Assimp23ComputeUVMappingProcess11MappingInfoEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #11
  %101 = getelementptr inbounds i8, ptr %100, i64 16
  %102 = load i32, ptr %101, align 4, !tbaa !32
  store i32 %102, ptr %6, align 4, !tbaa !30
  br label %153

103:                                              ; preds = %153, %._crit_edge, %.loopexit
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %160

._crit_edge:                                      ; preds = %149, %.preheader
  %105 = load i32, ptr %6, align 4, !tbaa !30
  store i32 %105, ptr %24, align 4, !tbaa !32
  invoke void @_ZNSt7__cxx114listIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(20) %5)
          to label %153 unwind label %103

.lr.ph105:                                        ; preds = %.preheader, %149
  %indvars.iv118 = phi i64 [ %indvars.iv.next119, %149 ], [ 0, %.preheader ]
  %106 = load ptr, ptr %23, align 8, !tbaa !35
  %107 = getelementptr inbounds ptr, ptr %106, i64 %indvars.iv118
  %108 = load ptr, ptr %107, align 8, !tbaa !14
  %109 = getelementptr inbounds i8, ptr %108, i64 232
  %110 = load i32, ptr %109, align 8, !tbaa !36
  %111 = zext i32 %110 to i64
  %.not85 = icmp eq i64 %indvars.iv124, %111
  br i1 %.not85, label %112, label %149

112:                                              ; preds = %.lr.ph105
  %113 = invoke noundef i32 @_Z18FindEmptyUVChannelP6aiMesh(ptr noundef nonnull %108)
          to label %114 unwind label %119

114:                                              ; preds = %112
  %115 = icmp eq i32 %113, -1
  br i1 %115, label %149, label %116

116:                                              ; preds = %114
  %117 = getelementptr inbounds i8, ptr %108, i64 4
  %118 = load i32, ptr %117, align 4, !tbaa !40
  %.not86 = icmp eq i32 %118, 0
  br i1 %.not86, label %149, label %121

119:                                              ; preds = %112
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %160

121:                                              ; preds = %116
  %122 = zext i32 %118 to i64
  %123 = mul nuw nsw i64 %122, 12
  %124 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %123) #14
          to label %125 unwind label %136

125:                                              ; preds = %121
  %126 = getelementptr inbounds %class.aiVector3t, ptr %124, i64 %122
  br label %127

127:                                              ; preds = %127, %125
  %128 = phi ptr [ %124, %125 ], [ %129, %127 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %128) #11
  %129 = getelementptr inbounds i8, ptr %128, i64 12
  %130 = icmp eq ptr %129, %126
  br i1 %130, label %131, label %127

131:                                              ; preds = %127
  %132 = getelementptr inbounds i8, ptr %108, i64 112
  %133 = zext i32 %113 to i64
  %134 = getelementptr inbounds [8 x ptr], ptr %132, i64 0, i64 %133
  store ptr %124, ptr %134, align 8, !tbaa !14
  %135 = load i32, ptr %45, align 4, !tbaa !21
  switch i32 %135, label %142 [
    i32 1, label %138
    i32 2, label %139
    i32 4, label %140
    i32 3, label %141
  ]

136:                                              ; preds = %147, %145, %142, %141, %140, %139, %138, %121
  %137 = landingpad { ptr, i32 }
          cleanup
  br label %160

138:                                              ; preds = %131
  invoke void @_ZN6Assimp23ComputeUVMappingProcess20ComputeSphereMappingEP6aiMeshRK10aiVector3tIfEPS4_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %108, ptr noundef nonnull align 4 dereferenceable(12) %21, ptr noundef nonnull %124)
          to label %143 unwind label %136

139:                                              ; preds = %131
  invoke void @_ZN6Assimp23ComputeUVMappingProcess22ComputeCylinderMappingEP6aiMeshRK10aiVector3tIfEPS4_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %108, ptr noundef nonnull align 4 dereferenceable(12) %21, ptr noundef nonnull %124)
          to label %143 unwind label %136

140:                                              ; preds = %131
  invoke void @_ZN6Assimp23ComputeUVMappingProcess19ComputePlaneMappingEP6aiMeshRK10aiVector3tIfEPS4_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %108, ptr noundef nonnull align 4 dereferenceable(12) %21, ptr noundef nonnull %124)
          to label %143 unwind label %136

141:                                              ; preds = %131
  invoke void @_ZN6Assimp23ComputeUVMappingProcess17ComputeBoxMappingEP6aiMeshP10aiVector3tIfE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %108, ptr noundef nonnull %124)
          to label %143 unwind label %136

142:                                              ; preds = %131
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.10, i32 noundef 429)
          to label %143 unwind label %136

143:                                              ; preds = %142, %141, %140, %139, %138
  %.not87 = icmp eq i64 %indvars.iv118, 0
  %144 = load i32, ptr %6, align 4
  %.not88 = icmp eq i32 %144, %113
  %or.cond = select i1 %.not87, i1 true, i1 %.not88
  br i1 %or.cond, label %148, label %145

145:                                              ; preds = %143
  %146 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %147 unwind label %136

147:                                              ; preds = %145
  invoke void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12) %146, ptr noundef nonnull @.str.11)
          to label %148 unwind label %136

148:                                              ; preds = %147, %143
  store i32 %113, ptr %6, align 4, !tbaa !30
  br label %149

149:                                              ; preds = %.lr.ph105, %114, %116, %148
  %indvars.iv.next119 = add nuw nsw i64 %indvars.iv118, 1
  %150 = load i32, ptr %22, align 8, !tbaa !31
  %151 = zext i32 %150 to i64
  %152 = icmp ult i64 %indvars.iv.next119, %151
  br i1 %152, label %.lr.ph105, label %._crit_edge, !llvm.loop !41

153:                                              ; preds = %._crit_edge, %99
  store i32 0, ptr %45, align 4, !tbaa !21
  %154 = getelementptr inbounds i8, ptr %40, i64 1028
  %155 = load i32, ptr %154, align 4, !tbaa !23
  %156 = getelementptr inbounds i8, ptr %40, i64 1032
  %157 = load i32, ptr %156, align 8, !tbaa !24
  %158 = invoke noundef i32 @_ZN10aiMaterial11AddPropertyIjEE8aiReturnPKT_jPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull %6, i32 noundef 1, ptr noundef nonnull @.str.12, i32 noundef %155, i32 noundef %157)
          to label %159 unwind label %103

159:                                              ; preds = %153
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %5) #11
  br label %.critedge

160:                                              ; preds = %119, %136, %103
  %.pn90 = phi { ptr, i32 } [ %104, %103 ], [ %137, %136 ], [ %120, %119 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11
  br label %161

161:                                              ; preds = %160, %74
  %.pn90.pn = phi { ptr, i32 } [ %.pn90, %160 ], [ %75, %74 ]
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %5) #11
  br label %172

.critedge:                                        ; preds = %65, %.lr.ph107, %43, %159
  %indvars.iv.next122 = add nuw nsw i64 %indvars.iv121, 1
  %162 = load i32, ptr %31, align 8, !tbaa !15
  %163 = zext i32 %162 to i64
  %164 = icmp ult i64 %indvars.iv.next122, %163
  br i1 %164, label %.lr.ph107, label %.loopexit102, !llvm.loop !42

.loopexit102:                                     ; preds = %.critedge, %.preheader101, %35
  %indvars.iv.next125 = add nuw nsw i64 %indvars.iv124, 1
  %165 = load i32, ptr %18, align 8, !tbaa !12
  %166 = zext i32 %165 to i64
  %167 = icmp ult i64 %indvars.iv.next125, %166
  br i1 %167, label %26, label %._crit_edge111, !llvm.loop !43

168:                                              ; preds = %._crit_edge111
  invoke void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %25, ptr noundef nonnull @.str.13)
          to label %169 unwind label %170

169:                                              ; preds = %168
  call void @_ZNSt7__cxx1110_List_baseIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %3) #11
  ret void

170:                                              ; preds = %168, %._crit_edge111
  %171 = landingpad { ptr, i32 }
          cleanup
  br label %172

172:                                              ; preds = %36, %161, %63, %170
  %.pn94.pn = phi { ptr, i32 } [ %171, %170 ], [ %37, %36 ], [ %.pn90.pn, %161 ], [ %64, %63 ]
  call void @_ZNSt7__cxx1110_List_baseIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #11
  br label %173

173:                                              ; preds = %172, %15
  %.pn97 = phi { ptr, i32 } [ %16, %15 ], [ %.pn94.pn, %172 ]
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %3) #11
  resume { ptr, i32 } %.pn97
}

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare i32 @__gxx_personality_v0(...)

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #6

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

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

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

declare void @_ZN6Assimp6Logger4infoEPKc(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) local_unnamed_addr #5

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

declare noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv() local_unnamed_addr #5

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

declare ptr @aiTextureTypeToString(i32 noundef) local_unnamed_addr #5

declare noundef ptr @_ZN6Assimp19MappingTypeToStringE16aiTextureMapping(i32 noundef) local_unnamed_addr #5

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z18FindEmptyUVChannelP6aiMesh(ptr noundef) local_unnamed_addr #9

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx114listIN6Assimp23ComputeUVMappingProcess11MappingInfoESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(20)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN10aiMaterial11AddPropertyIjEE8aiReturnPKT_jPKcjj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #4 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTS7aiScene", !7, i64 0, !10, i64 8, !7, i64 16, !10, i64 24, !7, i64 32, !10, i64 40, !7, i64 48, !10, i64 56, !7, i64 64, !10, i64 72, !7, i64 80, !10, i64 88, !7, i64 96, !10, i64 104, !10, i64 112, !11, i64 120, !7, i64 1148, !10, i64 1152, !10, i64 1160}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"_ZTS8aiString", !7, i64 0, !8, i64 4}
!12 = !{!6, !7, i64 32}
!13 = !{!6, !10, i64 40}
!14 = !{!10, !10, i64 0}
!15 = !{!16, !7, i64 8}
!16 = !{!"_ZTS10aiMaterial", !10, i64 0, !7, i64 8, !7, i64 12}
!17 = !{!16, !10, i64 0}
!18 = !{!19, !10, i64 1048}
!19 = !{!"_ZTS18aiMaterialProperty", !11, i64 0, !7, i64 1028, !7, i64 1032, !7, i64 1036, !20, i64 1040, !10, i64 1048}
!20 = !{!"_ZTS18aiPropertyTypeInfo", !8, i64 0}
!21 = !{!22, !22, i64 0}
!22 = !{!"_ZTS16aiTextureMapping", !8, i64 0}
!23 = !{!19, !7, i64 1028}
!24 = !{!19, !7, i64 1032}
!25 = !{i64 0, i64 4, !26, i64 4, i64 4, !26, i64 8, i64 4, !26}
!26 = !{!27, !27, i64 0}
!27 = !{!"float", !8, i64 0}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!7, !7, i64 0}
!31 = !{!6, !7, i64 16}
!32 = !{!33, !7, i64 16}
!33 = !{!"_ZTSN6Assimp23ComputeUVMappingProcess11MappingInfoE", !22, i64 0, !34, i64 4, !7, i64 16}
!34 = !{!"_ZTS10aiVector3tIfE", !27, i64 0, !27, i64 4, !27, i64 8}
!35 = !{!6, !10, i64 24}
!36 = !{!37, !7, i64 232}
!37 = !{!"_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, !38, i64 1280, !39, i64 1284, !10, i64 1312}
!38 = !{!"_ZTS16aiMorphingMethod", !8, i64 0}
!39 = !{!"_ZTS6aiAABB", !34, i64 0, !34, i64 12}
!40 = !{!37, !7, i64 4}
!41 = distinct !{!41, !29}
!42 = distinct !{!42, !29}
!43 = distinct !{!43, !29}


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