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

; 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.Assimp::RemoveVCProcess" = type { %"class.Assimp::BaseProcess", i32, ptr }
%"class.Assimp::BaseProcess" = type { ptr, ptr, 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.aiString = type { i32, [1024 x i8] }
%struct.aiAABB = type { %class.aiVector3t, %class.aiVector3t }
%class.aiVector3t = type { 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 uwtable
define dso_local noundef zeroext i1 @_ZN6Assimp15RemoveVCProcess11ProcessMeshEP6aiMesh(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef %1) #1 align 2 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i8, align 1
  %6 = alloca i8, align 1
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %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
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %14 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #4
  store i8 0, ptr %5, align 1, !tbaa !9
  %15 = getelementptr inbounds %"class.Assimp::RemoveVCProcess", ptr %14, i32 0, i32 1
  %16 = load i32, ptr %15, align 8, !tbaa !11
  %17 = and i32 %16, 2048
  %18 = icmp ne i32 %17, 0
  br i1 %18, label %19, label %22

19:                                               ; preds = %2
  %20 = load ptr, ptr %4, align 8, !tbaa !5
  %21 = getelementptr inbounds %struct.aiMesh, ptr %20, i32 0, i32 13
  store i32 0, ptr %21, align 8, !tbaa !15
  br label %22

22:                                               ; preds = %19, %2
  %23 = getelementptr inbounds %"class.Assimp::RemoveVCProcess", ptr %14, i32 0, i32 1
  %24 = load i32, ptr %23, align 8, !tbaa !11
  %25 = and i32 %24, 2
  %26 = icmp ne i32 %25, 0
  br i1 %26, label %27, label %41

27:                                               ; preds = %22
  %28 = load ptr, ptr %4, align 8, !tbaa !5
  %29 = getelementptr inbounds %struct.aiMesh, ptr %28, i32 0, i32 4
  %30 = load ptr, ptr %29, align 8, !tbaa !22
  %31 = icmp ne ptr %30, null
  br i1 %31, label %32, label %41

32:                                               ; preds = %27
  %33 = load ptr, ptr %4, align 8, !tbaa !5
  %34 = getelementptr inbounds %struct.aiMesh, ptr %33, i32 0, i32 4
  %35 = load ptr, ptr %34, align 8, !tbaa !22
  %36 = icmp eq ptr %35, null
  br i1 %36, label %38, label %37

37:                                               ; preds = %32
  call void @_ZdaPv(ptr noundef %35) #5
  br label %38

38:                                               ; preds = %37, %32
  %39 = load ptr, ptr %4, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.aiMesh, ptr %39, i32 0, i32 4
  store ptr null, ptr %40, align 8, !tbaa !22
  store i8 1, ptr %5, align 1, !tbaa !9
  br label %41

41:                                               ; preds = %38, %27, %22
  %42 = getelementptr inbounds %"class.Assimp::RemoveVCProcess", ptr %14, i32 0, i32 1
  %43 = load i32, ptr %42, align 8, !tbaa !11
  %44 = and i32 %43, 4
  %45 = icmp ne i32 %44, 0
  br i1 %45, label %46, label %68

46:                                               ; preds = %41
  %47 = load ptr, ptr %4, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.aiMesh, ptr %47, i32 0, i32 5
  %49 = load ptr, ptr %48, align 8, !tbaa !23
  %50 = icmp ne ptr %49, null
  br i1 %50, label %51, label %68

51:                                               ; preds = %46
  %52 = load ptr, ptr %4, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.aiMesh, ptr %52, i32 0, i32 5
  %54 = load ptr, ptr %53, align 8, !tbaa !23
  %55 = icmp eq ptr %54, null
  br i1 %55, label %57, label %56

56:                                               ; preds = %51
  call void @_ZdaPv(ptr noundef %54) #5
  br label %57

57:                                               ; preds = %56, %51
  %58 = load ptr, ptr %4, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.aiMesh, ptr %58, i32 0, i32 5
  store ptr null, ptr %59, align 8, !tbaa !23
  %60 = load ptr, ptr %4, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.aiMesh, ptr %60, i32 0, i32 6
  %62 = load ptr, ptr %61, align 8, !tbaa !24
  %63 = icmp eq ptr %62, null
  br i1 %63, label %65, label %64

64:                                               ; preds = %57
  call void @_ZdaPv(ptr noundef %62) #5
  br label %65

65:                                               ; preds = %64, %57
  %66 = load ptr, ptr %4, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.aiMesh, ptr %66, i32 0, i32 6
  store ptr null, ptr %67, align 8, !tbaa !24
  store i8 1, ptr %5, align 1, !tbaa !9
  br label %68

68:                                               ; preds = %65, %46, %41
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #4
  %69 = getelementptr inbounds %"class.Assimp::RemoveVCProcess", ptr %14, i32 0, i32 1
  %70 = load i32, ptr %69, align 8, !tbaa !11
  %71 = and i32 %70, 16
  %72 = icmp ne i32 0, %71
  %73 = zext i1 %72 to i8
  store i8 %73, ptr %6, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #4
  store i32 0, ptr %7, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #4
  store i32 0, ptr %8, align 4, !tbaa !25
  br label %74

74:                                               ; preds = %146, %68
  %75 = load i32, ptr %8, align 4, !tbaa !25
  %76 = icmp ult i32 %75, 8
  br i1 %76, label %78, label %77

77:                                               ; preds = %74
  store i32 2, ptr %9, align 4
  br label %149

78:                                               ; preds = %74
  %79 = load ptr, ptr %4, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.aiMesh, ptr %79, i32 0, i32 8
  %81 = load i32, ptr %7, align 4, !tbaa !25
  %82 = zext i32 %81 to i64
  %83 = getelementptr inbounds [8 x ptr], ptr %80, i64 0, i64 %82
  %84 = load ptr, ptr %83, align 8, !tbaa !5
  %85 = icmp ne ptr %84, null
  br i1 %85, label %87, label %86

86:                                               ; preds = %78
  store i32 2, ptr %9, align 4
  br label %149

87:                                               ; preds = %78
  %88 = getelementptr inbounds %"class.Assimp::RemoveVCProcess", ptr %14, i32 0, i32 1
  %89 = load i32, ptr %88, align 8, !tbaa !11
  %90 = load i32, ptr %8, align 4, !tbaa !25
  %91 = add i32 %90, 25
  %92 = shl i32 1, %91
  %93 = and i32 %89, %92
  %94 = icmp ne i32 %93, 0
  br i1 %94, label %98, label %95

95:                                               ; preds = %87
  %96 = load i8, ptr %6, align 1, !tbaa !9, !range !26, !noundef !27
  %97 = trunc i8 %96 to i1
  br i1 %97, label %98, label %143

98:                                               ; preds = %95, %87
  %99 = load ptr, ptr %4, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.aiMesh, ptr %99, i32 0, i32 8
  %101 = load i32, ptr %7, align 4, !tbaa !25
  %102 = zext i32 %101 to i64
  %103 = getelementptr inbounds [8 x ptr], ptr %100, i64 0, i64 %102
  %104 = load ptr, ptr %103, align 8, !tbaa !5
  %105 = icmp eq ptr %104, null
  br i1 %105, label %107, label %106

106:                                              ; preds = %98
  call void @_ZdaPv(ptr noundef %104) #5
  br label %107

107:                                              ; preds = %106, %98
  %108 = load ptr, ptr %4, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.aiMesh, ptr %108, i32 0, i32 8
  %110 = load i32, ptr %7, align 4, !tbaa !25
  %111 = zext i32 %110 to i64
  %112 = getelementptr inbounds [8 x ptr], ptr %109, i64 0, i64 %111
  store ptr null, ptr %112, align 8, !tbaa !5
  store i8 1, ptr %5, align 1, !tbaa !9
  %113 = load i8, ptr %6, align 1, !tbaa !9, !range !26, !noundef !27
  %114 = trunc i8 %113 to i1
  br i1 %114, label %142, label %115

115:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #4
  %116 = load i32, ptr %7, align 4, !tbaa !25
  %117 = add i32 %116, 1
  store i32 %117, ptr %10, align 4, !tbaa !25
  br label %118

118:                                              ; preds = %135, %115
  %119 = load i32, ptr %10, align 4, !tbaa !25
  %120 = icmp ult i32 %119, 8
  br i1 %120, label %122, label %121

121:                                              ; preds = %118
  store i32 5, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  br label %138

122:                                              ; preds = %118
  %123 = load ptr, ptr %4, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.aiMesh, ptr %123, i32 0, i32 8
  %125 = load i32, ptr %10, align 4, !tbaa !25
  %126 = zext i32 %125 to i64
  %127 = getelementptr inbounds [8 x ptr], ptr %124, i64 0, i64 %126
  %128 = load ptr, ptr %127, align 8, !tbaa !5
  %129 = load ptr, ptr %4, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.aiMesh, ptr %129, i32 0, i32 8
  %131 = load i32, ptr %10, align 4, !tbaa !25
  %132 = sub i32 %131, 1
  %133 = zext i32 %132 to i64
  %134 = getelementptr inbounds [8 x ptr], ptr %130, i64 0, i64 %133
  store ptr %128, ptr %134, align 8, !tbaa !5
  br label %135

135:                                              ; preds = %122
  %136 = load i32, ptr %10, align 4, !tbaa !25
  %137 = add i32 %136, 1
  store i32 %137, ptr %10, align 4, !tbaa !25
  br label %118, !llvm.loop !28

138:                                              ; preds = %121
  %139 = load ptr, ptr %4, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.aiMesh, ptr %139, i32 0, i32 8
  %141 = getelementptr inbounds [8 x ptr], ptr %140, i64 0, i64 7
  store ptr null, ptr %141, align 8, !tbaa !5
  br label %146

142:                                              ; preds = %107
  br label %143

143:                                              ; preds = %142, %95
  %144 = load i32, ptr %7, align 4, !tbaa !25
  %145 = add i32 %144, 1
  store i32 %145, ptr %7, align 4, !tbaa !25
  br label %146

146:                                              ; preds = %143, %138
  %147 = load i32, ptr %8, align 4, !tbaa !25
  %148 = add i32 %147, 1
  store i32 %148, ptr %8, align 4, !tbaa !25
  br label %74, !llvm.loop !30

149:                                              ; preds = %86, %77
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #4
  br label %150

150:                                              ; preds = %149
  %151 = getelementptr inbounds %"class.Assimp::RemoveVCProcess", ptr %14, i32 0, i32 1
  %152 = load i32, ptr %151, align 8, !tbaa !11
  %153 = and i32 %152, 8
  %154 = icmp ne i32 0, %153
  %155 = zext i1 %154 to i8
  store i8 %155, ptr %6, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  store i32 0, ptr %11, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  store i32 0, ptr %12, align 4, !tbaa !25
  br label %156

156:                                              ; preds = %228, %150
  %157 = load i32, ptr %12, align 4, !tbaa !25
  %158 = icmp ult i32 %157, 8
  br i1 %158, label %160, label %159

159:                                              ; preds = %156
  store i32 8, ptr %9, align 4
  br label %231

160:                                              ; preds = %156
  %161 = load ptr, ptr %4, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.aiMesh, ptr %161, i32 0, i32 7
  %163 = load i32, ptr %11, align 4, !tbaa !25
  %164 = zext i32 %163 to i64
  %165 = getelementptr inbounds [8 x ptr], ptr %162, i64 0, i64 %164
  %166 = load ptr, ptr %165, align 8, !tbaa !5
  %167 = icmp ne ptr %166, null
  br i1 %167, label %169, label %168

168:                                              ; preds = %160
  store i32 8, ptr %9, align 4
  br label %231

169:                                              ; preds = %160
  %170 = getelementptr inbounds %"class.Assimp::RemoveVCProcess", ptr %14, i32 0, i32 1
  %171 = load i32, ptr %170, align 8, !tbaa !11
  %172 = load i32, ptr %11, align 4, !tbaa !25
  %173 = add i32 %172, 20
  %174 = shl i32 1, %173
  %175 = and i32 %171, %174
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %180, label %177

177:                                              ; preds = %169
  %178 = load i8, ptr %6, align 1, !tbaa !9, !range !26, !noundef !27
  %179 = trunc i8 %178 to i1
  br i1 %179, label %180, label %225

180:                                              ; preds = %177, %169
  %181 = load ptr, ptr %4, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.aiMesh, ptr %181, i32 0, i32 7
  %183 = load i32, ptr %11, align 4, !tbaa !25
  %184 = zext i32 %183 to i64
  %185 = getelementptr inbounds [8 x ptr], ptr %182, i64 0, i64 %184
  %186 = load ptr, ptr %185, align 8, !tbaa !5
  %187 = icmp eq ptr %186, null
  br i1 %187, label %189, label %188

188:                                              ; preds = %180
  call void @_ZdaPv(ptr noundef %186) #5
  br label %189

189:                                              ; preds = %188, %180
  %190 = load ptr, ptr %4, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.aiMesh, ptr %190, i32 0, i32 7
  %192 = load i32, ptr %11, align 4, !tbaa !25
  %193 = zext i32 %192 to i64
  %194 = getelementptr inbounds [8 x ptr], ptr %191, i64 0, i64 %193
  store ptr null, ptr %194, align 8, !tbaa !5
  store i8 1, ptr %5, align 1, !tbaa !9
  %195 = load i8, ptr %6, align 1, !tbaa !9, !range !26, !noundef !27
  %196 = trunc i8 %195 to i1
  br i1 %196, label %224, label %197

197:                                              ; preds = %189
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  %198 = load i32, ptr %11, align 4, !tbaa !25
  %199 = add i32 %198, 1
  store i32 %199, ptr %13, align 4, !tbaa !25
  br label %200

200:                                              ; preds = %217, %197
  %201 = load i32, ptr %13, align 4, !tbaa !25
  %202 = icmp ult i32 %201, 8
  br i1 %202, label %204, label %203

203:                                              ; preds = %200
  store i32 11, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  br label %220

204:                                              ; preds = %200
  %205 = load ptr, ptr %4, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.aiMesh, ptr %205, i32 0, i32 7
  %207 = load i32, ptr %13, align 4, !tbaa !25
  %208 = zext i32 %207 to i64
  %209 = getelementptr inbounds [8 x ptr], ptr %206, i64 0, i64 %208
  %210 = load ptr, ptr %209, align 8, !tbaa !5
  %211 = load ptr, ptr %4, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.aiMesh, ptr %211, i32 0, i32 7
  %213 = load i32, ptr %13, align 4, !tbaa !25
  %214 = sub i32 %213, 1
  %215 = zext i32 %214 to i64
  %216 = getelementptr inbounds [8 x ptr], ptr %212, i64 0, i64 %215
  store ptr %210, ptr %216, align 8, !tbaa !5
  br label %217

217:                                              ; preds = %204
  %218 = load i32, ptr %13, align 4, !tbaa !25
  %219 = add i32 %218, 1
  store i32 %219, ptr %13, align 4, !tbaa !25
  br label %200, !llvm.loop !31

220:                                              ; preds = %203
  %221 = load ptr, ptr %4, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.aiMesh, ptr %221, i32 0, i32 7
  %223 = getelementptr inbounds [8 x ptr], ptr %222, i64 0, i64 7
  store ptr null, ptr %223, align 8, !tbaa !5
  br label %228

224:                                              ; preds = %189
  br label %225

225:                                              ; preds = %224, %177
  %226 = load i32, ptr %11, align 4, !tbaa !25
  %227 = add i32 %226, 1
  store i32 %227, ptr %11, align 4, !tbaa !25
  br label %228

228:                                              ; preds = %225, %220
  %229 = load i32, ptr %12, align 4, !tbaa !25
  %230 = add i32 %229, 1
  store i32 %230, ptr %12, align 4, !tbaa !25
  br label %156, !llvm.loop !32

231:                                              ; preds = %168, %159
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  br label %232

232:                                              ; preds = %231
  %233 = getelementptr inbounds %"class.Assimp::RemoveVCProcess", ptr %14, i32 0, i32 1
  %234 = load i32, ptr %233, align 8, !tbaa !11
  %235 = and i32 %234, 32
  %236 = icmp ne i32 %235, 0
  br i1 %236, label %237, label %247

237:                                              ; preds = %232
  %238 = load ptr, ptr %4, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.aiMesh, ptr %238, i32 0, i32 12
  %240 = load ptr, ptr %239, align 8, !tbaa !33
  %241 = icmp ne ptr %240, null
  br i1 %241, label %242, label %247

242:                                              ; preds = %237
  %243 = load ptr, ptr %4, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.aiMesh, ptr %243, i32 0, i32 12
  %245 = load ptr, ptr %4, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.aiMesh, ptr %245, i32 0, i32 11
  call void @_Z11ArrayDeleteI6aiBoneEvRPPT_Rj(ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 4 dereferenceable(4) %246)
  store i8 1, ptr %5, align 1, !tbaa !9
  br label %247

247:                                              ; preds = %242, %237, %232
  %248 = load i8, ptr %5, align 1, !tbaa !9, !range !26, !noundef !27
  %249 = trunc i8 %248 to i1
  store i32 1, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #4
  ret i1 %249
}

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

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

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

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

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


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

; Function Attrs: mustprogress nounwind uwtable
define dso_local noundef zeroext i1 @_ZN6Assimp15RemoveVCProcess11ProcessMeshEP6aiMesh(ptr nocapture noundef nonnull readonly align 8 dereferenceable(40) %0, ptr noundef %1) local_unnamed_addr #0 align 2 {
  %3 = getelementptr inbounds i8, ptr %0, i64 24
  %4 = load i32, ptr %3, align 8, !tbaa !5
  %5 = and i32 %4, 2048
  %.not = icmp eq i32 %5, 0
  br i1 %.not, label %8, label %6

6:                                                ; preds = %2
  %7 = getelementptr inbounds i8, ptr %1, i64 232
  store i32 0, ptr %7, align 8, !tbaa !12
  br label %8

8:                                                ; preds = %6, %2
  %9 = and i32 %4, 2
  %.not66 = icmp eq i32 %9, 0
  br i1 %.not66, label %14, label %10

10:                                               ; preds = %8
  %11 = getelementptr inbounds i8, ptr %1, i64 24
  %12 = load ptr, ptr %11, align 8, !tbaa !19
  %.not67 = icmp eq ptr %12, null
  br i1 %.not67, label %14, label %13

13:                                               ; preds = %10
  tail call void @_ZdaPv(ptr noundef nonnull %12) #4
  store ptr null, ptr %11, align 8, !tbaa !19
  %.pre = load i32, ptr %3, align 8, !tbaa !5
  br label %14

14:                                               ; preds = %13, %10, %8
  %15 = phi i32 [ %.pre, %13 ], [ %4, %10 ], [ %4, %8 ]
  %.059 = phi i1 [ true, %13 ], [ false, %10 ], [ false, %8 ]
  %16 = and i32 %15, 4
  %.not68 = icmp eq i32 %16, 0
  br i1 %.not68, label %26, label %17

17:                                               ; preds = %14
  %18 = getelementptr inbounds i8, ptr %1, i64 32
  %19 = load ptr, ptr %18, align 8, !tbaa !20
  %.not69 = icmp eq ptr %19, null
  br i1 %.not69, label %26, label %20

20:                                               ; preds = %17
  tail call void @_ZdaPv(ptr noundef nonnull %19) #4
  store ptr null, ptr %18, align 8, !tbaa !20
  %21 = getelementptr inbounds i8, ptr %1, i64 40
  %22 = load ptr, ptr %21, align 8, !tbaa !21
  %23 = icmp eq ptr %22, null
  br i1 %23, label %25, label %24

24:                                               ; preds = %20
  tail call void @_ZdaPv(ptr noundef nonnull %22) #4
  br label %25

25:                                               ; preds = %24, %20
  store ptr null, ptr %21, align 8, !tbaa !21
  %.pre225 = load i32, ptr %3, align 8, !tbaa !5
  br label %26

26:                                               ; preds = %25, %17, %14
  %27 = phi i32 [ %.pre225, %25 ], [ %15, %17 ], [ %15, %14 ]
  %.160 = phi i1 [ true, %25 ], [ %.059, %17 ], [ %.059, %14 ]
  %.fr113 = freeze i32 %27
  %28 = and i32 %.fr113, 16
  %.not70.not = icmp eq i32 %28, 0
  %29 = getelementptr i8, ptr %1, i64 112
  %30 = getelementptr inbounds i8, ptr %1, i64 168
  %31 = load ptr, ptr %29, align 8, !tbaa !22
  %.not71 = icmp eq ptr %31, null
  br i1 %.not70.not, label %.split.preheader, label %.split.us

.split.preheader:                                 ; preds = %26
  br i1 %.not71, label %.split87.us, label %46

.split.us:                                        ; preds = %26
  br i1 %.not71, label %.split87.us, label %.lr.ph91.preheader

.lr.ph91.preheader:                               ; preds = %.split.us
  tail call void @_ZdaPv(ptr noundef nonnull %31) #4
  store ptr null, ptr %29, align 8, !tbaa !22
  %32 = getelementptr i8, ptr %1, i64 120
  %33 = load ptr, ptr %32, align 8, !tbaa !22
  %.not71.us = icmp eq ptr %33, null
  br i1 %.not71.us, label %.split87.us, label %.lr.ph91.1, !llvm.loop !23

.lr.ph91.1:                                       ; preds = %.lr.ph91.preheader
  tail call void @_ZdaPv(ptr noundef nonnull %33) #4
  store ptr null, ptr %32, align 8, !tbaa !22
  %34 = getelementptr i8, ptr %1, i64 128
  %35 = load ptr, ptr %34, align 8, !tbaa !22
  %.not71.us.1 = icmp eq ptr %35, null
  br i1 %.not71.us.1, label %.split87.us, label %.lr.ph91.2, !llvm.loop !23

.lr.ph91.2:                                       ; preds = %.lr.ph91.1
  tail call void @_ZdaPv(ptr noundef nonnull %35) #4
  store ptr null, ptr %34, align 8, !tbaa !22
  %36 = getelementptr i8, ptr %1, i64 136
  %37 = load ptr, ptr %36, align 8, !tbaa !22
  %.not71.us.2 = icmp eq ptr %37, null
  br i1 %.not71.us.2, label %.split87.us, label %.lr.ph91.3, !llvm.loop !23

.lr.ph91.3:                                       ; preds = %.lr.ph91.2
  tail call void @_ZdaPv(ptr noundef nonnull %37) #4
  store ptr null, ptr %36, align 8, !tbaa !22
  %38 = getelementptr i8, ptr %1, i64 144
  %39 = load ptr, ptr %38, align 8, !tbaa !22
  %.not71.us.3 = icmp eq ptr %39, null
  br i1 %.not71.us.3, label %.split87.us, label %.lr.ph91.4, !llvm.loop !23

.lr.ph91.4:                                       ; preds = %.lr.ph91.3
  tail call void @_ZdaPv(ptr noundef nonnull %39) #4
  store ptr null, ptr %38, align 8, !tbaa !22
  %40 = getelementptr i8, ptr %1, i64 152
  %41 = load ptr, ptr %40, align 8, !tbaa !22
  %.not71.us.4 = icmp eq ptr %41, null
  br i1 %.not71.us.4, label %.split87.us, label %.lr.ph91.5, !llvm.loop !23

.lr.ph91.5:                                       ; preds = %.lr.ph91.4
  tail call void @_ZdaPv(ptr noundef nonnull %41) #4
  store ptr null, ptr %40, align 8, !tbaa !22
  %42 = getelementptr i8, ptr %1, i64 160
  %43 = load ptr, ptr %42, align 8, !tbaa !22
  %.not71.us.5 = icmp eq ptr %43, null
  br i1 %.not71.us.5, label %.split87.us, label %.lr.ph91.6, !llvm.loop !23

.lr.ph91.6:                                       ; preds = %.lr.ph91.5
  tail call void @_ZdaPv(ptr noundef nonnull %43) #4
  store ptr null, ptr %42, align 8, !tbaa !22
  %44 = getelementptr i8, ptr %1, i64 168
  %45 = load ptr, ptr %44, align 8, !tbaa !22
  %.not71.us.6 = icmp eq ptr %45, null
  br i1 %.not71.us.6, label %.split87.us, label %.lr.ph91.7, !llvm.loop !23

.lr.ph91.7:                                       ; preds = %.lr.ph91.6
  tail call void @_ZdaPv(ptr noundef nonnull %45) #4
  br label %.split87.us.sink.split

46:                                               ; preds = %.split.preheader
  %47 = and i32 %.fr113, 33554432
  %.not77.not = icmp eq i32 %47, 0
  br i1 %.not77.not, label %.split.1, label %._crit_edge

._crit_edge:                                      ; preds = %46
  tail call void @_ZdaPv(ptr noundef nonnull %31) #4
  %scevgep = getelementptr i8, ptr %1, i64 120
  tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %29, ptr noundef nonnull align 8 dereferenceable(56) %scevgep, i64 56, i1 false), !tbaa !22
  store ptr null, ptr %30, align 8, !tbaa !22
  br label %.split.1

