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

; 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.5" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%class.Animation_MoodBlobs = type { %class.AnimationBase.base, i32, i8, double, double, double, i32, double, i8, i32, double, i32, %struct.Point3dhsv, %"class.std::vector", double, %struct.Point3d, i8, double, i32, i8, i8, double, double, double }
%class.AnimationBase.base = type <{ ptr, i32, i8 }>
%struct.Point3dhsv = type { i16, i8, 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 }
%struct.ColorRgb = type { i8, i8, i8 }

; 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 @_ZN19Animation_MoodBlobs10hasLedDataERSt6vectorI8ColorRgbSaIS1_EE(ptr noundef nonnull align 8 dereferenceable(168) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) unnamed_addr #2 align 2 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca double, align 8
  %6 = alloca double, align 8
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca i32, align 4
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca i32, align 4
  %13 = alloca %struct.Point3d, align 1
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %struct.Point3d, align 1
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca %struct.Point3d, align 1
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %23 = alloca i32, align 4
  %24 = alloca %struct.Point3d, align 1
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %28 = alloca i32, align 4
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca i32, align 4
  %33 = alloca %struct.Point3d, align 1
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8
  %35 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %37 = alloca i32, align 4
  %38 = alloca %struct.Point3d, align 1
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %41 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %42 = load ptr, ptr %3, align 8
  %43 = load ptr, ptr %4, align 8, !tbaa !5
  %44 = call noundef i64 @_ZNKSt6vectorI8ColorRgbSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %43) #8
  %45 = trunc i64 %44 to i32
  %46 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 1
  %47 = load i32, ptr %46, align 8, !tbaa !9
  %48 = icmp ne i32 %45, %47
  br i1 %48, label %49, label %248

49:                                               ; preds = %2
  %50 = load ptr, ptr %4, align 8, !tbaa !5
  %51 = call noundef i64 @_ZNKSt6vectorI8ColorRgbSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %50) #8
  %52 = icmp ugt i64 %51, 1
  br i1 %52, label %53, label %248

53:                                               ; preds = %49
  %54 = load ptr, ptr %4, align 8, !tbaa !5
  %55 = call noundef i64 @_ZNKSt6vectorI8ColorRgbSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #8
  %56 = trunc i64 %55 to i32
  %57 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 1
  store i32 %56, ptr %57, align 8, !tbaa !9
  %58 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 22
  %59 = load double, ptr %58, align 8, !tbaa !22
  %60 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 21
  %61 = load double, ptr %60, align 8, !tbaa !23
  %62 = fcmp ogt double %59, %61
  br i1 %62, label %63, label %70

63:                                               ; preds = %53
  %64 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 22
  %65 = load double, ptr %64, align 8, !tbaa !22
  %66 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 21
  %67 = load double, ptr %66, align 8, !tbaa !23
  %68 = fsub double %65, %67
  %69 = fcmp olt double %68, 1.000000e+01
  br i1 %69, label %84, label %70

70:                                               ; preds = %63, %53
  %71 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 21
  %72 = load double, ptr %71, align 8, !tbaa !23
  %73 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 22
  %74 = load double, ptr %73, align 8, !tbaa !22
  %75 = fcmp ogt double %72, %74
  br i1 %75, label %76, label %86

76:                                               ; preds = %70
  %77 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 22
  %78 = load double, ptr %77, align 8, !tbaa !22
  %79 = fadd double %78, 3.600000e+02
  %80 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 21
  %81 = load double, ptr %80, align 8, !tbaa !23
  %82 = fsub double %79, %81
  %83 = fcmp olt double %82, 1.000000e+01
  br i1 %83, label %84, label %86

84:                                               ; preds = %76, %63
  %85 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 20
  store i8 0, ptr %85, align 1, !tbaa !24
  br label %86

86:                                               ; preds = %84, %76, %70
  %87 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 22
  %88 = load double, ptr %87, align 8, !tbaa !22
  %89 = call double @fmod(double noundef %88, double noundef 3.600000e+02) #8
  %90 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 21
  %91 = load double, ptr %90, align 8, !tbaa !23
  %92 = call double @fmod(double noundef %91, double noundef 3.600000e+02) #8
  %93 = fcmp oeq double %89, %92
  %94 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 2
  %95 = zext i1 %93 to i8
  store i8 %95, ptr %94, align 4, !tbaa !25
  %96 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 3
  store double 0x3F66C16C16C16C17, ptr %96, align 8, !tbaa !26
  %97 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 17
  %98 = load double, ptr %97, align 8, !tbaa !27
  %99 = fdiv double %98, 3.600000e+02
  store double %99, ptr %97, align 8, !tbaa !27
  %100 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 21
  %101 = load double, ptr %100, align 8, !tbaa !23
  %102 = fdiv double %101, 3.600000e+02
  %103 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 21
  store double %102, ptr %103, align 8, !tbaa !23
  %104 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 22
  %105 = load double, ptr %104, align 8, !tbaa !22
  %106 = fdiv double %105, 3.600000e+02
  %107 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 22
  store double %106, ptr %107, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #8
  store double 1.000000e-01, ptr %5, align 8, !tbaa !28
  %108 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 14
  %109 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %108)
  %110 = load double, ptr %109, align 8, !tbaa !28
  %111 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 14
  store double %110, ptr %111, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #8
  store double 0.000000e+00, ptr %6, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  %112 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 17
  %113 = load double, ptr %112, align 8, !tbaa !27
  %114 = call double @llvm.fabs.f64(double %113)
  store double %114, ptr %7, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  store double 5.000000e-01, ptr %8, align 8, !tbaa !28
  %115 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8)
  %116 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %115)
  %117 = load double, ptr %116, align 8, !tbaa !28
  %118 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 17
  store double %117, ptr %118, align 8, !tbaa !27
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #8
  store i32 1, ptr %9, align 4, !tbaa !30
  %119 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 18
  %120 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %119)
  %121 = load i32, ptr %120, align 4, !tbaa !30
  %122 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 18
  store i32 %121, ptr %122, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  store double 0.000000e+00, ptr %10, align 8, !tbaa !28
  %123 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 23
  %124 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %123)
  %125 = load double, ptr %124, align 8, !tbaa !28
  %126 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 23
  store double %125, ptr %126, align 8, !tbaa !32
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  %127 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 15
  %128 = getelementptr inbounds %struct.Point3d, ptr %127, i32 0, i32 0
  %129 = load i8, ptr %128, align 8, !tbaa !33
  %130 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 15
  %131 = getelementptr inbounds %struct.Point3d, ptr %130, i32 0, i32 1
  %132 = load i8, ptr %131, align 1, !tbaa !34
  %133 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 15
  %134 = getelementptr inbounds %struct.Point3d, ptr %133, i32 0, i32 2
  %135 = load i8, ptr %134, align 2, !tbaa !35
  %136 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 12
  %137 = getelementptr inbounds %struct.Point3dhsv, ptr %136, i32 0, i32 0
  %138 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 12
  %139 = getelementptr inbounds %struct.Point3dhsv, ptr %138, i32 0, i32 1
  %140 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 12
  %141 = getelementptr inbounds %struct.Point3dhsv, ptr %140, i32 0, i32 2
  call void @_ZN8ColorRgb7rgb2hsvEhhhRtRhS1_(i8 noundef zeroext %129, i8 noundef zeroext %132, i8 noundef zeroext %135, ptr noundef nonnull align 2 dereferenceable(2) %137, ptr noundef nonnull align 1 dereferenceable(1) %139, ptr noundef nonnull align 1 dereferenceable(1) %141)
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %142 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 12
  %143 = getelementptr inbounds %struct.Point3dhsv, ptr %142, i32 0, i32 0
  %144 = load i16, ptr %143, align 4, !tbaa !36
  %145 = zext i16 %144 to i32
  %146 = sitofp i32 %145 to double
  %147 = fdiv double %146, 3.600000e+02
  store double %147, ptr %11, align 8, !tbaa !28
  %148 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 16
  %149 = load i8, ptr %148, align 1, !tbaa !37, !range !38, !noundef !39
  %150 = trunc i8 %149 to i1
  br i1 %150, label %151, label %159

151:                                              ; preds = %86
  %152 = call i32 @rand() #8
  %153 = sitofp i32 %152 to float
  %154 = fpext float %153 to double
  %155 = fmul double 3.600000e+02, %154
  %156 = fdiv double %155, 0x41E0000000000000
  %157 = fptosi double %156 to i32
  %158 = sitofp i32 %157 to double
  store double %158, ptr %11, align 8, !tbaa !28
  br label %159

159:                                              ; preds = %151, %86
  %160 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  call void @_ZNSt6vectorI7Point3dSaIS0_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %160) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  store i32 0, ptr %12, align 4, !tbaa !30
  br label %161

161:                                              ; preds = %202, %159
  %162 = load i32, ptr %12, align 4, !tbaa !30
  %163 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 1
  %164 = load i32, ptr %163, align 8, !tbaa !9
  %165 = icmp slt i32 %162, %164
  br i1 %165, label %167, label %166

166:                                              ; preds = %161
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  br label %205

167:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 3, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  %168 = load double, ptr %11, align 8, !tbaa !28
  %169 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 17
  %170 = load double, ptr %169, align 8, !tbaa !27
  %171 = load i32, ptr %12, align 4, !tbaa !30
  %172 = sitofp i32 %171 to double
  %173 = fmul double 0x401921FB54442D18, %172
  %174 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 1
  %175 = load i32, ptr %174, align 8, !tbaa !9
  %176 = sitofp i32 %175 to double
  %177 = fdiv double %173, %176
  %178 = call double @sin(double noundef %177) #8
  %179 = call double @llvm.fmuladd.f64(double %170, double %178, double %168)
  %180 = call double @fmod(double noundef %179, double noundef 1.000000e+00) #8
  %181 = fmul double 3.600000e+02, %180
  %182 = fptosi double %181 to i32
  store i32 %182, ptr %14, align 4, !tbaa !30
  br label %183

