; LLVM IR from awawa-dev/HyperHDR :: sources/effects (Animation_Fade)

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

%struct.Point3d = type { i8, i8, i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%struct.ColorRgb = type { i8, i8, i8 }
%class.Animation_Fade = type <{ %class.AnimationBase.base, [3 x i8], i32, %struct.Point3d, i8, i32, [4 x i8], double, i32, [4 x i8], double, i32, [4 x i8], double, %"class.std::vector", double, double, %struct.Point3d, %struct.Point3d, [2 x i8], double, double, i32, i8, [3 x i8], double, i32, [4 x i8], double, i32, [4 x i8], double, i32, [4 x i8] }>
%class.AnimationBase.base = type <{ ptr, i32, i8 }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Point3d, std::allocator<Point3d>>::_Vector_impl" }
%"struct.std::_Vector_base<Point3d, std::allocator<Point3d>>::_Vector_impl" = type { %"struct.std::_Vector_base<Point3d, std::allocator<Point3d>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Point3d, std::allocator<Point3d>>::_Vector_impl_data" = type { ptr, ptr, ptr }

; 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 nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1

; 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 @_ZN14Animation_Fade10hasLedDataERSt6vectorI8ColorRgbSaIS1_EE(ptr noundef nonnull align 8 dereferenceable(188) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) unnamed_addr #2 align 2 {
  %3 = alloca i1, align 1
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca %struct.Point3d, align 1
  %7 = alloca %struct.Point3d, align 1
  %8 = alloca %struct.Point3d, align 1
  %9 = alloca %struct.Point3d, align 1
  %10 = alloca %struct.Point3d, align 1
  %11 = alloca %struct.Point3d, align 1
  %12 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %14 = alloca %struct.ColorRgb, align 1
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %15 = load ptr, ptr %4, align 8
  %16 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 2
  %17 = load i32, ptr %16, align 8, !tbaa !9
  %18 = icmp eq i32 %17, 1
  br i1 %18, label %19, label %110

19:                                               ; preds = %2
  %20 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 15
  %21 = load double, ptr %20, align 8, !tbaa !20
  %22 = fcmp ogt double %21, 0.000000e+00
  br i1 %22, label %23, label %107

23:                                               ; preds = %19
  %24 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 26
  %25 = load i32, ptr %24, align 8, !tbaa !21
  %26 = icmp eq i32 %25, -2147483648
  br i1 %26, label %27, label %53

27:                                               ; preds = %23
  %28 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %29 = call noundef i64 @_ZNKSt6vectorI7Point3dSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  %30 = icmp ugt i64 %29, 0
  br i1 %30, label %31, label %53

31:                                               ; preds = %27
  %32 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 26
  store i32 0, ptr %32, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 3, ptr %6) #6
  %33 = getelementptr inbounds %struct.Point3d, ptr %6, i32 0, i32 0
  %34 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %35 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %34, i64 noundef 0) #6
  %36 = getelementptr inbounds %struct.Point3d, ptr %35, i32 0, i32 0
  %37 = load i8, ptr %36, align 1, !tbaa !22
  store i8 %37, ptr %33, align 1, !tbaa !22
  %38 = getelementptr inbounds %struct.Point3d, ptr %6, i32 0, i32 1
  %39 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %40 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef 0) #6
  %41 = getelementptr inbounds %struct.Point3d, ptr %40, i32 0, i32 1
  %42 = load i8, ptr %41, align 1, !tbaa !23
  store i8 %42, ptr %38, align 1, !tbaa !23
  %43 = getelementptr inbounds %struct.Point3d, ptr %6, i32 0, i32 2
  %44 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %45 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef 0) #6
  %46 = getelementptr inbounds %struct.Point3d, ptr %45, i32 0, i32 2
  %47 = load i8, ptr %46, align 1, !tbaa !24
  store i8 %47, ptr %43, align 1, !tbaa !24
  %48 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 1 %6, i64 3, i1 false), !tbaa.struct !25
  call void @llvm.lifetime.end.p0(i64 3, ptr %6) #6
  %49 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 7
  %50 = load double, ptr %49, align 8, !tbaa !27
  %51 = fmul double %50, 1.000000e+03
  %52 = fptosi double %51 to i32
  call void @_ZN13AnimationBase12SetSleepTimeEi(ptr noundef nonnull align 8 dereferenceable(13) %15, i32 noundef %52)
  br label %106

53:                                               ; preds = %27, %23
  %54 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 26
  %55 = load i32, ptr %54, align 8, !tbaa !21
  %56 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 13
  %57 = load double, ptr %56, align 8, !tbaa !28
  %58 = fptosi double %57 to i32
  %59 = add nsw i32 %58, 1
  %60 = icmp slt i32 %55, %59
  br i1 %60, label %61, label %103

61:                                               ; preds = %53
  %62 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 26
  %63 = load i32, ptr %62, align 8, !tbaa !21
  %64 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %65 = call noundef i64 @_ZNKSt6vectorI7Point3dSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #6
  %66 = trunc i64 %65 to i32
  %67 = icmp slt i32 %63, %66
  br i1 %67, label %68, label %103

68:                                               ; preds = %61
  call void @llvm.lifetime.start.p0(i64 3, ptr %7) #6
  %69 = getelementptr inbounds %struct.Point3d, ptr %7, i32 0, i32 0
  %70 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %71 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 26
  %72 = load i32, ptr %71, align 8, !tbaa !21
  %73 = sext i32 %72 to i64
  %74 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %73) #6
  %75 = getelementptr inbounds %struct.Point3d, ptr %74, i32 0, i32 0
  %76 = load i8, ptr %75, align 1, !tbaa !22
  store i8 %76, ptr %69, align 1, !tbaa !22
  %77 = getelementptr inbounds %struct.Point3d, ptr %7, i32 0, i32 1
  %78 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %79 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 26
  %80 = load i32, ptr %79, align 8, !tbaa !21
  %81 = sext i32 %80 to i64
  %82 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %78, i64 noundef %81) #6
  %83 = getelementptr inbounds %struct.Point3d, ptr %82, i32 0, i32 1
  %84 = load i8, ptr %83, align 1, !tbaa !23
  store i8 %84, ptr %77, align 1, !tbaa !23
  %85 = getelementptr inbounds %struct.Point3d, ptr %7, i32 0, i32 2
  %86 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %87 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 26
  %88 = load i32, ptr %87, align 8, !tbaa !21
  %89 = sext i32 %88 to i64
  %90 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %86, i64 noundef %89) #6
  %91 = getelementptr inbounds %struct.Point3d, ptr %90, i32 0, i32 2
  %92 = load i8, ptr %91, align 1, !tbaa !24
  store i8 %92, ptr %85, align 1, !tbaa !24
  %93 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %93, ptr align 1 %7, i64 3, i1 false), !tbaa.struct !25
  call void @llvm.lifetime.end.p0(i64 3, ptr %7) #6
  %94 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 5
  %95 = load i32, ptr %94, align 8, !tbaa !29
  %96 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 26
  %97 = load i32, ptr %96, align 8, !tbaa !21
  %98 = add nsw i32 %97, %95
  store i32 %98, ptr %96, align 8, !tbaa !21
  %99 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 7
  %100 = load double, ptr %99, align 8, !tbaa !27
  %101 = fmul double %100, 1.000000e+03
  %102 = fptosi double %101 to i32
  call void @_ZN13AnimationBase12SetSleepTimeEi(ptr noundef nonnull align 8 dereferenceable(13) %15, i32 noundef %102)
  br label %105