.split.1:                                         ; preds = %46, %._crit_edge
  %.4 = phi i1 [ true, %._crit_edge ], [ %.160, %46 ]
  %.158 = phi i32 [ 0, %._crit_edge ], [ 1, %46 ]
  %48 = zext nneg i32 %.158 to i64
  %49 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %48
  %50 = load ptr, ptr %49, align 8, !tbaa !22
  %.not71.1 = icmp eq ptr %50, null
  br i1 %.not71.1, label %.split87.us, label %51

51:                                               ; preds = %.split.1
  %52 = load i32, ptr %3, align 8, !tbaa !5
  %53 = and i32 %52, 67108864
  %.not77.not.1 = icmp eq i32 %53, 0
  br i1 %.not77.not.1, label %76, label %.lr.ph.preheader.1

.lr.ph.preheader.1:                               ; preds = %51
  tail call void @_ZdaPv(ptr noundef nonnull %50) #4
  store ptr null, ptr %49, align 8, !tbaa !22
  %.05580.1 = add nuw nsw i32 %.158, 1
  %54 = zext nneg i32 %.05580.1 to i64
  %55 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %54
  %56 = load ptr, ptr %55, align 8, !tbaa !22
  %57 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %48
  store ptr %56, ptr %57, align 8, !tbaa !22
  %indvars.iv.next148 = add nuw nsw i64 %48, 1
  %indvars.iv.next.1 = add nuw nsw i64 %54, 1
  %58 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.1
  %59 = load ptr, ptr %58, align 8, !tbaa !22
  %60 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next148
  store ptr %59, ptr %60, align 8, !tbaa !22
  %indvars.iv.next148.1 = or disjoint i64 %48, 2
  %indvars.iv.next.1.1 = add nuw nsw i64 %54, 2
  %61 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.1.1
  %62 = load ptr, ptr %61, align 8, !tbaa !22
  %63 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next148.1
  store ptr %62, ptr %63, align 8, !tbaa !22
  %indvars.iv.next148.2 = add nuw nsw i64 %48, 3
  %indvars.iv.next.1.2 = add nuw nsw i64 %54, 3
  %64 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.1.2
  %65 = load ptr, ptr %64, align 8, !tbaa !22
  %66 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next148.2
  store ptr %65, ptr %66, align 8, !tbaa !22
  %indvars.iv.next148.3 = or disjoint i64 %48, 4
  %indvars.iv.next.1.3 = or disjoint i64 %54, 4
  %67 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.1.3
  %68 = load ptr, ptr %67, align 8, !tbaa !22
  %69 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next148.3
  store ptr %68, ptr %69, align 8, !tbaa !22
  %indvars.iv.next.1.4 = add nuw nsw i64 %54, 5
  %.not249.4 = icmp eq i64 %indvars.iv.next.1.4, 8
  br i1 %.not249.4, label %._crit_edge.1, label %.lr.ph.1.5, !llvm.loop !25