183:                                              ; preds = %186, %167
  %184 = load i32, ptr %14, align 4, !tbaa !30
  %185 = icmp slt i32 %184, 0
  br i1 %185, label %186, label %189

186:                                              ; preds = %183
  %187 = load i32, ptr %14, align 4, !tbaa !30
  %188 = add nsw i32 %187, 360
  store i32 %188, ptr %14, align 4, !tbaa !30
  br label %183, !llvm.loop !40

189:                                              ; preds = %183
  %190 = load i32, ptr %14, align 4, !tbaa !30
  %191 = trunc i32 %190 to i16
  %192 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 12
  %193 = getelementptr inbounds %struct.Point3dhsv, ptr %192, i32 0, i32 1
  %194 = load i8, ptr %193, align 2, !tbaa !42
  %195 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 12
  %196 = getelementptr inbounds %struct.Point3dhsv, ptr %195, i32 0, i32 2
  %197 = load i8, ptr %196, align 1, !tbaa !43
  %198 = getelementptr inbounds %struct.Point3d, ptr %13, i32 0, i32 0
  %199 = getelementptr inbounds %struct.Point3d, ptr %13, i32 0, i32 1
  %200 = getelementptr inbounds %struct.Point3d, ptr %13, i32 0, i32 2
  call void @_ZN8ColorRgb7hsv2rgbEthhRhS0_S0_(i16 noundef zeroext %191, i8 noundef zeroext %194, i8 noundef zeroext %197, ptr noundef nonnull align 1 dereferenceable(1) %198, ptr noundef nonnull align 1 dereferenceable(1) %199, ptr noundef nonnull align 1 dereferenceable(1) %200)
  %201 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  call void @_ZNSt6vectorI7Point3dSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %201, ptr noundef nonnull align 1 dereferenceable(3) %13)
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 3, ptr %13) #8
  br label %202

202:                                              ; preds = %189
  %203 = load i32, ptr %12, align 4, !tbaa !30
  %204 = add nsw i32 %203, 1
  store i32 %204, ptr %12, align 4, !tbaa !30
  br label %161, !llvm.loop !44

205:                                              ; preds = %166
  %206 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 4
  store double 1.000000e-01, ptr %206, align 8, !tbaa !45
  %207 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 18
  %208 = load i32, ptr %207, align 8, !tbaa !31
  %209 = sitofp i32 %208 to double
  %210 = fmul double %209, 0x400921FB54442D18
  %211 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 4
  %212 = load double, ptr %211, align 8, !tbaa !45
  %213 = fmul double %210, %212
  %214 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 14
  %215 = load double, ptr %214, align 8, !tbaa !29
  %216 = fdiv double %213, %215
  %217 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 5
  store double %216, ptr %217, align 8, !tbaa !46
  %218 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 6
  store i32 1, ptr %218, align 8, !tbaa !47
  %219 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 4
  %220 = load double, ptr %219, align 8, !tbaa !45
  %221 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 23
  %222 = load double, ptr %221, align 8, !tbaa !32
  %223 = fdiv double %222, %220
  store double %223, ptr %221, align 8, !tbaa !32
  %224 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 19
  %225 = load i8, ptr %224, align 4, !tbaa !48, !range !38, !noundef !39
  %226 = trunc i8 %225 to i1
  br i1 %226, label %227, label %236

227:                                              ; preds = %205
  %228 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 5
  %229 = load double, ptr %228, align 8, !tbaa !46
  %230 = fneg double %229
  %231 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 5
  store double %230, ptr %231, align 8, !tbaa !46
  %232 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 6
  %233 = load i32, ptr %232, align 8, !tbaa !47
  %234 = sub nsw i32 0, %233
  %235 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 6
  store i32 %234, ptr %235, align 8, !tbaa !47
  br label %236

236:                                              ; preds = %227, %205
  %237 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 7
  store double 0.000000e+00, ptr %237, align 8, !tbaa !49
  %238 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 8
  store i8 0, ptr %238, align 8, !tbaa !50
  %239 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 9
  store i32 0, ptr %239, align 4, !tbaa !51
  %240 = load double, ptr %11, align 8, !tbaa !28
  %241 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 10
  store double %240, ptr %241, align 8, !tbaa !52
  %242 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 11
  store i32 0, ptr %242, align 8, !tbaa !53
  %243 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 4
  %244 = load double, ptr %243, align 8, !tbaa !45
  %245 = fmul double %244, 1.000000e+03
  %246 = call double @llvm.round.f64(double %245)
  %247 = fptosi double %246 to i32
  call void @_ZN13AnimationBase12SetSleepTimeEi(ptr noundef nonnull align 8 dereferenceable(13) %42, i32 noundef %247)
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  br label %248

248:                                              ; preds = %236, %49, %2
  %249 = load ptr, ptr %4, align 8, !tbaa !5
  %250 = call noundef i64 @_ZNKSt6vectorI8ColorRgbSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %249) #8
  %251 = trunc i64 %250 to i32
  %252 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 1
  %253 = load i32, ptr %252, align 8, !tbaa !9
  %254 = icmp eq i32 %251, %253
  br i1 %254, label %255, label %609

255:                                              ; preds = %248
  %256 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 20
  %257 = load i8, ptr %256, align 1, !tbaa !24, !range !38, !noundef !39
  %258 = trunc i8 %257 to i1
  br i1 %258, label %259, label %452

259:                                              ; preds = %255
  %260 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 9
  %261 = load i32, ptr %260, align 4, !tbaa !51
  %262 = sitofp i32 %261 to double
  %263 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 23
  %264 = load double, ptr %263, align 8, !tbaa !32
  %265 = fcmp oge double %262, %264
  br i1 %265, label %266, label %448

266:                                              ; preds = %259
  %267 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 9
  store i32 0, ptr %267, align 4, !tbaa !51
  %268 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 2
  %269 = load i8, ptr %268, align 4, !tbaa !25, !range !38, !noundef !39
  %270 = trunc i8 %269 to i1
  br i1 %270, label %271, label %281

271:                                              ; preds = %266
  %272 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 10
  %273 = load double, ptr %272, align 8, !tbaa !52
  %274 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 3
  %275 = load double, ptr %274, align 8, !tbaa !26
  %276 = fadd double %273, %275
  %277 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 22
  %278 = load double, ptr %277, align 8, !tbaa !22
  %279 = call double @fmod(double noundef %276, double noundef %278) #8
  %280 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 10
  store double %279, ptr %280, align 8, !tbaa !52
  br label %343

281:                                              ; preds = %266
  %282 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 3
  %283 = load double, ptr %282, align 8, !tbaa !26
  %284 = fcmp olt double %283, 0.000000e+00
  br i1 %284, label %285, label %307

285:                                              ; preds = %281
  %286 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 10
  %287 = load double, ptr %286, align 8, !tbaa !52
  %288 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 21
  %289 = load double, ptr %288, align 8, !tbaa !23
  %290 = fcmp ogt double %287, %289
  br i1 %290, label %291, label %307

291:                                              ; preds = %285
  %292 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 10
  %293 = load double, ptr %292, align 8, !tbaa !52
  %294 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 3
  %295 = load double, ptr %294, align 8, !tbaa !26
  %296 = fadd double %293, %295
  %297 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 21
  %298 = load double, ptr %297, align 8, !tbaa !23
  %299 = fcmp ole double %296, %298
  br i1 %299, label %300, label %307

300:                                              ; preds = %291
  %301 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 3
  %302 = load double, ptr %301, align 8, !tbaa !26
  %303 = fptosi double %302 to i32
  %304 = call i32 @llvm.abs.i32(i32 %303, i1 true)
  %305 = sitofp i32 %304 to double
  %306 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 3
  store double %305, ptr %306, align 8, !tbaa !26
  br label %335

307:                                              ; preds = %291, %285, %281
  %308 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 3
  %309 = load double, ptr %308, align 8, !tbaa !26
  %310 = fcmp ogt double %309, 0.000000e+00
  br i1 %310, label %311, label %334

311:                                              ; preds = %307
  %312 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 10
  %313 = load double, ptr %312, align 8, !tbaa !52
  %314 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 22
  %315 = load double, ptr %314, align 8, !tbaa !22
  %316 = fcmp olt double %313, %315
  br i1 %316, label %317, label %334

317:                                              ; preds = %311
  %318 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 10
  %319 = load double, ptr %318, align 8, !tbaa !52
  %320 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 3
  %321 = load double, ptr %320, align 8, !tbaa !26
  %322 = fadd double %319, %321
  %323 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 22
  %324 = load double, ptr %323, align 8, !tbaa !22
  %325 = fcmp oge double %322, %324
  br i1 %325, label %326, label %334

326:                                              ; preds = %317
  %327 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 3
  %328 = load double, ptr %327, align 8, !tbaa !26
  %329 = fptosi double %328 to i32
  %330 = call i32 @llvm.abs.i32(i32 %329, i1 true)
  %331 = sub nsw i32 0, %330
  %332 = sitofp i32 %331 to double
  %333 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 3
  store double %332, ptr %333, align 8, !tbaa !26
  br label %334

334:                                              ; preds = %326, %317, %311, %307
  br label %335

335:                                              ; preds = %334, %300
  %336 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 10
  %337 = load double, ptr %336, align 8, !tbaa !52
  %338 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 3
  %339 = load double, ptr %338, align 8, !tbaa !26
  %340 = fadd double %337, %339
  %341 = call double @fmod(double noundef %340, double noundef 1.000000e+00) #8
  %342 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 10
  store double %341, ptr %342, align 8, !tbaa !52
  br label %343