103:                                              ; preds = %61, %53
  %104 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 2
  store i32 2, ptr %104, align 8, !tbaa !9
  br label %105

105:                                              ; preds = %103, %68
  br label %106

106:                                              ; preds = %105, %31
  br label %109

107:                                              ; preds = %19
  %108 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 2
  store i32 2, ptr %108, align 8, !tbaa !9
  br label %109

109:                                              ; preds = %107, %106
  br label %110

110:                                              ; preds = %109, %2
  %111 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 2
  %112 = load i32, ptr %111, align 8, !tbaa !9
  %113 = icmp eq i32 %112, 2
  br i1 %113, label %114, label %169

114:                                              ; preds = %110
  %115 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 28
  %116 = load double, ptr %115, align 8, !tbaa !30
  %117 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 20
  %118 = load double, ptr %117, align 8, !tbaa !31
  %119 = fcmp olt double %116, %118
  br i1 %119, label %120, label %166

120:                                              ; preds = %114
  %121 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 13
  %122 = load double, ptr %121, align 8, !tbaa !28
  %123 = fptosi double %122 to i32
  %124 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %125 = call noundef i64 @_ZNKSt6vectorI7Point3dSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %124) #6
  %126 = trunc i64 %125 to i32
  %127 = icmp slt i32 %123, %126
  br i1 %127, label %128, label %166

128:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 3, ptr %8) #6
  %129 = getelementptr inbounds %struct.Point3d, ptr %8, i32 0, i32 0
  %130 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %131 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 13
  %132 = load double, ptr %131, align 8, !tbaa !28
  %133 = fptosi double %132 to i32
  %134 = sext i32 %133 to i64
  %135 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %130, i64 noundef %134) #6
  %136 = getelementptr inbounds %struct.Point3d, ptr %135, i32 0, i32 0
  %137 = load i8, ptr %136, align 1, !tbaa !22
  store i8 %137, ptr %129, align 1, !tbaa !22
  %138 = getelementptr inbounds %struct.Point3d, ptr %8, i32 0, i32 1
  %139 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %140 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 13
  %141 = load double, ptr %140, align 8, !tbaa !28
  %142 = fptosi double %141 to i32
  %143 = sext i32 %142 to i64
  %144 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %139, i64 noundef %143) #6
  %145 = getelementptr inbounds %struct.Point3d, ptr %144, i32 0, i32 1
  %146 = load i8, ptr %145, align 1, !tbaa !23
  store i8 %146, ptr %138, align 1, !tbaa !23
  %147 = getelementptr inbounds %struct.Point3d, ptr %8, i32 0, i32 2
  %148 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %149 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 13
  %150 = load double, ptr %149, align 8, !tbaa !28
  %151 = fptosi double %150 to i32
  %152 = sext i32 %151 to i64
  %153 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %148, i64 noundef %152) #6
  %154 = getelementptr inbounds %struct.Point3d, ptr %153, i32 0, i32 2
  %155 = load i8, ptr %154, align 1, !tbaa !24
  store i8 %155, ptr %147, align 1, !tbaa !24
  %156 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %156, ptr align 1 %8, i64 3, i1 false), !tbaa.struct !25
  call void @llvm.lifetime.end.p0(i64 3, ptr %8) #6
  %157 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 25
  %158 = load double, ptr %157, align 8, !tbaa !32
  %159 = fmul double %158, 1.000000e+03
  %160 = fptosi double %159 to i32
  call void @_ZN13AnimationBase12SetSleepTimeEi(ptr noundef nonnull align 8 dereferenceable(13) %15, i32 noundef %160)
  %161 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 25
  %162 = load double, ptr %161, align 8, !tbaa !32
  %163 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 28
  %164 = load double, ptr %163, align 8, !tbaa !30
  %165 = fadd double %164, %162
  store double %165, ptr %163, align 8, !tbaa !30
  br label %168

166:                                              ; preds = %120, %114
  %167 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 2
  store i32 3, ptr %167, align 8, !tbaa !9
  br label %168

168:                                              ; preds = %166, %128
  br label %169

169:                                              ; preds = %168, %110
  %170 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 2
  %171 = load i32, ptr %170, align 8, !tbaa !9
  %172 = icmp eq i32 %171, 3
  br i1 %172, label %173, label %276

173:                                              ; preds = %169
  %174 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 16
  %175 = load double, ptr %174, align 8, !tbaa !33
  %176 = fcmp ogt double %175, 0.000000e+00
  br i1 %176, label %177, label %273

177:                                              ; preds = %173
  %178 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 29
  %179 = load i32, ptr %178, align 8, !tbaa !34
  %180 = icmp eq i32 %179, -2147483648
  br i1 %180, label %181, label %223

181:                                              ; preds = %177
  %182 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 13
  %183 = load double, ptr %182, align 8, !tbaa !28
  %184 = fptosi double %183 to i32
  %185 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %186 = call noundef i64 @_ZNKSt6vectorI7Point3dSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %185) #6
  %187 = trunc i64 %186 to i32
  %188 = icmp slt i32 %184, %187
  br i1 %188, label %189, label %223

189:                                              ; preds = %181
  %190 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 13
  %191 = load double, ptr %190, align 8, !tbaa !28
  %192 = fptosi double %191 to i32
  %193 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 29
  store i32 %192, ptr %193, align 8, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 3, ptr %9) #6
  %194 = getelementptr inbounds %struct.Point3d, ptr %9, i32 0, i32 0
  %195 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %196 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 29
  %197 = load i32, ptr %196, align 8, !tbaa !34
  %198 = sext i32 %197 to i64
  %199 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %195, i64 noundef %198) #6
  %200 = getelementptr inbounds %struct.Point3d, ptr %199, i32 0, i32 0
  %201 = load i8, ptr %200, align 1, !tbaa !22
  store i8 %201, ptr %194, align 1, !tbaa !22
  %202 = getelementptr inbounds %struct.Point3d, ptr %9, i32 0, i32 1
  %203 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %204 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 29
  %205 = load i32, ptr %204, align 8, !tbaa !34
  %206 = sext i32 %205 to i64
  %207 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %203, i64 noundef %206) #6
  %208 = getelementptr inbounds %struct.Point3d, ptr %207, i32 0, i32 1
  %209 = load i8, ptr %208, align 1, !tbaa !23
  store i8 %209, ptr %202, align 1, !tbaa !23
  %210 = getelementptr inbounds %struct.Point3d, ptr %9, i32 0, i32 2
  %211 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %212 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 29
  %213 = load i32, ptr %212, align 8, !tbaa !34
  %214 = sext i32 %213 to i64
  %215 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %211, i64 noundef %214) #6
  %216 = getelementptr inbounds %struct.Point3d, ptr %215, i32 0, i32 2
  %217 = load i8, ptr %216, align 1, !tbaa !24
  store i8 %217, ptr %210, align 1, !tbaa !24
  %218 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %218, ptr align 1 %9, i64 3, i1 false), !tbaa.struct !25
  call void @llvm.lifetime.end.p0(i64 3, ptr %9) #6
  %219 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 10
  %220 = load double, ptr %219, align 8, !tbaa !35
  %221 = fmul double %220, 1.000000e+03
  %222 = fptosi double %221 to i32
  call void @_ZN13AnimationBase12SetSleepTimeEi(ptr noundef nonnull align 8 dereferenceable(13) %15, i32 noundef %222)
  br label %272

223:                                              ; preds = %181, %177
  %224 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 29
  %225 = load i32, ptr %224, align 8, !tbaa !34
  %226 = icmp sge i32 %225, 0
  br i1 %226, label %227, label %269

227:                                              ; preds = %223
  %228 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 29
  %229 = load i32, ptr %228, align 8, !tbaa !34
  %230 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %231 = call noundef i64 @_ZNKSt6vectorI7Point3dSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %230) #6
  %232 = trunc i64 %231 to i32
  %233 = icmp slt i32 %229, %232
  br i1 %233, label %234, label %269

234:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 3, ptr %10) #6
  %235 = getelementptr inbounds %struct.Point3d, ptr %10, i32 0, i32 0
  %236 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %237 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 29
  %238 = load i32, ptr %237, align 8, !tbaa !34
  %239 = sext i32 %238 to i64
  %240 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %236, i64 noundef %239) #6
  %241 = getelementptr inbounds %struct.Point3d, ptr %240, i32 0, i32 0
  %242 = load i8, ptr %241, align 1, !tbaa !22
  store i8 %242, ptr %235, align 1, !tbaa !22
  %243 = getelementptr inbounds %struct.Point3d, ptr %10, i32 0, i32 1
  %244 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %245 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 29
  %246 = load i32, ptr %245, align 8, !tbaa !34
  %247 = sext i32 %246 to i64
  %248 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %244, i64 noundef %247) #6
  %249 = getelementptr inbounds %struct.Point3d, ptr %248, i32 0, i32 1
  %250 = load i8, ptr %249, align 1, !tbaa !23
  store i8 %250, ptr %243, align 1, !tbaa !23
  %251 = getelementptr inbounds %struct.Point3d, ptr %10, i32 0, i32 2
  %252 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %253 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 29
  %254 = load i32, ptr %253, align 8, !tbaa !34
  %255 = sext i32 %254 to i64
  %256 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %252, i64 noundef %255) #6
  %257 = getelementptr inbounds %struct.Point3d, ptr %256, i32 0, i32 2
  %258 = load i8, ptr %257, align 1, !tbaa !24
  store i8 %258, ptr %251, align 1, !tbaa !24
  %259 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %259, ptr align 1 %10, i64 3, i1 false), !tbaa.struct !25
  call void @llvm.lifetime.end.p0(i64 3, ptr %10) #6
  %260 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 8
  %261 = load i32, ptr %260, align 8, !tbaa !36
  %262 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 29
  %263 = load i32, ptr %262, align 8, !tbaa !34
  %264 = sub nsw i32 %263, %261
  store i32 %264, ptr %262, align 8, !tbaa !34
  %265 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 10
  %266 = load double, ptr %265, align 8, !tbaa !35
  %267 = fmul double %266, 1.000000e+03
  %268 = fptosi double %267 to i32
  call void @_ZN13AnimationBase12SetSleepTimeEi(ptr noundef nonnull align 8 dereferenceable(13) %15, i32 noundef %268)
  br label %271

269:                                              ; preds = %227, %223
  %270 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 2
  store i32 4, ptr %270, align 8, !tbaa !9
  br label %271

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

272:                                              ; preds = %271, %189
  br label %275

273:                                              ; preds = %173
  %274 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 2
  store i32 4, ptr %274, align 8, !tbaa !9
  br label %275

275:                                              ; preds = %273, %272
  br label %276

276:                                              ; preds = %275, %169
  %277 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 2
  %278 = load i32, ptr %277, align 8, !tbaa !9
  %279 = icmp eq i32 %278, 4
  br i1 %279, label %280, label %319

280:                                              ; preds = %276
  %281 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 31
  %282 = load double, ptr %281, align 8, !tbaa !37
  %283 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 21
  %284 = load double, ptr %283, align 8, !tbaa !38
  %285 = fcmp olt double %282, %284
  br i1 %285, label %286, label %316

286:                                              ; preds = %280
  %287 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %288 = call noundef i64 @_ZNKSt6vectorI7Point3dSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %287) #6
  %289 = icmp ugt i64 %288, 0
  br i1 %289, label %290, label %316

290:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 3, ptr %11) #6
  %291 = getelementptr inbounds %struct.Point3d, ptr %11, i32 0, i32 0
  %292 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %293 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %292, i64 noundef 0) #6
  %294 = getelementptr inbounds %struct.Point3d, ptr %293, i32 0, i32 0
  %295 = load i8, ptr %294, align 1, !tbaa !22
  store i8 %295, ptr %291, align 1, !tbaa !22
  %296 = getelementptr inbounds %struct.Point3d, ptr %11, i32 0, i32 1
  %297 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %298 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %297, i64 noundef 0) #6
  %299 = getelementptr inbounds %struct.Point3d, ptr %298, i32 0, i32 1
  %300 = load i8, ptr %299, align 1, !tbaa !23
  store i8 %300, ptr %296, align 1, !tbaa !23
  %301 = getelementptr inbounds %struct.Point3d, ptr %11, i32 0, i32 2
  %302 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 14
  %303 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %302, i64 noundef 0) #6
  %304 = getelementptr inbounds %struct.Point3d, ptr %303, i32 0, i32 2
  %305 = load i8, ptr %304, align 1, !tbaa !24
  store i8 %305, ptr %301, align 1, !tbaa !24
  %306 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %306, ptr align 1 %11, i64 3, i1 false), !tbaa.struct !25
  call void @llvm.lifetime.end.p0(i64 3, ptr %11) #6
  %307 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 25
  %308 = load double, ptr %307, align 8, !tbaa !32
  %309 = fmul double %308, 1.000000e+03
  %310 = fptosi double %309 to i32
  call void @_ZN13AnimationBase12SetSleepTimeEi(ptr noundef nonnull align 8 dereferenceable(13) %15, i32 noundef %310)
  %311 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 25
  %312 = load double, ptr %311, align 8, !tbaa !32
  %313 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 31
  %314 = load double, ptr %313, align 8, !tbaa !37
  %315 = fadd double %314, %312
  store double %315, ptr %313, align 8, !tbaa !37
  br label %318

316:                                              ; preds = %286, %280
  %317 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 2
  store i32 5, ptr %317, align 8, !tbaa !9
  br label %318

318:                                              ; preds = %316, %290
  br label %319

319:                                              ; preds = %318, %276
  %320 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 2
  %321 = load i32, ptr %320, align 8, !tbaa !9
  %322 = icmp eq i32 %321, 5
  br i1 %322, label %323, label %345

323:                                              ; preds = %319
  %324 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 22
  %325 = load i32, ptr %324, align 8, !tbaa !39
  %326 = icmp sgt i32 %325, 0
  br i1 %326, label %327, label %335

327:                                              ; preds = %323
  %328 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 11
  %329 = load i32, ptr %328, align 8, !tbaa !40
  %330 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 22
  %331 = load i32, ptr %330, align 8, !tbaa !39
  %332 = icmp sge i32 %329, %331
  br i1 %332, label %333, label %335

333:                                              ; preds = %327
  %334 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 2
  store i32 6, ptr %334, align 8, !tbaa !9
  br label %344

335:                                              ; preds = %327, %323
  %336 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 11
  %337 = load i32, ptr %336, align 8, !tbaa !40
  %338 = add nsw i32 %337, 1
  store i32 %338, ptr %336, align 8, !tbaa !40
  %339 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 31
  store double 0.000000e+00, ptr %339, align 8, !tbaa !37
  %340 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 28
  store double 0.000000e+00, ptr %340, align 8, !tbaa !30
  %341 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 29
  store i32 -2147483648, ptr %341, align 8, !tbaa !34
  %342 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 26
  store i32 -2147483648, ptr %342, align 8, !tbaa !21
  %343 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 2
  store i32 1, ptr %343, align 8, !tbaa !9
  br label %344

344:                                              ; preds = %335, %333
  br label %345

345:                                              ; preds = %344, %319
  %346 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 2
  %347 = load i32, ptr %346, align 8, !tbaa !9
  %348 = icmp eq i32 %347, 6
  br i1 %348, label %349, label %361

349:                                              ; preds = %345
  %350 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 32
  %351 = load i32, ptr %350, align 8, !tbaa !41
  %352 = add nsw i32 %351, -1
  store i32 %352, ptr %350, align 8, !tbaa !41
  %353 = icmp sgt i32 %351, 0
  br i1 %353, label %358, label %354

354:                                              ; preds = %349
  %355 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 23
  %356 = load i8, ptr %355, align 4, !tbaa !42, !range !43, !noundef !44
  %357 = trunc i8 %356 to i1
  br i1 %357, label %358, label %359

358:                                              ; preds = %354, %349
  call void @_ZN13AnimationBase12SetSleepTimeEi(ptr noundef nonnull align 8 dereferenceable(13) %15, i32 noundef 100)
  br label %360

359:                                              ; preds = %354
  store i1 false, ptr %3, align 1
  br label %381

360:                                              ; preds = %358
  br label %361

361:                                              ; preds = %360, %345
  %362 = load ptr, ptr %5, align 8, !tbaa !5
  %363 = call ptr @_ZNSt6vectorI8ColorRgbSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %362) #6
  %364 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %12, i32 0, i32 0
  store ptr %363, ptr %364, align 8
  %365 = load ptr, ptr %5, align 8, !tbaa !5
  %366 = call ptr @_ZNSt6vectorI8ColorRgbSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %365) #6
  %367 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %13, i32 0, i32 0
  store ptr %366, ptr %367, align 8
  call void @llvm.lifetime.start.p0(i64 3, ptr %14) #6
  %368 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 3
  %369 = getelementptr inbounds %struct.Point3d, ptr %368, i32 0, i32 0
  %370 = load i8, ptr %369, align 4, !tbaa !45
  %371 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 3
  %372 = getelementptr inbounds %struct.Point3d, ptr %371, i32 0, i32 1
  %373 = load i8, ptr %372, align 1, !tbaa !46
  %374 = getelementptr inbounds %class.Animation_Fade, ptr %15, i32 0, i32 3
  %375 = getelementptr inbounds %struct.Point3d, ptr %374, i32 0, i32 2
  %376 = load i8, ptr %375, align 2, !tbaa !47
  call void @_ZN8ColorRgbC2Ehhh(ptr noundef nonnull align 1 dereferenceable(3) %14, i8 noundef zeroext %370, i8 noundef zeroext %373, i8 noundef zeroext %376)
  %377 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %12, i32 0, i32 0
  %378 = load ptr, ptr %377, align 8
  %379 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %13, i32 0, i32 0
  %380 = load ptr, ptr %379, align 8
  call void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIP8ColorRgbSt6vectorIS2_SaIS2_EEEES2_EvT_S8_RKT0_(ptr %378, ptr %380, ptr noundef nonnull align 1 dereferenceable(3) %14)
  call void @llvm.lifetime.end.p0(i64 3, ptr %14) #6
  store i1 true, ptr %3, align 1
  br label %381

381:                                              ; preds = %361, %359
  %382 = load i1, ptr %3, align 1
  ret i1 %382
}

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

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

declare void @_ZN13AnimationBase12SetSleepTimeEi(ptr noundef nonnull align 8 dereferenceable(13), i32 noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIP8ColorRgbSt6vectorIS2_SaIS2_EEEES2_EvT_S8_RKT0_(ptr, ptr, ptr noundef nonnull align 1 dereferenceable(3)) #5

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8ColorRgbC2Ehhh(ptr noundef nonnull align 1 dereferenceable(3), i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext) unnamed_addr #3 align 2

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

!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, !12, i64 16}
!10 = !{!"_ZTS14Animation_Fade", !11, i64 0, !12, i64 16, !14, i64 20, !12, i64 24, !15, i64 32, !12, i64 40, !15, i64 48, !12, i64 56, !15, i64 64, !16, i64 72, !15, i64 96, !15, i64 104, !14, i64 112, !14, i64 115, !15, i64 120, !15, i64 128, !12, i64 136, !13, i64 140, !15, i64 144, !12, i64 152, !15, i64 160, !12, i64 168, !15, i64 176, !12, i64 184}
!11 = !{!"_ZTS13AnimationBase", !12, i64 8, !13, i64 12}
!12 = !{!"int", !7, i64 0}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTS7Point3d", !7, i64 0, !7, i64 1, !7, i64 2}
!15 = !{!"double", !7, i64 0}
!16 = !{!"_ZTSSt6vectorI7Point3dSaIS0_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseI7Point3dSaIS0_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseI7Point3dSaIS0_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseI7Point3dSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!10, !15, i64 96}
!21 = !{!10, !12, i64 152}
!22 = !{!14, !7, i64 0}
!23 = !{!14, !7, i64 1}
!24 = !{!14, !7, i64 2}
!25 = !{i64 0, i64 1, !26, i64 1, i64 1, !26, i64 2, i64 1, !26}
!26 = !{!7, !7, i64 0}
!27 = !{!10, !15, i64 32}
!28 = !{!10, !15, i64 64}
!29 = !{!10, !12, i64 24}
!30 = !{!10, !15, i64 160}
!31 = !{!10, !15, i64 120}
!32 = !{!10, !15, i64 144}
!33 = !{!10, !15, i64 104}
!34 = !{!10, !12, i64 168}
!35 = !{!10, !15, i64 48}
!36 = !{!10, !12, i64 40}
!37 = !{!10, !15, i64 176}
!38 = !{!10, !15, i64 128}
!39 = !{!10, !12, i64 136}
!40 = !{!10, !12, i64 56}
!41 = !{!10, !12, i64 184}
!42 = !{!10, !13, i64 140}
!43 = !{i8 0, i8 2}
!44 = !{}
!45 = !{!10, !7, i64 20}
!46 = !{!10, !7, i64 21}
!47 = !{!10, !7, i64 22}


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

%struct.ColorRgb = type { i8, i8, i8 }

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN14Animation_Fade10hasLedDataERSt6vectorI8ColorRgbSaIS1_EE(ptr noundef nonnull align 8 dereferenceable(188) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) unnamed_addr #1 align 2 {
  %3 = alloca %struct.ColorRgb, align 1
  %4 = getelementptr inbounds i8, ptr %0, i64 16
  %5 = load i32, ptr %4, align 8, !tbaa !5
  %6 = icmp eq i32 %5, 1
  br i1 %6, label %7, label %62

7:                                                ; preds = %2
  %8 = getelementptr inbounds i8, ptr %0, i64 96
  %9 = load double, ptr %8, align 8, !tbaa !19
  %10 = fcmp ogt double %9, 0.000000e+00
  br i1 %10, label %11, label %.thread.sink.split

11:                                               ; preds = %7
  %12 = getelementptr inbounds i8, ptr %0, i64 152
  %13 = load i32, ptr %12, align 8, !tbaa !20
  %14 = icmp eq i32 %13, -2147483648
  br i1 %14, label %15, label %28

15:                                               ; preds = %11
  %16 = getelementptr inbounds i8, ptr %0, i64 72
  %17 = tail call noundef i64 @_ZNKSt6vectorI7Point3dSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #5
  %.not = icmp eq i64 %17, 0
  br i1 %.not, label %._crit_edge, label %18

._crit_edge:                                      ; preds = %15
  %.pre = load i32, ptr %12, align 8, !tbaa !20
  br label %28

18:                                               ; preds = %15
  store i32 0, ptr %12, align 8, !tbaa !20
  %19 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef 0) #5
  %20 = load i8, ptr %19, align 1, !tbaa !21
  %21 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef 0) #5
  %22 = getelementptr inbounds i8, ptr %21, i64 1
  %23 = load i8, ptr %22, align 1, !tbaa !22
  %24 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef 0) #5
  %25 = getelementptr inbounds i8, ptr %24, i64 2
  %26 = load i8, ptr %25, align 1, !tbaa !23
  %27 = getelementptr inbounds i8, ptr %0, i64 20
  store i8 %20, ptr %27, align 4, !tbaa !24
  %.sroa.416.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 21
  store i8 %23, ptr %.sroa.416.0..sroa_idx, align 1, !tbaa !24
  %.sroa.517.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 22
  store i8 %26, ptr %.sroa.517.0..sroa_idx, align 2, !tbaa !24
  br label %thread-pre-split

28:                                               ; preds = %._crit_edge, %11
  %29 = phi i32 [ %.pre, %._crit_edge ], [ %13, %11 ]
  %30 = getelementptr inbounds i8, ptr %0, i64 64
  %31 = load double, ptr %30, align 8, !tbaa !25
  %32 = fptosi double %31 to i32
  %.not24 = icmp sgt i32 %29, %32
  br i1 %.not24, label %.thread.sink.split, label %33

33:                                               ; preds = %28
  %34 = getelementptr inbounds i8, ptr %0, i64 72
  %35 = tail call noundef i64 @_ZNKSt6vectorI7Point3dSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #5
  %36 = trunc i64 %35 to i32
  %37 = icmp slt i32 %29, %36
  br i1 %37, label %38, label %.thread.sink.split

38:                                               ; preds = %33
  %39 = load i32, ptr %12, align 8, !tbaa !20
  %40 = sext i32 %39 to i64
  %41 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %34, i64 noundef %40) #5
  %42 = load i8, ptr %41, align 1, !tbaa !21
  %43 = load i32, ptr %12, align 8, !tbaa !20
  %44 = sext i32 %43 to i64
  %45 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %34, i64 noundef %44) #5
  %46 = getelementptr inbounds i8, ptr %45, i64 1
  %47 = load i8, ptr %46, align 1, !tbaa !22
  %48 = load i32, ptr %12, align 8, !tbaa !20
  %49 = sext i32 %48 to i64
  %50 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %34, i64 noundef %49) #5
  %51 = getelementptr inbounds i8, ptr %50, i64 2
  %52 = load i8, ptr %51, align 1, !tbaa !23
  %53 = getelementptr inbounds i8, ptr %0, i64 20
  store i8 %42, ptr %53, align 4, !tbaa !24
  %.sroa.413.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 21
  store i8 %47, ptr %.sroa.413.0..sroa_idx, align 1, !tbaa !24
  %.sroa.514.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 22
  store i8 %52, ptr %.sroa.514.0..sroa_idx, align 2, !tbaa !24
  %54 = getelementptr inbounds i8, ptr %0, i64 24
  %55 = load i32, ptr %54, align 8, !tbaa !26
  %56 = load i32, ptr %12, align 8, !tbaa !20
  %57 = add nsw i32 %56, %55
  store i32 %57, ptr %12, align 8, !tbaa !20
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %18, %38
  %58 = getelementptr inbounds i8, ptr %0, i64 32
  %59 = load double, ptr %58, align 8, !tbaa !27
  %60 = fmul double %59, 1.000000e+03
  %61 = fptosi double %60 to i32
  tail call void @_ZN13AnimationBase12SetSleepTimeEi(ptr noundef nonnull align 8 dereferenceable(13) %0, i32 noundef %61)
  %.pr = load i32, ptr %4, align 8, !tbaa !5
  br label %62

62:                                               ; preds = %thread-pre-split, %2
  %63 = phi i32 [ %.pr, %thread-pre-split ], [ %5, %2 ]
  %64 = icmp eq i32 %63, 2
  br i1 %64, label %.thread, label %104

.thread.sink.split:                               ; preds = %7, %28, %33
  store i32 2, ptr %4, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %62
  %65 = getelementptr inbounds i8, ptr %0, i64 160
  %66 = load double, ptr %65, align 8, !tbaa !28
  %67 = getelementptr inbounds i8, ptr %0, i64 120
  %68 = load double, ptr %67, align 8, !tbaa !29
  %69 = fcmp olt double %66, %68
  br i1 %69, label %70, label %.thread30

70:                                               ; preds = %.thread
  %71 = getelementptr inbounds i8, ptr %0, i64 64
  %72 = load double, ptr %71, align 8, !tbaa !25
  %73 = fptosi double %72 to i32
  %74 = getelementptr inbounds i8, ptr %0, i64 72
  %75 = tail call noundef i64 @_ZNKSt6vectorI7Point3dSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %74) #5
  %76 = trunc i64 %75 to i32
  %77 = icmp slt i32 %73, %76
  br i1 %77, label %78, label %.thread30

78:                                               ; preds = %70
  %79 = load double, ptr %71, align 8, !tbaa !25
  %80 = fptosi double %79 to i32
  %81 = sext i32 %80 to i64
  %82 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %74, i64 noundef %81) #5
  %83 = load i8, ptr %82, align 1, !tbaa !21
  %84 = load double, ptr %71, align 8, !tbaa !25
  %85 = fptosi double %84 to i32
  %86 = sext i32 %85 to i64
  %87 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %74, i64 noundef %86) #5
  %88 = getelementptr inbounds i8, ptr %87, i64 1
  %89 = load i8, ptr %88, align 1, !tbaa !22
  %90 = load double, ptr %71, align 8, !tbaa !25
  %91 = fptosi double %90 to i32
  %92 = sext i32 %91 to i64
  %93 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %74, i64 noundef %92) #5
  %94 = getelementptr inbounds i8, ptr %93, i64 2
  %95 = load i8, ptr %94, align 1, !tbaa !23
  %96 = getelementptr inbounds i8, ptr %0, i64 20
  store i8 %83, ptr %96, align 4, !tbaa !24
  %.sroa.410.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 21
  store i8 %89, ptr %.sroa.410.0..sroa_idx, align 1, !tbaa !24
  %.sroa.511.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 22
  store i8 %95, ptr %.sroa.511.0..sroa_idx, align 2, !tbaa !24
  %97 = getelementptr inbounds i8, ptr %0, i64 144
  %98 = load double, ptr %97, align 8, !tbaa !30
  %99 = fmul double %98, 1.000000e+03
  %100 = fptosi double %99 to i32
  tail call void @_ZN13AnimationBase12SetSleepTimeEi(ptr noundef nonnull align 8 dereferenceable(13) %0, i32 noundef %100)
  %101 = load double, ptr %97, align 8, !tbaa !30
  %102 = load double, ptr %65, align 8, !tbaa !28
  %103 = fadd double %101, %102
  store double %103, ptr %65, align 8, !tbaa !28
  %.pr29.pre = load i32, ptr %4, align 8, !tbaa !5
  br label %104

.thread30:                                        ; preds = %.thread, %70
  store i32 3, ptr %4, align 8, !tbaa !5
  br label %106

104:                                              ; preds = %78, %62
  %.pr29 = phi i32 [ %.pr29.pre, %78 ], [ %63, %62 ]
  %105 = icmp eq i32 %.pr29, 3
  br i1 %105, label %106, label %171

106:                                              ; preds = %.thread30, %104
  %107 = getelementptr inbounds i8, ptr %0, i64 104
  %108 = load double, ptr %107, align 8, !tbaa !31
  %109 = fcmp ogt double %108, 0.000000e+00
  br i1 %109, label %110, label %.thread36.sink.split

110:                                              ; preds = %106
  %111 = getelementptr inbounds i8, ptr %0, i64 168
  %112 = load i32, ptr %111, align 8, !tbaa !32
  %113 = icmp eq i32 %112, -2147483648
  br i1 %113, label %114, label %139

114:                                              ; preds = %110
  %115 = getelementptr inbounds i8, ptr %0, i64 64
  %116 = load double, ptr %115, align 8, !tbaa !25
  %117 = fptosi double %116 to i32
  %118 = getelementptr inbounds i8, ptr %0, i64 72
  %119 = tail call noundef i64 @_ZNKSt6vectorI7Point3dSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %118) #5
  %120 = trunc i64 %119 to i32
  %121 = icmp slt i32 %117, %120
  br i1 %121, label %122, label %thread-pre-split31

122:                                              ; preds = %114
  %123 = load double, ptr %115, align 8, !tbaa !25
  %124 = fptosi double %123 to i32
  store i32 %124, ptr %111, align 8, !tbaa !32
  %125 = sext i32 %124 to i64
  %126 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %118, i64 noundef %125) #5
  %127 = load i8, ptr %126, align 1, !tbaa !21
  %128 = load i32, ptr %111, align 8, !tbaa !32
  %129 = sext i32 %128 to i64
  %130 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %118, i64 noundef %129) #5
  %131 = getelementptr inbounds i8, ptr %130, i64 1
  %132 = load i8, ptr %131, align 1, !tbaa !22
  %133 = load i32, ptr %111, align 8, !tbaa !32
  %134 = sext i32 %133 to i64
  %135 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %118, i64 noundef %134) #5
  %136 = getelementptr inbounds i8, ptr %135, i64 2
  %137 = load i8, ptr %136, align 1, !tbaa !23
  %138 = getelementptr inbounds i8, ptr %0, i64 20
  store i8 %127, ptr %138, align 4, !tbaa !24
  %.sroa.47.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 21
  store i8 %132, ptr %.sroa.47.0..sroa_idx, align 1, !tbaa !24
  %.sroa.58.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 22
  store i8 %137, ptr %.sroa.58.0..sroa_idx, align 2, !tbaa !24
  br label %thread-pre-split33

thread-pre-split31:                               ; preds = %114
  %.pr32 = load i32, ptr %111, align 8, !tbaa !32
  br label %139

139:                                              ; preds = %thread-pre-split31, %110
  %140 = phi i32 [ %.pr32, %thread-pre-split31 ], [ %112, %110 ]
  %141 = icmp sgt i32 %140, -1
  br i1 %141, label %142, label %.thread36.sink.split

142:                                              ; preds = %139
  %143 = getelementptr inbounds i8, ptr %0, i64 72
  %144 = tail call noundef i64 @_ZNKSt6vectorI7Point3dSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %143) #5
  %145 = trunc i64 %144 to i32
  %146 = icmp slt i32 %140, %145
  br i1 %146, label %147, label %.thread36.sink.split

147:                                              ; preds = %142
  %148 = load i32, ptr %111, align 8, !tbaa !32
  %149 = sext i32 %148 to i64
  %150 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %143, i64 noundef %149) #5
  %151 = load i8, ptr %150, align 1, !tbaa !21
  %152 = load i32, ptr %111, align 8, !tbaa !32
  %153 = sext i32 %152 to i64
  %154 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %143, i64 noundef %153) #5
  %155 = getelementptr inbounds i8, ptr %154, i64 1
  %156 = load i8, ptr %155, align 1, !tbaa !22
  %157 = load i32, ptr %111, align 8, !tbaa !32
  %158 = sext i32 %157 to i64
  %159 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %143, i64 noundef %158) #5
  %160 = getelementptr inbounds i8, ptr %159, i64 2
  %161 = load i8, ptr %160, align 1, !tbaa !23
  %162 = getelementptr inbounds i8, ptr %0, i64 20
  store i8 %151, ptr %162, align 4, !tbaa !24
  %.sroa.44.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 21
  store i8 %156, ptr %.sroa.44.0..sroa_idx, align 1, !tbaa !24
  %.sroa.55.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 22
  store i8 %161, ptr %.sroa.55.0..sroa_idx, align 2, !tbaa !24
  %163 = getelementptr inbounds i8, ptr %0, i64 40
  %164 = load i32, ptr %163, align 8, !tbaa !33
  %165 = load i32, ptr %111, align 8, !tbaa !32
  %166 = sub nsw i32 %165, %164
  store i32 %166, ptr %111, align 8, !tbaa !32
  br label %thread-pre-split33

thread-pre-split33:                               ; preds = %122, %147
  %167 = getelementptr inbounds i8, ptr %0, i64 48
  %168 = load double, ptr %167, align 8, !tbaa !34
  %169 = fmul double %168, 1.000000e+03
  %170 = fptosi double %169 to i32
  tail call void @_ZN13AnimationBase12SetSleepTimeEi(ptr noundef nonnull align 8 dereferenceable(13) %0, i32 noundef %170)
  %.pr34 = load i32, ptr %4, align 8, !tbaa !5
  br label %171

171:                                              ; preds = %thread-pre-split33, %104
  %172 = phi i32 [ %.pr34, %thread-pre-split33 ], [ %.pr29, %104 ]
  %173 = icmp eq i32 %172, 4
  br i1 %173, label %.thread36, label %199

.thread36.sink.split:                             ; preds = %106, %139, %142
  store i32 4, ptr %4, align 8, !tbaa !5
  br label %.thread36

.thread36:                                        ; preds = %.thread36.sink.split, %171
  %174 = getelementptr inbounds i8, ptr %0, i64 176
  %175 = load double, ptr %174, align 8, !tbaa !35
  %176 = getelementptr inbounds i8, ptr %0, i64 128
  %177 = load double, ptr %176, align 8, !tbaa !36
  %178 = fcmp olt double %175, %177
  br i1 %178, label %179, label %.thread39

179:                                              ; preds = %.thread36
  %180 = getelementptr inbounds i8, ptr %0, i64 72
  %181 = tail call noundef i64 @_ZNKSt6vectorI7Point3dSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %180) #5
  %.not25 = icmp eq i64 %181, 0
  br i1 %.not25, label %.thread39, label %182

182:                                              ; preds = %179
  %183 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %180, i64 noundef 0) #5
  %184 = load i8, ptr %183, align 1, !tbaa !21
  %185 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %180, i64 noundef 0) #5
  %186 = getelementptr inbounds i8, ptr %185, i64 1
  %187 = load i8, ptr %186, align 1, !tbaa !22
  %188 = tail call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %180, i64 noundef 0) #5
  %189 = getelementptr inbounds i8, ptr %188, i64 2
  %190 = load i8, ptr %189, align 1, !tbaa !23
  %191 = getelementptr inbounds i8, ptr %0, i64 20
  store i8 %184, ptr %191, align 4, !tbaa !24
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 21
  store i8 %187, ptr %.sroa.4.0..sroa_idx, align 1, !tbaa !24
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 22
  store i8 %190, ptr %.sroa.5.0..sroa_idx, align 2, !tbaa !24
  %192 = getelementptr inbounds i8, ptr %0, i64 144
  %193 = load double, ptr %192, align 8, !tbaa !30
  %194 = fmul double %193, 1.000000e+03
  %195 = fptosi double %194 to i32
  tail call void @_ZN13AnimationBase12SetSleepTimeEi(ptr noundef nonnull align 8 dereferenceable(13) %0, i32 noundef %195)
  %196 = load double, ptr %192, align 8, !tbaa !30
  %197 = load double, ptr %174, align 8, !tbaa !35
  %198 = fadd double %196, %197
  store double %198, ptr %174, align 8, !tbaa !35
  %.pr38.pre = load i32, ptr %4, align 8, !tbaa !5
  br label %199

199:                                              ; preds = %182, %171
  %.pr38 = phi i32 [ %.pr38.pre, %182 ], [ %172, %171 ]
  switch i32 %.pr38, label %220 [
    i32 5, label %.thread39
    i32 6, label %210
  ]

.thread39:                                        ; preds = %179, %.thread36, %199
  %200 = getelementptr inbounds i8, ptr %0, i64 136
  %201 = load i32, ptr %200, align 8, !tbaa !37
  %202 = icmp slt i32 %201, 1
  %203 = getelementptr inbounds i8, ptr %0, i64 56
  %204 = load i32, ptr %203, align 8
  %.not26 = icmp slt i32 %204, %201
  %or.cond = select i1 %202, i1 true, i1 %.not26
  br i1 %or.cond, label %.thread41, label %.thread40

.thread40:                                        ; preds = %.thread39
  store i32 6, ptr %4, align 8, !tbaa !5
  br label %210

.thread41:                                        ; preds = %.thread39
  %205 = add nsw i32 %204, 1
  store i32 %205, ptr %203, align 8, !tbaa !38
  %206 = getelementptr inbounds i8, ptr %0, i64 176
  store double 0.000000e+00, ptr %206, align 8, !tbaa !35
  %207 = getelementptr inbounds i8, ptr %0, i64 160
  store double 0.000000e+00, ptr %207, align 8, !tbaa !28
  %208 = getelementptr inbounds i8, ptr %0, i64 168
  store i32 -2147483648, ptr %208, align 8, !tbaa !32
  %209 = getelementptr inbounds i8, ptr %0, i64 152
  store i32 -2147483648, ptr %209, align 8, !tbaa !20
  store i32 1, ptr %4, align 8, !tbaa !5
  br label %220

210:                                              ; preds = %199, %.thread40
  %211 = getelementptr inbounds i8, ptr %0, i64 184
  %212 = load i32, ptr %211, align 8, !tbaa !39
  %213 = add nsw i32 %212, -1
  store i32 %213, ptr %211, align 8, !tbaa !39
  %214 = icmp sgt i32 %212, 0
  br i1 %214, label %219, label %215

215:                                              ; preds = %210
  %216 = getelementptr inbounds i8, ptr %0, i64 140
  %217 = load i8, ptr %216, align 4, !tbaa !40, !range !41, !noundef !42
  %218 = trunc nuw i8 %217 to i1
  br i1 %218, label %219, label %229

219:                                              ; preds = %215, %210
  tail call void @_ZN13AnimationBase12SetSleepTimeEi(ptr noundef nonnull align 8 dereferenceable(13) %0, i32 noundef 100)
  br label %220

220:                                              ; preds = %199, %.thread41, %219
  %221 = tail call ptr @_ZNSt6vectorI8ColorRgbSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #5
  %222 = tail call ptr @_ZNSt6vectorI8ColorRgbSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #5
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %3) #5
  %223 = getelementptr inbounds i8, ptr %0, i64 20
  %224 = load i8, ptr %223, align 4, !tbaa !43
  %225 = getelementptr inbounds i8, ptr %0, i64 21
  %226 = load i8, ptr %225, align 1, !tbaa !44
  %227 = getelementptr inbounds i8, ptr %0, i64 22
  %228 = load i8, ptr %227, align 2, !tbaa !45
  call void @_ZN8ColorRgbC2Ehhh(ptr noundef nonnull align 1 dereferenceable(3) %3, i8 noundef zeroext %224, i8 noundef zeroext %226, i8 noundef zeroext %228)
  call void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIP8ColorRgbSt6vectorIS2_SaIS2_EEEES2_EvT_S8_RKT0_(ptr %221, ptr %222, ptr noundef nonnull align 1 dereferenceable(3) %3)
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %3) #5
  br label %229

229:                                              ; preds = %215, %220
  %.0 = phi i1 [ true, %220 ], [ false, %215 ]
  ret i1 %.0
}

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

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

declare void @_ZN13AnimationBase12SetSleepTimeEi(ptr noundef nonnull align 8 dereferenceable(13), i32 noundef) local_unnamed_addr #3

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8ColorRgbC2Ehhh(ptr noundef nonnull align 1 dereferenceable(3), i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext) unnamed_addr #2 align 2

attributes #0 = { mustprogress 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 = { 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 = { "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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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, !8, i64 16}
!6 = !{!"_ZTS14Animation_Fade", !7, i64 0, !8, i64 16, !12, i64 20, !8, i64 24, !13, i64 32, !8, i64 40, !13, i64 48, !8, i64 56, !13, i64 64, !14, i64 72, !13, i64 96, !13, i64 104, !12, i64 112, !12, i64 115, !13, i64 120, !13, i64 128, !8, i64 136, !11, i64 140, !13, i64 144, !8, i64 152, !13, i64 160, !8, i64 168, !13, i64 176, !8, i64 184}
!7 = !{!"_ZTS13AnimationBase", !8, i64 8, !11, i64 12}
!8 = !{!"int", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"bool", !9, i64 0}
!12 = !{!"_ZTS7Point3d", !9, i64 0, !9, i64 1, !9, i64 2}
!13 = !{!"double", !9, i64 0}
!14 = !{!"_ZTSSt6vectorI7Point3dSaIS0_EE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseI7Point3dSaIS0_EE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseI7Point3dSaIS0_EE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseI7Point3dSaIS0_EE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!18 = !{!"any pointer", !9, i64 0}
!19 = !{!6, !13, i64 96}
!20 = !{!6, !8, i64 152}
!21 = !{!12, !9, i64 0}
!22 = !{!12, !9, i64 1}
!23 = !{!12, !9, i64 2}
!24 = !{!9, !9, i64 0}
!25 = !{!6, !13, i64 64}
!26 = !{!6, !8, i64 24}
!27 = !{!6, !13, i64 32}
!28 = !{!6, !13, i64 160}
!29 = !{!6, !13, i64 120}
!30 = !{!6, !13, i64 144}
!31 = !{!6, !13, i64 104}
!32 = !{!6, !8, i64 168}
!33 = !{!6, !8, i64 40}
!34 = !{!6, !13, i64 48}
!35 = !{!6, !13, i64 176}
!36 = !{!6, !13, i64 128}
!37 = !{!6, !8, i64 136}
!38 = !{!6, !8, i64 56}
!39 = !{!6, !8, i64 184}
!40 = !{!6, !11, i64 140}
!41 = !{i8 0, i8 2}
!42 = !{}
!43 = !{!6, !9, i64 20}
!44 = !{!6, !9, i64 21}
!45 = !{!6, !9, i64 22}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass