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

; 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"

%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 }
%struct.aiAnimMesh = type { %struct.aiString, ptr, ptr, ptr, ptr, [8 x ptr], [8 x ptr], i32, float }
%class.aiColor4t = type { float, float, float, float }

; 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 nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK10aiAnimMesh10HasNormalsEv(ptr noundef nonnull align 8 dereferenceable(1200)) #1 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp23FlipWindingOrderProcess11ProcessMeshEP6aiMesh(ptr noundef %0) #2 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #4
  store i32 0, ptr %3, align 4, !tbaa !9
  br label %17

17:                                               ; preds = %61, %1
  %18 = load i32, ptr %3, align 4, !tbaa !9
  %19 = load ptr, ptr %2, align 8, !tbaa !5
  %20 = getelementptr inbounds %struct.aiMesh, ptr %19, i32 0, i32 2
  %21 = load i32, ptr %20, align 8, !tbaa !11
  %22 = icmp ult i32 %18, %21
  br i1 %22, label %24, label %23

23:                                               ; preds = %17
  store i32 2, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #4
  br label %64

24:                                               ; preds = %17
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #4
  %25 = load ptr, ptr %2, align 8, !tbaa !5
  %26 = getelementptr inbounds %struct.aiMesh, ptr %25, i32 0, i32 10
  %27 = load ptr, ptr %26, align 8, !tbaa !18
  %28 = load i32, ptr %3, align 4, !tbaa !9
  %29 = zext i32 %28 to i64
  %30 = getelementptr inbounds %struct.aiFace, ptr %27, i64 %29
  store ptr %30, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #4
  store i32 0, ptr %6, align 4, !tbaa !9
  br label %31

31:                                               ; preds = %57, %24
  %32 = load i32, ptr %6, align 4, !tbaa !9
  %33 = load ptr, ptr %5, align 8, !tbaa !5
  %34 = getelementptr inbounds %struct.aiFace, ptr %33, i32 0, i32 0
  %35 = load i32, ptr %34, align 8, !tbaa !19
  %36 = udiv i32 %35, 2
  %37 = icmp ult i32 %32, %36
  br i1 %37, label %39, label %38

38:                                               ; preds = %31
  store i32 5, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #4
  br label %60

39:                                               ; preds = %31
  %40 = load ptr, ptr %5, align 8, !tbaa !5
  %41 = getelementptr inbounds %struct.aiFace, ptr %40, i32 0, i32 1
  %42 = load ptr, ptr %41, align 8, !tbaa !21
  %43 = load i32, ptr %6, align 4, !tbaa !9
  %44 = zext i32 %43 to i64
  %45 = getelementptr inbounds i32, ptr %42, i64 %44
  %46 = load ptr, ptr %5, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct.aiFace, ptr %46, i32 0, i32 1
  %48 = load ptr, ptr %47, align 8, !tbaa !21
  %49 = load ptr, ptr %5, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.aiFace, ptr %49, i32 0, i32 0
  %51 = load i32, ptr %50, align 8, !tbaa !19
  %52 = sub i32 %51, 1
  %53 = load i32, ptr %6, align 4, !tbaa !9
  %54 = sub i32 %52, %53
  %55 = zext i32 %54 to i64
  %56 = getelementptr inbounds i32, ptr %48, i64 %55
  call void @_ZSt4swapIjENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) %45, ptr noundef nonnull align 4 dereferenceable(4) %56) #4
  br label %57

57:                                               ; preds = %39
  %58 = load i32, ptr %6, align 4, !tbaa !9
  %59 = add i32 %58, 1
  store i32 %59, ptr %6, align 4, !tbaa !9
  br label %31, !llvm.loop !22

60:                                               ; preds = %38
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #4
  br label %61

61:                                               ; preds = %60
  %62 = load i32, ptr %3, align 4, !tbaa !9
  %63 = add i32 %62, 1
  store i32 %63, ptr %3, align 4, !tbaa !9
  br label %17, !llvm.loop !24

64:                                               ; preds = %23
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #4
  store i32 0, ptr %7, align 4, !tbaa !9
  br label %65

65:                                               ; preds = %275, %64
  %66 = load i32, ptr %7, align 4, !tbaa !9
  %67 = load ptr, ptr %2, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.aiMesh, ptr %67, i32 0, i32 15
  %69 = load i32, ptr %68, align 8, !tbaa !25
  %70 = icmp ult i32 %66, %69
  br i1 %70, label %72, label %71

71:                                               ; preds = %65
  store i32 8, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #4
  br label %278

72:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #4
  %73 = load ptr, ptr %2, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.aiMesh, ptr %73, i32 0, i32 16
  %75 = load ptr, ptr %74, align 8, !tbaa !26
  %76 = load i32, ptr %7, align 4, !tbaa !9
  %77 = zext i32 %76 to i64
  %78 = getelementptr inbounds ptr, ptr %75, i64 %77
  %79 = load ptr, ptr %78, align 8, !tbaa !5
  store ptr %79, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  %80 = load ptr, ptr %8, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.aiAnimMesh, ptr %80, i32 0, i32 7
  %82 = load i32, ptr %81, align 8, !tbaa !27
  store i32 %82, ptr %9, align 4, !tbaa !9
  %83 = load ptr, ptr %8, align 8, !tbaa !5
  %84 = call noundef zeroext i1 @_ZNK10aiAnimMesh12HasPositionsEv(ptr noundef nonnull align 8 dereferenceable(1200) %83)
  br i1 %84, label %85, label %111

85:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #4
  store i32 0, ptr %10, align 4, !tbaa !9
  br label %86

86:                                               ; preds = %107, %85
  %87 = load i32, ptr %10, align 4, !tbaa !9
  %88 = load i32, ptr %9, align 4, !tbaa !9
  %89 = icmp ult i32 %87, %88
  br i1 %89, label %91, label %90

90:                                               ; preds = %86
  store i32 11, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  br label %110

91:                                               ; preds = %86
  %92 = load ptr, ptr %8, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.aiAnimMesh, ptr %92, i32 0, i32 1
  %94 = load ptr, ptr %93, align 8, !tbaa !29
  %95 = load i32, ptr %10, align 4, !tbaa !9
  %96 = zext i32 %95 to i64
  %97 = getelementptr inbounds %class.aiVector3t, ptr %94, i64 %96
  %98 = load ptr, ptr %8, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.aiAnimMesh, ptr %98, i32 0, i32 1
  %100 = load ptr, ptr %99, align 8, !tbaa !29
  %101 = load i32, ptr %9, align 4, !tbaa !9
  %102 = sub i32 %101, 1
  %103 = load i32, ptr %10, align 4, !tbaa !9
  %104 = sub i32 %102, %103
  %105 = zext i32 %104 to i64
  %106 = getelementptr inbounds %class.aiVector3t, ptr %100, i64 %105
  call void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12) %97, ptr noundef nonnull align 4 dereferenceable(12) %106) #4
  br label %107