343:                                              ; preds = %335, %271
  %344 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  call void @_ZNSt6vectorI7Point3dSaIS0_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %344) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  store i32 0, ptr %15, align 4, !tbaa !30
  br label %345

345:                                              ; preds = %387, %343
  %346 = load i32, ptr %15, align 4, !tbaa !30
  %347 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 1
  %348 = load i32, ptr %347, align 8, !tbaa !9
  %349 = icmp slt i32 %346, %348
  br i1 %349, label %351, label %350

350:                                              ; preds = %345
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  br label %390

351:                                              ; preds = %345
  call void @llvm.lifetime.start.p0(i64 3, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  %352 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 10
  %353 = load double, ptr %352, align 8, !tbaa !52
  %354 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 17
  %355 = load double, ptr %354, align 8, !tbaa !27
  %356 = load i32, ptr %15, align 4, !tbaa !30
  %357 = sitofp i32 %356 to double
  %358 = fmul double 0x401921FB54442D18, %357
  %359 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 1
  %360 = load i32, ptr %359, align 8, !tbaa !9
  %361 = sitofp i32 %360 to double
  %362 = fdiv double %358, %361
  %363 = call double @sin(double noundef %362) #8
  %364 = call double @llvm.fmuladd.f64(double %355, double %363, double %353)
  %365 = call double @fmod(double noundef %364, double noundef 1.000000e+00) #8
  %366 = fmul double 3.600000e+02, %365
  %367 = fptosi double %366 to i32
  store i32 %367, ptr %17, align 4, !tbaa !30
  br label %368

368:                                              ; preds = %371, %351
  %369 = load i32, ptr %17, align 4, !tbaa !30
  %370 = icmp slt i32 %369, 0
  br i1 %370, label %371, label %374

371:                                              ; preds = %368
  %372 = load i32, ptr %17, align 4, !tbaa !30
  %373 = add nsw i32 %372, 360
  store i32 %373, ptr %17, align 4, !tbaa !30
  br label %368, !llvm.loop !54

374:                                              ; preds = %368
  %375 = load i32, ptr %17, align 4, !tbaa !30
  %376 = trunc i32 %375 to i16
  %377 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 12
  %378 = getelementptr inbounds %struct.Point3dhsv, ptr %377, i32 0, i32 1
  %379 = load i8, ptr %378, align 2, !tbaa !42
  %380 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 12
  %381 = getelementptr inbounds %struct.Point3dhsv, ptr %380, i32 0, i32 2
  %382 = load i8, ptr %381, align 1, !tbaa !43
  %383 = getelementptr inbounds %struct.Point3d, ptr %16, i32 0, i32 0
  %384 = getelementptr inbounds %struct.Point3d, ptr %16, i32 0, i32 1
  %385 = getelementptr inbounds %struct.Point3d, ptr %16, i32 0, i32 2
  call void @_ZN8ColorRgb7hsv2rgbEthhRhS0_S0_(i16 noundef zeroext %376, i8 noundef zeroext %379, i8 noundef zeroext %382, ptr noundef nonnull align 1 dereferenceable(1) %383, ptr noundef nonnull align 1 dereferenceable(1) %384, ptr noundef nonnull align 1 dereferenceable(1) %385)
  %386 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  call void @_ZNSt6vectorI7Point3dSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %386, ptr noundef nonnull align 1 dereferenceable(3) %16)
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 3, ptr %16) #8
  br label %387

387:                                              ; preds = %374
  %388 = load i32, ptr %15, align 4, !tbaa !30
  %389 = add nsw i32 %388, 1
  store i32 %389, ptr %15, align 4, !tbaa !30
  br label %345, !llvm.loop !55

390:                                              ; preds = %350
  %391 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 6
  %392 = load i32, ptr %391, align 8, !tbaa !47
  %393 = icmp sge i32 %392, 0
  br i1 %393, label %394, label %420

394:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  store i32 0, ptr %18, align 4, !tbaa !30
  br label %395

395:                                              ; preds = %416, %394
  %396 = load i32, ptr %18, align 4, !tbaa !30
  %397 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 6
  %398 = load i32, ptr %397, align 8, !tbaa !47
  %399 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 11
  %400 = load i32, ptr %399, align 8, !tbaa !53
  %401 = mul nsw i32 %398, %400
  %402 = icmp slt i32 %396, %401
  br i1 %402, label %404, label %403

403:                                              ; preds = %395
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  br label %419

404:                                              ; preds = %395
  call void @llvm.lifetime.start.p0(i64 3, ptr %19) #8
  %405 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  %406 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %405) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %19, ptr align 1 %406, i64 3, i1 false), !tbaa.struct !56
  %407 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  call void @_ZNSt6vectorI7Point3dSaIS0_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %407) #8
  %408 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  %409 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  %410 = call ptr @_ZNSt6vectorI7Point3dSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %409) #8
  %411 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %21, i32 0, i32 0
  store ptr %410, ptr %411, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPK7Point3dSt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  %412 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", ptr %20, i32 0, i32 0
  %413 = load ptr, ptr %412, align 8
  %414 = call ptr @_ZNSt6vectorI7Point3dSaIS0_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS0_S2_EERS5_(ptr noundef nonnull align 8 dereferenceable(24) %408, ptr %413, ptr noundef nonnull align 1 dereferenceable(3) %19)
  %415 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %22, i32 0, i32 0
  store ptr %414, ptr %415, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 3, ptr %19) #8
  br label %416

416:                                              ; preds = %404
  %417 = load i32, ptr %18, align 4, !tbaa !30
  %418 = add nsw i32 %417, 1
  store i32 %418, ptr %18, align 4, !tbaa !30
  br label %395, !llvm.loop !58

419:                                              ; preds = %403
  br label %447

420:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  store i32 0, ptr %23, align 4, !tbaa !30
  br label %421

421:                                              ; preds = %443, %420
  %422 = load i32, ptr %23, align 4, !tbaa !30
  %423 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 6
  %424 = load i32, ptr %423, align 8, !tbaa !47
  %425 = sub nsw i32 0, %424
  %426 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 11
  %427 = load i32, ptr %426, align 8, !tbaa !53
  %428 = mul nsw i32 %425, %427
  %429 = icmp slt i32 %422, %428
  br i1 %429, label %431, label %430

430:                                              ; preds = %421
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  br label %446

431:                                              ; preds = %421
  call void @llvm.lifetime.start.p0(i64 3, ptr %24) #8
  %432 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  %433 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %432) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %24, ptr align 1 %433, i64 3, i1 false), !tbaa.struct !56
  %434 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %435 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  %436 = call ptr @_ZNSt6vectorI7Point3dSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %435) #8
  %437 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %26, i32 0, i32 0
  store ptr %436, ptr %437, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPK7Point3dSt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  %438 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", ptr %25, i32 0, i32 0
  %439 = load ptr, ptr %438, align 8
  %440 = call ptr @_ZNSt6vectorI7Point3dSaIS0_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS0_S2_EE(ptr noundef nonnull align 8 dereferenceable(24) %434, ptr %439)
  %441 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %27, i32 0, i32 0
  store ptr %440, ptr %441, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  %442 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  call void @_ZNSt6vectorI7Point3dSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %442, ptr noundef nonnull align 1 dereferenceable(3) %24)
  call void @llvm.lifetime.end.p0(i64 3, ptr %24) #8
  br label %443

443:                                              ; preds = %431
  %444 = load i32, ptr %23, align 4, !tbaa !30
  %445 = add nsw i32 %444, 1
  store i32 %445, ptr %23, align 4, !tbaa !30
  br label %421, !llvm.loop !59

446:                                              ; preds = %430
  br label %447

447:                                              ; preds = %446, %419
  br label %448

448:                                              ; preds = %447, %259
  %449 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 9
  %450 = load i32, ptr %449, align 4, !tbaa !51
  %451 = add nsw i32 %450, 1
  store i32 %451, ptr %449, align 4, !tbaa !51
  br label %452

452:                                              ; preds = %448, %255
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  store i32 0, ptr %28, align 4, !tbaa !30
  br label %453

453:                                              ; preds = %529, %452
  %454 = load i32, ptr %28, align 4, !tbaa !30
  %455 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 1
  %456 = load i32, ptr %455, align 8, !tbaa !9
  %457 = icmp slt i32 %454, %456
  br i1 %457, label %459, label %458

458:                                              ; preds = %453
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  br label %532