.lr.ph.1.5:                                       ; preds = %.lr.ph.preheader.1
  %indvars.iv.next148.4 = add nuw nsw i64 %48, 5
  %70 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.1.4
  %71 = load ptr, ptr %70, align 8, !tbaa !22
  %72 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next148.4
  store ptr %71, ptr %72, align 8, !tbaa !22
  %indvars.iv.next.1.5 = add nuw nsw i64 %54, 6
  %.not249.5 = icmp eq i64 %indvars.iv.next.1.5, 8
  br i1 %.not249.5, label %._crit_edge.1, label %.lr.ph.1.6, !llvm.loop !25

.lr.ph.1.6:                                       ; preds = %.lr.ph.1.5
  %indvars.iv.next148.5 = or disjoint i64 %48, 6
  %73 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.1.5
  %74 = load ptr, ptr %73, align 8, !tbaa !22
  %75 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next148.5
  store ptr %74, ptr %75, align 8, !tbaa !22
  br label %._crit_edge.1

._crit_edge.1:                                    ; preds = %.lr.ph.1.6, %.lr.ph.1.5, %.lr.ph.preheader.1
  store ptr null, ptr %30, align 8, !tbaa !22
  br label %.split.2

76:                                               ; preds = %51
  %77 = add nuw nsw i32 %.158, 1
  %.pre226 = zext nneg i32 %77 to i64
  br label %.split.2

.split.2:                                         ; preds = %76, %._crit_edge.1
  %.pre-phi = phi i64 [ %.pre226, %76 ], [ %48, %._crit_edge.1 ]
  %.4.1 = phi i1 [ %.4, %76 ], [ true, %._crit_edge.1 ]
  %.158.1 = phi i32 [ %77, %76 ], [ %.158, %._crit_edge.1 ]
  %78 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %.pre-phi
  %79 = load ptr, ptr %78, align 8, !tbaa !22
  %.not71.2 = icmp eq ptr %79, null
  br i1 %.not71.2, label %.split87.us, label %80

80:                                               ; preds = %.split.2
  %81 = load i32, ptr %3, align 8, !tbaa !5
  %82 = and i32 %81, 134217728
  %.not77.not.2 = icmp eq i32 %82, 0
  br i1 %.not77.not.2, label %105, label %.lr.ph.preheader.2

.lr.ph.preheader.2:                               ; preds = %80
  tail call void @_ZdaPv(ptr noundef nonnull %79) #4
  store ptr null, ptr %78, align 8, !tbaa !22
  %.05580.2 = add nuw nsw i32 %.158.1, 1
  %83 = zext nneg i32 %.05580.2 to i64
  %84 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %83
  %85 = load ptr, ptr %84, align 8, !tbaa !22
  %86 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %.pre-phi
  store ptr %85, ptr %86, align 8, !tbaa !22
  %indvars.iv.next.2 = add nuw nsw i64 %83, 1
  %.not250 = icmp eq i64 %indvars.iv.next.2, 8
  br i1 %.not250, label %._crit_edge.2, label %.lr.ph.2.1, !llvm.loop !25

.lr.ph.2.1:                                       ; preds = %.lr.ph.preheader.2
  %indvars.iv.next144 = add nuw nsw i64 %.pre-phi, 1
  %87 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.2
  %88 = load ptr, ptr %87, align 8, !tbaa !22
  %89 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next144
  store ptr %88, ptr %89, align 8, !tbaa !22
  %indvars.iv.next.2.1 = add nuw nsw i64 %83, 2
  %.not250.1 = icmp eq i64 %indvars.iv.next.2.1, 8
  br i1 %.not250.1, label %._crit_edge.2, label %.lr.ph.2.2, !llvm.loop !25

.lr.ph.2.2:                                       ; preds = %.lr.ph.2.1
  %indvars.iv.next144.1 = add nuw nsw i64 %.pre-phi, 2
  %90 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.2.1
  %91 = load ptr, ptr %90, align 8, !tbaa !22
  %92 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next144.1
  store ptr %91, ptr %92, align 8, !tbaa !22
  %indvars.iv.next.2.2 = add nuw nsw i64 %83, 3
  %.not250.2 = icmp eq i64 %indvars.iv.next.2.2, 8
  br i1 %.not250.2, label %._crit_edge.2, label %.lr.ph.2.3, !llvm.loop !25

.lr.ph.2.3:                                       ; preds = %.lr.ph.2.2
  %indvars.iv.next144.2 = add nuw nsw i64 %.pre-phi, 3
  %93 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.2.2
  %94 = load ptr, ptr %93, align 8, !tbaa !22
  %95 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next144.2
  store ptr %94, ptr %95, align 8, !tbaa !22
  %indvars.iv.next.2.3 = add nuw nsw i64 %83, 4
  %.not250.3 = icmp eq i64 %indvars.iv.next.2.3, 8
  br i1 %.not250.3, label %._crit_edge.2, label %.lr.ph.2.4, !llvm.loop !25

.lr.ph.2.4:                                       ; preds = %.lr.ph.2.3
  %indvars.iv.next144.3 = add nuw nsw i64 %.pre-phi, 4
  %96 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.2.3
  %97 = load ptr, ptr %96, align 8, !tbaa !22
  %98 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next144.3
  store ptr %97, ptr %98, align 8, !tbaa !22
  %indvars.iv.next.2.4 = add nuw nsw i64 %83, 5
  %.not250.4 = icmp eq i64 %indvars.iv.next.2.4, 8
  br i1 %.not250.4, label %._crit_edge.2, label %.lr.ph.2.5, !llvm.loop !25

.lr.ph.2.5:                                       ; preds = %.lr.ph.2.4
  %indvars.iv.next144.4 = add nuw nsw i64 %.pre-phi, 5
  %99 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.2.4
  %100 = load ptr, ptr %99, align 8, !tbaa !22
  %101 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next144.4
  store ptr %100, ptr %101, align 8, !tbaa !22
  %indvars.iv.next.2.5 = add nuw nsw i64 %83, 6
  %.not250.5 = icmp eq i64 %indvars.iv.next.2.5, 8
  br i1 %.not250.5, label %._crit_edge.2, label %.lr.ph.2.6, !llvm.loop !25

.lr.ph.2.6:                                       ; preds = %.lr.ph.2.5
  %indvars.iv.next144.5 = add nuw nsw i64 %.pre-phi, 6
  %102 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.2.5
  %103 = load ptr, ptr %102, align 8, !tbaa !22
  %104 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next144.5
  store ptr %103, ptr %104, align 8, !tbaa !22
  br label %._crit_edge.2

._crit_edge.2:                                    ; preds = %.lr.ph.2.6, %.lr.ph.2.5, %.lr.ph.2.4, %.lr.ph.2.3, %.lr.ph.2.2, %.lr.ph.2.1, %.lr.ph.preheader.2
  store ptr null, ptr %30, align 8, !tbaa !22
  br label %.split.3

105:                                              ; preds = %80
  %106 = add nuw nsw i32 %.158.1, 1
  %.pre227 = zext nneg i32 %106 to i64
  br label %.split.3

.split.3:                                         ; preds = %105, %._crit_edge.2
  %.pre-phi228 = phi i64 [ %.pre227, %105 ], [ %.pre-phi, %._crit_edge.2 ]
  %.4.2 = phi i1 [ %.4.1, %105 ], [ true, %._crit_edge.2 ]
  %.158.2 = phi i32 [ %106, %105 ], [ %.158.1, %._crit_edge.2 ]
  %107 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %.pre-phi228
  %108 = load ptr, ptr %107, align 8, !tbaa !22
  %.not71.3 = icmp eq ptr %108, null
  br i1 %.not71.3, label %.split87.us, label %109

109:                                              ; preds = %.split.3
  %110 = load i32, ptr %3, align 8, !tbaa !5
  %111 = and i32 %110, 268435456
  %.not77.not.3 = icmp eq i32 %111, 0
  br i1 %.not77.not.3, label %135, label %.preheader79.3

.preheader79.3:                                   ; preds = %109
  tail call void @_ZdaPv(ptr noundef nonnull %108) #4
  store ptr null, ptr %107, align 8, !tbaa !22
  %.05580.3 = add nsw i32 %.158.2, 1
  %112 = icmp ult i32 %.05580.3, 8
  br i1 %112, label %.lr.ph.preheader.3, label %._crit_edge.3

.lr.ph.preheader.3:                               ; preds = %.preheader79.3
  %113 = zext nneg i32 %.05580.3 to i64
  %114 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %113
  %115 = load ptr, ptr %114, align 8, !tbaa !22
  %116 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %.pre-phi228
  store ptr %115, ptr %116, align 8, !tbaa !22
  %indvars.iv.next.3 = add nuw nsw i64 %113, 1
  %.not251 = icmp eq i64 %indvars.iv.next.3, 8
  br i1 %.not251, label %._crit_edge.3, label %.lr.ph.3.1, !llvm.loop !25

.lr.ph.3.1:                                       ; preds = %.lr.ph.preheader.3
  %indvars.iv.next140 = add nuw nsw i64 %.pre-phi228, 1
  %117 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.3
  %118 = load ptr, ptr %117, align 8, !tbaa !22
  %119 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next140
  store ptr %118, ptr %119, align 8, !tbaa !22
  %indvars.iv.next.3.1 = add nuw nsw i64 %113, 2
  %.not251.1 = icmp eq i64 %indvars.iv.next.3.1, 8
  br i1 %.not251.1, label %._crit_edge.3, label %.lr.ph.3.2, !llvm.loop !25

.lr.ph.3.2:                                       ; preds = %.lr.ph.3.1
  %indvars.iv.next140.1 = add nuw nsw i64 %.pre-phi228, 2
  %120 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.3.1
  %121 = load ptr, ptr %120, align 8, !tbaa !22
  %122 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next140.1
  store ptr %121, ptr %122, align 8, !tbaa !22
  %indvars.iv.next.3.2 = add nuw nsw i64 %113, 3
  %.not251.2 = icmp eq i64 %indvars.iv.next.3.2, 8
  br i1 %.not251.2, label %._crit_edge.3, label %.lr.ph.3.3, !llvm.loop !25

.lr.ph.3.3:                                       ; preds = %.lr.ph.3.2
  %indvars.iv.next140.2 = add nuw nsw i64 %.pre-phi228, 3
  %123 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.3.2
  %124 = load ptr, ptr %123, align 8, !tbaa !22
  %125 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next140.2
  store ptr %124, ptr %125, align 8, !tbaa !22
  %indvars.iv.next.3.3 = add nuw nsw i64 %113, 4
  %.not251.3 = icmp eq i64 %indvars.iv.next.3.3, 8
  br i1 %.not251.3, label %._crit_edge.3, label %.lr.ph.3.4, !llvm.loop !25

.lr.ph.3.4:                                       ; preds = %.lr.ph.3.3
  %indvars.iv.next140.3 = add nuw nsw i64 %.pre-phi228, 4
  %126 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.3.3
  %127 = load ptr, ptr %126, align 8, !tbaa !22
  %128 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next140.3
  store ptr %127, ptr %128, align 8, !tbaa !22
  %indvars.iv.next.3.4 = add nuw nsw i64 %113, 5
  %.not251.4 = icmp eq i64 %indvars.iv.next.3.4, 8
  br i1 %.not251.4, label %._crit_edge.3, label %.lr.ph.3.5, !llvm.loop !25

.lr.ph.3.5:                                       ; preds = %.lr.ph.3.4
  %indvars.iv.next140.4 = add nuw nsw i64 %.pre-phi228, 5
  %129 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.3.4
  %130 = load ptr, ptr %129, align 8, !tbaa !22
  %131 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next140.4
  store ptr %130, ptr %131, align 8, !tbaa !22
  %indvars.iv.next.3.5 = add nuw nsw i64 %113, 6
  %.not251.5 = icmp eq i64 %indvars.iv.next.3.5, 8
  br i1 %.not251.5, label %._crit_edge.3, label %.lr.ph.3.6, !llvm.loop !25

.lr.ph.3.6:                                       ; preds = %.lr.ph.3.5
  %indvars.iv.next140.5 = add nuw nsw i64 %.pre-phi228, 6
  %132 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.3.5
  %133 = load ptr, ptr %132, align 8, !tbaa !22
  %134 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next140.5
  store ptr %133, ptr %134, align 8, !tbaa !22
  br label %._crit_edge.3

._crit_edge.3:                                    ; preds = %.lr.ph.preheader.3, %.lr.ph.3.1, %.lr.ph.3.2, %.lr.ph.3.3, %.lr.ph.3.4, %.lr.ph.3.5, %.lr.ph.3.6, %.preheader79.3
  store ptr null, ptr %30, align 8, !tbaa !22
  br label %.split.4