107:                                              ; preds = %91
  %108 = load i32, ptr %10, align 4, !tbaa !9
  %109 = add i32 %108, 1
  store i32 %109, ptr %10, align 4, !tbaa !9
  br label %86, !llvm.loop !30

110:                                              ; preds = %90
  br label %111

111:                                              ; preds = %110, %72
  %112 = load ptr, ptr %8, align 8, !tbaa !5
  %113 = call noundef zeroext i1 @_ZNK10aiAnimMesh10HasNormalsEv(ptr noundef nonnull align 8 dereferenceable(1200) %112)
  br i1 %113, label %114, label %140

114:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %115

115:                                              ; preds = %136, %114
  %116 = load i32, ptr %11, align 4, !tbaa !9
  %117 = load i32, ptr %9, align 4, !tbaa !9
  %118 = icmp ult i32 %116, %117
  br i1 %118, label %120, label %119

119:                                              ; preds = %115
  store i32 14, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  br label %139

120:                                              ; preds = %115
  %121 = load ptr, ptr %8, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.aiAnimMesh, ptr %121, i32 0, i32 2
  %123 = load ptr, ptr %122, align 8, !tbaa !31
  %124 = load i32, ptr %11, align 4, !tbaa !9
  %125 = zext i32 %124 to i64
  %126 = getelementptr inbounds %class.aiVector3t, ptr %123, i64 %125
  %127 = load ptr, ptr %8, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.aiAnimMesh, ptr %127, i32 0, i32 2
  %129 = load ptr, ptr %128, align 8, !tbaa !31
  %130 = load i32, ptr %9, align 4, !tbaa !9
  %131 = sub i32 %130, 1
  %132 = load i32, ptr %11, align 4, !tbaa !9
  %133 = sub i32 %131, %132
  %134 = zext i32 %133 to i64
  %135 = getelementptr inbounds %class.aiVector3t, ptr %129, i64 %134
  call void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12) %126, ptr noundef nonnull align 4 dereferenceable(12) %135) #4
  br label %136

136:                                              ; preds = %120
  %137 = load i32, ptr %11, align 4, !tbaa !9
  %138 = add i32 %137, 1
  store i32 %138, ptr %11, align 4, !tbaa !9
  br label %115, !llvm.loop !32

139:                                              ; preds = %119
  br label %140

140:                                              ; preds = %139, %111
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %141

141:                                              ; preds = %182, %140
  %142 = load i32, ptr %12, align 4, !tbaa !9
  %143 = icmp ult i32 %142, 8
  br i1 %143, label %145, label %144

144:                                              ; preds = %141
  store i32 17, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  br label %185

145:                                              ; preds = %141
  %146 = load ptr, ptr %8, align 8, !tbaa !5
  %147 = load i32, ptr %12, align 4, !tbaa !9
  %148 = call noundef zeroext i1 @_ZNK10aiAnimMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1200) %146, i32 noundef %147)
  br i1 %148, label %149, label %181

149:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %150

150:                                              ; preds = %177, %149
  %151 = load i32, ptr %13, align 4, !tbaa !9
  %152 = load i32, ptr %9, align 4, !tbaa !9
  %153 = icmp ult i32 %151, %152
  br i1 %153, label %155, label %154

154:                                              ; preds = %150
  store i32 20, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  br label %180

155:                                              ; preds = %150
  %156 = load ptr, ptr %8, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.aiAnimMesh, ptr %156, i32 0, i32 6
  %158 = load i32, ptr %12, align 4, !tbaa !9
  %159 = zext i32 %158 to i64
  %160 = getelementptr inbounds [8 x ptr], ptr %157, i64 0, i64 %159
  %161 = load ptr, ptr %160, align 8, !tbaa !5
  %162 = load i32, ptr %13, align 4, !tbaa !9
  %163 = zext i32 %162 to i64
  %164 = getelementptr inbounds %class.aiVector3t, ptr %161, i64 %163
  %165 = load ptr, ptr %8, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.aiAnimMesh, ptr %165, i32 0, i32 6
  %167 = load i32, ptr %12, align 4, !tbaa !9
  %168 = zext i32 %167 to i64
  %169 = getelementptr inbounds [8 x ptr], ptr %166, i64 0, i64 %168
  %170 = load ptr, ptr %169, align 8, !tbaa !5
  %171 = load i32, ptr %9, align 4, !tbaa !9
  %172 = sub i32 %171, 1
  %173 = load i32, ptr %13, align 4, !tbaa !9
  %174 = sub i32 %172, %173
  %175 = zext i32 %174 to i64
  %176 = getelementptr inbounds %class.aiVector3t, ptr %170, i64 %175
  call void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12) %164, ptr noundef nonnull align 4 dereferenceable(12) %176) #4
  br label %177

177:                                              ; preds = %155
  %178 = load i32, ptr %13, align 4, !tbaa !9
  %179 = add i32 %178, 1
  store i32 %179, ptr %13, align 4, !tbaa !9
  br label %150, !llvm.loop !33

180:                                              ; preds = %154
  br label %181

181:                                              ; preds = %180, %145
  br label %182

182:                                              ; preds = %181
  %183 = load i32, ptr %12, align 4, !tbaa !9
  %184 = add i32 %183, 1
  store i32 %184, ptr %12, align 4, !tbaa !9
  br label %141, !llvm.loop !34

185:                                              ; preds = %144
  %186 = load ptr, ptr %8, align 8, !tbaa !5
  %187 = call noundef zeroext i1 @_ZNK10aiAnimMesh24HasTangentsAndBitangentsEv(ptr noundef nonnull align 8 dereferenceable(1200) %186)
  br i1 %187, label %188, label %229

188:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %225, %188
  %190 = load i32, ptr %14, align 4, !tbaa !9
  %191 = load i32, ptr %9, align 4, !tbaa !9
  %192 = icmp ult i32 %190, %191
  br i1 %192, label %194, label %193

193:                                              ; preds = %189
  store i32 23, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  br label %228