459:                                              ; preds = %453
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  store double 0.000000e+00, ptr %30, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %460 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 7
  %461 = load double, ptr %460, align 8, !tbaa !49
  %462 = fneg double %461
  %463 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 18
  %464 = load i32, ptr %463, align 8, !tbaa !31
  %465 = sitofp i32 %464 to double
  %466 = fmul double 0x401921FB54442D18, %465
  %467 = load i32, ptr %28, align 4, !tbaa !30
  %468 = sitofp i32 %467 to double
  %469 = fmul double %466, %468
  %470 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 1
  %471 = load i32, ptr %470, align 8, !tbaa !9
  %472 = sitofp i32 %471 to double
  %473 = fdiv double %469, %472
  %474 = fadd double %462, %473
  %475 = call double @sin(double noundef %474) #8
  store double %475, ptr %31, align 8, !tbaa !28
  %476 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31)
  %477 = load double, ptr %476, align 8, !tbaa !28
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  store double %477, ptr %29, align 8, !tbaa !28
  %478 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  %479 = load i32, ptr %28, align 4, !tbaa !30
  %480 = sext i32 %479 to i64
  %481 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %478, i64 noundef %480) #8
  %482 = getelementptr inbounds %struct.Point3d, ptr %481, i32 0, i32 0
  %483 = load i8, ptr %482, align 1, !tbaa !60
  %484 = zext i8 %483 to i32
  %485 = sitofp i32 %484 to double
  %486 = load double, ptr %29, align 8, !tbaa !28
  %487 = fmul double %485, %486
  %488 = fptosi double %487 to i32
  %489 = trunc i32 %488 to i8
  %490 = load ptr, ptr %4, align 8, !tbaa !5
  %491 = load i32, ptr %28, align 4, !tbaa !30
  %492 = sext i32 %491 to i64
  %493 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI8ColorRgbSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %490, i64 noundef %492) #8
  %494 = getelementptr inbounds %struct.ColorRgb, ptr %493, i32 0, i32 0
  store i8 %489, ptr %494, align 1, !tbaa !61
  %495 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  %496 = load i32, ptr %28, align 4, !tbaa !30
  %497 = sext i32 %496 to i64
  %498 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %495, i64 noundef %497) #8
  %499 = getelementptr inbounds %struct.Point3d, ptr %498, i32 0, i32 1
  %500 = load i8, ptr %499, align 1, !tbaa !63
  %501 = zext i8 %500 to i32
  %502 = sitofp i32 %501 to double
  %503 = load double, ptr %29, align 8, !tbaa !28
  %504 = fmul double %502, %503
  %505 = fptosi double %504 to i32
  %506 = trunc i32 %505 to i8
  %507 = load ptr, ptr %4, align 8, !tbaa !5
  %508 = load i32, ptr %28, align 4, !tbaa !30
  %509 = sext i32 %508 to i64
  %510 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI8ColorRgbSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %507, i64 noundef %509) #8
  %511 = getelementptr inbounds %struct.ColorRgb, ptr %510, i32 0, i32 1
  store i8 %506, ptr %511, align 1, !tbaa !64
  %512 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  %513 = load i32, ptr %28, align 4, !tbaa !30
  %514 = sext i32 %513 to i64
  %515 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %512, i64 noundef %514) #8
  %516 = getelementptr inbounds %struct.Point3d, ptr %515, i32 0, i32 2
  %517 = load i8, ptr %516, align 1, !tbaa !65
  %518 = zext i8 %517 to i32
  %519 = sitofp i32 %518 to double
  %520 = load double, ptr %29, align 8, !tbaa !28
  %521 = fmul double %519, %520
  %522 = fptosi double %521 to i32
  %523 = trunc i32 %522 to i8
  %524 = load ptr, ptr %4, align 8, !tbaa !5
  %525 = load i32, ptr %28, align 4, !tbaa !30
  %526 = sext i32 %525 to i64
  %527 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI8ColorRgbSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %524, i64 noundef %526) #8
  %528 = getelementptr inbounds %struct.ColorRgb, ptr %527, i32 0, i32 2
  store i8 %523, ptr %528, align 1, !tbaa !66
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %529

529:                                              ; preds = %459
  %530 = load i32, ptr %28, align 4, !tbaa !30
  %531 = add nsw i32 %530, 1
  store i32 %531, ptr %28, align 4, !tbaa !30
  br label %453, !llvm.loop !67

532:                                              ; preds = %458
  %533 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 7
  %534 = load double, ptr %533, align 8, !tbaa !49
  %535 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 5
  %536 = load double, ptr %535, align 8, !tbaa !46
  %537 = fadd double %534, %536
  %538 = call double @fmod(double noundef %537, double noundef 0x401921FB54442D18) #8
  %539 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 7
  store double %538, ptr %539, align 8, !tbaa !49
  %540 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 8
  %541 = load i8, ptr %540, align 8, !tbaa !50, !range !38, !noundef !39
  %542 = trunc i8 %541 to i1
  br i1 %542, label %543, label %602

543:                                              ; preds = %532
  %544 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 6
  %545 = load i32, ptr %544, align 8, !tbaa !47
  %546 = icmp sge i32 %545, 0
  br i1 %546, label %547, label %570

547:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #8
  store i32 0, ptr %32, align 4, !tbaa !30
  br label %548

548:                                              ; preds = %566, %547
  %549 = load i32, ptr %32, align 4, !tbaa !30
  %550 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 6
  %551 = load i32, ptr %550, align 8, !tbaa !47
  %552 = icmp slt i32 %549, %551
  br i1 %552, label %554, label %553

553:                                              ; preds = %548
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  br label %569

554:                                              ; preds = %548
  call void @llvm.lifetime.start.p0(i64 3, ptr %33) #8
  %555 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  %556 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %555) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %33, ptr align 1 %556, i64 3, i1 false), !tbaa.struct !56
  %557 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  call void @_ZNSt6vectorI7Point3dSaIS0_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %557) #8
  %558 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %559 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  %560 = call ptr @_ZNSt6vectorI7Point3dSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %559) #8
  %561 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %35, i32 0, i32 0
  store ptr %560, ptr %561, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPK7Point3dSt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %562 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", ptr %34, i32 0, i32 0
  %563 = load ptr, ptr %562, align 8
  %564 = call ptr @_ZNSt6vectorI7Point3dSaIS0_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS0_S2_EERS5_(ptr noundef nonnull align 8 dereferenceable(24) %558, ptr %563, ptr noundef nonnull align 1 dereferenceable(3) %33)
  %565 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %36, i32 0, i32 0
  store ptr %564, ptr %565, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 3, ptr %33) #8
  br label %566

566:                                              ; preds = %554
  %567 = load i32, ptr %32, align 4, !tbaa !30
  %568 = add nsw i32 %567, 1
  store i32 %568, ptr %32, align 4, !tbaa !30
  br label %548, !llvm.loop !68

569:                                              ; preds = %553
  br label %594

570:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #8
  store i32 0, ptr %37, align 4, !tbaa !30
  br label %571

571:                                              ; preds = %590, %570
  %572 = load i32, ptr %37, align 4, !tbaa !30
  %573 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 6
  %574 = load i32, ptr %573, align 8, !tbaa !47
  %575 = sub nsw i32 0, %574
  %576 = icmp slt i32 %572, %575
  br i1 %576, label %578, label %577

577:                                              ; preds = %571
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  br label %593

578:                                              ; preds = %571
  call void @llvm.lifetime.start.p0(i64 3, ptr %38) #8
  %579 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  %580 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %579) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %38, ptr align 1 %580, i64 3, i1 false), !tbaa.struct !56
  %581 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %582 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  %583 = call ptr @_ZNSt6vectorI7Point3dSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %582) #8
  %584 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %40, i32 0, i32 0
  store ptr %583, ptr %584, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPK7Point3dSt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  %585 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", ptr %39, i32 0, i32 0
  %586 = load ptr, ptr %585, align 8
  %587 = call ptr @_ZNSt6vectorI7Point3dSaIS0_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS0_S2_EE(ptr noundef nonnull align 8 dereferenceable(24) %581, ptr %586)
  %588 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %41, i32 0, i32 0
  store ptr %587, ptr %588, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  %589 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 13
  call void @_ZNSt6vectorI7Point3dSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %589, ptr noundef nonnull align 1 dereferenceable(3) %38)
  call void @llvm.lifetime.end.p0(i64 3, ptr %38) #8
  br label %590

590:                                              ; preds = %578
  %591 = load i32, ptr %37, align 4, !tbaa !30
  %592 = add nsw i32 %591, 1
  store i32 %592, ptr %37, align 4, !tbaa !30
  br label %571, !llvm.loop !69

593:                                              ; preds = %577
  br label %594

594:                                              ; preds = %593, %569
  %595 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 11
  %596 = load i32, ptr %595, align 8, !tbaa !53
  %597 = add nsw i32 %596, 1
  %598 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 1
  %599 = load i32, ptr %598, align 8, !tbaa !9
  %600 = srem i32 %597, %599
  %601 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 11
  store i32 %600, ptr %601, align 8, !tbaa !53
  br label %602

602:                                              ; preds = %594, %532
  %603 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 8
  %604 = load i8, ptr %603, align 8, !tbaa !50, !range !38, !noundef !39
  %605 = trunc i8 %604 to i1
  %606 = xor i1 %605, true
  %607 = getelementptr inbounds %class.Animation_MoodBlobs, ptr %42, i32 0, i32 8
  %608 = zext i1 %606 to i8
  store i8 %608, ptr %607, align 8, !tbaa !50
  br label %609

609:                                              ; preds = %602, %248
  ret i1 true
}

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

; Function Attrs: nounwind
declare double @fmod(double noundef, double noundef) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fabs.f64(double) #6

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