135:                                              ; preds = %109
  %136 = add nsw i32 %.158.2, 1
  %.pre229 = zext i32 %136 to i64
  br label %.split.4

.split.4:                                         ; preds = %135, %._crit_edge.3
  %.pre-phi230 = phi i64 [ %.pre229, %135 ], [ %.pre-phi228, %._crit_edge.3 ]
  %.4.3 = phi i1 [ %.4.2, %135 ], [ true, %._crit_edge.3 ]
  %.158.3 = phi i32 [ %136, %135 ], [ %.158.2, %._crit_edge.3 ]
  %137 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %.pre-phi230
  %138 = load ptr, ptr %137, align 8, !tbaa !22
  %.not71.4 = icmp eq ptr %138, null
  br i1 %.not71.4, label %.split87.us, label %139

139:                                              ; preds = %.split.4
  %140 = load i32, ptr %3, align 8, !tbaa !5
  %141 = and i32 %140, 536870912
  %.not77.not.4 = icmp eq i32 %141, 0
  br i1 %.not77.not.4, label %165, label %.preheader79.4

.preheader79.4:                                   ; preds = %139
  tail call void @_ZdaPv(ptr noundef nonnull %138) #4
  store ptr null, ptr %137, align 8, !tbaa !22
  %.05580.4 = add i32 %.158.3, 1
  %142 = icmp ult i32 %.05580.4, 8
  br i1 %142, label %.lr.ph.preheader.4, label %._crit_edge.4

.lr.ph.preheader.4:                               ; preds = %.preheader79.4
  %143 = zext nneg i32 %.05580.4 to i64
  %144 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %143
  %145 = load ptr, ptr %144, align 8, !tbaa !22
  %146 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %.pre-phi230
  store ptr %145, ptr %146, align 8, !tbaa !22
  %indvars.iv.next.4 = add nuw nsw i64 %143, 1
  %.not252 = icmp eq i64 %indvars.iv.next.4, 8
  br i1 %.not252, label %._crit_edge.4, label %.lr.ph.4.1, !llvm.loop !25

.lr.ph.4.1:                                       ; preds = %.lr.ph.preheader.4
  %indvars.iv.next136 = add nuw nsw i64 %.pre-phi230, 1
  %147 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.4
  %148 = load ptr, ptr %147, align 8, !tbaa !22
  %149 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next136
  store ptr %148, ptr %149, align 8, !tbaa !22
  %indvars.iv.next.4.1 = add nuw nsw i64 %143, 2
  %.not252.1 = icmp eq i64 %indvars.iv.next.4.1, 8
  br i1 %.not252.1, label %._crit_edge.4, label %.lr.ph.4.2, !llvm.loop !25

.lr.ph.4.2:                                       ; preds = %.lr.ph.4.1
  %indvars.iv.next136.1 = add nuw nsw i64 %.pre-phi230, 2
  %150 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.4.1
  %151 = load ptr, ptr %150, align 8, !tbaa !22
  %152 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next136.1
  store ptr %151, ptr %152, align 8, !tbaa !22
  %indvars.iv.next.4.2 = add nuw nsw i64 %143, 3
  %.not252.2 = icmp eq i64 %indvars.iv.next.4.2, 8
  br i1 %.not252.2, label %._crit_edge.4, label %.lr.ph.4.3, !llvm.loop !25

.lr.ph.4.3:                                       ; preds = %.lr.ph.4.2
  %indvars.iv.next136.2 = add nuw nsw i64 %.pre-phi230, 3
  %153 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.4.2
  %154 = load ptr, ptr %153, align 8, !tbaa !22
  %155 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next136.2
  store ptr %154, ptr %155, align 8, !tbaa !22
  %indvars.iv.next.4.3 = add nuw nsw i64 %143, 4
  %.not252.3 = icmp eq i64 %indvars.iv.next.4.3, 8
  br i1 %.not252.3, label %._crit_edge.4, label %.lr.ph.4.4, !llvm.loop !25

.lr.ph.4.4:                                       ; preds = %.lr.ph.4.3
  %indvars.iv.next136.3 = add nuw nsw i64 %.pre-phi230, 4
  %156 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.4.3
  %157 = load ptr, ptr %156, align 8, !tbaa !22
  %158 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next136.3
  store ptr %157, ptr %158, align 8, !tbaa !22
  %indvars.iv.next.4.4 = add nuw nsw i64 %143, 5
  %.not252.4 = icmp eq i64 %indvars.iv.next.4.4, 8
  br i1 %.not252.4, label %._crit_edge.4, label %.lr.ph.4.5, !llvm.loop !25

.lr.ph.4.5:                                       ; preds = %.lr.ph.4.4
  %indvars.iv.next136.4 = add nuw nsw i64 %.pre-phi230, 5
  %159 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.4.4
  %160 = load ptr, ptr %159, align 8, !tbaa !22
  %161 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next136.4
  store ptr %160, ptr %161, align 8, !tbaa !22
  %indvars.iv.next.4.5 = add nuw nsw i64 %143, 6
  %.not252.5 = icmp eq i64 %indvars.iv.next.4.5, 8
  br i1 %.not252.5, label %._crit_edge.4, label %.lr.ph.4.6, !llvm.loop !25

.lr.ph.4.6:                                       ; preds = %.lr.ph.4.5
  %indvars.iv.next136.5 = add nuw nsw i64 %.pre-phi230, 6
  %162 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.4.5
  %163 = load ptr, ptr %162, align 8, !tbaa !22
  %164 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next136.5
  store ptr %163, ptr %164, align 8, !tbaa !22
  br label %._crit_edge.4

._crit_edge.4:                                    ; preds = %.lr.ph.preheader.4, %.lr.ph.4.1, %.lr.ph.4.2, %.lr.ph.4.3, %.lr.ph.4.4, %.lr.ph.4.5, %.lr.ph.4.6, %.preheader79.4
  store ptr null, ptr %30, align 8, !tbaa !22
  br label %.split.5

165:                                              ; preds = %139
  %166 = add i32 %.158.3, 1
  %.pre231 = zext i32 %166 to i64
  br label %.split.5

.split.5:                                         ; preds = %165, %._crit_edge.4
  %.pre-phi232 = phi i64 [ %.pre231, %165 ], [ %.pre-phi230, %._crit_edge.4 ]
  %.4.4 = phi i1 [ %.4.3, %165 ], [ true, %._crit_edge.4 ]
  %.158.4 = phi i32 [ %166, %165 ], [ %.158.3, %._crit_edge.4 ]
  %167 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %.pre-phi232
  %168 = load ptr, ptr %167, align 8, !tbaa !22
  %.not71.5 = icmp eq ptr %168, null
  br i1 %.not71.5, label %.split87.us, label %169

169:                                              ; preds = %.split.5
  %170 = load i32, ptr %3, align 8, !tbaa !5
  %171 = and i32 %170, 1073741824
  %.not77.not.5 = icmp eq i32 %171, 0
  br i1 %.not77.not.5, label %195, label %.preheader79.5

.preheader79.5:                                   ; preds = %169
  tail call void @_ZdaPv(ptr noundef nonnull %168) #4
  store ptr null, ptr %167, align 8, !tbaa !22
  %.05580.5 = add i32 %.158.4, 1
  %172 = icmp ult i32 %.05580.5, 8
  br i1 %172, label %.lr.ph.preheader.5, label %._crit_edge.5

.lr.ph.preheader.5:                               ; preds = %.preheader79.5
  %173 = zext nneg i32 %.05580.5 to i64
  %174 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %173
  %175 = load ptr, ptr %174, align 8, !tbaa !22
  %176 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %.pre-phi232
  store ptr %175, ptr %176, align 8, !tbaa !22
  %indvars.iv.next.5 = add nuw nsw i64 %173, 1
  %.not253 = icmp eq i64 %indvars.iv.next.5, 8
  br i1 %.not253, label %._crit_edge.5, label %.lr.ph.5.1, !llvm.loop !25

.lr.ph.5.1:                                       ; preds = %.lr.ph.preheader.5
  %indvars.iv.next132 = add nuw nsw i64 %.pre-phi232, 1
  %177 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.5
  %178 = load ptr, ptr %177, align 8, !tbaa !22
  %179 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next132
  store ptr %178, ptr %179, align 8, !tbaa !22
  %indvars.iv.next.5.1 = add nuw nsw i64 %173, 2
  %.not253.1 = icmp eq i64 %indvars.iv.next.5.1, 8
  br i1 %.not253.1, label %._crit_edge.5, label %.lr.ph.5.2, !llvm.loop !25

.lr.ph.5.2:                                       ; preds = %.lr.ph.5.1
  %indvars.iv.next132.1 = add nuw nsw i64 %.pre-phi232, 2
  %180 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.5.1
  %181 = load ptr, ptr %180, align 8, !tbaa !22
  %182 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next132.1
  store ptr %181, ptr %182, align 8, !tbaa !22
  %indvars.iv.next.5.2 = add nuw nsw i64 %173, 3
  %.not253.2 = icmp eq i64 %indvars.iv.next.5.2, 8
  br i1 %.not253.2, label %._crit_edge.5, label %.lr.ph.5.3, !llvm.loop !25

.lr.ph.5.3:                                       ; preds = %.lr.ph.5.2
  %indvars.iv.next132.2 = add nuw nsw i64 %.pre-phi232, 3
  %183 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.5.2
  %184 = load ptr, ptr %183, align 8, !tbaa !22
  %185 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next132.2
  store ptr %184, ptr %185, align 8, !tbaa !22
  %indvars.iv.next.5.3 = add nuw nsw i64 %173, 4
  %.not253.3 = icmp eq i64 %indvars.iv.next.5.3, 8
  br i1 %.not253.3, label %._crit_edge.5, label %.lr.ph.5.4, !llvm.loop !25

.lr.ph.5.4:                                       ; preds = %.lr.ph.5.3
  %indvars.iv.next132.3 = add nuw nsw i64 %.pre-phi232, 4
  %186 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.5.3
  %187 = load ptr, ptr %186, align 8, !tbaa !22
  %188 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next132.3
  store ptr %187, ptr %188, align 8, !tbaa !22
  %indvars.iv.next.5.4 = add nuw nsw i64 %173, 5
  %.not253.4 = icmp eq i64 %indvars.iv.next.5.4, 8
  br i1 %.not253.4, label %._crit_edge.5, label %.lr.ph.5.5, !llvm.loop !25

.lr.ph.5.5:                                       ; preds = %.lr.ph.5.4
  %indvars.iv.next132.4 = add nuw nsw i64 %.pre-phi232, 5
  %189 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.5.4
  %190 = load ptr, ptr %189, align 8, !tbaa !22
  %191 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next132.4
  store ptr %190, ptr %191, align 8, !tbaa !22
  %indvars.iv.next.5.5 = add nuw nsw i64 %173, 6
  %.not253.5 = icmp eq i64 %indvars.iv.next.5.5, 8
  br i1 %.not253.5, label %._crit_edge.5, label %.lr.ph.5.6, !llvm.loop !25

.lr.ph.5.6:                                       ; preds = %.lr.ph.5.5
  %indvars.iv.next132.5 = add nuw nsw i64 %.pre-phi232, 6
  %192 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.5.5
  %193 = load ptr, ptr %192, align 8, !tbaa !22
  %194 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next132.5
  store ptr %193, ptr %194, align 8, !tbaa !22
  br label %._crit_edge.5

._crit_edge.5:                                    ; preds = %.lr.ph.preheader.5, %.lr.ph.5.1, %.lr.ph.5.2, %.lr.ph.5.3, %.lr.ph.5.4, %.lr.ph.5.5, %.lr.ph.5.6, %.preheader79.5
  store ptr null, ptr %30, align 8, !tbaa !22
  br label %.split.6

195:                                              ; preds = %169
  %196 = add i32 %.158.4, 1
  %.pre233 = zext i32 %196 to i64
  br label %.split.6

.split.6:                                         ; preds = %195, %._crit_edge.5
  %.pre-phi234 = phi i64 [ %.pre233, %195 ], [ %.pre-phi232, %._crit_edge.5 ]
  %.4.5 = phi i1 [ %.4.4, %195 ], [ true, %._crit_edge.5 ]
  %.158.5 = phi i32 [ %196, %195 ], [ %.158.4, %._crit_edge.5 ]
  %197 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %.pre-phi234
  %198 = load ptr, ptr %197, align 8, !tbaa !22
  %.not71.6 = icmp eq ptr %198, null
  %199 = load i32, ptr %3, align 8
  %.not77.not.6 = icmp sgt i32 %199, -1
  %or.cond = select i1 %.not71.6, i1 true, i1 %.not77.not.6
  br i1 %or.cond, label %.split87.us, label %.preheader79.6

.preheader79.6:                                   ; preds = %.split.6
  tail call void @_ZdaPv(ptr noundef nonnull %198) #4
  store ptr null, ptr %197, align 8, !tbaa !22
  %.05580.6 = add i32 %.158.5, 1
  %200 = icmp ult i32 %.05580.6, 8
  br i1 %200, label %.lr.ph.preheader.6, label %.split87.us.sink.split

.lr.ph.preheader.6:                               ; preds = %.preheader79.6
  %201 = zext nneg i32 %.05580.6 to i64
  %202 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %201
  %203 = load ptr, ptr %202, align 8, !tbaa !22
  %204 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %.pre-phi234
  store ptr %203, ptr %204, align 8, !tbaa !22
  %indvars.iv.next.6 = add nuw nsw i64 %201, 1
  %.not254 = icmp eq i64 %indvars.iv.next.6, 8
  br i1 %.not254, label %.split87.us.sink.split, label %.lr.ph.6.1, !llvm.loop !25

.lr.ph.6.1:                                       ; preds = %.lr.ph.preheader.6
  %indvars.iv.next128 = add nuw nsw i64 %.pre-phi234, 1
  %205 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.6
  %206 = load ptr, ptr %205, align 8, !tbaa !22
  %207 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next128
  store ptr %206, ptr %207, align 8, !tbaa !22
  %indvars.iv.next.6.1 = add nuw nsw i64 %201, 2
  %.not254.1 = icmp eq i64 %indvars.iv.next.6.1, 8
  br i1 %.not254.1, label %.split87.us.sink.split, label %.lr.ph.6.2, !llvm.loop !25

.lr.ph.6.2:                                       ; preds = %.lr.ph.6.1
  %indvars.iv.next128.1 = add nuw nsw i64 %.pre-phi234, 2
  %208 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.6.1
  %209 = load ptr, ptr %208, align 8, !tbaa !22
  %210 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next128.1
  store ptr %209, ptr %210, align 8, !tbaa !22
  %indvars.iv.next.6.2 = add nuw nsw i64 %201, 3
  %.not254.2 = icmp eq i64 %indvars.iv.next.6.2, 8
  br i1 %.not254.2, label %.split87.us.sink.split, label %.lr.ph.6.3, !llvm.loop !25

.lr.ph.6.3:                                       ; preds = %.lr.ph.6.2
  %indvars.iv.next128.2 = add nuw nsw i64 %.pre-phi234, 3
  %211 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.6.2
  %212 = load ptr, ptr %211, align 8, !tbaa !22
  %213 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next128.2
  store ptr %212, ptr %213, align 8, !tbaa !22
  %indvars.iv.next.6.3 = add nuw nsw i64 %201, 4
  %.not254.3 = icmp eq i64 %indvars.iv.next.6.3, 8
  br i1 %.not254.3, label %.split87.us.sink.split, label %.lr.ph.6.4, !llvm.loop !25

.lr.ph.6.4:                                       ; preds = %.lr.ph.6.3
  %indvars.iv.next128.3 = add nuw nsw i64 %.pre-phi234, 4
  %214 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.6.3
  %215 = load ptr, ptr %214, align 8, !tbaa !22
  %216 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next128.3
  store ptr %215, ptr %216, align 8, !tbaa !22
  %indvars.iv.next.6.4 = add nuw nsw i64 %201, 5
  %.not254.4 = icmp eq i64 %indvars.iv.next.6.4, 8
  br i1 %.not254.4, label %.split87.us.sink.split, label %.lr.ph.6.5, !llvm.loop !25

.lr.ph.6.5:                                       ; preds = %.lr.ph.6.4
  %indvars.iv.next128.4 = add nuw nsw i64 %.pre-phi234, 5
  %217 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.6.4
  %218 = load ptr, ptr %217, align 8, !tbaa !22
  %219 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next128.4
  store ptr %218, ptr %219, align 8, !tbaa !22
  %indvars.iv.next.6.5 = add nuw nsw i64 %201, 6
  %.not254.5 = icmp eq i64 %indvars.iv.next.6.5, 8
  br i1 %.not254.5, label %.split87.us.sink.split, label %.lr.ph.6.6, !llvm.loop !25

.lr.ph.6.6:                                       ; preds = %.lr.ph.6.5
  %indvars.iv.next128.5 = add nuw nsw i64 %.pre-phi234, 6
  %220 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next.6.5
  %221 = load ptr, ptr %220, align 8, !tbaa !22
  %222 = getelementptr inbounds [8 x ptr], ptr %29, i64 0, i64 %indvars.iv.next128.5
  store ptr %221, ptr %222, align 8, !tbaa !22
  br label %.split87.us.sink.split

.split87.us.sink.split:                           ; preds = %.lr.ph.preheader.6, %.lr.ph.6.1, %.lr.ph.6.2, %.lr.ph.6.3, %.lr.ph.6.4, %.lr.ph.6.5, %.lr.ph.6.6, %.preheader79.6, %.lr.ph91.7
  %.sink = phi ptr [ %44, %.lr.ph91.7 ], [ %30, %.preheader79.6 ], [ %30, %.lr.ph.6.6 ], [ %30, %.lr.ph.6.5 ], [ %30, %.lr.ph.6.4 ], [ %30, %.lr.ph.6.3 ], [ %30, %.lr.ph.6.2 ], [ %30, %.lr.ph.6.1 ], [ %30, %.lr.ph.preheader.6 ]
  store ptr null, ptr %.sink, align 8, !tbaa !22
  br label %.split87.us

.split87.us:                                      ; preds = %.split87.us.sink.split, %.lr.ph91.preheader, %.lr.ph91.1, %.lr.ph91.2, %.lr.ph91.3, %.lr.ph91.4, %.lr.ph91.5, %.lr.ph91.6, %.split.preheader, %.split.1, %.split.2, %.split.3, %.split.4, %.split.5, %.split.6, %.split.us
  %.us-phi = phi i1 [ %.160, %.split.us ], [ %.160, %.split.preheader ], [ %.4, %.split.1 ], [ %.4.1, %.split.2 ], [ %.4.2, %.split.3 ], [ %.4.3, %.split.4 ], [ %.4.4, %.split.5 ], [ %.4.5, %.split.6 ], [ true, %.lr.ph91.6 ], [ true, %.lr.ph91.5 ], [ true, %.lr.ph91.4 ], [ true, %.lr.ph91.3 ], [ true, %.lr.ph91.2 ], [ true, %.lr.ph91.1 ], [ true, %.lr.ph91.preheader ], [ true, %.split87.us.sink.split ]
  %223 = load i32, ptr %3, align 8, !tbaa !5
  %.fr114 = freeze i32 %223
  %224 = and i32 %.fr114, 8
  %.not72.not = icmp eq i32 %224, 0
  %225 = getelementptr i8, ptr %1, i64 48
  %226 = getelementptr inbounds i8, ptr %1, i64 104
  %227 = load ptr, ptr %225, align 8, !tbaa !22
  %.not73 = icmp eq ptr %227, null
  br i1 %.not72.not, label %.split102.preheader, label %.split102.us

.split102.preheader:                              ; preds = %.split87.us
  br i1 %.not73, label %.split104.us, label %242

.split102.us:                                     ; preds = %.split87.us
  br i1 %.not73, label %.split104.us, label %.lr.ph109.preheader

.lr.ph109.preheader:                              ; preds = %.split102.us
  tail call void @_ZdaPv(ptr noundef nonnull %227) #4
  store ptr null, ptr %225, align 8, !tbaa !22
  %228 = getelementptr i8, ptr %1, i64 56
  %229 = load ptr, ptr %228, align 8, !tbaa !22
  %.not73.us = icmp eq ptr %229, null
  br i1 %.not73.us, label %.split104.us, label %.lr.ph109.1, !llvm.loop !26

.lr.ph109.1:                                      ; preds = %.lr.ph109.preheader
  tail call void @_ZdaPv(ptr noundef nonnull %229) #4
  store ptr null, ptr %228, align 8, !tbaa !22
  %230 = getelementptr i8, ptr %1, i64 64
  %231 = load ptr, ptr %230, align 8, !tbaa !22
  %.not73.us.1 = icmp eq ptr %231, null
  br i1 %.not73.us.1, label %.split104.us, label %.lr.ph109.2, !llvm.loop !26

.lr.ph109.2:                                      ; preds = %.lr.ph109.1
  tail call void @_ZdaPv(ptr noundef nonnull %231) #4
  store ptr null, ptr %230, align 8, !tbaa !22
  %232 = getelementptr i8, ptr %1, i64 72
  %233 = load ptr, ptr %232, align 8, !tbaa !22
  %.not73.us.2 = icmp eq ptr %233, null
  br i1 %.not73.us.2, label %.split104.us, label %.lr.ph109.3, !llvm.loop !26

.lr.ph109.3:                                      ; preds = %.lr.ph109.2
  tail call void @_ZdaPv(ptr noundef nonnull %233) #4
  store ptr null, ptr %232, align 8, !tbaa !22
  %234 = getelementptr i8, ptr %1, i64 80
  %235 = load ptr, ptr %234, align 8, !tbaa !22
  %.not73.us.3 = icmp eq ptr %235, null
  br i1 %.not73.us.3, label %.split104.us, label %.lr.ph109.4, !llvm.loop !26

.lr.ph109.4:                                      ; preds = %.lr.ph109.3
  tail call void @_ZdaPv(ptr noundef nonnull %235) #4
  store ptr null, ptr %234, align 8, !tbaa !22
  %236 = getelementptr i8, ptr %1, i64 88
  %237 = load ptr, ptr %236, align 8, !tbaa !22
  %.not73.us.4 = icmp eq ptr %237, null
  br i1 %.not73.us.4, label %.split104.us, label %.lr.ph109.5, !llvm.loop !26

.lr.ph109.5:                                      ; preds = %.lr.ph109.4
  tail call void @_ZdaPv(ptr noundef nonnull %237) #4
  store ptr null, ptr %236, align 8, !tbaa !22
  %238 = getelementptr i8, ptr %1, i64 96
  %239 = load ptr, ptr %238, align 8, !tbaa !22
  %.not73.us.5 = icmp eq ptr %239, null
  br i1 %.not73.us.5, label %.split104.us, label %.lr.ph109.6, !llvm.loop !26

.lr.ph109.6:                                      ; preds = %.lr.ph109.5
  tail call void @_ZdaPv(ptr noundef nonnull %239) #4
  store ptr null, ptr %238, align 8, !tbaa !22
  %240 = getelementptr i8, ptr %1, i64 104
  %241 = load ptr, ptr %240, align 8, !tbaa !22
  %.not73.us.6 = icmp eq ptr %241, null
  br i1 %.not73.us.6, label %.split104.us, label %.lr.ph109.7, !llvm.loop !26

.lr.ph109.7:                                      ; preds = %.lr.ph109.6
  tail call void @_ZdaPv(ptr noundef nonnull %241) #4
  br label %.split104.us.sink.split

242:                                              ; preds = %.split102.preheader
  %243 = and i32 %.fr114, 1048576
  %.not76.not = icmp eq i32 %243, 0
  br i1 %.not76.not, label %.split102.1, label %._crit_edge98

._crit_edge98:                                    ; preds = %242
  tail call void @_ZdaPv(ptr noundef nonnull %227) #4
  %scevgep221 = getelementptr i8, ptr %1, i64 56
  tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %225, ptr noundef nonnull align 8 dereferenceable(56) %scevgep221, i64 56, i1 false), !tbaa !22
  store ptr null, ptr %226, align 8, !tbaa !22
  br label %.split102.1

.split102.1:                                      ; preds = %242, %._crit_edge98
  %.7 = phi i1 [ true, %._crit_edge98 ], [ %.us-phi, %242 ]
  %.1 = phi i32 [ 0, %._crit_edge98 ], [ 1, %242 ]
  %244 = zext nneg i32 %.1 to i64
  %245 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %244
  %246 = load ptr, ptr %245, align 8, !tbaa !22
  %.not73.1 = icmp eq ptr %246, null
  br i1 %.not73.1, label %.split104.us, label %247

247:                                              ; preds = %.split102.1
  %248 = load i32, ptr %3, align 8, !tbaa !5
  %249 = shl nuw nsw i32 1048576, %.1
  %250 = and i32 %248, %249
  %.not76.not.1 = icmp eq i32 %250, 0
  br i1 %.not76.not.1, label %273, label %.lr.ph97.preheader.1

.lr.ph97.preheader.1:                             ; preds = %247
  tail call void @_ZdaPv(ptr noundef nonnull %246) #4
  store ptr null, ptr %245, align 8, !tbaa !22
  %.094.1 = add nuw nsw i32 %.1, 1
  %251 = zext nneg i32 %.094.1 to i64
  %252 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %251
  %253 = load ptr, ptr %252, align 8, !tbaa !22
  %254 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %244
  store ptr %253, ptr %254, align 8, !tbaa !22
  %indvars.iv.next219 = add nuw nsw i64 %244, 1
  %indvars.iv.next.1173 = add nuw nsw i64 %251, 1
  %255 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.1173
  %256 = load ptr, ptr %255, align 8, !tbaa !22
  %257 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next219
  store ptr %256, ptr %257, align 8, !tbaa !22
  %indvars.iv.next219.1 = or disjoint i64 %244, 2
  %indvars.iv.next.1173.1 = add nuw nsw i64 %251, 2
  %258 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.1173.1
  %259 = load ptr, ptr %258, align 8, !tbaa !22
  %260 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next219.1
  store ptr %259, ptr %260, align 8, !tbaa !22
  %indvars.iv.next219.2 = add nuw nsw i64 %244, 3
  %indvars.iv.next.1173.2 = add nuw nsw i64 %251, 3
  %261 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.1173.2
  %262 = load ptr, ptr %261, align 8, !tbaa !22
  %263 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next219.2
  store ptr %262, ptr %263, align 8, !tbaa !22
  %indvars.iv.next219.3 = or disjoint i64 %244, 4
  %indvars.iv.next.1173.3 = or disjoint i64 %251, 4
  %264 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.1173.3
  %265 = load ptr, ptr %264, align 8, !tbaa !22
  %266 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next219.3
  store ptr %265, ptr %266, align 8, !tbaa !22
  %indvars.iv.next.1173.4 = add nuw nsw i64 %251, 5
  %.not255.4 = icmp eq i64 %indvars.iv.next.1173.4, 8
  br i1 %.not255.4, label %._crit_edge98.1, label %.lr.ph97.1.5, !llvm.loop !27

.lr.ph97.1.5:                                     ; preds = %.lr.ph97.preheader.1
  %indvars.iv.next219.4 = add nuw nsw i64 %244, 5
  %267 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.1173.4
  %268 = load ptr, ptr %267, align 8, !tbaa !22
  %269 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next219.4
  store ptr %268, ptr %269, align 8, !tbaa !22
  %indvars.iv.next.1173.5 = add nuw nsw i64 %251, 6
  %.not255.5 = icmp eq i64 %indvars.iv.next.1173.5, 8
  br i1 %.not255.5, label %._crit_edge98.1, label %.lr.ph97.1.6, !llvm.loop !27

.lr.ph97.1.6:                                     ; preds = %.lr.ph97.1.5
  %indvars.iv.next219.5 = or disjoint i64 %244, 6
  %270 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.1173.5
  %271 = load ptr, ptr %270, align 8, !tbaa !22
  %272 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next219.5
  store ptr %271, ptr %272, align 8, !tbaa !22
  br label %._crit_edge98.1

._crit_edge98.1:                                  ; preds = %.lr.ph97.1.6, %.lr.ph97.1.5, %.lr.ph97.preheader.1
  store ptr null, ptr %226, align 8, !tbaa !22
  br label %.split102.2

273:                                              ; preds = %247
  %274 = add nuw nsw i32 %.1, 1
  %.pre237 = zext nneg i32 %274 to i64
  br label %.split102.2

.split102.2:                                      ; preds = %273, %._crit_edge98.1
  %.pre-phi238 = phi i64 [ %.pre237, %273 ], [ %244, %._crit_edge98.1 ]
  %.7.1 = phi i1 [ %.7, %273 ], [ true, %._crit_edge98.1 ]
  %.1.1 = phi i32 [ %274, %273 ], [ %.1, %._crit_edge98.1 ]
  %275 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %.pre-phi238
  %276 = load ptr, ptr %275, align 8, !tbaa !22
  %.not73.2 = icmp eq ptr %276, null
  br i1 %.not73.2, label %.split104.us, label %277

277:                                              ; preds = %.split102.2
  %278 = load i32, ptr %3, align 8, !tbaa !5
  %279 = shl nuw nsw i32 1048576, %.1.1
  %280 = and i32 %278, %279
  %.not76.not.2 = icmp eq i32 %280, 0
  br i1 %.not76.not.2, label %303, label %.lr.ph97.preheader.2

.lr.ph97.preheader.2:                             ; preds = %277
  tail call void @_ZdaPv(ptr noundef nonnull %276) #4
  store ptr null, ptr %275, align 8, !tbaa !22
  %.094.2 = add nuw nsw i32 %.1.1, 1
  %281 = zext nneg i32 %.094.2 to i64
  %282 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %281
  %283 = load ptr, ptr %282, align 8, !tbaa !22
  %284 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %.pre-phi238
  store ptr %283, ptr %284, align 8, !tbaa !22
  %indvars.iv.next.2175 = add nuw nsw i64 %281, 1
  %.not256 = icmp eq i64 %indvars.iv.next.2175, 8
  br i1 %.not256, label %._crit_edge98.2, label %.lr.ph97.2.1, !llvm.loop !27

.lr.ph97.2.1:                                     ; preds = %.lr.ph97.preheader.2
  %indvars.iv.next214 = add nuw nsw i64 %.pre-phi238, 1
  %285 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.2175
  %286 = load ptr, ptr %285, align 8, !tbaa !22
  %287 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next214
  store ptr %286, ptr %287, align 8, !tbaa !22
  %indvars.iv.next.2175.1 = add nuw nsw i64 %281, 2
  %.not256.1 = icmp eq i64 %indvars.iv.next.2175.1, 8
  br i1 %.not256.1, label %._crit_edge98.2, label %.lr.ph97.2.2, !llvm.loop !27

.lr.ph97.2.2:                                     ; preds = %.lr.ph97.2.1
  %indvars.iv.next214.1 = add nuw nsw i64 %.pre-phi238, 2
  %288 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.2175.1
  %289 = load ptr, ptr %288, align 8, !tbaa !22
  %290 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next214.1
  store ptr %289, ptr %290, align 8, !tbaa !22
  %indvars.iv.next.2175.2 = add nuw nsw i64 %281, 3
  %.not256.2 = icmp eq i64 %indvars.iv.next.2175.2, 8
  br i1 %.not256.2, label %._crit_edge98.2, label %.lr.ph97.2.3, !llvm.loop !27

.lr.ph97.2.3:                                     ; preds = %.lr.ph97.2.2
  %indvars.iv.next214.2 = add nuw nsw i64 %.pre-phi238, 3
  %291 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.2175.2
  %292 = load ptr, ptr %291, align 8, !tbaa !22
  %293 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next214.2
  store ptr %292, ptr %293, align 8, !tbaa !22
  %indvars.iv.next.2175.3 = add nuw nsw i64 %281, 4
  %.not256.3 = icmp eq i64 %indvars.iv.next.2175.3, 8
  br i1 %.not256.3, label %._crit_edge98.2, label %.lr.ph97.2.4, !llvm.loop !27

.lr.ph97.2.4:                                     ; preds = %.lr.ph97.2.3
  %indvars.iv.next214.3 = add nuw nsw i64 %.pre-phi238, 4
  %294 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.2175.3
  %295 = load ptr, ptr %294, align 8, !tbaa !22
  %296 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next214.3
  store ptr %295, ptr %296, align 8, !tbaa !22
  %indvars.iv.next.2175.4 = add nuw nsw i64 %281, 5
  %.not256.4 = icmp eq i64 %indvars.iv.next.2175.4, 8
  br i1 %.not256.4, label %._crit_edge98.2, label %.lr.ph97.2.5, !llvm.loop !27

.lr.ph97.2.5:                                     ; preds = %.lr.ph97.2.4
  %indvars.iv.next214.4 = add nuw nsw i64 %.pre-phi238, 5
  %297 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.2175.4
  %298 = load ptr, ptr %297, align 8, !tbaa !22
  %299 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next214.4
  store ptr %298, ptr %299, align 8, !tbaa !22
  %indvars.iv.next.2175.5 = add nuw nsw i64 %281, 6
  %.not256.5 = icmp eq i64 %indvars.iv.next.2175.5, 8
  br i1 %.not256.5, label %._crit_edge98.2, label %.lr.ph97.2.6, !llvm.loop !27

.lr.ph97.2.6:                                     ; preds = %.lr.ph97.2.5
  %indvars.iv.next214.5 = add nuw nsw i64 %.pre-phi238, 6
  %300 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.2175.5
  %301 = load ptr, ptr %300, align 8, !tbaa !22
  %302 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next214.5
  store ptr %301, ptr %302, align 8, !tbaa !22
  br label %._crit_edge98.2

._crit_edge98.2:                                  ; preds = %.lr.ph97.2.6, %.lr.ph97.2.5, %.lr.ph97.2.4, %.lr.ph97.2.3, %.lr.ph97.2.2, %.lr.ph97.2.1, %.lr.ph97.preheader.2
  store ptr null, ptr %226, align 8, !tbaa !22
  br label %.split102.3

303:                                              ; preds = %277
  %304 = add nuw nsw i32 %.1.1, 1
  %.pre239 = zext nneg i32 %304 to i64
  br label %.split102.3

.split102.3:                                      ; preds = %303, %._crit_edge98.2
  %.pre-phi240 = phi i64 [ %.pre239, %303 ], [ %.pre-phi238, %._crit_edge98.2 ]
  %.7.2 = phi i1 [ %.7.1, %303 ], [ true, %._crit_edge98.2 ]
  %.1.2 = phi i32 [ %304, %303 ], [ %.1.1, %._crit_edge98.2 ]
  %305 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %.pre-phi240
  %306 = load ptr, ptr %305, align 8, !tbaa !22
  %.not73.3 = icmp eq ptr %306, null
  br i1 %.not73.3, label %.split104.us, label %307

307:                                              ; preds = %.split102.3
  %308 = load i32, ptr %3, align 8, !tbaa !5
  %309 = add nsw i32 %.1.2, 20
  %310 = shl nuw i32 1, %309
  %311 = and i32 %308, %310
  %.not76.not.3 = icmp eq i32 %311, 0
  br i1 %.not76.not.3, label %335, label %.preheader.3

.preheader.3:                                     ; preds = %307
  tail call void @_ZdaPv(ptr noundef nonnull %306) #4
  store ptr null, ptr %305, align 8, !tbaa !22
  %.094.3 = add nsw i32 %.1.2, 1
  %312 = icmp ult i32 %.094.3, 8
  br i1 %312, label %.lr.ph97.preheader.3, label %._crit_edge98.3

.lr.ph97.preheader.3:                             ; preds = %.preheader.3
  %313 = zext nneg i32 %.094.3 to i64
  %314 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %313
  %315 = load ptr, ptr %314, align 8, !tbaa !22
  %316 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %.pre-phi240
  store ptr %315, ptr %316, align 8, !tbaa !22
  %indvars.iv.next.3177 = add nuw nsw i64 %313, 1
  %.not257 = icmp eq i64 %indvars.iv.next.3177, 8
  br i1 %.not257, label %._crit_edge98.3, label %.lr.ph97.3.1, !llvm.loop !27

.lr.ph97.3.1:                                     ; preds = %.lr.ph97.preheader.3
  %indvars.iv.next209 = add nuw nsw i64 %.pre-phi240, 1
  %317 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.3177
  %318 = load ptr, ptr %317, align 8, !tbaa !22
  %319 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next209
  store ptr %318, ptr %319, align 8, !tbaa !22
  %indvars.iv.next.3177.1 = add nuw nsw i64 %313, 2
  %.not257.1 = icmp eq i64 %indvars.iv.next.3177.1, 8
  br i1 %.not257.1, label %._crit_edge98.3, label %.lr.ph97.3.2, !llvm.loop !27

.lr.ph97.3.2:                                     ; preds = %.lr.ph97.3.1
  %indvars.iv.next209.1 = add nuw nsw i64 %.pre-phi240, 2
  %320 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.3177.1
  %321 = load ptr, ptr %320, align 8, !tbaa !22
  %322 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next209.1
  store ptr %321, ptr %322, align 8, !tbaa !22
  %indvars.iv.next.3177.2 = add nuw nsw i64 %313, 3
  %.not257.2 = icmp eq i64 %indvars.iv.next.3177.2, 8
  br i1 %.not257.2, label %._crit_edge98.3, label %.lr.ph97.3.3, !llvm.loop !27

.lr.ph97.3.3:                                     ; preds = %.lr.ph97.3.2
  %indvars.iv.next209.2 = add nuw nsw i64 %.pre-phi240, 3
  %323 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.3177.2
  %324 = load ptr, ptr %323, align 8, !tbaa !22
  %325 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next209.2
  store ptr %324, ptr %325, align 8, !tbaa !22
  %indvars.iv.next.3177.3 = add nuw nsw i64 %313, 4
  %.not257.3 = icmp eq i64 %indvars.iv.next.3177.3, 8
  br i1 %.not257.3, label %._crit_edge98.3, label %.lr.ph97.3.4, !llvm.loop !27

.lr.ph97.3.4:                                     ; preds = %.lr.ph97.3.3
  %indvars.iv.next209.3 = add nuw nsw i64 %.pre-phi240, 4
  %326 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.3177.3
  %327 = load ptr, ptr %326, align 8, !tbaa !22
  %328 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next209.3
  store ptr %327, ptr %328, align 8, !tbaa !22
  %indvars.iv.next.3177.4 = add nuw nsw i64 %313, 5
  %.not257.4 = icmp eq i64 %indvars.iv.next.3177.4, 8
  br i1 %.not257.4, label %._crit_edge98.3, label %.lr.ph97.3.5, !llvm.loop !27

.lr.ph97.3.5:                                     ; preds = %.lr.ph97.3.4
  %indvars.iv.next209.4 = add nuw nsw i64 %.pre-phi240, 5
  %329 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.3177.4
  %330 = load ptr, ptr %329, align 8, !tbaa !22
  %331 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next209.4
  store ptr %330, ptr %331, align 8, !tbaa !22
  %indvars.iv.next.3177.5 = add nuw nsw i64 %313, 6
  %.not257.5 = icmp eq i64 %indvars.iv.next.3177.5, 8
  br i1 %.not257.5, label %._crit_edge98.3, label %.lr.ph97.3.6, !llvm.loop !27

.lr.ph97.3.6:                                     ; preds = %.lr.ph97.3.5
  %indvars.iv.next209.5 = add nuw nsw i64 %.pre-phi240, 6
  %332 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.3177.5
  %333 = load ptr, ptr %332, align 8, !tbaa !22
  %334 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next209.5
  store ptr %333, ptr %334, align 8, !tbaa !22
  br label %._crit_edge98.3

._crit_edge98.3:                                  ; preds = %.lr.ph97.preheader.3, %.lr.ph97.3.1, %.lr.ph97.3.2, %.lr.ph97.3.3, %.lr.ph97.3.4, %.lr.ph97.3.5, %.lr.ph97.3.6, %.preheader.3
  store ptr null, ptr %226, align 8, !tbaa !22
  br label %.split102.4

335:                                              ; preds = %307
  %336 = add nsw i32 %.1.2, 1
  %.pre241 = zext i32 %336 to i64
  br label %.split102.4