194:                                              ; preds = %189
  %195 = load ptr, ptr %8, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.aiAnimMesh, ptr %195, i32 0, i32 3
  %197 = load ptr, ptr %196, align 8, !tbaa !35
  %198 = load i32, ptr %14, align 4, !tbaa !9
  %199 = zext i32 %198 to i64
  %200 = getelementptr inbounds %class.aiVector3t, ptr %197, i64 %199
  %201 = load ptr, ptr %8, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.aiAnimMesh, ptr %201, i32 0, i32 3
  %203 = load ptr, ptr %202, align 8, !tbaa !35
  %204 = load i32, ptr %9, align 4, !tbaa !9
  %205 = sub i32 %204, 1
  %206 = load i32, ptr %14, align 4, !tbaa !9
  %207 = sub i32 %205, %206
  %208 = zext i32 %207 to i64
  %209 = getelementptr inbounds %class.aiVector3t, ptr %203, i64 %208
  call void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12) %200, ptr noundef nonnull align 4 dereferenceable(12) %209) #4
  %210 = load ptr, ptr %8, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.aiAnimMesh, ptr %210, i32 0, i32 4
  %212 = load ptr, ptr %211, align 8, !tbaa !36
  %213 = load i32, ptr %14, align 4, !tbaa !9
  %214 = zext i32 %213 to i64
  %215 = getelementptr inbounds %class.aiVector3t, ptr %212, i64 %214
  %216 = load ptr, ptr %8, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.aiAnimMesh, ptr %216, i32 0, i32 4
  %218 = load ptr, ptr %217, align 8, !tbaa !36
  %219 = load i32, ptr %9, align 4, !tbaa !9
  %220 = sub i32 %219, 1
  %221 = load i32, ptr %14, align 4, !tbaa !9
  %222 = sub i32 %220, %221
  %223 = zext i32 %222 to i64
  %224 = getelementptr inbounds %class.aiVector3t, ptr %218, i64 %223
  call void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12) %215, ptr noundef nonnull align 4 dereferenceable(12) %224) #4
  br label %225

225:                                              ; preds = %194
  %226 = load i32, ptr %14, align 4, !tbaa !9
  %227 = add i32 %226, 1
  store i32 %227, ptr %14, align 4, !tbaa !9
  br label %189, !llvm.loop !37

228:                                              ; preds = %193
  br label %229

229:                                              ; preds = %228, %185
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %230

230:                                              ; preds = %271, %229
  %231 = load i32, ptr %15, align 4, !tbaa !9
  %232 = icmp ult i32 %231, 8
  br i1 %232, label %234, label %233

233:                                              ; preds = %230
  store i32 26, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  br label %274

234:                                              ; preds = %230
  %235 = load ptr, ptr %8, align 8, !tbaa !5
  %236 = load i32, ptr %15, align 4, !tbaa !9
  %237 = call noundef zeroext i1 @_ZNK10aiAnimMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1200) %235, i32 noundef %236)
  br i1 %237, label %238, label %270

238:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %239

239:                                              ; preds = %266, %238
  %240 = load i32, ptr %16, align 4, !tbaa !9
  %241 = load i32, ptr %9, align 4, !tbaa !9
  %242 = icmp ult i32 %240, %241
  br i1 %242, label %244, label %243

243:                                              ; preds = %239
  store i32 29, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  br label %269

244:                                              ; preds = %239
  %245 = load ptr, ptr %8, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.aiAnimMesh, ptr %245, i32 0, i32 5
  %247 = load i32, ptr %15, align 4, !tbaa !9
  %248 = zext i32 %247 to i64
  %249 = getelementptr inbounds [8 x ptr], ptr %246, i64 0, i64 %248
  %250 = load ptr, ptr %249, align 8, !tbaa !5
  %251 = load i32, ptr %16, align 4, !tbaa !9
  %252 = zext i32 %251 to i64
  %253 = getelementptr inbounds %class.aiColor4t, ptr %250, i64 %252
  %254 = load ptr, ptr %8, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.aiAnimMesh, ptr %254, i32 0, i32 5
  %256 = load i32, ptr %15, align 4, !tbaa !9
  %257 = zext i32 %256 to i64
  %258 = getelementptr inbounds [8 x ptr], ptr %255, i64 0, i64 %257
  %259 = load ptr, ptr %258, align 8, !tbaa !5
  %260 = load i32, ptr %9, align 4, !tbaa !9
  %261 = sub i32 %260, 1
  %262 = load i32, ptr %16, align 4, !tbaa !9
  %263 = sub i32 %261, %262
  %264 = zext i32 %263 to i64
  %265 = getelementptr inbounds %class.aiColor4t, ptr %259, i64 %264
  call void @_ZSt4swapI9aiColor4tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(16) %253, ptr noundef nonnull align 4 dereferenceable(16) %265) #4
  br label %266

266:                                              ; preds = %244
  %267 = load i32, ptr %16, align 4, !tbaa !9
  %268 = add i32 %267, 1
  store i32 %268, ptr %16, align 4, !tbaa !9
  br label %239, !llvm.loop !38

269:                                              ; preds = %243
  br label %270

270:                                              ; preds = %269, %234
  br label %271

271:                                              ; preds = %270
  %272 = load i32, ptr %15, align 4, !tbaa !9
  %273 = add i32 %272, 1
  store i32 %273, ptr %15, align 4, !tbaa !9
  br label %230, !llvm.loop !39

274:                                              ; preds = %233
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  br label %275

275:                                              ; preds = %274
  %276 = load i32, ptr %7, align 4, !tbaa !9
  %277 = add i32 %276, 1
  store i32 %277, ptr %7, align 4, !tbaa !9
  br label %65, !llvm.loop !40

278:                                              ; preds = %71
  ret void
}

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #3

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZSt4swapI9aiColor4tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) #3

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

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

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


; 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"

%struct.aiFace = type { i32, ptr }
%class.aiVector3t = type { float, float, float }
%class.aiColor4t = type { float, float, float, float }

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

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

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @_ZN6Assimp23FlipWindingOrderProcess11ProcessMeshEP6aiMesh(ptr nocapture noundef readonly %0) local_unnamed_addr #0 align 2 {
  %2 = getelementptr inbounds i8, ptr %0, i64 8
  %3 = load i32, ptr %2, align 8, !tbaa !5
  %.not123 = icmp eq i32 %3, 0
  br i1 %.not123, label %.preheader96, label %.lr.ph100

.lr.ph100:                                        ; preds = %1
  %4 = getelementptr inbounds i8, ptr %0, i64 208
  br label %8

.preheader96:                                     ; preds = %._crit_edge, %1
  %5 = getelementptr inbounds i8, ptr %0, i64 1264
  %6 = load i32, ptr %5, align 8, !tbaa !16
  %.not125 = icmp eq i32 %6, 0
  br i1 %.not125, label %._crit_edge119, label %.lr.ph118

.lr.ph118:                                        ; preds = %.preheader96
  %7 = getelementptr inbounds i8, ptr %0, i64 1272
  br label %30

8:                                                ; preds = %.lr.ph100, %._crit_edge
  %9 = phi i32 [ %3, %.lr.ph100 ], [ %14, %._crit_edge ]
  %indvars.iv131 = phi i64 [ 0, %.lr.ph100 ], [ %indvars.iv.next132, %._crit_edge ]
  %10 = load ptr, ptr %4, align 8, !tbaa !17
  %11 = getelementptr inbounds %struct.aiFace, ptr %10, i64 %indvars.iv131
  %12 = load i32, ptr %11, align 8, !tbaa !18
  %.not124 = icmp ult i32 %12, 2
  br i1 %.not124, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %8
  %13 = getelementptr inbounds i8, ptr %11, i64 8
  br label %17

._crit_edge.loopexit:                             ; preds = %17
  %.pre = load i32, ptr %2, align 8, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %8
  %14 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %9, %8 ]
  %indvars.iv.next132 = add nuw nsw i64 %indvars.iv131, 1
  %15 = zext i32 %14 to i64
  %16 = icmp ult i64 %indvars.iv.next132, %15
  br i1 %16, label %8, label %.preheader96, !llvm.loop !20

17:                                               ; preds = %.lr.ph, %17
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %17 ]
  %18 = phi i32 [ %12, %.lr.ph ], [ %26, %17 ]
  %19 = load ptr, ptr %13, align 8, !tbaa !22
  %20 = getelementptr inbounds i32, ptr %19, i64 %indvars.iv
  %21 = trunc nuw nsw i64 %indvars.iv to i32
  %22 = xor i32 %21, -1
  %23 = add i32 %18, %22
  %24 = zext i32 %23 to i64
  %25 = getelementptr inbounds i32, ptr %19, i64 %24
  tail call void @_ZSt4swapIjENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 4 dereferenceable(4) %25) #2
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %26 = load i32, ptr %11, align 8, !tbaa !18
  %27 = lshr i32 %26, 1
  %28 = zext nneg i32 %27 to i64
  %29 = icmp ult i64 %indvars.iv.next, %28
  br i1 %29, label %17, label %._crit_edge.loopexit, !llvm.loop !23

._crit_edge119:                                   ; preds = %.loopexit.7, %.preheader96
  ret void

30:                                               ; preds = %.lr.ph118, %.loopexit.7
  %indvars.iv166 = phi i64 [ 0, %.lr.ph118 ], [ %indvars.iv.next167, %.loopexit.7 ]
  %31 = load ptr, ptr %7, align 8, !tbaa !24
  %32 = getelementptr inbounds ptr, ptr %31, i64 %indvars.iv166
  %33 = load ptr, ptr %32, align 8, !tbaa !25
  %34 = getelementptr inbounds i8, ptr %33, i64 1192
  %35 = load i32, ptr %34, align 8, !tbaa !26
  %.fr126 = freeze i32 %35
  %36 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh12HasPositionsEv(ptr noundef nonnull align 8 dereferenceable(1200) %33)
  %37 = icmp ne i32 %.fr126, 0
  %or.cond = and i1 %36, %37
  br i1 %or.cond, label %.lr.ph102, label %.loopexit95

.lr.ph102:                                        ; preds = %30
  %38 = getelementptr inbounds i8, ptr %33, i64 1032
  %wide.trip.count = zext i32 %.fr126 to i64
  br label %39

39:                                               ; preds = %.lr.ph102, %39
  %indvars.iv134 = phi i64 [ 0, %.lr.ph102 ], [ %indvars.iv.next135, %39 ]
  %40 = load ptr, ptr %38, align 8, !tbaa !28
  %41 = getelementptr inbounds %class.aiVector3t, ptr %40, i64 %indvars.iv134
  %42 = trunc nuw i64 %indvars.iv134 to i32
  %43 = xor i32 %42, -1
  %44 = add i32 %.fr126, %43
  %45 = zext i32 %44 to i64
  %46 = getelementptr inbounds %class.aiVector3t, ptr %40, i64 %45
  tail call void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12) %41, ptr noundef nonnull align 4 dereferenceable(12) %46) #2
  %indvars.iv.next135 = add nuw nsw i64 %indvars.iv134, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next135, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit95, label %39, !llvm.loop !29

.loopexit95:                                      ; preds = %39, %30
  %47 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh10HasNormalsEv(ptr noundef nonnull align 8 dereferenceable(1200) %33)
  %or.cond120 = and i1 %47, %37
  br i1 %or.cond120, label %.lr.ph104, label %.loopexit93

.lr.ph104:                                        ; preds = %.loopexit95
  %48 = getelementptr inbounds i8, ptr %33, i64 1040
  %wide.trip.count140 = zext i32 %.fr126 to i64
  br label %49

49:                                               ; preds = %.lr.ph104, %49
  %indvars.iv137 = phi i64 [ 0, %.lr.ph104 ], [ %indvars.iv.next138, %49 ]
  %50 = load ptr, ptr %48, align 8, !tbaa !30
  %51 = getelementptr inbounds %class.aiVector3t, ptr %50, i64 %indvars.iv137
  %52 = trunc nuw i64 %indvars.iv137 to i32
  %53 = xor i32 %52, -1
  %54 = add i32 %.fr126, %53
  %55 = zext i32 %54 to i64
  %56 = getelementptr inbounds %class.aiVector3t, ptr %50, i64 %55
  tail call void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12) %51, ptr noundef nonnull align 4 dereferenceable(12) %56) #2
  %indvars.iv.next138 = add nuw nsw i64 %indvars.iv137, 1
  %exitcond141.not = icmp eq i64 %indvars.iv.next138, %wide.trip.count140
  br i1 %exitcond141.not, label %.loopexit93, label %49, !llvm.loop !31

.loopexit93:                                      ; preds = %49, %.loopexit95
  %.not127 = icmp eq i32 %.fr126, 0
  %57 = getelementptr inbounds i8, ptr %33, i64 1128
  %58 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 0)
  br i1 %.not127, label %.loopexit.6.thread, label %.split.us.preheader

.split.us.preheader:                              ; preds = %.loopexit93
  br i1 %58, label %.preheader88.us, label %..loopexit89_crit_edge.us

.loopexit.6.thread:                               ; preds = %.loopexit93
  %59 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 1)
  %60 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 2)
  %61 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 3)
  %62 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 4)
  %63 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 5)
  %64 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 6)
  %65 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 7)
  %66 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh24HasTangentsAndBitangentsEv(ptr noundef nonnull align 8 dereferenceable(1200) %33)
  %67 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 0)
  %68 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 1)
  %69 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 2)
  %70 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 3)
  %71 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 4)
  %72 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 5)
  %73 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 6)
  %74 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 7)
  br label %.loopexit.7

..loopexit89_crit_edge.us:                        ; preds = %145, %.split.us.preheader
  %75 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 1)
  br i1 %75, label %.preheader88.us.1, label %..loopexit89_crit_edge.us.1

.preheader88.us.1:                                ; preds = %..loopexit89_crit_edge.us
  %76 = getelementptr inbounds i8, ptr %33, i64 1136
  %wide.trip.count145.1 = zext i32 %.fr126 to i64
  br label %77

77:                                               ; preds = %77, %.preheader88.us.1
  %indvars.iv142.1 = phi i64 [ 0, %.preheader88.us.1 ], [ %indvars.iv.next143.1, %77 ]
  %78 = load ptr, ptr %76, align 8, !tbaa !25
  %79 = getelementptr inbounds %class.aiVector3t, ptr %78, i64 %indvars.iv142.1
  %80 = trunc nuw i64 %indvars.iv142.1 to i32
  %81 = xor i32 %80, -1
  %82 = add i32 %.fr126, %81
  %83 = zext i32 %82 to i64
  %84 = getelementptr inbounds %class.aiVector3t, ptr %78, i64 %83
  tail call void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12) %79, ptr noundef nonnull align 4 dereferenceable(12) %84) #2
  %indvars.iv.next143.1 = add nuw nsw i64 %indvars.iv142.1, 1
  %exitcond146.1.not = icmp eq i64 %indvars.iv.next143.1, %wide.trip.count145.1
  br i1 %exitcond146.1.not, label %..loopexit89_crit_edge.us.1, label %77, !llvm.loop !32

..loopexit89_crit_edge.us.1:                      ; preds = %77, %..loopexit89_crit_edge.us
  %85 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 2)
  br i1 %85, label %.preheader88.us.2, label %..loopexit89_crit_edge.us.2

.preheader88.us.2:                                ; preds = %..loopexit89_crit_edge.us.1
  %86 = getelementptr inbounds i8, ptr %33, i64 1144
  %wide.trip.count145.2 = zext i32 %.fr126 to i64
  br label %87

87:                                               ; preds = %87, %.preheader88.us.2
  %indvars.iv142.2 = phi i64 [ 0, %.preheader88.us.2 ], [ %indvars.iv.next143.2, %87 ]
  %88 = load ptr, ptr %86, align 8, !tbaa !25
  %89 = getelementptr inbounds %class.aiVector3t, ptr %88, i64 %indvars.iv142.2
  %90 = trunc nuw i64 %indvars.iv142.2 to i32
  %91 = xor i32 %90, -1
  %92 = add i32 %.fr126, %91
  %93 = zext i32 %92 to i64
  %94 = getelementptr inbounds %class.aiVector3t, ptr %88, i64 %93
  tail call void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12) %89, ptr noundef nonnull align 4 dereferenceable(12) %94) #2
  %indvars.iv.next143.2 = add nuw nsw i64 %indvars.iv142.2, 1
  %exitcond146.2.not = icmp eq i64 %indvars.iv.next143.2, %wide.trip.count145.2
  br i1 %exitcond146.2.not, label %..loopexit89_crit_edge.us.2, label %87, !llvm.loop !32

..loopexit89_crit_edge.us.2:                      ; preds = %87, %..loopexit89_crit_edge.us.1
  %95 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 3)
  br i1 %95, label %.preheader88.us.3, label %..loopexit89_crit_edge.us.3

.preheader88.us.3:                                ; preds = %..loopexit89_crit_edge.us.2
  %96 = getelementptr inbounds i8, ptr %33, i64 1152
  %wide.trip.count145.3 = zext i32 %.fr126 to i64
  br label %97

97:                                               ; preds = %97, %.preheader88.us.3
  %indvars.iv142.3 = phi i64 [ 0, %.preheader88.us.3 ], [ %indvars.iv.next143.3, %97 ]
  %98 = load ptr, ptr %96, align 8, !tbaa !25
  %99 = getelementptr inbounds %class.aiVector3t, ptr %98, i64 %indvars.iv142.3
  %100 = trunc nuw i64 %indvars.iv142.3 to i32
  %101 = xor i32 %100, -1
  %102 = add i32 %.fr126, %101
  %103 = zext i32 %102 to i64
  %104 = getelementptr inbounds %class.aiVector3t, ptr %98, i64 %103
  tail call void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12) %99, ptr noundef nonnull align 4 dereferenceable(12) %104) #2
  %indvars.iv.next143.3 = add nuw nsw i64 %indvars.iv142.3, 1
  %exitcond146.3.not = icmp eq i64 %indvars.iv.next143.3, %wide.trip.count145.3
  br i1 %exitcond146.3.not, label %..loopexit89_crit_edge.us.3, label %97, !llvm.loop !32

..loopexit89_crit_edge.us.3:                      ; preds = %97, %..loopexit89_crit_edge.us.2
  %105 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 4)
  br i1 %105, label %.preheader88.us.4, label %..loopexit89_crit_edge.us.4

.preheader88.us.4:                                ; preds = %..loopexit89_crit_edge.us.3
  %106 = getelementptr inbounds i8, ptr %33, i64 1160
  %wide.trip.count145.4 = zext i32 %.fr126 to i64
  br label %107

107:                                              ; preds = %107, %.preheader88.us.4
  %indvars.iv142.4 = phi i64 [ 0, %.preheader88.us.4 ], [ %indvars.iv.next143.4, %107 ]
  %108 = load ptr, ptr %106, align 8, !tbaa !25
  %109 = getelementptr inbounds %class.aiVector3t, ptr %108, i64 %indvars.iv142.4
  %110 = trunc nuw i64 %indvars.iv142.4 to i32
  %111 = xor i32 %110, -1
  %112 = add i32 %.fr126, %111
  %113 = zext i32 %112 to i64
  %114 = getelementptr inbounds %class.aiVector3t, ptr %108, i64 %113
  tail call void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12) %109, ptr noundef nonnull align 4 dereferenceable(12) %114) #2
  %indvars.iv.next143.4 = add nuw nsw i64 %indvars.iv142.4, 1
  %exitcond146.4.not = icmp eq i64 %indvars.iv.next143.4, %wide.trip.count145.4
  br i1 %exitcond146.4.not, label %..loopexit89_crit_edge.us.4, label %107, !llvm.loop !32

..loopexit89_crit_edge.us.4:                      ; preds = %107, %..loopexit89_crit_edge.us.3
  %115 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 5)
  br i1 %115, label %.preheader88.us.5, label %..loopexit89_crit_edge.us.5

.preheader88.us.5:                                ; preds = %..loopexit89_crit_edge.us.4
  %116 = getelementptr inbounds i8, ptr %33, i64 1168
  %wide.trip.count145.5 = zext i32 %.fr126 to i64
  br label %117

117:                                              ; preds = %117, %.preheader88.us.5
  %indvars.iv142.5 = phi i64 [ 0, %.preheader88.us.5 ], [ %indvars.iv.next143.5, %117 ]
  %118 = load ptr, ptr %116, align 8, !tbaa !25
  %119 = getelementptr inbounds %class.aiVector3t, ptr %118, i64 %indvars.iv142.5
  %120 = trunc nuw i64 %indvars.iv142.5 to i32
  %121 = xor i32 %120, -1
  %122 = add i32 %.fr126, %121
  %123 = zext i32 %122 to i64
  %124 = getelementptr inbounds %class.aiVector3t, ptr %118, i64 %123
  tail call void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12) %119, ptr noundef nonnull align 4 dereferenceable(12) %124) #2
  %indvars.iv.next143.5 = add nuw nsw i64 %indvars.iv142.5, 1
  %exitcond146.5.not = icmp eq i64 %indvars.iv.next143.5, %wide.trip.count145.5
  br i1 %exitcond146.5.not, label %..loopexit89_crit_edge.us.5, label %117, !llvm.loop !32

..loopexit89_crit_edge.us.5:                      ; preds = %117, %..loopexit89_crit_edge.us.4
  %125 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 6)
  br i1 %125, label %.preheader88.us.6, label %..loopexit89_crit_edge.us.6

.preheader88.us.6:                                ; preds = %..loopexit89_crit_edge.us.5
  %126 = getelementptr inbounds i8, ptr %33, i64 1176
  %wide.trip.count145.6 = zext i32 %.fr126 to i64
  br label %127

127:                                              ; preds = %127, %.preheader88.us.6
  %indvars.iv142.6 = phi i64 [ 0, %.preheader88.us.6 ], [ %indvars.iv.next143.6, %127 ]
  %128 = load ptr, ptr %126, align 8, !tbaa !25
  %129 = getelementptr inbounds %class.aiVector3t, ptr %128, i64 %indvars.iv142.6
  %130 = trunc nuw i64 %indvars.iv142.6 to i32
  %131 = xor i32 %130, -1
  %132 = add i32 %.fr126, %131
  %133 = zext i32 %132 to i64
  %134 = getelementptr inbounds %class.aiVector3t, ptr %128, i64 %133
  tail call void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12) %129, ptr noundef nonnull align 4 dereferenceable(12) %134) #2
  %indvars.iv.next143.6 = add nuw nsw i64 %indvars.iv142.6, 1
  %exitcond146.6.not = icmp eq i64 %indvars.iv.next143.6, %wide.trip.count145.6
  br i1 %exitcond146.6.not, label %..loopexit89_crit_edge.us.6, label %127, !llvm.loop !32

..loopexit89_crit_edge.us.6:                      ; preds = %127, %..loopexit89_crit_edge.us.5
  %135 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 7)
  br i1 %135, label %.preheader88.us.7, label %.split110.us

.preheader88.us.7:                                ; preds = %..loopexit89_crit_edge.us.6
  %136 = getelementptr inbounds i8, ptr %33, i64 1184
  %wide.trip.count145.7 = zext i32 %.fr126 to i64
  br label %137

137:                                              ; preds = %137, %.preheader88.us.7
  %indvars.iv142.7 = phi i64 [ 0, %.preheader88.us.7 ], [ %indvars.iv.next143.7, %137 ]
  %138 = load ptr, ptr %136, align 8, !tbaa !25
  %139 = getelementptr inbounds %class.aiVector3t, ptr %138, i64 %indvars.iv142.7
  %140 = trunc nuw i64 %indvars.iv142.7 to i32
  %141 = xor i32 %140, -1
  %142 = add i32 %.fr126, %141
  %143 = zext i32 %142 to i64
  %144 = getelementptr inbounds %class.aiVector3t, ptr %138, i64 %143
  tail call void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12) %139, ptr noundef nonnull align 4 dereferenceable(12) %144) #2
  %indvars.iv.next143.7 = add nuw nsw i64 %indvars.iv142.7, 1
  %exitcond146.7.not = icmp eq i64 %indvars.iv.next143.7, %wide.trip.count145.7
  br i1 %exitcond146.7.not, label %.split110.us, label %137, !llvm.loop !32

145:                                              ; preds = %.preheader88.us, %145
  %indvars.iv142 = phi i64 [ 0, %.preheader88.us ], [ %indvars.iv.next143, %145 ]
  %146 = load ptr, ptr %57, align 8, !tbaa !25
  %147 = getelementptr inbounds %class.aiVector3t, ptr %146, i64 %indvars.iv142
  %148 = trunc nuw i64 %indvars.iv142 to i32
  %149 = xor i32 %148, -1
  %150 = add i32 %.fr126, %149
  %151 = zext i32 %150 to i64
  %152 = getelementptr inbounds %class.aiVector3t, ptr %146, i64 %151
  tail call void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12) %147, ptr noundef nonnull align 4 dereferenceable(12) %152) #2
  %indvars.iv.next143 = add nuw nsw i64 %indvars.iv142, 1
  %exitcond146.not = icmp eq i64 %indvars.iv.next143, %wide.trip.count145
  br i1 %exitcond146.not, label %..loopexit89_crit_edge.us, label %145, !llvm.loop !32

.preheader88.us:                                  ; preds = %.split.us.preheader
  %wide.trip.count145 = zext i32 %.fr126 to i64
  br label %145

.split110.us:                                     ; preds = %137, %..loopexit89_crit_edge.us.6
  %153 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh24HasTangentsAndBitangentsEv(ptr noundef nonnull align 8 dereferenceable(1200) %33)
  %or.cond121 = and i1 %153, %37
  br i1 %or.cond121, label %.lr.ph112, label %.loopexit91

.lr.ph112:                                        ; preds = %.split110.us
  %154 = getelementptr inbounds i8, ptr %33, i64 1048
  %155 = getelementptr inbounds i8, ptr %33, i64 1056
  %wide.trip.count155 = zext i32 %.fr126 to i64
  br label %156

156:                                              ; preds = %.lr.ph112, %156
  %indvars.iv152 = phi i64 [ 0, %.lr.ph112 ], [ %indvars.iv.next153, %156 ]
  %157 = load ptr, ptr %154, align 8, !tbaa !33
  %158 = getelementptr inbounds %class.aiVector3t, ptr %157, i64 %indvars.iv152
  %159 = trunc nuw i64 %indvars.iv152 to i32
  %160 = xor i32 %159, -1
  %161 = add i32 %.fr126, %160
  %162 = zext i32 %161 to i64
  %163 = getelementptr inbounds %class.aiVector3t, ptr %157, i64 %162
  tail call void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12) %158, ptr noundef nonnull align 4 dereferenceable(12) %163) #2
  %164 = load ptr, ptr %155, align 8, !tbaa !34
  %165 = getelementptr inbounds %class.aiVector3t, ptr %164, i64 %indvars.iv152
  %166 = getelementptr inbounds %class.aiVector3t, ptr %164, i64 %162
  tail call void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12) %165, ptr noundef nonnull align 4 dereferenceable(12) %166) #2
  %indvars.iv.next153 = add nuw nsw i64 %indvars.iv152, 1
  %exitcond156.not = icmp eq i64 %indvars.iv.next153, %wide.trip.count155
  br i1 %exitcond156.not, label %.loopexit91, label %156, !llvm.loop !35

.loopexit91:                                      ; preds = %156, %.split110.us
  %167 = getelementptr inbounds i8, ptr %33, i64 1064
  %168 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 0)
  %brmerge.not = and i1 %37, %168
  br i1 %brmerge.not, label %.lr.ph114, label %.loopexit

.lr.ph114:                                        ; preds = %.loopexit91
  %wide.trip.count160 = zext i32 %.fr126 to i64
  br label %169

169:                                              ; preds = %.lr.ph114, %169
  %indvars.iv157 = phi i64 [ 0, %.lr.ph114 ], [ %indvars.iv.next158, %169 ]
  %170 = load ptr, ptr %167, align 8, !tbaa !25
  %171 = getelementptr inbounds %class.aiColor4t, ptr %170, i64 %indvars.iv157
  %172 = trunc nuw i64 %indvars.iv157 to i32
  %173 = xor i32 %172, -1
  %174 = add i32 %.fr126, %173
  %175 = zext i32 %174 to i64
  %176 = getelementptr inbounds %class.aiColor4t, ptr %170, i64 %175
  tail call void @_ZSt4swapI9aiColor4tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(16) %171, ptr noundef nonnull align 4 dereferenceable(16) %176) #2
  %indvars.iv.next158 = add nuw nsw i64 %indvars.iv157, 1
  %exitcond161.not = icmp eq i64 %indvars.iv.next158, %wide.trip.count160
  br i1 %exitcond161.not, label %.loopexit, label %169, !llvm.loop !36

.loopexit:                                        ; preds = %169, %.loopexit91
  %177 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 1)
  %brmerge.not.1 = and i1 %37, %177
  br i1 %brmerge.not.1, label %.lr.ph114.1, label %.loopexit.1

.lr.ph114.1:                                      ; preds = %.loopexit
  %178 = getelementptr inbounds i8, ptr %33, i64 1072
  %wide.trip.count160.1 = zext i32 %.fr126 to i64
  br label %179

179:                                              ; preds = %179, %.lr.ph114.1
  %indvars.iv157.1 = phi i64 [ 0, %.lr.ph114.1 ], [ %indvars.iv.next158.1, %179 ]
  %180 = load ptr, ptr %178, align 8, !tbaa !25
  %181 = getelementptr inbounds %class.aiColor4t, ptr %180, i64 %indvars.iv157.1
  %182 = trunc nuw i64 %indvars.iv157.1 to i32
  %183 = xor i32 %182, -1
  %184 = add i32 %.fr126, %183
  %185 = zext i32 %184 to i64
  %186 = getelementptr inbounds %class.aiColor4t, ptr %180, i64 %185
  tail call void @_ZSt4swapI9aiColor4tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(16) %181, ptr noundef nonnull align 4 dereferenceable(16) %186) #2
  %indvars.iv.next158.1 = add nuw nsw i64 %indvars.iv157.1, 1
  %exitcond161.1.not = icmp eq i64 %indvars.iv.next158.1, %wide.trip.count160.1
  br i1 %exitcond161.1.not, label %.loopexit.1, label %179, !llvm.loop !36

.loopexit.1:                                      ; preds = %179, %.loopexit
  %187 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 2)
  %brmerge.not.2 = and i1 %37, %187
  br i1 %brmerge.not.2, label %.lr.ph114.2, label %.loopexit.2

.lr.ph114.2:                                      ; preds = %.loopexit.1
  %188 = getelementptr inbounds i8, ptr %33, i64 1080
  %wide.trip.count160.2 = zext i32 %.fr126 to i64
  br label %189

189:                                              ; preds = %189, %.lr.ph114.2
  %indvars.iv157.2 = phi i64 [ 0, %.lr.ph114.2 ], [ %indvars.iv.next158.2, %189 ]
  %190 = load ptr, ptr %188, align 8, !tbaa !25
  %191 = getelementptr inbounds %class.aiColor4t, ptr %190, i64 %indvars.iv157.2
  %192 = trunc nuw i64 %indvars.iv157.2 to i32
  %193 = xor i32 %192, -1
  %194 = add i32 %.fr126, %193
  %195 = zext i32 %194 to i64
  %196 = getelementptr inbounds %class.aiColor4t, ptr %190, i64 %195
  tail call void @_ZSt4swapI9aiColor4tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(16) %191, ptr noundef nonnull align 4 dereferenceable(16) %196) #2
  %indvars.iv.next158.2 = add nuw nsw i64 %indvars.iv157.2, 1
  %exitcond161.2.not = icmp eq i64 %indvars.iv.next158.2, %wide.trip.count160.2
  br i1 %exitcond161.2.not, label %.loopexit.2, label %189, !llvm.loop !36

.loopexit.2:                                      ; preds = %189, %.loopexit.1
  %197 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 3)
  %brmerge.not.3 = and i1 %37, %197
  br i1 %brmerge.not.3, label %.lr.ph114.3, label %.loopexit.3

.lr.ph114.3:                                      ; preds = %.loopexit.2
  %198 = getelementptr inbounds i8, ptr %33, i64 1088
  %wide.trip.count160.3 = zext i32 %.fr126 to i64
  br label %199

199:                                              ; preds = %199, %.lr.ph114.3
  %indvars.iv157.3 = phi i64 [ 0, %.lr.ph114.3 ], [ %indvars.iv.next158.3, %199 ]
  %200 = load ptr, ptr %198, align 8, !tbaa !25
  %201 = getelementptr inbounds %class.aiColor4t, ptr %200, i64 %indvars.iv157.3
  %202 = trunc nuw i64 %indvars.iv157.3 to i32
  %203 = xor i32 %202, -1
  %204 = add i32 %.fr126, %203
  %205 = zext i32 %204 to i64
  %206 = getelementptr inbounds %class.aiColor4t, ptr %200, i64 %205
  tail call void @_ZSt4swapI9aiColor4tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(16) %201, ptr noundef nonnull align 4 dereferenceable(16) %206) #2
  %indvars.iv.next158.3 = add nuw nsw i64 %indvars.iv157.3, 1
  %exitcond161.3.not = icmp eq i64 %indvars.iv.next158.3, %wide.trip.count160.3
  br i1 %exitcond161.3.not, label %.loopexit.3, label %199, !llvm.loop !36

.loopexit.3:                                      ; preds = %199, %.loopexit.2
  %207 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 4)
  %brmerge.not.4 = and i1 %37, %207
  br i1 %brmerge.not.4, label %.lr.ph114.4, label %.loopexit.4

.lr.ph114.4:                                      ; preds = %.loopexit.3
  %208 = getelementptr inbounds i8, ptr %33, i64 1096
  %wide.trip.count160.4 = zext i32 %.fr126 to i64
  br label %209

209:                                              ; preds = %209, %.lr.ph114.4
  %indvars.iv157.4 = phi i64 [ 0, %.lr.ph114.4 ], [ %indvars.iv.next158.4, %209 ]
  %210 = load ptr, ptr %208, align 8, !tbaa !25
  %211 = getelementptr inbounds %class.aiColor4t, ptr %210, i64 %indvars.iv157.4
  %212 = trunc nuw i64 %indvars.iv157.4 to i32
  %213 = xor i32 %212, -1
  %214 = add i32 %.fr126, %213
  %215 = zext i32 %214 to i64
  %216 = getelementptr inbounds %class.aiColor4t, ptr %210, i64 %215
  tail call void @_ZSt4swapI9aiColor4tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(16) %211, ptr noundef nonnull align 4 dereferenceable(16) %216) #2
  %indvars.iv.next158.4 = add nuw nsw i64 %indvars.iv157.4, 1
  %exitcond161.4.not = icmp eq i64 %indvars.iv.next158.4, %wide.trip.count160.4
  br i1 %exitcond161.4.not, label %.loopexit.4, label %209, !llvm.loop !36

.loopexit.4:                                      ; preds = %209, %.loopexit.3
  %217 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 5)
  %brmerge.not.5 = and i1 %37, %217
  br i1 %brmerge.not.5, label %.lr.ph114.5, label %.loopexit.5

.lr.ph114.5:                                      ; preds = %.loopexit.4
  %218 = getelementptr inbounds i8, ptr %33, i64 1104
  %wide.trip.count160.5 = zext i32 %.fr126 to i64
  br label %219

219:                                              ; preds = %219, %.lr.ph114.5
  %indvars.iv157.5 = phi i64 [ 0, %.lr.ph114.5 ], [ %indvars.iv.next158.5, %219 ]
  %220 = load ptr, ptr %218, align 8, !tbaa !25
  %221 = getelementptr inbounds %class.aiColor4t, ptr %220, i64 %indvars.iv157.5
  %222 = trunc nuw i64 %indvars.iv157.5 to i32
  %223 = xor i32 %222, -1
  %224 = add i32 %.fr126, %223
  %225 = zext i32 %224 to i64
  %226 = getelementptr inbounds %class.aiColor4t, ptr %220, i64 %225
  tail call void @_ZSt4swapI9aiColor4tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(16) %221, ptr noundef nonnull align 4 dereferenceable(16) %226) #2
  %indvars.iv.next158.5 = add nuw nsw i64 %indvars.iv157.5, 1
  %exitcond161.5.not = icmp eq i64 %indvars.iv.next158.5, %wide.trip.count160.5
  br i1 %exitcond161.5.not, label %.loopexit.5, label %219, !llvm.loop !36

.loopexit.5:                                      ; preds = %219, %.loopexit.4
  %227 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 6)
  %brmerge.not.6 = and i1 %37, %227
  br i1 %brmerge.not.6, label %.lr.ph114.6, label %.loopexit.6

.lr.ph114.6:                                      ; preds = %.loopexit.5
  %228 = getelementptr inbounds i8, ptr %33, i64 1112
  %wide.trip.count160.6 = zext i32 %.fr126 to i64
  br label %229

229:                                              ; preds = %229, %.lr.ph114.6
  %indvars.iv157.6 = phi i64 [ 0, %.lr.ph114.6 ], [ %indvars.iv.next158.6, %229 ]
  %230 = load ptr, ptr %228, align 8, !tbaa !25
  %231 = getelementptr inbounds %class.aiColor4t, ptr %230, i64 %indvars.iv157.6
  %232 = trunc nuw i64 %indvars.iv157.6 to i32
  %233 = xor i32 %232, -1
  %234 = add i32 %.fr126, %233
  %235 = zext i32 %234 to i64
  %236 = getelementptr inbounds %class.aiColor4t, ptr %230, i64 %235
  tail call void @_ZSt4swapI9aiColor4tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(16) %231, ptr noundef nonnull align 4 dereferenceable(16) %236) #2
  %indvars.iv.next158.6 = add nuw nsw i64 %indvars.iv157.6, 1
  %exitcond161.6.not = icmp eq i64 %indvars.iv.next158.6, %wide.trip.count160.6
  br i1 %exitcond161.6.not, label %.loopexit.6, label %229, !llvm.loop !36

.loopexit.6:                                      ; preds = %229, %.loopexit.5
  %237 = tail call noundef zeroext i1 @_ZNK10aiAnimMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1200) %33, i32 noundef 7)
  %brmerge.not.7 = and i1 %37, %237
  br i1 %brmerge.not.7, label %.lr.ph114.7, label %.loopexit.7

.lr.ph114.7:                                      ; preds = %.loopexit.6
  %238 = getelementptr inbounds i8, ptr %33, i64 1120
  %wide.trip.count160.7 = zext i32 %.fr126 to i64
  br label %239

239:                                              ; preds = %239, %.lr.ph114.7
  %indvars.iv157.7 = phi i64 [ 0, %.lr.ph114.7 ], [ %indvars.iv.next158.7, %239 ]
  %240 = load ptr, ptr %238, align 8, !tbaa !25
  %241 = getelementptr inbounds %class.aiColor4t, ptr %240, i64 %indvars.iv157.7
  %242 = trunc nuw i64 %indvars.iv157.7 to i32
  %243 = xor i32 %242, -1
  %244 = add i32 %.fr126, %243
  %245 = zext i32 %244 to i64
  %246 = getelementptr inbounds %class.aiColor4t, ptr %240, i64 %245
  tail call void @_ZSt4swapI9aiColor4tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(16) %241, ptr noundef nonnull align 4 dereferenceable(16) %246) #2
  %indvars.iv.next158.7 = add nuw nsw i64 %indvars.iv157.7, 1
  %exitcond161.7.not = icmp eq i64 %indvars.iv.next158.7, %wide.trip.count160.7
  br i1 %exitcond161.7.not, label %.loopexit.7, label %239, !llvm.loop !36

.loopexit.7:                                      ; preds = %239, %.loopexit.6.thread, %.loopexit.6
  %indvars.iv.next167 = add nuw nsw i64 %indvars.iv166, 1
  %247 = load i32, ptr %5, align 8, !tbaa !16
  %248 = zext i32 %247 to i64
  %249 = icmp ult i64 %indvars.iv.next167, %248
  br i1 %249, label %30, label %._crit_edge119, !llvm.loop !37
}

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZSt4swapI10aiVector3tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZSt4swapI9aiColor4tIfEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #1

attributes #0 = { 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 #1 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 8}
!6 = !{!"_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 1264}
!17 = !{!6, !10, i64 208}
!18 = !{!19, !7, i64 0}
!19 = !{!"_ZTS6aiFace", !7, i64 0, !10, i64 8}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!19, !10, i64 8}
!23 = distinct !{!23, !21}
!24 = !{!6, !10, i64 1272}
!25 = !{!10, !10, i64 0}
!26 = !{!27, !7, i64 1192}
!27 = !{!"_ZTS10aiAnimMesh", !11, i64 0, !10, i64 1032, !10, i64 1040, !10, i64 1048, !10, i64 1056, !8, i64 1064, !8, i64 1128, !7, i64 1192, !15, i64 1196}
!28 = !{!27, !10, i64 1032}
!29 = distinct !{!29, !21}
!30 = !{!27, !10, i64 1040}
!31 = distinct !{!31, !21}
!32 = distinct !{!32, !21}
!33 = !{!27, !10, i64 1048}
!34 = !{!27, !10, i64 1056}
!35 = distinct !{!35, !21}
!36 = distinct !{!36, !21}
!37 = distinct !{!37, !21}


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