declare void @_ZN8ColorRgb7rgb2hsvEhhhRtRhS1_(i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, ptr noundef nonnull align 2 dereferenceable(2), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #7

; Function Attrs: nounwind
declare i32 @rand() #4

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

; Function Attrs: nounwind
declare double @sin(double noundef) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #6

declare void @_ZN8ColorRgb7hsv2rgbEthhRhS0_S0_(i16 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #7

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.round.f64(double) #6

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #6

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt6vectorI7Point3dSaIS0_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS0_S2_EE(ptr noundef nonnull align 8 dereferenceable(24), ptr) #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) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI8ColorRgbSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #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 = { 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 #5 = { 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 #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 = !{!"_ZTS19Animation_MoodBlobs", !11, i64 0, !12, i64 16, !13, i64 20, !14, i64 24, !14, i64 32, !14, i64 40, !12, i64 48, !14, i64 56, !13, i64 64, !12, i64 68, !14, i64 72, !12, i64 80, !15, i64 84, !17, i64 88, !14, i64 112, !21, i64 120, !13, i64 123, !14, i64 128, !12, i64 136, !13, i64 140, !13, i64 141, !14, i64 144, !14, i64 152, !14, i64 160}
!11 = !{!"_ZTS13AnimationBase", !12, i64 8, !13, i64 12}
!12 = !{!"int", !7, i64 0}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!"_ZTS10Point3dhsv", !16, i64 0, !7, i64 2, !7, i64 3}
!16 = !{!"short", !7, i64 0}
!17 = !{!"_ZTSSt6vectorI7Point3dSaIS0_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseI7Point3dSaIS0_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseI7Point3dSaIS0_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseI7Point3dSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTS7Point3d", !7, i64 0, !7, i64 1, !7, i64 2}
!22 = !{!10, !14, i64 152}
!23 = !{!10, !14, i64 144}
!24 = !{!10, !13, i64 141}
!25 = !{!10, !13, i64 20}
!26 = !{!10, !14, i64 24}
!27 = !{!10, !14, i64 128}
!28 = !{!14, !14, i64 0}
!29 = !{!10, !14, i64 112}
!30 = !{!12, !12, i64 0}
!31 = !{!10, !12, i64 136}
!32 = !{!10, !14, i64 160}
!33 = !{!10, !7, i64 120}
!34 = !{!10, !7, i64 121}
!35 = !{!10, !7, i64 122}
!36 = !{!10, !16, i64 84}
!37 = !{!10, !13, i64 123}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = distinct !{!40, !41}
!41 = !{!"llvm.loop.mustprogress"}
!42 = !{!10, !7, i64 86}
!43 = !{!10, !7, i64 87}
!44 = distinct !{!44, !41}
!45 = !{!10, !14, i64 32}
!46 = !{!10, !14, i64 40}
!47 = !{!10, !12, i64 48}
!48 = !{!10, !13, i64 140}
!49 = !{!10, !14, i64 56}
!50 = !{!10, !13, i64 64}
!51 = !{!10, !12, i64 68}
!52 = !{!10, !14, i64 72}
!53 = !{!10, !12, i64 80}
!54 = distinct !{!54, !41}
!55 = distinct !{!55, !41}
!56 = !{i64 0, i64 1, !57, i64 1, i64 1, !57, i64 2, i64 1, !57}
!57 = !{!7, !7, i64 0}
!58 = distinct !{!58, !41}
!59 = distinct !{!59, !41}
!60 = !{!21, !7, i64 0}
!61 = !{!62, !7, i64 0}
!62 = !{!"_ZTS8ColorRgb", !7, i64 0, !7, i64 1, !7, i64 2}
!63 = !{!21, !7, i64 1}
!64 = !{!62, !7, i64 1}
!65 = !{!21, !7, i64 2}
!66 = !{!62, !7, i64 2}
!67 = distinct !{!67, !41}
!68 = distinct !{!68, !41}
!69 = distinct !{!69, !41}


; 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.Point3d = type { i8, i8, i8 }
%"class.__gnu_cxx::__normal_iterator.5" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }

; 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 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: 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 @_ZN19Animation_MoodBlobs10hasLedDataERSt6vectorI8ColorRgbSaIS1_EE(ptr noundef nonnull align 8 dereferenceable(168) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) unnamed_addr #2 align 2 {
  %3 = alloca double, align 8
  %4 = alloca double, align 8
  %5 = alloca double, align 8
  %6 = alloca double, align 8
  %7 = alloca i32, align 4
  %8 = alloca double, align 8
  %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.5", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %14 = alloca %struct.Point3d, align 1
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca %struct.Point3d, align 1
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %22 = alloca %struct.Point3d, align 1
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %25 = tail call noundef i64 @_ZNKSt6vectorI8ColorRgbSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #10
  %26 = trunc i64 %25 to i32
  %27 = getelementptr inbounds i8, ptr %0, i64 16
  %28 = load i32, ptr %27, align 8, !tbaa !5
  %.not = icmp eq i32 %28, %26
  br i1 %.not, label %152, label %29

29:                                               ; preds = %2
  %30 = tail call noundef i64 @_ZNKSt6vectorI8ColorRgbSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #10
  %31 = icmp ugt i64 %30, 1
  br i1 %31, label %32, label %152

32:                                               ; preds = %29
  %33 = tail call noundef i64 @_ZNKSt6vectorI8ColorRgbSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #10
  %34 = trunc i64 %33 to i32
  store i32 %34, ptr %27, align 8, !tbaa !5
  %35 = getelementptr inbounds i8, ptr %0, i64 152
  %36 = load double, ptr %35, align 8, !tbaa !21
  %37 = getelementptr inbounds i8, ptr %0, i64 144
  %38 = load double, ptr %37, align 8, !tbaa !22
  %39 = fcmp ogt double %36, %38
  %40 = fsub double %36, %38
  %41 = fcmp olt double %40, 1.000000e+01
  %or.cond = and i1 %39, %41
  br i1 %or.cond, label %48, label %42

42:                                               ; preds = %32
  %43 = fcmp ogt double %38, %36
  br i1 %43, label %44, label %50

44:                                               ; preds = %42
  %45 = fadd double %36, 3.600000e+02
  %46 = fsub double %45, %38
  %47 = fcmp olt double %46, 1.000000e+01
  br i1 %47, label %48, label %50

48:                                               ; preds = %32, %44
  %49 = getelementptr inbounds i8, ptr %0, i64 141
  store i8 0, ptr %49, align 1, !tbaa !23
  br label %50

50:                                               ; preds = %48, %44, %42
  %51 = tail call double @fmod(double noundef %36, double noundef 3.600000e+02) #10
  %52 = load double, ptr %37, align 8, !tbaa !22
  %53 = tail call double @fmod(double noundef %52, double noundef 3.600000e+02) #10
  %54 = fcmp oeq double %51, %53
  %55 = getelementptr inbounds i8, ptr %0, i64 20
  %56 = zext i1 %54 to i8
  store i8 %56, ptr %55, align 4, !tbaa !24
  %57 = getelementptr inbounds i8, ptr %0, i64 24
  store double 0x3F66C16C16C16C17, ptr %57, align 8, !tbaa !25
  %58 = getelementptr inbounds i8, ptr %0, i64 128
  %59 = load double, ptr %58, align 8, !tbaa !26
  %60 = fdiv double %59, 3.600000e+02
  store double %60, ptr %58, align 8, !tbaa !26
  %61 = load <2 x double>, ptr %37, align 8, !tbaa !27
  %62 = fdiv <2 x double> %61, <double 3.600000e+02, double 3.600000e+02>
  store <2 x double> %62, ptr %37, align 8, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #10
  store double 1.000000e-01, ptr %3, align 8, !tbaa !27
  %63 = getelementptr inbounds i8, ptr %0, i64 112
  %64 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %63)
  %65 = load double, ptr %64, align 8, !tbaa !27
  store double %65, ptr %63, align 8, !tbaa !28
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #10
  store double 0.000000e+00, ptr %4, align 8, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #10
  %66 = load double, ptr %58, align 8, !tbaa !26
  %67 = call double @llvm.fabs.f64(double %66)
  store double %67, ptr %5, align 8, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #10
  store double 5.000000e-01, ptr %6, align 8, !tbaa !27
  %68 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6)
  %69 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %68)
  %70 = load double, ptr %69, align 8, !tbaa !27
  store double %70, ptr %58, align 8, !tbaa !26
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #10
  store i32 1, ptr %7, align 4, !tbaa !29
  %71 = getelementptr inbounds i8, ptr %0, i64 136
  %72 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %71)
  %73 = load i32, ptr %72, align 4, !tbaa !29
  store i32 %73, ptr %71, align 8, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #10
  store double 0.000000e+00, ptr %8, align 8, !tbaa !27
  %74 = getelementptr inbounds i8, ptr %0, i64 160
  %75 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %74)
  %76 = load double, ptr %75, align 8, !tbaa !27
  store double %76, ptr %74, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #10
  %77 = getelementptr inbounds i8, ptr %0, i64 120
  %78 = load i8, ptr %77, align 8, !tbaa !32
  %79 = getelementptr inbounds i8, ptr %0, i64 121
  %80 = load i8, ptr %79, align 1, !tbaa !33
  %81 = getelementptr inbounds i8, ptr %0, i64 122
  %82 = load i8, ptr %81, align 2, !tbaa !34
  %83 = getelementptr inbounds i8, ptr %0, i64 84
  %84 = getelementptr inbounds i8, ptr %0, i64 86
  %85 = getelementptr inbounds i8, ptr %0, i64 87
  call void @_ZN8ColorRgb7rgb2hsvEhhhRtRhS1_(i8 noundef zeroext %78, i8 noundef zeroext %80, i8 noundef zeroext %82, ptr noundef nonnull align 2 dereferenceable(2) %83, ptr noundef nonnull align 1 dereferenceable(1) %84, ptr noundef nonnull align 1 dereferenceable(1) %85)
  %86 = load i16, ptr %83, align 4, !tbaa !35
  %87 = uitofp i16 %86 to double
  %88 = fdiv double %87, 3.600000e+02
  %89 = getelementptr inbounds i8, ptr %0, i64 123
  %90 = load i8, ptr %89, align 1, !tbaa !36, !range !37, !noundef !38
  %91 = trunc nuw i8 %90 to i1
  br i1 %91, label %92, label %100

92:                                               ; preds = %50
  %93 = call i32 @rand() #10
  %94 = sitofp i32 %93 to float
  %95 = fpext float %94 to double
  %96 = fmul double %95, 3.600000e+02
  %97 = fmul double %96, 0x3E00000000000000
  %98 = fptosi double %97 to i32
  %99 = sitofp i32 %98 to double
  br label %100

100:                                              ; preds = %92, %50
  %.0 = phi double [ %99, %92 ], [ %88, %50 ]
  %101 = getelementptr inbounds i8, ptr %0, i64 88
  call void @_ZNSt6vectorI7Point3dSaIS0_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %101) #10
  %102 = load i32, ptr %27, align 8, !tbaa !5
  %103 = icmp sgt i32 %102, 0
  br i1 %103, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %100
  %104 = getelementptr inbounds i8, ptr %9, i64 1
  %105 = getelementptr inbounds i8, ptr %9, i64 2
  br label %120

._crit_edge:                                      ; preds = %120, %100
  %106 = getelementptr inbounds i8, ptr %0, i64 32
  store double 1.000000e-01, ptr %106, align 8, !tbaa !39
  %107 = load i32, ptr %71, align 8, !tbaa !30
  %108 = sitofp i32 %107 to double
  %109 = fmul double %108, 0x400921FB54442D18
  %110 = fmul double %109, 1.000000e-01
  %111 = load double, ptr %63, align 8, !tbaa !28
  %112 = fdiv double %110, %111
  %113 = getelementptr inbounds i8, ptr %0, i64 40
  store double %112, ptr %113, align 8, !tbaa !40
  %114 = getelementptr inbounds i8, ptr %0, i64 48
  store i32 1, ptr %114, align 8, !tbaa !41
  %115 = load double, ptr %74, align 8, !tbaa !31
  %116 = fdiv double %115, 1.000000e-01
  store double %116, ptr %74, align 8, !tbaa !31
  %117 = getelementptr inbounds i8, ptr %0, i64 140
  %118 = load i8, ptr %117, align 4, !tbaa !42, !range !37, !noundef !38
  %119 = trunc nuw i8 %118 to i1
  br i1 %119, label %144, label %146

120:                                              ; preds = %.lr.ph, %120
  %121 = phi i32 [ %102, %.lr.ph ], [ %142, %120 ]
  %.04574 = phi i32 [ 0, %.lr.ph ], [ %141, %120 ]
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %9) #10
  %122 = load double, ptr %58, align 8, !tbaa !26
  %123 = uitofp nneg i32 %.04574 to double
  %124 = fmul double %123, 0x401921FB54442D18
  %125 = sitofp i32 %121 to double
  %126 = fdiv double %124, %125
  %127 = call double @sin(double noundef %126) #10
  %128 = call double @llvm.fmuladd.f64(double %122, double %127, double %.0)
  %129 = call double @fmod(double noundef %128, double noundef 1.000000e+00) #10
  %130 = fmul double %129, 3.600000e+02
  %131 = fptosi double %130 to i32
  %smax = call i32 @llvm.smax.i32(i32 %131, i32 0)
  %.lobit = lshr i32 %131, 31
  %132 = add i32 %.lobit, %131
  %133 = sub i32 %smax, %132
  %134 = udiv i32 %133, 360
  %135 = add nuw nsw i32 %.lobit, %134
  %136 = mul i32 %135, 360
  %137 = add i32 %136, %131
  %138 = trunc i32 %137 to i16
  %139 = load i8, ptr %84, align 2, !tbaa !43
  %140 = load i8, ptr %85, align 1, !tbaa !44
  call void @_ZN8ColorRgb7hsv2rgbEthhRhS0_S0_(i16 noundef zeroext %138, i8 noundef zeroext %139, i8 noundef zeroext %140, ptr noundef nonnull align 1 dereferenceable(1) %9, ptr noundef nonnull align 1 dereferenceable(1) %104, ptr noundef nonnull align 1 dereferenceable(1) %105)
  call void @_ZNSt6vectorI7Point3dSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %101, ptr noundef nonnull align 1 dereferenceable(3) %9)
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %9) #10
  %141 = add nuw nsw i32 %.04574, 1
  %142 = load i32, ptr %27, align 8, !tbaa !5
  %143 = icmp slt i32 %141, %142
  br i1 %143, label %120, label %._crit_edge, !llvm.loop !45

144:                                              ; preds = %._crit_edge
  %145 = fneg double %112
  store double %145, ptr %113, align 8, !tbaa !40
  store i32 -1, ptr %114, align 8, !tbaa !41
  br label %146

146:                                              ; preds = %144, %._crit_edge
  %147 = getelementptr inbounds i8, ptr %0, i64 56
  store double 0.000000e+00, ptr %147, align 8, !tbaa !47
  %148 = getelementptr inbounds i8, ptr %0, i64 64
  store i8 0, ptr %148, align 8, !tbaa !48
  %149 = getelementptr inbounds i8, ptr %0, i64 68
  store i32 0, ptr %149, align 4, !tbaa !49
  %150 = getelementptr inbounds i8, ptr %0, i64 72
  store double %.0, ptr %150, align 8, !tbaa !50
  %151 = getelementptr inbounds i8, ptr %0, i64 80
  store i32 0, ptr %151, align 8, !tbaa !51
  call void @_ZN13AnimationBase12SetSleepTimeEi(ptr noundef nonnull align 8 dereferenceable(13) %0, i32 noundef 100)
  br label %152

152:                                              ; preds = %146, %29, %2
  %153 = call noundef i64 @_ZNKSt6vectorI8ColorRgbSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #10
  %154 = trunc i64 %153 to i32
  %155 = load i32, ptr %27, align 8, !tbaa !5
  %156 = icmp eq i32 %155, %154
  br i1 %156, label %157, label %371

157:                                              ; preds = %152
  %158 = getelementptr inbounds i8, ptr %0, i64 141
  %159 = load i8, ptr %158, align 1, !tbaa !23, !range !37, !noundef !38
  %160 = trunc nuw i8 %159 to i1
  br i1 %160, label %161, label %282

161:                                              ; preds = %157
  %162 = getelementptr inbounds i8, ptr %0, i64 68
  %163 = load i32, ptr %162, align 4, !tbaa !49
  %164 = sitofp i32 %163 to double
  %165 = getelementptr inbounds i8, ptr %0, i64 160
  %166 = load double, ptr %165, align 8, !tbaa !31
  %167 = fcmp ugt double %166, %164
  br i1 %167, label %.loopexit71, label %168

168:                                              ; preds = %161
  store i32 0, ptr %162, align 4, !tbaa !49
  %169 = getelementptr inbounds i8, ptr %0, i64 20
  %170 = load i8, ptr %169, align 4, !tbaa !24, !range !37, !noundef !38
  %171 = trunc nuw i8 %170 to i1
  br i1 %171, label %172, label %181

172:                                              ; preds = %168
  %173 = getelementptr inbounds i8, ptr %0, i64 72
  %174 = load double, ptr %173, align 8, !tbaa !50
  %175 = getelementptr inbounds i8, ptr %0, i64 24
  %176 = load double, ptr %175, align 8, !tbaa !25
  %177 = fadd double %174, %176
  %178 = getelementptr inbounds i8, ptr %0, i64 152
  %179 = load double, ptr %178, align 8, !tbaa !21
  %180 = call double @fmod(double noundef %177, double noundef %179) #10
  store double %180, ptr %173, align 8, !tbaa !50
  br label %217

181:                                              ; preds = %168
  %182 = getelementptr inbounds i8, ptr %0, i64 24
  %183 = load double, ptr %182, align 8, !tbaa !25
  %184 = fcmp olt double %183, 0.000000e+00
  br i1 %184, label %185, label %197

185:                                              ; preds = %181
  %186 = getelementptr inbounds i8, ptr %0, i64 72
  %187 = load double, ptr %186, align 8, !tbaa !50
  %188 = getelementptr inbounds i8, ptr %0, i64 144
  %189 = load double, ptr %188, align 8, !tbaa !22
  %190 = fcmp ule double %187, %189
  %191 = fadd double %183, %187
  %192 = fcmp ugt double %191, %189
  %or.cond65 = or i1 %190, %192
  br i1 %or.cond65, label %197, label %193

193:                                              ; preds = %185
  %194 = fptosi double %183 to i32
  %195 = call i32 @llvm.abs.i32(i32 %194, i1 true)
  %196 = uitofp nneg i32 %195 to double
  br label %._crit_edge96.sink.split

197:                                              ; preds = %185, %181
  %198 = fcmp ogt double %183, 0.000000e+00
  %199 = getelementptr inbounds i8, ptr %0, i64 72
  %200 = load double, ptr %199, align 8, !tbaa !50
  br i1 %198, label %201, label %._crit_edge96

201:                                              ; preds = %197
  %202 = getelementptr inbounds i8, ptr %0, i64 152
  %203 = load double, ptr %202, align 8, !tbaa !21
  %204 = fcmp uge double %200, %203
  %205 = fadd double %183, %200
  %206 = fcmp ult double %205, %203
  %or.cond67 = or i1 %204, %206
  br i1 %or.cond67, label %._crit_edge96, label %207

207:                                              ; preds = %201
  %208 = fptosi double %183 to i32
  %209 = call i32 @llvm.abs.i32(i32 %208, i1 true)
  %210 = sub nsw i32 0, %209
  %211 = sitofp i32 %210 to double
  br label %._crit_edge96.sink.split

._crit_edge96.sink.split:                         ; preds = %193, %207
  %.sink = phi double [ %211, %207 ], [ %196, %193 ]
  %.ph103 = phi double [ %200, %207 ], [ %187, %193 ]
  store double %.sink, ptr %182, align 8, !tbaa !25
  br label %._crit_edge96

._crit_edge96:                                    ; preds = %._crit_edge96.sink.split, %197, %201
  %212 = phi double [ %183, %201 ], [ %183, %197 ], [ %.sink, %._crit_edge96.sink.split ]
  %213 = phi double [ %200, %201 ], [ %200, %197 ], [ %.ph103, %._crit_edge96.sink.split ]
  %214 = getelementptr inbounds i8, ptr %0, i64 72
  %215 = fadd double %213, %212
  %216 = call double @fmod(double noundef %215, double noundef 1.000000e+00) #10
  store double %216, ptr %214, align 8, !tbaa !50
  br label %217

217:                                              ; preds = %._crit_edge96, %172
  %218 = getelementptr inbounds i8, ptr %0, i64 88
  call void @_ZNSt6vectorI7Point3dSaIS0_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %218) #10
  %219 = load i32, ptr %27, align 8, !tbaa !5
  %220 = icmp sgt i32 %219, 0
  br i1 %220, label %.lr.ph77, label %._crit_edge78

.lr.ph77:                                         ; preds = %217
  %221 = getelementptr inbounds i8, ptr %0, i64 72
  %222 = getelementptr inbounds i8, ptr %0, i64 128
  %223 = getelementptr inbounds i8, ptr %0, i64 86
  %224 = getelementptr inbounds i8, ptr %0, i64 87
  %225 = getelementptr inbounds i8, ptr %10, i64 1
  %226 = getelementptr inbounds i8, ptr %10, i64 2
  br label %236

._crit_edge78:                                    ; preds = %236, %217
  %227 = getelementptr inbounds i8, ptr %0, i64 48
  %228 = load i32, ptr %227, align 8, !tbaa !41
  %229 = icmp sgt i32 %228, -1
  %230 = getelementptr inbounds i8, ptr %0, i64 80
  %231 = load i32, ptr %230, align 8, !tbaa !51
  br i1 %229, label %.preheader70, label %.preheader72

.preheader72:                                     ; preds = %._crit_edge78
  %232 = mul i32 %228, %231
  %233 = icmp ugt i32 %232, -2147483648
  br i1 %233, label %.lr.ph80, label %.loopexit71

.preheader70:                                     ; preds = %._crit_edge78
  %234 = mul nsw i32 %231, %228
  %235 = icmp sgt i32 %234, 0
  br i1 %235, label %.lr.ph82, label %.loopexit71

236:                                              ; preds = %.lr.ph77, %236
  %237 = phi i32 [ %219, %.lr.ph77 ], [ %259, %236 ]
  %.04975 = phi i32 [ 0, %.lr.ph77 ], [ %258, %236 ]
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %10) #10
  %238 = load double, ptr %221, align 8, !tbaa !50
  %239 = load double, ptr %222, align 8, !tbaa !26
  %240 = uitofp nneg i32 %.04975 to double
  %241 = fmul double %240, 0x401921FB54442D18
  %242 = sitofp i32 %237 to double
  %243 = fdiv double %241, %242
  %244 = call double @sin(double noundef %243) #10
  %245 = call double @llvm.fmuladd.f64(double %239, double %244, double %238)
  %246 = call double @fmod(double noundef %245, double noundef 1.000000e+00) #10
  %247 = fmul double %246, 3.600000e+02
  %248 = fptosi double %247 to i32
  %smax93 = call i32 @llvm.smax.i32(i32 %248, i32 0)
  %.lobit99 = lshr i32 %248, 31
  %249 = add i32 %.lobit99, %248
  %250 = sub i32 %smax93, %249
  %251 = udiv i32 %250, 360
  %252 = add nuw nsw i32 %.lobit99, %251
  %253 = mul i32 %252, 360
  %254 = add i32 %253, %248
  %255 = trunc i32 %254 to i16
  %256 = load i8, ptr %223, align 2, !tbaa !43
  %257 = load i8, ptr %224, align 1, !tbaa !44
  call void @_ZN8ColorRgb7hsv2rgbEthhRhS0_S0_(i16 noundef zeroext %255, i8 noundef zeroext %256, i8 noundef zeroext %257, ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull align 1 dereferenceable(1) %225, ptr noundef nonnull align 1 dereferenceable(1) %226)
  call void @_ZNSt6vectorI7Point3dSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %218, ptr noundef nonnull align 1 dereferenceable(3) %10)
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %10) #10
  %258 = add nuw nsw i32 %.04975, 1
  %259 = load i32, ptr %27, align 8, !tbaa !5
  %260 = icmp slt i32 %258, %259
  br i1 %260, label %236, label %._crit_edge78, !llvm.loop !52

.lr.ph82:                                         ; preds = %.preheader70, %.lr.ph82
  %.05281 = phi i32 [ %265, %.lr.ph82 ], [ 0, %.preheader70 ]
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %11) #10
  %261 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %218) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %11, ptr noundef nonnull align 1 dereferenceable(3) %261, i64 3, i1 false), !tbaa.struct !53
  call void @_ZNSt6vectorI7Point3dSaIS0_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %218) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #10
  %262 = call ptr @_ZNSt6vectorI7Point3dSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %218) #10
  store ptr %262, ptr %13, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPK7Point3dSt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #10
  %263 = load ptr, ptr %12, align 8
  %264 = call ptr @_ZNSt6vectorI7Point3dSaIS0_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS0_S2_EERS5_(ptr noundef nonnull align 8 dereferenceable(24) %218, ptr %263, ptr noundef nonnull align 1 dereferenceable(3) %11)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %11) #10
  %265 = add nuw nsw i32 %.05281, 1
  %266 = load i32, ptr %227, align 8, !tbaa !41
  %267 = load i32, ptr %230, align 8, !tbaa !51
  %268 = mul nsw i32 %267, %266
  %269 = icmp slt i32 %265, %268
  br i1 %269, label %.lr.ph82, label %.loopexit71, !llvm.loop !55

.lr.ph80:                                         ; preds = %.preheader72, %.lr.ph80
  %.05079 = phi i32 [ %274, %.lr.ph80 ], [ 0, %.preheader72 ]
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %14) #10
  %270 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %218) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %14, ptr noundef nonnull align 1 dereferenceable(3) %270, i64 3, i1 false), !tbaa.struct !53
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #10
  %271 = call ptr @_ZNSt6vectorI7Point3dSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %218) #10
  store ptr %271, ptr %16, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPK7Point3dSt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  %272 = load ptr, ptr %15, align 8
  %273 = call ptr @_ZNSt6vectorI7Point3dSaIS0_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS0_S2_EE(ptr noundef nonnull align 8 dereferenceable(24) %218, ptr %272)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  call void @_ZNSt6vectorI7Point3dSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %218, ptr noundef nonnull align 1 dereferenceable(3) %14)
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %14) #10
  %274 = add nuw nsw i32 %.05079, 1
  %275 = load i32, ptr %227, align 8, !tbaa !41
  %276 = load i32, ptr %230, align 8, !tbaa !51
  %277 = mul i32 %275, %276
  %278 = sub i32 0, %277
  %279 = icmp slt i32 %274, %278
  br i1 %279, label %.lr.ph80, label %.loopexit71, !llvm.loop !56

.loopexit71:                                      ; preds = %.lr.ph80, %.lr.ph82, %.preheader72, %.preheader70, %161
  %280 = load i32, ptr %162, align 4, !tbaa !49
  %281 = add nsw i32 %280, 1
  store i32 %281, ptr %162, align 4, !tbaa !49
  %.pre97 = load i32, ptr %27, align 8, !tbaa !5
  br label %282

282:                                              ; preds = %.loopexit71, %157
  %283 = phi i32 [ %.pre97, %.loopexit71 ], [ %154, %157 ]
  %284 = icmp sgt i32 %283, 0
  br i1 %284, label %.lr.ph85, label %._crit_edge86

.lr.ph85:                                         ; preds = %282
  %285 = getelementptr inbounds i8, ptr %0, i64 56
  %286 = getelementptr inbounds i8, ptr %0, i64 136
  %287 = getelementptr inbounds i8, ptr %0, i64 88
  br label %297

._crit_edge86:                                    ; preds = %297, %282
  %288 = getelementptr inbounds i8, ptr %0, i64 56
  %289 = load double, ptr %288, align 8, !tbaa !47
  %290 = getelementptr inbounds i8, ptr %0, i64 40
  %291 = load double, ptr %290, align 8, !tbaa !40
  %292 = fadd double %289, %291
  %293 = call double @fmod(double noundef %292, double noundef 0x401921FB54442D18) #10
  store double %293, ptr %288, align 8, !tbaa !47
  %294 = getelementptr inbounds i8, ptr %0, i64 64
  %295 = load i8, ptr %294, align 8, !tbaa !48, !range !37, !noundef !38
  %296 = trunc nuw i8 %295 to i1
  br i1 %296, label %340, label %368

297:                                              ; preds = %.lr.ph85, %297
  %indvars.iv = phi i64 [ 0, %.lr.ph85 ], [ %indvars.iv.next, %297 ]
  %298 = phi i32 [ %283, %.lr.ph85 ], [ %337, %297 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #10
  store double 0.000000e+00, ptr %17, align 8, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #10
  %299 = load double, ptr %285, align 8, !tbaa !47
  %300 = load i32, ptr %286, align 8, !tbaa !30
  %301 = sitofp i32 %300 to double
  %302 = fmul double %301, 0x401921FB54442D18
  %303 = trunc nuw nsw i64 %indvars.iv to i32
  %304 = uitofp nneg i32 %303 to double
  %305 = fmul double %302, %304
  %306 = sitofp i32 %298 to double
  %307 = fdiv double %305, %306
  %308 = fsub double %307, %299
  %309 = call double @sin(double noundef %308) #10
  store double %309, ptr %18, align 8, !tbaa !27
  %310 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18)
  %311 = load double, ptr %310, align 8, !tbaa !27
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  %312 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %287, i64 noundef %indvars.iv) #10
  %313 = load i8, ptr %312, align 1, !tbaa !57
  %314 = uitofp i8 %313 to double
  %315 = fmul double %311, %314
  %316 = fptosi double %315 to i32
  %317 = trunc i32 %316 to i8
  %318 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI8ColorRgbSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #10
  store i8 %317, ptr %318, align 1, !tbaa !58
  %319 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %287, i64 noundef %indvars.iv) #10
  %320 = getelementptr inbounds i8, ptr %319, i64 1
  %321 = load i8, ptr %320, align 1, !tbaa !60
  %322 = uitofp i8 %321 to double
  %323 = fmul double %311, %322
  %324 = fptosi double %323 to i32
  %325 = trunc i32 %324 to i8
  %326 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI8ColorRgbSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #10
  %327 = getelementptr inbounds i8, ptr %326, i64 1
  store i8 %325, ptr %327, align 1, !tbaa !61
  %328 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %287, i64 noundef %indvars.iv) #10
  %329 = getelementptr inbounds i8, ptr %328, i64 2
  %330 = load i8, ptr %329, align 1, !tbaa !62
  %331 = uitofp i8 %330 to double
  %332 = fmul double %311, %331
  %333 = fptosi double %332 to i32
  %334 = trunc i32 %333 to i8
  %335 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI8ColorRgbSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #10
  %336 = getelementptr inbounds i8, ptr %335, i64 2
  store i8 %334, ptr %336, align 1, !tbaa !63
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %337 = load i32, ptr %27, align 8, !tbaa !5
  %338 = sext i32 %337 to i64
  %339 = icmp slt i64 %indvars.iv.next, %338
  br i1 %339, label %297, label %._crit_edge86, !llvm.loop !64

340:                                              ; preds = %._crit_edge86
  %341 = getelementptr inbounds i8, ptr %0, i64 48
  %342 = load i32, ptr %341, align 8, !tbaa !41
  %343 = icmp sgt i32 %342, -1
  br i1 %343, label %.preheader, label %.lr.ph88

.lr.ph88:                                         ; preds = %340
  %344 = getelementptr inbounds i8, ptr %0, i64 88
  br label %354

.preheader:                                       ; preds = %340
  %.not100 = icmp eq i32 %342, 0
  br i1 %.not100, label %.loopexit, label %.lr.ph90

.lr.ph90:                                         ; preds = %.preheader
  %345 = getelementptr inbounds i8, ptr %0, i64 88
  br label %346

346:                                              ; preds = %.lr.ph90, %346
  %.04689 = phi i32 [ 0, %.lr.ph90 ], [ %351, %346 ]
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %19) #10
  %347 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %345) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %19, ptr noundef nonnull align 1 dereferenceable(3) %347, i64 3, i1 false), !tbaa.struct !53
  call void @_ZNSt6vectorI7Point3dSaIS0_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %345) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #10
  %348 = call ptr @_ZNSt6vectorI7Point3dSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %345) #10
  store ptr %348, ptr %21, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPK7Point3dSt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #10
  %349 = load ptr, ptr %20, align 8
  %350 = call ptr @_ZNSt6vectorI7Point3dSaIS0_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS0_S2_EERS5_(ptr noundef nonnull align 8 dereferenceable(24) %345, ptr %349, ptr noundef nonnull align 1 dereferenceable(3) %19)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %19) #10
  %351 = add nuw nsw i32 %.04689, 1
  %352 = load i32, ptr %341, align 8, !tbaa !41
  %353 = icmp slt i32 %351, %352
  br i1 %353, label %346, label %.loopexit, !llvm.loop !65

354:                                              ; preds = %.lr.ph88, %354
  %.04487 = phi i32 [ 0, %.lr.ph88 ], [ %359, %354 ]
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %22) #10
  %355 = call noundef nonnull align 1 dereferenceable(3) ptr @_ZNSt6vectorI7Point3dSaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %344) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %22, ptr noundef nonnull align 1 dereferenceable(3) %355, i64 3, i1 false), !tbaa.struct !53
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #10
  %356 = call ptr @_ZNSt6vectorI7Point3dSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %344) #10
  store ptr %356, ptr %24, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPK7Point3dSt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  %357 = load ptr, ptr %23, align 8
  %358 = call ptr @_ZNSt6vectorI7Point3dSaIS0_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS0_S2_EE(ptr noundef nonnull align 8 dereferenceable(24) %344, ptr %357)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  call void @_ZNSt6vectorI7Point3dSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %344, ptr noundef nonnull align 1 dereferenceable(3) %22)
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %22) #10
  %359 = add nuw nsw i32 %.04487, 1
  %360 = load i32, ptr %341, align 8, !tbaa !41
  %361 = sub nsw i32 0, %360
  %362 = icmp slt i32 %359, %361
  br i1 %362, label %354, label %.loopexit, !llvm.loop !66

.loopexit:                                        ; preds = %354, %346, %.preheader
  %363 = getelementptr inbounds i8, ptr %0, i64 80
  %364 = load i32, ptr %363, align 8, !tbaa !51
  %365 = add nsw i32 %364, 1
  %366 = load i32, ptr %27, align 8, !tbaa !5
  %367 = srem i32 %365, %366
  store i32 %367, ptr %363, align 8, !tbaa !51
  %.pre98 = load i8, ptr %294, align 8, !tbaa !48, !range !37
  br label %368

368:                                              ; preds = %.loopexit, %._crit_edge86
  %369 = phi i8 [ %.pre98, %.loopexit ], [ %295, %._crit_edge86 ]
  %370 = xor i8 %369, 1
  store i8 %370, ptr %294, align 8, !tbaa !48
  br label %371

371:                                              ; preds = %368, %152
  ret i1 true
}

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @fmod(double noundef, double noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fabs.f64(double) #6

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

declare void @_ZN8ColorRgb7rgb2hsvEhhhRtRhS1_(i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, ptr noundef nonnull align 2 dereferenceable(2), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #7

; Function Attrs: nounwind
declare i32 @rand() local_unnamed_addr #8

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sin(double noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #6

declare void @_ZN8ColorRgb7hsv2rgbEthhRhS0_S0_(i16 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #7

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

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #6

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt6vectorI7Point3dSaIS0_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS0_S2_EE(ptr noundef nonnull align 8 dereferenceable(24), ptr) 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 #3 align 2

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #9

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress 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 = { mustprogress nofree nounwind willreturn memory(write) "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 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 #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #10 = { 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 = !{!"_ZTS19Animation_MoodBlobs", !7, i64 0, !8, i64 16, !11, i64 20, !12, i64 24, !12, i64 32, !12, i64 40, !8, i64 48, !12, i64 56, !11, i64 64, !8, i64 68, !12, i64 72, !8, i64 80, !13, i64 84, !15, i64 88, !12, i64 112, !20, i64 120, !11, i64 123, !12, i64 128, !8, i64 136, !11, i64 140, !11, i64 141, !12, i64 144, !12, i64 152, !12, i64 160}
!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 = !{!"double", !9, i64 0}
!13 = !{!"_ZTS10Point3dhsv", !14, i64 0, !9, i64 2, !9, i64 3}
!14 = !{!"short", !9, i64 0}
!15 = !{!"_ZTSSt6vectorI7Point3dSaIS0_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseI7Point3dSaIS0_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseI7Point3dSaIS0_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseI7Point3dSaIS0_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!19 = !{!"any pointer", !9, i64 0}
!20 = !{!"_ZTS7Point3d", !9, i64 0, !9, i64 1, !9, i64 2}
!21 = !{!6, !12, i64 152}
!22 = !{!6, !12, i64 144}
!23 = !{!6, !11, i64 141}
!24 = !{!6, !11, i64 20}
!25 = !{!6, !12, i64 24}
!26 = !{!6, !12, i64 128}
!27 = !{!12, !12, i64 0}
!28 = !{!6, !12, i64 112}
!29 = !{!8, !8, i64 0}
!30 = !{!6, !8, i64 136}
!31 = !{!6, !12, i64 160}
!32 = !{!6, !9, i64 120}
!33 = !{!6, !9, i64 121}
!34 = !{!6, !9, i64 122}
!35 = !{!6, !14, i64 84}
!36 = !{!6, !11, i64 123}
!37 = !{i8 0, i8 2}
!38 = !{}
!39 = !{!6, !12, i64 32}
!40 = !{!6, !12, i64 40}
!41 = !{!6, !8, i64 48}
!42 = !{!6, !11, i64 140}
!43 = !{!6, !9, i64 86}
!44 = !{!6, !9, i64 87}
!45 = distinct !{!45, !46}
!46 = !{!"llvm.loop.mustprogress"}
!47 = !{!6, !12, i64 56}
!48 = !{!6, !11, i64 64}
!49 = !{!6, !8, i64 68}
!50 = !{!6, !12, i64 72}
!51 = !{!6, !8, i64 80}
!52 = distinct !{!52, !46}
!53 = !{i64 0, i64 1, !54, i64 1, i64 1, !54, i64 2, i64 1, !54}
!54 = !{!9, !9, i64 0}
!55 = distinct !{!55, !46}
!56 = distinct !{!56, !46}
!57 = !{!20, !9, i64 0}
!58 = !{!59, !9, i64 0}
!59 = !{!"_ZTS8ColorRgb", !9, i64 0, !9, i64 1, !9, i64 2}
!60 = !{!20, !9, i64 1}
!61 = !{!59, !9, i64 1}
!62 = !{!20, !9, i64 2}
!63 = !{!59, !9, i64 2}
!64 = distinct !{!64, !46}
!65 = distinct !{!65, !46}
!66 = distinct !{!66, !46}


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