.split102.4:                                      ; preds = %335, %._crit_edge98.3
  %.pre-phi242 = phi i64 [ %.pre241, %335 ], [ %.pre-phi240, %._crit_edge98.3 ]
  %.7.3 = phi i1 [ %.7.2, %335 ], [ true, %._crit_edge98.3 ]
  %.1.3 = phi i32 [ %336, %335 ], [ %.1.2, %._crit_edge98.3 ]
  %337 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %.pre-phi242
  %338 = load ptr, ptr %337, align 8, !tbaa !22
  %.not73.4 = icmp eq ptr %338, null
  br i1 %.not73.4, label %.split104.us, label %339

339:                                              ; preds = %.split102.4
  %340 = load i32, ptr %3, align 8, !tbaa !5
  %341 = add i32 %.1.3, 20
  %342 = shl nuw i32 1, %341
  %343 = and i32 %340, %342
  %.not76.not.4 = icmp eq i32 %343, 0
  br i1 %.not76.not.4, label %367, label %.preheader.4

.preheader.4:                                     ; preds = %339
  tail call void @_ZdaPv(ptr noundef nonnull %338) #4
  store ptr null, ptr %337, align 8, !tbaa !22
  %.094.4 = add i32 %.1.3, 1
  %344 = icmp ult i32 %.094.4, 8
  br i1 %344, label %.lr.ph97.preheader.4, label %._crit_edge98.4

.lr.ph97.preheader.4:                             ; preds = %.preheader.4
  %345 = zext nneg i32 %.094.4 to i64
  %346 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %345
  %347 = load ptr, ptr %346, align 8, !tbaa !22
  %348 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %.pre-phi242
  store ptr %347, ptr %348, align 8, !tbaa !22
  %indvars.iv.next.4179 = add nuw nsw i64 %345, 1
  %.not258 = icmp eq i64 %indvars.iv.next.4179, 8
  br i1 %.not258, label %._crit_edge98.4, label %.lr.ph97.4.1, !llvm.loop !27

.lr.ph97.4.1:                                     ; preds = %.lr.ph97.preheader.4
  %indvars.iv.next204 = add nuw nsw i64 %.pre-phi242, 1
  %349 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.4179
  %350 = load ptr, ptr %349, align 8, !tbaa !22
  %351 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next204
  store ptr %350, ptr %351, align 8, !tbaa !22
  %indvars.iv.next.4179.1 = add nuw nsw i64 %345, 2
  %.not258.1 = icmp eq i64 %indvars.iv.next.4179.1, 8
  br i1 %.not258.1, label %._crit_edge98.4, label %.lr.ph97.4.2, !llvm.loop !27

.lr.ph97.4.2:                                     ; preds = %.lr.ph97.4.1
  %indvars.iv.next204.1 = add nuw nsw i64 %.pre-phi242, 2
  %352 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.4179.1
  %353 = load ptr, ptr %352, align 8, !tbaa !22
  %354 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next204.1
  store ptr %353, ptr %354, align 8, !tbaa !22
  %indvars.iv.next.4179.2 = add nuw nsw i64 %345, 3
  %.not258.2 = icmp eq i64 %indvars.iv.next.4179.2, 8
  br i1 %.not258.2, label %._crit_edge98.4, label %.lr.ph97.4.3, !llvm.loop !27

.lr.ph97.4.3:                                     ; preds = %.lr.ph97.4.2
  %indvars.iv.next204.2 = add nuw nsw i64 %.pre-phi242, 3
  %355 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.4179.2
  %356 = load ptr, ptr %355, align 8, !tbaa !22
  %357 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next204.2
  store ptr %356, ptr %357, align 8, !tbaa !22
  %indvars.iv.next.4179.3 = add nuw nsw i64 %345, 4
  %.not258.3 = icmp eq i64 %indvars.iv.next.4179.3, 8
  br i1 %.not258.3, label %._crit_edge98.4, label %.lr.ph97.4.4, !llvm.loop !27

.lr.ph97.4.4:                                     ; preds = %.lr.ph97.4.3
  %indvars.iv.next204.3 = add nuw nsw i64 %.pre-phi242, 4
  %358 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.4179.3
  %359 = load ptr, ptr %358, align 8, !tbaa !22
  %360 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next204.3
  store ptr %359, ptr %360, align 8, !tbaa !22
  %indvars.iv.next.4179.4 = add nuw nsw i64 %345, 5
  %.not258.4 = icmp eq i64 %indvars.iv.next.4179.4, 8
  br i1 %.not258.4, label %._crit_edge98.4, label %.lr.ph97.4.5, !llvm.loop !27

.lr.ph97.4.5:                                     ; preds = %.lr.ph97.4.4
  %indvars.iv.next204.4 = add nuw nsw i64 %.pre-phi242, 5
  %361 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.4179.4
  %362 = load ptr, ptr %361, align 8, !tbaa !22
  %363 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next204.4
  store ptr %362, ptr %363, align 8, !tbaa !22
  %indvars.iv.next.4179.5 = add nuw nsw i64 %345, 6
  %.not258.5 = icmp eq i64 %indvars.iv.next.4179.5, 8
  br i1 %.not258.5, label %._crit_edge98.4, label %.lr.ph97.4.6, !llvm.loop !27

.lr.ph97.4.6:                                     ; preds = %.lr.ph97.4.5
  %indvars.iv.next204.5 = add nuw nsw i64 %.pre-phi242, 6
  %364 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.4179.5
  %365 = load ptr, ptr %364, align 8, !tbaa !22
  %366 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next204.5
  store ptr %365, ptr %366, align 8, !tbaa !22
  br label %._crit_edge98.4

._crit_edge98.4:                                  ; preds = %.lr.ph97.preheader.4, %.lr.ph97.4.1, %.lr.ph97.4.2, %.lr.ph97.4.3, %.lr.ph97.4.4, %.lr.ph97.4.5, %.lr.ph97.4.6, %.preheader.4
  store ptr null, ptr %226, align 8, !tbaa !22
  br label %.split102.5

367:                                              ; preds = %339
  %368 = add i32 %.1.3, 1
  %.pre243 = zext i32 %368 to i64
  br label %.split102.5

.split102.5:                                      ; preds = %367, %._crit_edge98.4
  %.pre-phi244 = phi i64 [ %.pre243, %367 ], [ %.pre-phi242, %._crit_edge98.4 ]
  %.7.4 = phi i1 [ %.7.3, %367 ], [ true, %._crit_edge98.4 ]
  %.1.4 = phi i32 [ %368, %367 ], [ %.1.3, %._crit_edge98.4 ]
  %369 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %.pre-phi244
  %370 = load ptr, ptr %369, align 8, !tbaa !22
  %.not73.5 = icmp eq ptr %370, null
  br i1 %.not73.5, label %.split104.us, label %371

371:                                              ; preds = %.split102.5
  %372 = load i32, ptr %3, align 8, !tbaa !5
  %373 = add i32 %.1.4, 20
  %374 = shl nuw i32 1, %373
  %375 = and i32 %372, %374
  %.not76.not.5 = icmp eq i32 %375, 0
  br i1 %.not76.not.5, label %399, label %.preheader.5

.preheader.5:                                     ; preds = %371
  tail call void @_ZdaPv(ptr noundef nonnull %370) #4
  store ptr null, ptr %369, align 8, !tbaa !22
  %.094.5 = add i32 %.1.4, 1
  %376 = icmp ult i32 %.094.5, 8
  br i1 %376, label %.lr.ph97.preheader.5, label %._crit_edge98.5

.lr.ph97.preheader.5:                             ; preds = %.preheader.5
  %377 = zext nneg i32 %.094.5 to i64
  %378 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %377
  %379 = load ptr, ptr %378, align 8, !tbaa !22
  %380 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %.pre-phi244
  store ptr %379, ptr %380, align 8, !tbaa !22
  %indvars.iv.next.5181 = add nuw nsw i64 %377, 1
  %.not259 = icmp eq i64 %indvars.iv.next.5181, 8
  br i1 %.not259, label %._crit_edge98.5, label %.lr.ph97.5.1, !llvm.loop !27

.lr.ph97.5.1:                                     ; preds = %.lr.ph97.preheader.5
  %indvars.iv.next199 = add nuw nsw i64 %.pre-phi244, 1
  %381 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.5181
  %382 = load ptr, ptr %381, align 8, !tbaa !22
  %383 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next199
  store ptr %382, ptr %383, align 8, !tbaa !22
  %indvars.iv.next.5181.1 = add nuw nsw i64 %377, 2
  %.not259.1 = icmp eq i64 %indvars.iv.next.5181.1, 8
  br i1 %.not259.1, label %._crit_edge98.5, label %.lr.ph97.5.2, !llvm.loop !27

.lr.ph97.5.2:                                     ; preds = %.lr.ph97.5.1
  %indvars.iv.next199.1 = add nuw nsw i64 %.pre-phi244, 2
  %384 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.5181.1
  %385 = load ptr, ptr %384, align 8, !tbaa !22
  %386 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next199.1
  store ptr %385, ptr %386, align 8, !tbaa !22
  %indvars.iv.next.5181.2 = add nuw nsw i64 %377, 3
  %.not259.2 = icmp eq i64 %indvars.iv.next.5181.2, 8
  br i1 %.not259.2, label %._crit_edge98.5, label %.lr.ph97.5.3, !llvm.loop !27

.lr.ph97.5.3:                                     ; preds = %.lr.ph97.5.2
  %indvars.iv.next199.2 = add nuw nsw i64 %.pre-phi244, 3
  %387 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.5181.2
  %388 = load ptr, ptr %387, align 8, !tbaa !22
  %389 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next199.2
  store ptr %388, ptr %389, align 8, !tbaa !22
  %indvars.iv.next.5181.3 = add nuw nsw i64 %377, 4
  %.not259.3 = icmp eq i64 %indvars.iv.next.5181.3, 8
  br i1 %.not259.3, label %._crit_edge98.5, label %.lr.ph97.5.4, !llvm.loop !27

.lr.ph97.5.4:                                     ; preds = %.lr.ph97.5.3
  %indvars.iv.next199.3 = add nuw nsw i64 %.pre-phi244, 4
  %390 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.5181.3
  %391 = load ptr, ptr %390, align 8, !tbaa !22
  %392 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next199.3
  store ptr %391, ptr %392, align 8, !tbaa !22
  %indvars.iv.next.5181.4 = add nuw nsw i64 %377, 5
  %.not259.4 = icmp eq i64 %indvars.iv.next.5181.4, 8
  br i1 %.not259.4, label %._crit_edge98.5, label %.lr.ph97.5.5, !llvm.loop !27

.lr.ph97.5.5:                                     ; preds = %.lr.ph97.5.4
  %indvars.iv.next199.4 = add nuw nsw i64 %.pre-phi244, 5
  %393 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.5181.4
  %394 = load ptr, ptr %393, align 8, !tbaa !22
  %395 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next199.4
  store ptr %394, ptr %395, align 8, !tbaa !22
  %indvars.iv.next.5181.5 = add nuw nsw i64 %377, 6
  %.not259.5 = icmp eq i64 %indvars.iv.next.5181.5, 8
  br i1 %.not259.5, label %._crit_edge98.5, label %.lr.ph97.5.6, !llvm.loop !27

.lr.ph97.5.6:                                     ; preds = %.lr.ph97.5.5
  %indvars.iv.next199.5 = add nuw nsw i64 %.pre-phi244, 6
  %396 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.5181.5
  %397 = load ptr, ptr %396, align 8, !tbaa !22
  %398 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next199.5
  store ptr %397, ptr %398, align 8, !tbaa !22
  br label %._crit_edge98.5

._crit_edge98.5:                                  ; preds = %.lr.ph97.preheader.5, %.lr.ph97.5.1, %.lr.ph97.5.2, %.lr.ph97.5.3, %.lr.ph97.5.4, %.lr.ph97.5.5, %.lr.ph97.5.6, %.preheader.5
  store ptr null, ptr %226, align 8, !tbaa !22
  br label %.split102.6

399:                                              ; preds = %371
  %400 = add i32 %.1.4, 1
  %.pre245 = zext i32 %400 to i64
  br label %.split102.6

.split102.6:                                      ; preds = %399, %._crit_edge98.5
  %.pre-phi246 = phi i64 [ %.pre245, %399 ], [ %.pre-phi244, %._crit_edge98.5 ]
  %.7.5 = phi i1 [ %.7.4, %399 ], [ true, %._crit_edge98.5 ]
  %.1.5 = phi i32 [ %400, %399 ], [ %.1.4, %._crit_edge98.5 ]
  %401 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %.pre-phi246
  %402 = load ptr, ptr %401, align 8, !tbaa !22
  %.not73.6 = icmp eq ptr %402, null
  br i1 %.not73.6, label %.split104.us, label %403

403:                                              ; preds = %.split102.6
  %404 = load i32, ptr %3, align 8, !tbaa !5
  %405 = add i32 %.1.5, 20
  %406 = shl nuw i32 1, %405
  %407 = and i32 %404, %406
  %.not76.not.6 = icmp eq i32 %407, 0
  br i1 %.not76.not.6, label %431, label %.preheader.6

.preheader.6:                                     ; preds = %403
  tail call void @_ZdaPv(ptr noundef nonnull %402) #4
  store ptr null, ptr %401, align 8, !tbaa !22
  %.094.6 = add i32 %.1.5, 1
  %408 = icmp ult i32 %.094.6, 8
  br i1 %408, label %.lr.ph97.preheader.6, label %._crit_edge98.6

.lr.ph97.preheader.6:                             ; preds = %.preheader.6
  %409 = zext nneg i32 %.094.6 to i64
  %410 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %409
  %411 = load ptr, ptr %410, align 8, !tbaa !22
  %412 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %.pre-phi246
  store ptr %411, ptr %412, align 8, !tbaa !22
  %indvars.iv.next.6183 = add nuw nsw i64 %409, 1
  %.not260 = icmp eq i64 %indvars.iv.next.6183, 8
  br i1 %.not260, label %._crit_edge98.6, label %.lr.ph97.6.1, !llvm.loop !27

.lr.ph97.6.1:                                     ; preds = %.lr.ph97.preheader.6
  %indvars.iv.next194 = add nuw nsw i64 %.pre-phi246, 1
  %413 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.6183
  %414 = load ptr, ptr %413, align 8, !tbaa !22
  %415 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next194
  store ptr %414, ptr %415, align 8, !tbaa !22
  %indvars.iv.next.6183.1 = add nuw nsw i64 %409, 2
  %.not260.1 = icmp eq i64 %indvars.iv.next.6183.1, 8
  br i1 %.not260.1, label %._crit_edge98.6, label %.lr.ph97.6.2, !llvm.loop !27

.lr.ph97.6.2:                                     ; preds = %.lr.ph97.6.1
  %indvars.iv.next194.1 = add nuw nsw i64 %.pre-phi246, 2
  %416 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.6183.1
  %417 = load ptr, ptr %416, align 8, !tbaa !22
  %418 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next194.1
  store ptr %417, ptr %418, align 8, !tbaa !22
  %indvars.iv.next.6183.2 = add nuw nsw i64 %409, 3
  %.not260.2 = icmp eq i64 %indvars.iv.next.6183.2, 8
  br i1 %.not260.2, label %._crit_edge98.6, label %.lr.ph97.6.3, !llvm.loop !27

.lr.ph97.6.3:                                     ; preds = %.lr.ph97.6.2
  %indvars.iv.next194.2 = add nuw nsw i64 %.pre-phi246, 3
  %419 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.6183.2
  %420 = load ptr, ptr %419, align 8, !tbaa !22
  %421 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next194.2
  store ptr %420, ptr %421, align 8, !tbaa !22
  %indvars.iv.next.6183.3 = add nuw nsw i64 %409, 4
  %.not260.3 = icmp eq i64 %indvars.iv.next.6183.3, 8
  br i1 %.not260.3, label %._crit_edge98.6, label %.lr.ph97.6.4, !llvm.loop !27

.lr.ph97.6.4:                                     ; preds = %.lr.ph97.6.3
  %indvars.iv.next194.3 = add nuw nsw i64 %.pre-phi246, 4
  %422 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.6183.3
  %423 = load ptr, ptr %422, align 8, !tbaa !22
  %424 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next194.3
  store ptr %423, ptr %424, align 8, !tbaa !22
  %indvars.iv.next.6183.4 = add nuw nsw i64 %409, 5
  %.not260.4 = icmp eq i64 %indvars.iv.next.6183.4, 8
  br i1 %.not260.4, label %._crit_edge98.6, label %.lr.ph97.6.5, !llvm.loop !27

.lr.ph97.6.5:                                     ; preds = %.lr.ph97.6.4
  %indvars.iv.next194.4 = add nuw nsw i64 %.pre-phi246, 5
  %425 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.6183.4
  %426 = load ptr, ptr %425, align 8, !tbaa !22
  %427 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next194.4
  store ptr %426, ptr %427, align 8, !tbaa !22
  %indvars.iv.next.6183.5 = add nuw nsw i64 %409, 6
  %.not260.5 = icmp eq i64 %indvars.iv.next.6183.5, 8
  br i1 %.not260.5, label %._crit_edge98.6, label %.lr.ph97.6.6, !llvm.loop !27

.lr.ph97.6.6:                                     ; preds = %.lr.ph97.6.5
  %indvars.iv.next194.5 = add nuw nsw i64 %.pre-phi246, 6
  %428 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.6183.5
  %429 = load ptr, ptr %428, align 8, !tbaa !22
  %430 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next194.5
  store ptr %429, ptr %430, align 8, !tbaa !22
  br label %._crit_edge98.6

._crit_edge98.6:                                  ; preds = %.lr.ph97.preheader.6, %.lr.ph97.6.1, %.lr.ph97.6.2, %.lr.ph97.6.3, %.lr.ph97.6.4, %.lr.ph97.6.5, %.lr.ph97.6.6, %.preheader.6
  store ptr null, ptr %226, align 8, !tbaa !22
  br label %.split102.7

431:                                              ; preds = %403
  %432 = add i32 %.1.5, 1
  %.pre247 = zext i32 %432 to i64
  br label %.split102.7

.split102.7:                                      ; preds = %431, %._crit_edge98.6
  %.pre-phi248 = phi i64 [ %.pre247, %431 ], [ %.pre-phi246, %._crit_edge98.6 ]
  %.7.6 = phi i1 [ %.7.5, %431 ], [ true, %._crit_edge98.6 ]
  %.1.6 = phi i32 [ %432, %431 ], [ %.1.5, %._crit_edge98.6 ]
  %433 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %.pre-phi248
  %434 = load ptr, ptr %433, align 8, !tbaa !22
  %.not73.7 = icmp eq ptr %434, null
  br i1 %.not73.7, label %.split104.us, label %435

435:                                              ; preds = %.split102.7
  %436 = load i32, ptr %3, align 8, !tbaa !5
  %437 = add i32 %.1.6, 20
  %438 = shl nuw i32 1, %437
  %439 = and i32 %436, %438
  %.not76.not.7 = icmp eq i32 %439, 0
  br i1 %.not76.not.7, label %.split104.us, label %.preheader.7

.preheader.7:                                     ; preds = %435
  tail call void @_ZdaPv(ptr noundef nonnull %434) #4
  store ptr null, ptr %433, align 8, !tbaa !22
  %.094.7 = add i32 %.1.6, 1
  %440 = icmp ult i32 %.094.7, 8
  br i1 %440, label %.lr.ph97.preheader.7, label %.split104.us.sink.split

.lr.ph97.preheader.7:                             ; preds = %.preheader.7
  %441 = zext nneg i32 %.094.7 to i64
  %442 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %441
  %443 = load ptr, ptr %442, align 8, !tbaa !22
  %444 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %.pre-phi248
  store ptr %443, ptr %444, align 8, !tbaa !22
  %indvars.iv.next.7185 = add nuw nsw i64 %441, 1
  %.not261 = icmp eq i64 %indvars.iv.next.7185, 8
  br i1 %.not261, label %.split104.us.sink.split, label %.lr.ph97.7.1, !llvm.loop !27

.lr.ph97.7.1:                                     ; preds = %.lr.ph97.preheader.7
  %indvars.iv.next189 = add nuw nsw i64 %.pre-phi248, 1
  %445 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.7185
  %446 = load ptr, ptr %445, align 8, !tbaa !22
  %447 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next189
  store ptr %446, ptr %447, align 8, !tbaa !22
  %indvars.iv.next.7185.1 = add nuw nsw i64 %441, 2
  %.not261.1 = icmp eq i64 %indvars.iv.next.7185.1, 8
  br i1 %.not261.1, label %.split104.us.sink.split, label %.lr.ph97.7.2, !llvm.loop !27

.lr.ph97.7.2:                                     ; preds = %.lr.ph97.7.1
  %indvars.iv.next189.1 = add nuw nsw i64 %.pre-phi248, 2
  %448 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.7185.1
  %449 = load ptr, ptr %448, align 8, !tbaa !22
  %450 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next189.1
  store ptr %449, ptr %450, align 8, !tbaa !22
  %indvars.iv.next.7185.2 = add nuw nsw i64 %441, 3
  %.not261.2 = icmp eq i64 %indvars.iv.next.7185.2, 8
  br i1 %.not261.2, label %.split104.us.sink.split, label %.lr.ph97.7.3, !llvm.loop !27

.lr.ph97.7.3:                                     ; preds = %.lr.ph97.7.2
  %indvars.iv.next189.2 = add nuw nsw i64 %.pre-phi248, 3
  %451 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.7185.2
  %452 = load ptr, ptr %451, align 8, !tbaa !22
  %453 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next189.2
  store ptr %452, ptr %453, align 8, !tbaa !22
  %indvars.iv.next.7185.3 = add nuw nsw i64 %441, 4
  %.not261.3 = icmp eq i64 %indvars.iv.next.7185.3, 8
  br i1 %.not261.3, label %.split104.us.sink.split, label %.lr.ph97.7.4, !llvm.loop !27

.lr.ph97.7.4:                                     ; preds = %.lr.ph97.7.3
  %indvars.iv.next189.3 = add nuw nsw i64 %.pre-phi248, 4
  %454 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.7185.3
  %455 = load ptr, ptr %454, align 8, !tbaa !22
  %456 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next189.3
  store ptr %455, ptr %456, align 8, !tbaa !22
  %indvars.iv.next.7185.4 = add nuw nsw i64 %441, 5
  %.not261.4 = icmp eq i64 %indvars.iv.next.7185.4, 8
  br i1 %.not261.4, label %.split104.us.sink.split, label %.lr.ph97.7.5, !llvm.loop !27

.lr.ph97.7.5:                                     ; preds = %.lr.ph97.7.4
  %indvars.iv.next189.4 = add nuw nsw i64 %.pre-phi248, 5
  %457 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.7185.4
  %458 = load ptr, ptr %457, align 8, !tbaa !22
  %459 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next189.4
  store ptr %458, ptr %459, align 8, !tbaa !22
  %indvars.iv.next.7185.5 = add nuw nsw i64 %441, 6
  %.not261.5 = icmp eq i64 %indvars.iv.next.7185.5, 8
  br i1 %.not261.5, label %.split104.us.sink.split, label %.lr.ph97.7.6, !llvm.loop !27

.lr.ph97.7.6:                                     ; preds = %.lr.ph97.7.5
  %indvars.iv.next189.5 = add nuw nsw i64 %.pre-phi248, 6
  %460 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next.7185.5
  %461 = load ptr, ptr %460, align 8, !tbaa !22
  %462 = getelementptr inbounds [8 x ptr], ptr %225, i64 0, i64 %indvars.iv.next189.5
  store ptr %461, ptr %462, align 8, !tbaa !22
  br label %.split104.us.sink.split

.split104.us.sink.split:                          ; preds = %.lr.ph97.preheader.7, %.lr.ph97.7.1, %.lr.ph97.7.2, %.lr.ph97.7.3, %.lr.ph97.7.4, %.lr.ph97.7.5, %.lr.ph97.7.6, %.preheader.7, %.lr.ph109.7
  %.sink262 = phi ptr [ %240, %.lr.ph109.7 ], [ %226, %.preheader.7 ], [ %226, %.lr.ph97.7.6 ], [ %226, %.lr.ph97.7.5 ], [ %226, %.lr.ph97.7.4 ], [ %226, %.lr.ph97.7.3 ], [ %226, %.lr.ph97.7.2 ], [ %226, %.lr.ph97.7.1 ], [ %226, %.lr.ph97.preheader.7 ]
  store ptr null, ptr %.sink262, align 8, !tbaa !22
  br label %.split104.us

.split104.us:                                     ; preds = %.split104.us.sink.split, %.lr.ph109.preheader, %.lr.ph109.1, %.lr.ph109.2, %.lr.ph109.3, %.lr.ph109.4, %.lr.ph109.5, %.lr.ph109.6, %.split102.preheader, %.split102.1, %.split102.2, %.split102.3, %.split102.4, %.split102.5, %.split102.6, %.split102.7, %435, %.split102.us
  %.us-phi105 = phi i1 [ %.us-phi, %.split102.us ], [ %.us-phi, %.split102.preheader ], [ %.7, %.split102.1 ], [ %.7.1, %.split102.2 ], [ %.7.2, %.split102.3 ], [ %.7.3, %.split102.4 ], [ %.7.4, %.split102.5 ], [ %.7.5, %.split102.6 ], [ %.7.6, %.split102.7 ], [ %.7.6, %435 ], [ true, %.lr.ph109.6 ], [ true, %.lr.ph109.5 ], [ true, %.lr.ph109.4 ], [ true, %.lr.ph109.3 ], [ true, %.lr.ph109.2 ], [ true, %.lr.ph109.1 ], [ true, %.lr.ph109.preheader ], [ true, %.split104.us.sink.split ]
  %463 = load i32, ptr %3, align 8, !tbaa !5
  %464 = and i32 %463, 32
  %.not74 = icmp eq i32 %464, 0
  br i1 %.not74, label %470, label %465

465:                                              ; preds = %.split104.us
  %466 = getelementptr inbounds i8, ptr %1, i64 224
  %467 = load ptr, ptr %466, align 8, !tbaa !28
  %.not75 = icmp eq ptr %467, null
  br i1 %.not75, label %470, label %468

468:                                              ; preds = %465
  %469 = getelementptr inbounds i8, ptr %1, i64 216
  tail call void @_Z11ArrayDeleteI6aiBoneEvRPPT_Rj(ptr noundef nonnull align 8 dereferenceable(8) %466, ptr noundef nonnull align 4 dereferenceable(4) %469)
  br label %470

470:                                              ; preds = %468, %465, %.split104.us
  %.8 = phi i1 [ true, %468 ], [ %.us-phi105, %465 ], [ %.us-phi105, %.split104.us ]
  ret i1 %.8
}

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

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

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

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

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

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


; Effective O3 passes: ADCEPass,AggressiveInstCombinePass,BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass