; LLVM IR from hoodoer/ENNEoS :: enneosEncoder/main.ll (Z15runPuppetMasterv)

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

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<ShellyBot *, std::allocator<ShellyBot *>>::_Vector_impl" }
%"struct.std::_Vector_base<ShellyBot *, std::allocator<ShellyBot *>>::_Vector_impl" = type { %"struct.std::_Vector_base<ShellyBot *, std::allocator<ShellyBot *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ShellyBot *, std::allocator<ShellyBot *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<ShellcodePieceData, std::allocator<ShellcodePieceData>>::_Vector_impl" }
%"struct.std::_Vector_base<ShellcodePieceData, std::allocator<ShellcodePieceData>>::_Vector_impl" = type { %"struct.std::_Vector_base<ShellcodePieceData, std::allocator<ShellcodePieceData>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ShellcodePieceData, std::allocator<ShellcodePieceData>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%struct.timespec = type { i64, i64 }
%class.Timer = type { %struct.timeval, %struct.timeval }
%struct.timeval = type { i64, i64 }
%"class.std::basic_ofstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon.60 }
%union.anon.60 = type { i32 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.Cga = type <{ %"class.std::vector.42", %"class.std::vector.42", %"class.std::vector.42", %"class.std::vector.42", %"class.std::vector.42", %"class.std::vector.47", ptr, i32, i32, i32, i32, double, double, i32, [4 x i8], double, %"class.std::vector.52", %"class.std::vector.52", double, i8, i8, [2 x i8], i32, i8, [7 x i8] }>
%"class.std::vector.42" = type { %"struct.std::_Vector_base.43" }
%"struct.std::_Vector_base.43" = type { %"struct.std::_Vector_base<CGenome, std::allocator<CGenome>>::_Vector_impl" }
%"struct.std::_Vector_base<CGenome, std::allocator<CGenome>>::_Vector_impl" = type { %"struct.std::_Vector_base<CGenome, std::allocator<CGenome>>::_Vector_impl_data" }
%"struct.std::_Vector_base<CGenome, std::allocator<CGenome>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.47" = type { %"struct.std::_Vector_base.48" }
%"struct.std::_Vector_base.48" = type { %"struct.std::_Vector_base<CSpecies, std::allocator<CSpecies>>::_Vector_impl" }
%"struct.std::_Vector_base<CSpecies, std::allocator<CSpecies>>::_Vector_impl" = type { %"struct.std::_Vector_base<CSpecies, std::allocator<CSpecies>>::_Vector_impl_data" }
%"struct.std::_Vector_base<CSpecies, std::allocator<CSpecies>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = type { %"struct.std::_Vector_base<SplitDepth, std::allocator<SplitDepth>>::_Vector_impl" }
%"struct.std::_Vector_base<SplitDepth, std::allocator<SplitDepth>>::_Vector_impl" = type { %"struct.std::_Vector_base<SplitDepth, std::allocator<SplitDepth>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SplitDepth, std::allocator<SplitDepth>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.61" = type { %"struct.std::_Vector_base.62" }
%"struct.std::_Vector_base.62" = type { %"struct.std::_Vector_base<CNeuralNet *, std::allocator<CNeuralNet *>>::_Vector_impl" }
%"struct.std::_Vector_base<CNeuralNet *, std::allocator<CNeuralNet *>>::_Vector_impl" = type { %"struct.std::_Vector_base<CNeuralNet *, std::allocator<CNeuralNet *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<CNeuralNet *, std::allocator<CNeuralNet *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.10" = type { i8 }
%struct.botEvaluationData = type { i32, i32, double, i8 }
%class.CGenome = type <{ i32, [4 x i8], %"class.std::vector.18", %"class.std::vector.23", ptr, i32, [4 x i8], double, double, double, i32, i32, i32, [4 x i8] }>
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<SNeuronGene, std::allocator<SNeuronGene>>::_Vector_impl" }
%"struct.std::_Vector_base<SNeuronGene, std::allocator<SNeuronGene>>::_Vector_impl" = type { %"struct.std::_Vector_base<SNeuronGene, std::allocator<SNeuronGene>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SNeuronGene, std::allocator<SNeuronGene>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<SLinkGene, std::allocator<SLinkGene>>::_Vector_impl" }
%"struct.std::_Vector_base<SLinkGene, std::allocator<SLinkGene>>::_Vector_impl" = type { %"struct.std::_Vector_base<SLinkGene, std::allocator<SLinkGene>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SLinkGene, std::allocator<SLinkGene>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::allocator" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.66" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%struct.ShellcodePieceData = type { i32, %"class.std::vector.8", %"class.std::vector.13", %class.CGenome }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@DONE = external dso_local global i8, align 1
@generationCounter = external dso_local global i32, align 4
@chunkCounter = external dso_local global i32, align 4
@numInputs = external dso_local global i32, align 4
@numOutputs = external dso_local global i32, align 4
@shenaniganBots = external dso_local global %"class.std::vector", align 8
@shellcodePieces = external dso_local global %"class.std::vector.3", align 8
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@lowestDiff = external dso_local global double, align 8
@lowestCharDiff = external dso_local global i32, align 4
@maxMatchedChars = external dso_local global i32, align 4
@_ZZ15runPuppetMastervE9sleepTime = external hidden global %struct.timespec, align 8
@.str.18 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #3

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z19setupEvaluationJobsv() #4

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

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #5

declare void @_ZN3CgaC1Eiii(ptr noundef nonnull align 8 dereferenceable(265), i32 noundef, i32 noundef, i32 noundef) unnamed_addr #3

declare i32 @nanosleep(ptr noundef, ptr noundef) #3

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z15runPuppetMasterv() #4 personality ptr @__gxx_personality_v0 {
  %1 = alloca i8, align 1
  %2 = alloca double, align 8
  %3 = alloca double, align 8
  %4 = alloca i32, align 4
  %5 = alloca %class.Timer, align 8
  %6 = alloca %class.Timer, align 8
  %7 = alloca %class.Timer, align 8
  %8 = alloca float, align 4
  %9 = alloca float, align 4
  %10 = alloca float, align 4
  %11 = alloca i8, align 1
  %12 = alloca double, align 8
  %13 = alloca %"class.std::basic_ofstream", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca i8, align 1
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca %class.Cga, align 8
  %21 = alloca %"class.std::vector.61", align 8
  %22 = alloca %"class.std::vector.61", align 8
  %23 = alloca i32, align 4
  %24 = alloca %"class.std::vector.8", align 8
  %25 = alloca %"class.std::allocator.10", align 1
  %26 = alloca %struct.botEvaluationData, align 8
  %27 = alloca i32, align 4
  %28 = alloca double, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca %class.CGenome, align 8
  %32 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator", align 1
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator.66", align 8
  %41 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %43 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.66", align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %48 = alloca %"class.std::vector.61", align 8
  %49 = alloca i32, align 4
  %50 = alloca %"class.std::vector.61", align 8
  %51 = alloca double, align 8
  %52 = alloca i32, align 4
  %53 = alloca %"class.std::vector.61", align 8
  %54 = alloca %"class.std::vector.61", align 8
  %55 = alloca i32, align 4
  store i64 0, ptr @_ZZ15runPuppetMastervE9sleepTime, align 8, !tbaa !5
  store i64 100, ptr getelementptr inbounds (%struct.timespec, ptr @_ZZ15runPuppetMastervE9sleepTime, i32 0, i32 1), align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 1, ptr %1) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %2) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #9
  store double 0.000000e+00, ptr %3, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #9
  store i32 0, ptr %4, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #9
  call void @_ZN5TimerC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5)
  call void @llvm.lifetime.start.p0(i64 32, ptr %6) #9
  call void @_ZN5TimerC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6)
  call void @llvm.lifetime.start.p0(i64 32, ptr %7) #9
  call void @_ZN5TimerC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7)
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #9
  store float 0.000000e+00, ptr %8, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #9
  store float 0.000000e+00, ptr %9, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #9
  store float 0.000000e+00, ptr %10, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  store double 1.000000e-01, ptr %12, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 512, ptr %13) #9
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(248) %13)
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #9
  store i8 0, ptr %15, align 1, !tbaa !17
  %56 = call i64 @time(ptr noundef null) #9
  %57 = trunc i64 %56 to i32
  call void @srand(i32 noundef %57) #9
  store i32 0, ptr @chunkCounter, align 4, !tbaa !13
  br label %58

58:                                               ; preds = %574, %0
  %59 = load i32, ptr @chunkCounter, align 4, !tbaa !13
  %60 = zext i32 %59 to i64
  %61 = call noundef i64 @_ZNKSt6vectorI18ShellcodePieceDataSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) @shellcodePieces) #9
  %62 = icmp ult i64 %60, %61
  br i1 %62, label %63, label %579

63:                                               ; preds = %58
  %64 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.18)
          to label %65 unwind label %77

65:                                               ; preds = %63
  %66 = load i32, ptr @chunkCounter, align 4, !tbaa !13
  %67 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %64, i32 noundef %66)
          to label %68 unwind label %77

68:                                               ; preds = %65
  %69 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %70 unwind label %77

70:                                               ; preds = %68
  store i8 0, ptr %11, align 1, !tbaa !17
  store double 0.000000e+00, ptr %2, align 8, !tbaa !11
  store double 0.000000e+00, ptr %3, align 8, !tbaa !11
  store i32 0, ptr %4, align 4, !tbaa !13
  store float 0.000000e+00, ptr %8, align 4, !tbaa !15
  store float 0.000000e+00, ptr %9, align 4, !tbaa !15
  store i32 1, ptr @generationCounter, align 4, !tbaa !13
  store double 3.000000e+02, ptr @lowestDiff, align 8, !tbaa !11
  store i32 2000, ptr @lowestCharDiff, align 4, !tbaa !13
  store i32 0, ptr @maxMatchedChars, align 4, !tbaa !13
  %71 = invoke noundef float @_ZN5Timer5resetEv(ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %72 unwind label %77

72:                                               ; preds = %70
  call void @_ZNSt6vectorIP9ShellyBotSaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) @shenaniganBots) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  store i32 0, ptr %18, align 4, !tbaa !13
  br label %73

73:                                               ; preds = %86, %72
  %74 = load i32, ptr %18, align 4, !tbaa !13
  %75 = icmp slt i32 %74, 3000
  br i1 %75, label %81, label %76

76:                                               ; preds = %73
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  br label %98

77:                                               ; preds = %582, %98, %70, %68, %65, %63
  %78 = landingpad { ptr, i32 }
          cleanup
  %79 = extractvalue { ptr, i32 } %78, 0
  store ptr %79, ptr %16, align 8
  %80 = extractvalue { ptr, i32 } %78, 1
  store i32 %80, ptr %17, align 4
  br label %585

81:                                               ; preds = %73
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #9
  %82 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 112) #10
          to label %83 unwind label %89

83:                                               ; preds = %81
  invoke void @_ZN9ShellyBotC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %82)
          to label %84 unwind label %93

84:                                               ; preds = %83
  store ptr %82, ptr %19, align 8, !tbaa !19
  invoke void @_ZNSt6vectorIP9ShellyBotSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) @shenaniganBots, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %85 unwind label %89

85:                                               ; preds = %84
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  br label %86

86:                                               ; preds = %85
  %87 = load i32, ptr %18, align 4, !tbaa !13
  %88 = add nsw i32 %87, 1
  store i32 %88, ptr %18, align 4, !tbaa !13
  br label %73, !llvm.loop !21

89:                                               ; preds = %84, %81
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %16, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %17, align 4
  br label %97

93:                                               ; preds = %83
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %16, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %17, align 4
  call void @_ZdlPvm(ptr noundef %82, i64 noundef 112) #11
  br label %97

97:                                               ; preds = %93, %89
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  br label %585

98:                                               ; preds = %76
  %99 = load i32, ptr @chunkCounter, align 4, !tbaa !13
  %100 = zext i32 %99 to i64
  %101 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZNSt6vectorI18ShellcodePieceDataSaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) @shellcodePieces, i64 noundef %100)
          to label %102 unwind label %77

102:                                              ; preds = %98
  %103 = getelementptr inbounds %struct.ShellcodePieceData, ptr %101, i32 0, i32 0
  %104 = load i32, ptr %103, align 8, !tbaa !23
  store i32 %104, ptr @numOutputs, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 272, ptr %20) #9
  %105 = load i32, ptr @numInputs, align 4, !tbaa !13
  %106 = load i32, ptr @numOutputs, align 4, !tbaa !13
  invoke void @_ZN3CgaC1Eiii(ptr noundef nonnull align 8 dereferenceable(265) %20, i32 noundef 3000, i32 noundef %105, i32 noundef %106)
          to label %107 unwind label %114

107:                                              ; preds = %102
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #9
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #9
  invoke void @_ZN3Cga16CreatePhenotypesEv(ptr dead_on_unwind writable sret(%"class.std::vector.61") align 8 %22, ptr noundef nonnull align 8 dereferenceable(265) %20)
          to label %108 unwind label %118

108:                                              ; preds = %107
  %109 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIP10CNeuralNetSaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  store i32 0, ptr %23, align 4, !tbaa !13
  br label %110

110:                                              ; preds = %132, %108
  %111 = load i32, ptr %23, align 4, !tbaa !13
  %112 = icmp slt i32 %111, 3000
  br i1 %112, label %122, label %113

113:                                              ; preds = %110
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %139

114:                                              ; preds = %102
  %115 = landingpad { ptr, i32 }
          cleanup
  %116 = extractvalue { ptr, i32 } %115, 0
  store ptr %116, ptr %16, align 8
  %117 = extractvalue { ptr, i32 } %115, 1
  store i32 %117, ptr %17, align 4
  br label %578

118:                                              ; preds = %107
  %119 = landingpad { ptr, i32 }
          cleanup
  %120 = extractvalue { ptr, i32 } %119, 0
  store ptr %120, ptr %16, align 8
  %121 = extractvalue { ptr, i32 } %119, 1
  store i32 %121, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #9
  br label %577

122:                                              ; preds = %110
  %123 = load i32, ptr %23, align 4, !tbaa !13
  %124 = sext i32 %123 to i64
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP9ShellyBotSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @shenaniganBots, i64 noundef %124) #9
  %126 = load ptr, ptr %125, align 8, !tbaa !19
  %127 = load i32, ptr %23, align 4, !tbaa !13
  %128 = sext i32 %127 to i64
  %129 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP10CNeuralNetSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %128) #9
  %130 = load ptr, ptr %129, align 8, !tbaa !19
  invoke void @_ZN9ShellyBot14insertNewBrainEP10CNeuralNet(ptr noundef nonnull align 8 dereferenceable(112) %126, ptr noundef %130)
          to label %131 unwind label %135

131:                                              ; preds = %122
  br label %132

132:                                              ; preds = %131
  %133 = load i32, ptr %23, align 4, !tbaa !13
  %134 = add nsw i32 %133, 1
  store i32 %134, ptr %23, align 4, !tbaa !13
  br label %110, !llvm.loop !42

135:                                              ; preds = %122
  %136 = landingpad { ptr, i32 }
          cleanup
  %137 = extractvalue { ptr, i32 } %136, 0
  store ptr %137, ptr %16, align 8
  %138 = extractvalue { ptr, i32 } %136, 1
  store i32 %138, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %577

139:                                              ; preds = %113
  br label %140

140:                                              ; preds = %572, %139
  %141 = load i8, ptr @DONE, align 1, !tbaa !17, !range !43, !noundef !44
  %142 = trunc i8 %141 to i1
  br i1 %142, label %147, label %143

143:                                              ; preds = %140
  %144 = load i8, ptr %11, align 1, !tbaa !17, !range !43, !noundef !44
  %145 = trunc i8 %144 to i1
  %146 = xor i1 %145, true
  br label %147

147:                                              ; preds = %143, %140
  %148 = phi i1 [ false, %140 ], [ %146, %143 ]
  br i1 %148, label %149, label %573

149:                                              ; preds = %147
  invoke void @_Z26puppetMasterClearAllQueuesv()
          to label %150 unwind label %197

150:                                              ; preds = %149
  %151 = invoke noundef float @_ZN5Timer5resetEv(ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %152 unwind label %197

152:                                              ; preds = %150
  store i8 0, ptr %1, align 1, !tbaa !17
  %153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %154 unwind label %197

154:                                              ; preds = %152
  %155 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef @.str.19)
          to label %156 unwind label %197

156:                                              ; preds = %154
  %157 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %155, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %158 unwind label %197

158:                                              ; preds = %156
  %159 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.20)
          to label %160 unwind label %197

160:                                              ; preds = %158
  %161 = load i32, ptr @chunkCounter, align 4, !tbaa !13
  %162 = add i32 %161, 1
  %163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %159, i32 noundef %162)
          to label %164 unwind label %197

164:                                              ; preds = %160
  %165 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %163, ptr noundef @.str.21)
          to label %166 unwind label %197

166:                                              ; preds = %164
  %167 = call noundef i64 @_ZNKSt6vectorI18ShellcodePieceDataSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) @shellcodePieces) #9
  %168 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %165, i64 noundef %167)
          to label %169 unwind label %197

169:                                              ; preds = %166
  %170 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %168, ptr noundef @.str.22)
          to label %171 unwind label %197

171:                                              ; preds = %169
  %172 = load i32, ptr @generationCounter, align 4, !tbaa !13
  %173 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %170, i32 noundef %172)
          to label %174 unwind label %197

174:                                              ; preds = %171
  %175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %173, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %176 unwind label %197

176:                                              ; preds = %174
  %177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %178 unwind label %197

178:                                              ; preds = %176
  invoke void @_Z19setupEvaluationJobsv()
          to label %179 unwind label %197

179:                                              ; preds = %178
  br label %180

180:                                              ; preds = %571, %179
  %181 = load i8, ptr %1, align 1, !tbaa !17, !range !43, !noundef !44
  %182 = trunc i8 %181 to i1
  %183 = xor i1 %182, true
  br i1 %183, label %184, label %572

184:                                              ; preds = %180
  %185 = invoke noundef i32 @_Z31puppetMasterGetResultsQueueSizev()
          to label %186 unwind label %197

186:                                              ; preds = %184
  %187 = icmp eq i32 %185, 3000
  br i1 %187, label %188, label %569

188:                                              ; preds = %186
  store double 0.000000e+00, ptr %2, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #9
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef 3000, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %189 unwind label %201

189:                                              ; preds = %188
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %26) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #9
  %190 = invoke noundef i32 @_Z31puppetMasterGetResultsQueueSizev()
          to label %191 unwind label %205

191:                                              ; preds = %189
  store i32 %190, ptr %27, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  store double 0.000000e+00, ptr %28, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #9
  store i32 0, ptr %29, align 4, !tbaa !13
  br label %192

192:                                              ; preds = %424, %191
  %193 = load i32, ptr %29, align 4, !tbaa !13
  %194 = load i32, ptr %27, align 4, !tbaa !13
  %195 = icmp slt i32 %193, %194
  br i1 %195, label %209, label %196

196:                                              ; preds = %192
  store i32 15, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  br label %428

197:                                              ; preds = %569, %184, %178, %176, %174, %171, %169, %166, %164, %160, %158, %156, %154, %152, %150, %149
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %16, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %17, align 4
  br label %577

201:                                              ; preds = %188
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %16, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %17, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #9
  br label %568

205:                                              ; preds = %189
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %16, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %17, align 4
  br label %567

209:                                              ; preds = %192
  %210 = invoke noundef zeroext i1 @_Z26puppetMasterGetEvalResultsR17botEvaluationData(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %211 unwind label %217

211:                                              ; preds = %209
  br i1 %210, label %221, label %212

212:                                              ; preds = %211
  %213 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.23)
          to label %214 unwind label %217

214:                                              ; preds = %212
  %215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %213, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %216 unwind label %217

216:                                              ; preds = %214
  call void @exit(i32 noundef 1) #12
  unreachable

217:                                              ; preds = %252, %250, %243, %239, %227, %225, %214, %212, %209
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %16, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %17, align 4
  br label %427

221:                                              ; preds = %211
  %222 = getelementptr inbounds %struct.botEvaluationData, ptr %26, i32 0, i32 3
  %223 = load i8, ptr %222, align 8, !tbaa !45, !range !43, !noundef !44
  %224 = trunc i8 %223 to i1
  br i1 %224, label %225, label %378

225:                                              ; preds = %221
  %226 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.24)
          to label %227 unwind label %217

227:                                              ; preds = %225
  %228 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %226, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %229 unwind label %217

229:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 112, ptr %31) #9
  %230 = getelementptr inbounds %struct.botEvaluationData, ptr %26, i32 0, i32 0
  %231 = load i32, ptr %230, align 8, !tbaa !47
  invoke void @_ZN3Cga15GetSingleGenomeEi(ptr dead_on_unwind writable sret(%class.CGenome) align 8 %31, ptr noundef nonnull align 8 dereferenceable(265) %20, i32 noundef %231)
          to label %232 unwind label %255

232:                                              ; preds = %229
  %233 = load i32, ptr @chunkCounter, align 4, !tbaa !13
  %234 = zext i32 %233 to i64
  %235 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZNSt6vectorI18ShellcodePieceDataSaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) @shellcodePieces, i64 noundef %234)
          to label %236 unwind label %259

236:                                              ; preds = %232
  %237 = getelementptr inbounds %struct.ShellcodePieceData, ptr %235, i32 0, i32 3
  %238 = invoke noundef nonnull align 8 dereferenceable(108) ptr @_ZN7CGenomeaSERKS_(ptr noundef nonnull align 8 dereferenceable(108) %237, ptr noundef nonnull align 8 dereferenceable(108) %31)
          to label %239 unwind label %259

239:                                              ; preds = %236
  call void @_ZN7CGenomeD1Ev(ptr noundef nonnull align 8 dereferenceable(108) %31) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr %31) #9
  %240 = load i32, ptr @chunkCounter, align 4, !tbaa !13
  %241 = zext i32 %240 to i64
  %242 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZNSt6vectorI18ShellcodePieceDataSaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) @shellcodePieces, i64 noundef %241)
          to label %243 unwind label %217

243:                                              ; preds = %239
  %244 = getelementptr inbounds %struct.ShellcodePieceData, ptr %242, i32 0, i32 3
  %245 = invoke noundef i32 @_ZNK7CGenome2IDEv(ptr noundef nonnull align 8 dereferenceable(108) %244)
          to label %246 unwind label %217

246:                                              ; preds = %243
  %247 = getelementptr inbounds %struct.botEvaluationData, ptr %26, i32 0, i32 1
  %248 = load i32, ptr %247, align 4, !tbaa !48
  %249 = icmp ne i32 %245, %248
  br i1 %249, label %250, label %264

250:                                              ; preds = %246
  %251 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.25)
          to label %252 unwind label %217

252:                                              ; preds = %250
  %253 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %251, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %254 unwind label %217

254:                                              ; preds = %252
  call void @exit(i32 noundef 1) #12
  unreachable

255:                                              ; preds = %229
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %16, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %17, align 4
  br label %263

259:                                              ; preds = %236, %232
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %16, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %17, align 4
  call void @_ZN7CGenomeD1Ev(ptr noundef nonnull align 8 dereferenceable(108) %31) #9
  br label %263

263:                                              ; preds = %259, %255
  call void @llvm.lifetime.end.p0(i64 112, ptr %31) #9
  br label %427

264:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 392, ptr %32) #9
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %32)
          to label %265 unwind label %291

265:                                              ; preds = %264
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %266 unwind label %295

266:                                              ; preds = %265
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #9
  %267 = getelementptr inbounds i8, ptr %32, i64 16
  %268 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %267, ptr noundef @.str.27)
          to label %269 unwind label %299

269:                                              ; preds = %266
  %270 = load i32, ptr @chunkCounter, align 4, !tbaa !13
  %271 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %268, i32 noundef %270)
          to label %272 unwind label %299

272:                                              ; preds = %269
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 8 dereferenceable(128) %32)
          to label %273 unwind label %303

273:                                              ; preds = %272
  %274 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %275 unwind label %307

275:                                              ; preds = %273
  %276 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #9
  %277 = load i32, ptr @chunkCounter, align 4, !tbaa !13
  %278 = zext i32 %277 to i64
  %279 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZNSt6vectorI18ShellcodePieceDataSaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) @shellcodePieces, i64 noundef %278)
          to label %280 unwind label %299

280:                                              ; preds = %275
  %281 = getelementptr inbounds %struct.ShellcodePieceData, ptr %279, i32 0, i32 3
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %282 unwind label %299

282:                                              ; preds = %280
  %283 = invoke noundef zeroext i1 @_ZN7CGenome17WriteGenomeToFileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(108) %281, ptr noundef %39)
          to label %284 unwind label %311

284:                                              ; preds = %282
  %285 = xor i1 %283, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  br i1 %285, label %286, label %315

286:                                              ; preds = %284
  %287 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.28)
          to label %288 unwind label %299

288:                                              ; preds = %286
  %289 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %287, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %290 unwind label %299

290:                                              ; preds = %288
  call void @exit(i32 noundef 1) #12
  unreachable

291:                                              ; preds = %264
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %16, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %17, align 4
  br label %377

295:                                              ; preds = %265
  %296 = landingpad { ptr, i32 }
          cleanup
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %16, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %17, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #9
  br label %376

299:                                              ; preds = %372, %370, %367, %363, %361, %359, %356, %352, %350, %346, %344, %342, %340, %337, %333, %331, %329, %322, %320, %318, %288, %286, %280, %275, %269, %266
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %16, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %17, align 4
  br label %375

303:                                              ; preds = %272
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %16, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #9
  br label %375

307:                                              ; preds = %273
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %16, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #9
  br label %375

311:                                              ; preds = %282
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %16, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  br label %375

315:                                              ; preds = %284
  store i32 0, ptr %27, align 4, !tbaa !13
  store i8 1, ptr %1, align 1, !tbaa !17
  store i8 1, ptr %11, align 1, !tbaa !17
  %316 = load i8, ptr %15, align 1, !tbaa !17, !range !43, !noundef !44
  %317 = trunc i8 %316 to i1
  br i1 %317, label %337, label %318

318:                                              ; preds = %315
  %319 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef @.str.29)
          to label %320 unwind label %299

320:                                              ; preds = %318
  %321 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248) %13, ptr noundef %321, i32 noundef 16)
          to label %322 unwind label %299

322:                                              ; preds = %320
  %323 = load ptr, ptr %13, align 8, !tbaa !49
  %324 = getelementptr i8, ptr %323, i64 -24
  %325 = load i64, ptr %324, align 8
  %326 = getelementptr inbounds i8, ptr %13, i64 %325
  %327 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv(ptr noundef nonnull align 8 dereferenceable(264) %326)
          to label %328 unwind label %299

328:                                              ; preds = %322
  br i1 %327, label %329, label %336

329:                                              ; preds = %328
  %330 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.30)
          to label %331 unwind label %299

331:                                              ; preds = %329
  %332 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %330, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %333 unwind label %299

333:                                              ; preds = %331
  %334 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %332, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %335 unwind label %299

335:                                              ; preds = %333
  call void @exit(i32 noundef 1) #12
  unreachable

336:                                              ; preds = %328
  store i8 1, ptr %15, align 1, !tbaa !17
  br label %337

337:                                              ; preds = %336, %315
  %338 = load i32, ptr @chunkCounter, align 4, !tbaa !13
  %339 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %13, i32 noundef %338)
          to label %340 unwind label %299

340:                                              ; preds = %337
  %341 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %339, ptr noundef @.str.31)
          to label %342 unwind label %299

342:                                              ; preds = %340
  %343 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %341, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %344 unwind label %299

344:                                              ; preds = %342
  %345 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %343, ptr noundef @.str.32)
          to label %346 unwind label %299

346:                                              ; preds = %344
  %347 = getelementptr inbounds %struct.botEvaluationData, ptr %26, i32 0, i32 1
  %348 = load i32, ptr %347, align 4, !tbaa !48
  %349 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %345, i32 noundef %348)
          to label %350 unwind label %299

350:                                              ; preds = %346
  %351 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %349, ptr noundef @.str.31)
          to label %352 unwind label %299

352:                                              ; preds = %350
  %353 = load i32, ptr @chunkCounter, align 4, !tbaa !13
  %354 = zext i32 %353 to i64
  %355 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZNSt6vectorI18ShellcodePieceDataSaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) @shellcodePieces, i64 noundef %354)
          to label %356 unwind label %299

356:                                              ; preds = %352
  %357 = getelementptr inbounds %struct.ShellcodePieceData, ptr %355, i32 0, i32 3
  %358 = invoke noundef i32 @_ZNK7CGenome2IDEv(ptr noundef nonnull align 8 dereferenceable(108) %357)
          to label %359 unwind label %299

359:                                              ; preds = %356
  %360 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %351, i32 noundef %358)
          to label %361 unwind label %299

361:                                              ; preds = %359
  %362 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %360, ptr noundef @.str.33)
          to label %363 unwind label %299

363:                                              ; preds = %361
  %364 = load i32, ptr @chunkCounter, align 4, !tbaa !13
  %365 = zext i32 %364 to i64
  %366 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZNSt6vectorI18ShellcodePieceDataSaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) @shellcodePieces, i64 noundef %365)
          to label %367 unwind label %299

367:                                              ; preds = %363
  %368 = getelementptr inbounds %struct.ShellcodePieceData, ptr %366, i32 0, i32 3
  %369 = invoke noundef i32 @_ZNK7CGenome10NumNeuronsEv(ptr noundef nonnull align 8 dereferenceable(108) %368)
          to label %370 unwind label %299

370:                                              ; preds = %367
  %371 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %362, i32 noundef %369)
          to label %372 unwind label %299

372:                                              ; preds = %370
  %373 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %371, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %374 unwind label %299

374:                                              ; preds = %372
  store i32 17, ptr %30, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %32) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr %32) #9
  br label %424

375:                                              ; preds = %311, %307, %303, %299
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  br label %376

376:                                              ; preds = %375, %295
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %32) #9
  br label %377

377:                                              ; preds = %376, %291
  call void @llvm.lifetime.end.p0(i64 392, ptr %32) #9
  br label %427

378:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #9
  %379 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %24) #9
  %380 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %42, i32 0, i32 0
  store ptr %379, ptr %380, align 8
  %381 = getelementptr inbounds %struct.botEvaluationData, ptr %26, i32 0, i32 0
  %382 = load i32, ptr %381, align 8, !tbaa !47
  %383 = zext i32 %382 to i64
  %384 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %42, i64 noundef %383) #9
  %385 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %41, i32 0, i32 0
  store ptr %384, ptr %385, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEC2IPdvEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %41) #9
  %386 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.66", ptr %40, i32 0, i32 0
  %387 = load ptr, ptr %386, align 8
  %388 = invoke ptr @_ZNSt6vectorIdSaIdEE5eraseEN9__gnu_cxx17__normal_iteratorIPKdS1_EE(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr %387)
          to label %389 unwind label %415

389:                                              ; preds = %378
  %390 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %43, i32 0, i32 0
  store ptr %388, ptr %390, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #9
  %391 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %24) #9
  %392 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %46, i32 0, i32 0
  store ptr %391, ptr %392, align 8
  %393 = getelementptr inbounds %struct.botEvaluationData, ptr %26, i32 0, i32 0
  %394 = load i32, ptr %393, align 8, !tbaa !47
  %395 = zext i32 %394 to i64
  %396 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %46, i64 noundef %395) #9
  %397 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %45, i32 0, i32 0
  store ptr %396, ptr %397, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEC2IPdvEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  %398 = getelementptr inbounds %struct.botEvaluationData, ptr %26, i32 0, i32 2
  %399 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.66", ptr %44, i32 0, i32 0
  %400 = load ptr, ptr %399, align 8
  %401 = invoke ptr @_ZNSt6vectorIdSaIdEE6insertEN9__gnu_cxx17__normal_iteratorIPKdS1_EERS4_(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr %400, ptr noundef nonnull align 8 dereferenceable(8) %398)
          to label %402 unwind label %419

402:                                              ; preds = %389
  %403 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %47, i32 0, i32 0
  store ptr %401, ptr %403, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  %404 = getelementptr inbounds %struct.botEvaluationData, ptr %26, i32 0, i32 2
  %405 = load double, ptr %404, align 8, !tbaa !51
  %406 = load double, ptr %28, align 8, !tbaa !11
  %407 = fadd double %406, %405
  store double %407, ptr %28, align 8, !tbaa !11
  %408 = getelementptr inbounds %struct.botEvaluationData, ptr %26, i32 0, i32 2
  %409 = load double, ptr %408, align 8, !tbaa !51
  %410 = load double, ptr %2, align 8, !tbaa !11
  %411 = fcmp ogt double %409, %410
  br i1 %411, label %412, label %423

412:                                              ; preds = %402
  %413 = getelementptr inbounds %struct.botEvaluationData, ptr %26, i32 0, i32 2
  %414 = load double, ptr %413, align 8, !tbaa !51
  store double %414, ptr %2, align 8, !tbaa !11
  br label %423

415:                                              ; preds = %378
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %16, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  br label %427

419:                                              ; preds = %389
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %16, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  br label %427

423:                                              ; preds = %412, %402
  br label %424

424:                                              ; preds = %423, %374
  %425 = load i32, ptr %29, align 4, !tbaa !13
  %426 = add nsw i32 %425, 1
  store i32 %426, ptr %29, align 4, !tbaa !13
  br label %192, !llvm.loop !52

427:                                              ; preds = %419, %415, %377, %263, %217
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  br label %566

428:                                              ; preds = %196
  %429 = load double, ptr %28, align 8, !tbaa !11
  %430 = load i32, ptr %27, align 4, !tbaa !13
  %431 = sitofp i32 %430 to double
  %432 = fdiv double %429, %431
  store double %432, ptr %28, align 8, !tbaa !11
  invoke void @_ZN3Cga5EpochERKSt6vectorIdSaIdEE(ptr dead_on_unwind writable sret(%"class.std::vector.61") align 8 %48, ptr noundef nonnull align 8 dereferenceable(265) %20, ptr noundef nonnull align 8 dereferenceable(24) %24)
          to label %433 unwind label %445

433:                                              ; preds = %428
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #9
  store i32 5, ptr %49, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 24, ptr %50) #9
  %434 = load i32, ptr %49, align 4, !tbaa !13
  invoke void @_ZN3Cga35GetBestPhenotypesFromLastGenerationEi(ptr dead_on_unwind writable sret(%"class.std::vector.61") align 8 %50, ptr noundef nonnull align 8 dereferenceable(265) %20, i32 noundef %434)
          to label %435 unwind label %449

435:                                              ; preds = %433
  %436 = load i32, ptr %49, align 4, !tbaa !13
  invoke void @_ZN3Cga37ClearBestPhenotypesFromLastGenerationEi(ptr noundef nonnull align 8 dereferenceable(265) %20, i32 noundef %436)
          to label %437 unwind label %453

437:                                              ; preds = %435
  store i8 1, ptr %1, align 1, !tbaa !17
  %438 = load i32, ptr @generationCounter, align 4, !tbaa !13
  %439 = add i32 %438, 1
  store i32 %439, ptr @generationCounter, align 4, !tbaa !13
  %440 = load double, ptr %2, align 8, !tbaa !11
  %441 = load double, ptr %3, align 8, !tbaa !11
  %442 = fcmp ogt double %440, %441
  br i1 %442, label %443, label %457

443:                                              ; preds = %437
  %444 = load double, ptr %2, align 8, !tbaa !11
  store double %444, ptr %3, align 8, !tbaa !11
  store i32 0, ptr %4, align 4, !tbaa !13
  br label %460

445:                                              ; preds = %428
  %446 = landingpad { ptr, i32 }
          cleanup
  %447 = extractvalue { ptr, i32 } %446, 0
  store ptr %447, ptr %16, align 8
  %448 = extractvalue { ptr, i32 } %446, 1
  store i32 %448, ptr %17, align 4
  br label %566

449:                                              ; preds = %433
  %450 = landingpad { ptr, i32 }
          cleanup
  %451 = extractvalue { ptr, i32 } %450, 0
  store ptr %451, ptr %16, align 8
  %452 = extractvalue { ptr, i32 } %450, 1
  store i32 %452, ptr %17, align 4
  br label %565

453:                                              ; preds = %508, %506, %503, %501, %499, %497, %494, %492, %490, %488, %485, %483, %481, %479, %476, %474, %472, %469, %467, %465, %463, %461, %460, %435
  %454 = landingpad { ptr, i32 }
          cleanup
  %455 = extractvalue { ptr, i32 } %454, 0
  store ptr %455, ptr %16, align 8
  %456 = extractvalue { ptr, i32 } %454, 1
  store i32 %456, ptr %17, align 4
  br label %564

457:                                              ; preds = %437
  %458 = load i32, ptr %4, align 4, !tbaa !13
  %459 = add nsw i32 %458, 1
  store i32 %459, ptr %4, align 4, !tbaa !13
  br label %460

460:                                              ; preds = %457, %443
  invoke void @_Z29puppetMasterClearResultsQueuev()
          to label %461 unwind label %453

461:                                              ; preds = %460
  %462 = invoke noundef float @_ZN5Timer5totalEv(ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %463 unwind label %453

463:                                              ; preds = %461
  store float %462, ptr %8, align 4, !tbaa !15
  %464 = invoke noundef float @_ZN5Timer5totalEv(ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %465 unwind label %453

465:                                              ; preds = %463
  store float %464, ptr %9, align 4, !tbaa !15
  %466 = invoke noundef float @_ZN5Timer5totalEv(ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %467 unwind label %453

467:                                              ; preds = %465
  store float %466, ptr %10, align 4, !tbaa !15
  %468 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.34)
          to label %469 unwind label %453

469:                                              ; preds = %467
  %470 = load i32, ptr @lowestCharDiff, align 4, !tbaa !13
  %471 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %468, i32 noundef %470)
          to label %472 unwind label %453

472:                                              ; preds = %469
  %473 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %471, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %474 unwind label %453

474:                                              ; preds = %472
  %475 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.35)
          to label %476 unwind label %453

476:                                              ; preds = %474
  %477 = load i32, ptr %4, align 4, !tbaa !13
  %478 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %475, i32 noundef %477)
          to label %479 unwind label %453

479:                                              ; preds = %476
  %480 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %478, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %481 unwind label %453

481:                                              ; preds = %479
  %482 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %483 unwind label %453

483:                                              ; preds = %481
  %484 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.36)
          to label %485 unwind label %453

485:                                              ; preds = %483
  %486 = load float, ptr %8, align 4, !tbaa !15
  %487 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %484, float noundef %486)
          to label %488 unwind label %453

488:                                              ; preds = %485
  %489 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %487, ptr noundef @.str.37)
          to label %490 unwind label %453

490:                                              ; preds = %488
  %491 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %489, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %492 unwind label %453

492:                                              ; preds = %490
  %493 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.38)
          to label %494 unwind label %453

494:                                              ; preds = %492
  %495 = load float, ptr %9, align 4, !tbaa !15
  %496 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %493, float noundef %495)
          to label %497 unwind label %453

497:                                              ; preds = %494
  %498 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %496, ptr noundef @.str.37)
          to label %499 unwind label %453

499:                                              ; preds = %497
  %500 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %498, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %501 unwind label %453

501:                                              ; preds = %499
  %502 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.39)
          to label %503 unwind label %453

503:                                              ; preds = %501
  %504 = load float, ptr %10, align 4, !tbaa !15
  %505 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %502, float noundef %504)
          to label %506 unwind label %453

506:                                              ; preds = %503
  %507 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %505, ptr noundef @.str.37)
          to label %508 unwind label %453

508:                                              ; preds = %506
  %509 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %507, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %510 unwind label %453

510:                                              ; preds = %508
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #9
  %511 = invoke noundef double @_ZN3Cga32GetCurrentCompatibilityThresholdEv(ptr noundef nonnull align 8 dereferenceable(265) %20)
          to label %512 unwind label %521

512:                                              ; preds = %510
  store double %511, ptr %51, align 8, !tbaa !11
  %513 = invoke noundef i32 @_ZNK3Cga10NumSpeciesEv(ptr noundef nonnull align 8 dereferenceable(265) %20)
          to label %514 unwind label %521

514:                                              ; preds = %512
  store i32 %513, ptr %52, align 4, !tbaa !13
  %515 = load i32, ptr %52, align 4, !tbaa !13
  %516 = icmp slt i32 %515, 100
  br i1 %516, label %517, label %525

517:                                              ; preds = %514
  %518 = load double, ptr %51, align 8, !tbaa !11
  %519 = fsub double %518, 1.000000e-01
  invoke void @_ZN3Cga25SetCompatibilityThresholdEd(ptr noundef nonnull align 8 dereferenceable(265) %20, double noundef %519)
          to label %520 unwind label %521

520:                                              ; preds = %517
  br label %533

521:                                              ; preds = %528, %517, %512, %510
  %522 = landingpad { ptr, i32 }
          cleanup
  %523 = extractvalue { ptr, i32 } %522, 0
  store ptr %523, ptr %16, align 8
  %524 = extractvalue { ptr, i32 } %522, 1
  store i32 %524, ptr %17, align 4
  br label %563

525:                                              ; preds = %514
  %526 = load i32, ptr %52, align 4, !tbaa !13
  %527 = icmp sgt i32 %526, 100
  br i1 %527, label %528, label %532

528:                                              ; preds = %525
  %529 = load double, ptr %51, align 8, !tbaa !11
  %530 = fadd double %529, 1.000000e-01
  invoke void @_ZN3Cga25SetCompatibilityThresholdEd(ptr noundef nonnull align 8 dereferenceable(265) %20, double noundef %530)
          to label %531 unwind label %521

531:                                              ; preds = %528
  br label %532

532:                                              ; preds = %531, %525
  br label %533

533:                                              ; preds = %532, %520
  call void @llvm.lifetime.start.p0(i64 24, ptr %53) #9
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %54) #9
  invoke void @_ZN3Cga16CreatePhenotypesEv(ptr dead_on_unwind writable sret(%"class.std::vector.61") align 8 %54, ptr noundef nonnull align 8 dereferenceable(265) %20)
          to label %534 unwind label %540

534:                                              ; preds = %533
  %535 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIP10CNeuralNetSaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %53, ptr noundef nonnull align 8 dereferenceable(24) %54) #9
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #9
  store i32 0, ptr %55, align 4, !tbaa !13
  br label %536

536:                                              ; preds = %554, %534
  %537 = load i32, ptr %55, align 4, !tbaa !13
  %538 = icmp slt i32 %537, 3000
  br i1 %538, label %544, label %539

539:                                              ; preds = %536
  store i32 18, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  br label %561

540:                                              ; preds = %533
  %541 = landingpad { ptr, i32 }
          cleanup
  %542 = extractvalue { ptr, i32 } %541, 0
  store ptr %542, ptr %16, align 8
  %543 = extractvalue { ptr, i32 } %541, 1
  store i32 %543, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #9
  br label %562

544:                                              ; preds = %536
  %545 = load i32, ptr %55, align 4, !tbaa !13
  %546 = sext i32 %545 to i64
  %547 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP9ShellyBotSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @shenaniganBots, i64 noundef %546) #9
  %548 = load ptr, ptr %547, align 8, !tbaa !19
  %549 = load i32, ptr %55, align 4, !tbaa !13
  %550 = sext i32 %549 to i64
  %551 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP10CNeuralNetSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef %550) #9
  %552 = load ptr, ptr %551, align 8, !tbaa !19
  invoke void @_ZN9ShellyBot14insertNewBrainEP10CNeuralNet(ptr noundef nonnull align 8 dereferenceable(112) %548, ptr noundef %552)
          to label %553 unwind label %557

553:                                              ; preds = %544
  br label %554

554:                                              ; preds = %553
  %555 = load i32, ptr %55, align 4, !tbaa !13
  %556 = add nsw i32 %555, 1
  store i32 %556, ptr %55, align 4, !tbaa !13
  br label %536, !llvm.loop !53

557:                                              ; preds = %544
  %558 = landingpad { ptr, i32 }
          cleanup
  %559 = extractvalue { ptr, i32 } %558, 0
  store ptr %559, ptr %16, align 8
  %560 = extractvalue { ptr, i32 } %558, 1
  store i32 %560, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  br label %562

561:                                              ; preds = %539
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #9
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #9
  br label %569

562:                                              ; preds = %557, %540
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #9
  br label %563

563:                                              ; preds = %562, %521
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  br label %564

564:                                              ; preds = %563, %453
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #9
  br label %565

565:                                              ; preds = %564, %449
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #9
  br label %566

566:                                              ; preds = %565, %445, %427
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  br label %567

567:                                              ; preds = %566, %205
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #9
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #9
  br label %568

568:                                              ; preds = %567, %201
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #9
  br label %577

569:                                              ; preds = %561, %186
  %570 = invoke i32 @nanosleep(ptr noundef @_ZZ15runPuppetMastervE9sleepTime, ptr noundef null)
          to label %571 unwind label %197

571:                                              ; preds = %569
  br label %180, !llvm.loop !54

572:                                              ; preds = %180
  br label %140, !llvm.loop !55

573:                                              ; preds = %147
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #9
  call void @_ZN3CgaD1Ev(ptr noundef nonnull align 8 dereferenceable(265) %20) #9
  call void @llvm.lifetime.end.p0(i64 272, ptr %20) #9
  br label %574

574:                                              ; preds = %573
  %575 = load i32, ptr @chunkCounter, align 4, !tbaa !13
  %576 = add i32 %575, 1
  store i32 %576, ptr @chunkCounter, align 4, !tbaa !13
  br label %58, !llvm.loop !56

577:                                              ; preds = %568, %197, %135, %118
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #9
  call void @_ZN3CgaD1Ev(ptr noundef nonnull align 8 dereferenceable(265) %20) #9
  br label %578

578:                                              ; preds = %577, %114
  call void @llvm.lifetime.end.p0(i64 272, ptr %20) #9
  br label %585

579:                                              ; preds = %58
  %580 = load i8, ptr %15, align 1, !tbaa !17, !range !43, !noundef !44
  %581 = trunc i8 %580 to i1
  br i1 %581, label %582, label %584

582:                                              ; preds = %579
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(248) %13)
          to label %583 unwind label %77

583:                                              ; preds = %582
  store i8 0, ptr %15, align 1, !tbaa !17
  br label %584

584:                                              ; preds = %583, %579
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #9
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %13) #9
  call void @llvm.lifetime.end.p0(i64 512, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %2) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %1) #9
  ret void

585:                                              ; preds = %578, %97, %77
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #9
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %13) #9
  call void @llvm.lifetime.end.p0(i64 512, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %2) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %1) #9
  br label %586

586:                                              ; preds = %585
  %587 = load ptr, ptr %16, align 8
  %588 = load i32, ptr %17, align 4
  %589 = insertvalue { ptr, i32 } poison, ptr %587, 0
  %590 = insertvalue { ptr, i32 } %589, i32 %588, 1
  resume { ptr, i32 } %590
}

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(248)) unnamed_addr #4 align 2

; Function Attrs: nounwind
declare void @srand(i32 noundef) #6

; Function Attrs: nounwind
declare i64 @time(ptr noundef) #6

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN5Timer5resetEv(ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

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

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

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

declare void @_ZN9ShellyBotC1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #3

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #8

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

declare void @_ZN3Cga16CreatePhenotypesEv(ptr dead_on_unwind writable sret(%"class.std::vector.61") align 8, ptr noundef nonnull align 8 dereferenceable(265)) #3

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

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

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

declare void @_ZN9ShellyBot14insertNewBrainEP10CNeuralNet(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef) #3

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

declare void @_Z26puppetMasterClearAllQueuesv() #3

declare noundef i32 @_Z31puppetMasterGetResultsQueueSizev() #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

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

declare noundef zeroext i1 @_Z26puppetMasterGetEvalResultsR17botEvaluationData(ptr noundef nonnull align 8 dereferenceable(24)) #3

declare void @_ZN3Cga15GetSingleGenomeEi(ptr dead_on_unwind writable sret(%class.CGenome) align 8, ptr noundef nonnull align 8 dereferenceable(265), i32 noundef) #3

declare noundef nonnull align 8 dereferenceable(108) ptr @_ZN7CGenomeaSERKS_(ptr noundef nonnull align 8 dereferenceable(108), ptr noundef nonnull align 8 dereferenceable(108)) #3

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7CGenome2IDEv(ptr noundef nonnull align 8 dereferenceable(108)) #0 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(128)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #4

declare noundef zeroext i1 @_ZN7CGenome17WriteGenomeToFileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(108), ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248), ptr noundef, i32 noundef) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: mustprogress uwtable
declare noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv(ptr noundef nonnull align 8 dereferenceable(264)) #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7CGenome10NumNeuronsEv(ptr noundef nonnull align 8 dereferenceable(108)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNK9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEplEl(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) #0 align 2

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

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

declare void @_ZN3Cga5EpochERKSt6vectorIdSaIdEE(ptr dead_on_unwind writable sret(%"class.std::vector.61") align 8, ptr noundef nonnull align 8 dereferenceable(265), ptr noundef nonnull align 8 dereferenceable(24)) #3

declare void @_ZN3Cga35GetBestPhenotypesFromLastGenerationEi(ptr dead_on_unwind writable sret(%"class.std::vector.61") align 8, ptr noundef nonnull align 8 dereferenceable(265), i32 noundef) #3

declare void @_ZN3Cga37ClearBestPhenotypesFromLastGenerationEi(ptr noundef nonnull align 8 dereferenceable(265), i32 noundef) #3

declare void @_Z29puppetMasterClearResultsQueuev() #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN5Timer5totalEv(ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8), float noundef) #4 align 2

declare noundef double @_ZN3Cga32GetCurrentCompatibilityThresholdEv(ptr noundef nonnull align 8 dereferenceable(265)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3Cga10NumSpeciesEv(ptr noundef nonnull align 8 dereferenceable(265)) #0 align 2

declare void @_ZN3Cga25SetCompatibilityThresholdEd(ptr noundef nonnull align 8 dereferenceable(265), double noundef) #3

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(248)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTS8timespec", !7, i64 0, !7, i64 8}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!6, !7, i64 8}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !8, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !8, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"float", !8, i64 0}
!17 = !{!18, !18, i64 0}
!18 = !{!"bool", !8, i64 0}
!19 = !{!20, !20, i64 0}
!20 = !{!"any pointer", !8, i64 0}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = !{!24, !14, i64 0}
!24 = !{!"_ZTS18ShellcodePieceData", !14, i64 0, !25, i64 8, !29, i64 32, !33, i64 56}
!25 = !{!"_ZTSSt6vectorIdSaIdEE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !20, i64 0, !20, i64 8, !20, i64 16}
!29 = !{!"_ZTSSt6vectorIhSaIhEE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !20, i64 0, !20, i64 8, !20, i64 16}
!33 = !{!"_ZTS7CGenome", !14, i64 0, !34, i64 8, !38, i64 32, !20, i64 56, !14, i64 64, !12, i64 72, !12, i64 80, !12, i64 88, !14, i64 96, !14, i64 100, !14, i64 104}
!34 = !{!"_ZTSSt6vectorI11SNeuronGeneSaIS0_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseI11SNeuronGeneSaIS0_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseI11SNeuronGeneSaIS0_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseI11SNeuronGeneSaIS0_EE17_Vector_impl_dataE", !20, i64 0, !20, i64 8, !20, i64 16}
!38 = !{!"_ZTSSt6vectorI9SLinkGeneSaIS0_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseI9SLinkGeneSaIS0_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseI9SLinkGeneSaIS0_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseI9SLinkGeneSaIS0_EE17_Vector_impl_dataE", !20, i64 0, !20, i64 8, !20, i64 16}
!42 = distinct !{!42, !22}
!43 = !{i8 0, i8 2}
!44 = !{}
!45 = !{!46, !18, i64 16}
!46 = !{!"_ZTS17botEvaluationData", !14, i64 0, !14, i64 4, !12, i64 8, !18, i64 16}
!47 = !{!46, !14, i64 0}
!48 = !{!46, !14, i64 4}
!49 = !{!50, !50, i64 0}
!50 = !{!"vtable pointer", !9, i64 0}
!51 = !{!46, !12, i64 8}
!52 = distinct !{!52, !22}
!53 = distinct !{!53, !22}
!54 = distinct !{!54, !22}
!55 = distinct !{!55, !22}
!56 = distinct !{!56, !22}


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

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<ShellyBot *, std::allocator<ShellyBot *>>::_Vector_impl" }
%"struct.std::_Vector_base<ShellyBot *, std::allocator<ShellyBot *>>::_Vector_impl" = type { %"struct.std::_Vector_base<ShellyBot *, std::allocator<ShellyBot *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ShellyBot *, std::allocator<ShellyBot *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<ShellcodePieceData, std::allocator<ShellcodePieceData>>::_Vector_impl" }
%"struct.std::_Vector_base<ShellcodePieceData, std::allocator<ShellcodePieceData>>::_Vector_impl" = type { %"struct.std::_Vector_base<ShellcodePieceData, std::allocator<ShellcodePieceData>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ShellcodePieceData, std::allocator<ShellcodePieceData>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%struct.timespec = type { i64, i64 }
%class.Timer = type { %struct.timeval, %struct.timeval }
%struct.timeval = type { i64, i64 }
%"class.std::basic_ofstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon.60 }
%union.anon.60 = type { i32 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.Cga = type <{ %"class.std::vector.42", %"class.std::vector.42", %"class.std::vector.42", %"class.std::vector.42", %"class.std::vector.42", %"class.std::vector.47", ptr, i32, i32, i32, i32, double, double, i32, [4 x i8], double, %"class.std::vector.52", %"class.std::vector.52", double, i8, i8, [2 x i8], i32, i8, [7 x i8] }>
%"class.std::vector.42" = type { %"struct.std::_Vector_base.43" }
%"struct.std::_Vector_base.43" = type { %"struct.std::_Vector_base<CGenome, std::allocator<CGenome>>::_Vector_impl" }
%"struct.std::_Vector_base<CGenome, std::allocator<CGenome>>::_Vector_impl" = type { %"struct.std::_Vector_base<CGenome, std::allocator<CGenome>>::_Vector_impl_data" }
%"struct.std::_Vector_base<CGenome, std::allocator<CGenome>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.47" = type { %"struct.std::_Vector_base.48" }
%"struct.std::_Vector_base.48" = type { %"struct.std::_Vector_base<CSpecies, std::allocator<CSpecies>>::_Vector_impl" }
%"struct.std::_Vector_base<CSpecies, std::allocator<CSpecies>>::_Vector_impl" = type { %"struct.std::_Vector_base<CSpecies, std::allocator<CSpecies>>::_Vector_impl_data" }
%"struct.std::_Vector_base<CSpecies, std::allocator<CSpecies>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = type { %"struct.std::_Vector_base<SplitDepth, std::allocator<SplitDepth>>::_Vector_impl" }
%"struct.std::_Vector_base<SplitDepth, std::allocator<SplitDepth>>::_Vector_impl" = type { %"struct.std::_Vector_base<SplitDepth, std::allocator<SplitDepth>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SplitDepth, std::allocator<SplitDepth>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.61" = type { %"struct.std::_Vector_base.62" }
%"struct.std::_Vector_base.62" = type { %"struct.std::_Vector_base<CNeuralNet *, std::allocator<CNeuralNet *>>::_Vector_impl" }
%"struct.std::_Vector_base<CNeuralNet *, std::allocator<CNeuralNet *>>::_Vector_impl" = type { %"struct.std::_Vector_base<CNeuralNet *, std::allocator<CNeuralNet *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<CNeuralNet *, std::allocator<CNeuralNet *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.10" = type { i8 }
%struct.botEvaluationData = type { i32, i32, double, i8 }
%class.CGenome = type <{ i32, [4 x i8], %"class.std::vector.18", %"class.std::vector.23", ptr, i32, [4 x i8], double, double, double, i32, i32, i32, [4 x i8] }>
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<SNeuronGene, std::allocator<SNeuronGene>>::_Vector_impl" }
%"struct.std::_Vector_base<SNeuronGene, std::allocator<SNeuronGene>>::_Vector_impl" = type { %"struct.std::_Vector_base<SNeuronGene, std::allocator<SNeuronGene>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SNeuronGene, std::allocator<SNeuronGene>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<SLinkGene, std::allocator<SLinkGene>>::_Vector_impl" }
%"struct.std::_Vector_base<SLinkGene, std::allocator<SLinkGene>>::_Vector_impl" = type { %"struct.std::_Vector_base<SLinkGene, std::allocator<SLinkGene>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SLinkGene, std::allocator<SLinkGene>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::allocator" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.66" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }

@DONE = external dso_local local_unnamed_addr global i8, align 1
@generationCounter = external dso_local local_unnamed_addr global i32, align 4
@chunkCounter = external dso_local local_unnamed_addr global i32, align 4
@numInputs = external dso_local local_unnamed_addr global i32, align 4
@numOutputs = external dso_local local_unnamed_addr global i32, align 4
@shenaniganBots = external dso_local global %"class.std::vector", align 8
@shellcodePieces = external dso_local global %"class.std::vector.3", align 8
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@lowestDiff = external dso_local local_unnamed_addr global double, align 8
@lowestCharDiff = external dso_local local_unnamed_addr global i32, align 4
@maxMatchedChars = external dso_local local_unnamed_addr global i32, align 4
@_ZZ15runPuppetMastervE9sleepTime = external hidden global %struct.timespec, align 8
@.str.18 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #3

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z19setupEvaluationJobsv() local_unnamed_addr #4

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

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #5

declare void @_ZN3CgaC1Eiii(ptr noundef nonnull align 8 dereferenceable(265), i32 noundef, i32 noundef, i32 noundef) unnamed_addr #3

declare i32 @nanosleep(ptr noundef, ptr noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z15runPuppetMasterv() local_unnamed_addr #4 personality ptr @__gxx_personality_v0 {
  %1 = alloca %class.Timer, align 8
  %2 = alloca %class.Timer, align 8
  %3 = alloca %class.Timer, align 8
  %4 = alloca %"class.std::basic_ofstream", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca ptr, align 8
  %7 = alloca %class.Cga, align 8
  %8 = alloca %"class.std::vector.61", align 8
  %9 = alloca %"class.std::vector.61", align 8
  %10 = alloca %"class.std::vector.8", align 8
  %11 = alloca %"class.std::allocator.10", align 1
  %12 = alloca %struct.botEvaluationData, align 8
  %13 = alloca %class.CGenome, align 8
  %14 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator", align 1
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.66", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.66", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %28 = alloca %"class.std::vector.61", align 8
  %29 = alloca %"class.std::vector.61", align 8
  %30 = alloca %"class.std::vector.61", align 8
  %31 = alloca %"class.std::vector.61", align 8
  store i64 0, ptr @_ZZ15runPuppetMastervE9sleepTime, align 8, !tbaa !5
  store i64 100, ptr getelementptr inbounds (i8, ptr @_ZZ15runPuppetMastervE9sleepTime, i64 8), align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %1) #9
  call void @_ZN5TimerC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #9
  call void @_ZN5TimerC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #9
  call void @_ZN5TimerC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3)
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %4) #9
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(248) %4)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  %32 = call i64 @time(ptr noundef null) #9
  %33 = trunc i64 %32 to i32
  call void @srand(i32 noundef %33) #9
  store i32 0, ptr @chunkCounter, align 4, !tbaa !11
  %34 = call noundef i64 @_ZNKSt6vectorI18ShellcodePieceDataSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) @shellcodePieces) #9
  %.not347 = icmp eq i64 %34, 0
  br i1 %.not347, label %._crit_edge345.thread, label %.lr.ph344

.lr.ph344:                                        ; preds = %0
  %35 = getelementptr inbounds i8, ptr %12, i64 16
  %36 = getelementptr inbounds i8, ptr %12, i64 8
  %37 = getelementptr inbounds i8, ptr %12, i64 4
  %38 = getelementptr inbounds i8, ptr %14, i64 16
  br label %39

39:                                               ; preds = %.lr.ph344, %._crit_edge340
  %.073342 = phi i8 [ 0, %.lr.ph344 ], [ %.174.lcssa, %._crit_edge340 ]
  %40 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.18)
          to label %41 unwind label %.loopexit122

41:                                               ; preds = %39
  %42 = load i32, ptr @chunkCounter, align 4, !tbaa !11
  %43 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %40, i32 noundef %42)
          to label %44 unwind label %.loopexit122

44:                                               ; preds = %41
  %45 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %46 unwind label %.loopexit122

46:                                               ; preds = %44
  store i32 1, ptr @generationCounter, align 4, !tbaa !11
  store double 3.000000e+02, ptr @lowestDiff, align 8, !tbaa !13
  store i32 2000, ptr @lowestCharDiff, align 4, !tbaa !11
  store i32 0, ptr @maxMatchedChars, align 4, !tbaa !11
  %47 = call noundef float @_ZN5Timer5resetEv(ptr noundef nonnull align 8 dereferenceable(32) %2)
  call void @_ZNSt6vectorIP9ShellyBotSaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) @shenaniganBots) #9
  br label %52

48:                                               ; preds = %56
  %49 = load i32, ptr @chunkCounter, align 4, !tbaa !11
  %50 = zext i32 %49 to i64
  %51 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZNSt6vectorI18ShellcodePieceDataSaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) @shellcodePieces, i64 noundef %50)
          to label %63 unwind label %.loopexit122

.loopexit122:                                     ; preds = %39, %41, %44, %48
  %lpad.loopexit124 = landingpad { ptr, i32 }
          cleanup
  br label %378

.loopexit.split-lp123:                            ; preds = %377
  %lpad.loopexit.split-lp125 = landingpad { ptr, i32 }
          cleanup
  br label %378

52:                                               ; preds = %46, %56
  %.052324 = phi i32 [ 0, %46 ], [ %57, %56 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #9
  %53 = invoke noalias noundef nonnull dereferenceable(112) ptr @_Znwm(i64 noundef 112) #10
          to label %54 unwind label %58

54:                                               ; preds = %52
  invoke void @_ZN9ShellyBotC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %53)
          to label %55 unwind label %60

55:                                               ; preds = %54
  store ptr %53, ptr %6, align 8, !tbaa !15
  invoke void @_ZNSt6vectorIP9ShellyBotSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) @shenaniganBots, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %56 unwind label %58

56:                                               ; preds = %55
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  %57 = add nuw nsw i32 %.052324, 1
  %exitcond.not = icmp eq i32 %57, 3000
  br i1 %exitcond.not, label %48, label %52, !llvm.loop !17

58:                                               ; preds = %55, %52
  %59 = landingpad { ptr, i32 }
          cleanup
  br label %62

60:                                               ; preds = %54
  %61 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %53, i64 noundef 112) #11
  br label %62

62:                                               ; preds = %60, %58
  %.pn106 = phi { ptr, i32 } [ %59, %58 ], [ %61, %60 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  br label %378

63:                                               ; preds = %48
  %64 = load i32, ptr %51, align 8, !tbaa !19
  store i32 %64, ptr @numOutputs, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %7) #9
  %65 = load i32, ptr @numInputs, align 4, !tbaa !11
  invoke void @_ZN3CgaC1Eiii(ptr noundef nonnull align 8 dereferenceable(265) %7, i32 noundef 3000, i32 noundef %65, i32 noundef %64)
          to label %66 unwind label %71

66:                                               ; preds = %63
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #9
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #9
  invoke void @_ZN3Cga16CreatePhenotypesEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.61") align 8 %9, ptr noundef nonnull align 8 dereferenceable(265) %7)
          to label %67 unwind label %73

67:                                               ; preds = %66
  %68 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIP10CNeuralNetSaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #9
  br label %75

.preheader121:                                    ; preds = %80
  %69 = load i8, ptr @DONE, align 1, !tbaa !38, !range !40, !noundef !41
  %70 = trunc nuw i8 %69 to i1
  br i1 %70, label %._crit_edge340, label %.lr.ph339

71:                                               ; preds = %63
  %72 = landingpad { ptr, i32 }
          cleanup
  br label %375

73:                                               ; preds = %66
  %74 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #9
  br label %374

75:                                               ; preds = %67, %80
  %indvars.iv = phi i64 [ 0, %67 ], [ %indvars.iv.next, %80 ]
  %76 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP9ShellyBotSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @shenaniganBots, i64 noundef %indvars.iv) #9
  %77 = load ptr, ptr %76, align 8, !tbaa !15
  %78 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP10CNeuralNetSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %indvars.iv) #9
  %79 = load ptr, ptr %78, align 8, !tbaa !15
  invoke void @_ZN9ShellyBot14insertNewBrainEP10CNeuralNet(ptr noundef nonnull align 8 dereferenceable(112) %77, ptr noundef %79)
          to label %80 unwind label %81

80:                                               ; preds = %75
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond446.not = icmp eq i64 %indvars.iv.next, 3000
  br i1 %exitcond446.not, label %.preheader121, label %75, !llvm.loop !42

81:                                               ; preds = %75
  %82 = landingpad { ptr, i32 }
          cleanup
  br label %374

.loopexit115:                                     ; preds = %.preheader114
  %83 = load i8, ptr @DONE, align 1, !tbaa !38, !range !40, !noundef !41
  %84 = trunc nuw i8 %83 to i1
  %85 = select i1 %84, i1 true, i1 %.181
  br i1 %85, label %._crit_edge340, label %.lr.ph339, !llvm.loop !43

.lr.ph339:                                        ; preds = %.preheader121, %.loopexit115
  %.040338 = phi double [ %.141, %.loopexit115 ], [ 0.000000e+00, %.preheader121 ]
  %.042337 = phi i32 [ %.143, %.loopexit115 ], [ 0, %.preheader121 ]
  %.174336 = phi i8 [ %.275, %.loopexit115 ], [ %.073342, %.preheader121 ]
  invoke void @_Z26puppetMasterClearAllQueuesv()
          to label %86 unwind label %.loopexit.split-lp117

86:                                               ; preds = %.lr.ph339
  %87 = call noundef float @_ZN5Timer5resetEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %88 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %89 unwind label %.loopexit.split-lp117

89:                                               ; preds = %86
  %90 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %88, ptr noundef nonnull @.str.19)
          to label %91 unwind label %.loopexit.split-lp117

91:                                               ; preds = %89
  %92 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %93 unwind label %.loopexit.split-lp117

93:                                               ; preds = %91
  %94 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.20)
          to label %95 unwind label %.loopexit.split-lp117

95:                                               ; preds = %93
  %96 = load i32, ptr @chunkCounter, align 4, !tbaa !11
  %97 = add i32 %96, 1
  %98 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %94, i32 noundef %97)
          to label %99 unwind label %.loopexit.split-lp117

99:                                               ; preds = %95
  %100 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull @.str.21)
          to label %101 unwind label %.loopexit.split-lp117

101:                                              ; preds = %99
  %102 = call noundef i64 @_ZNKSt6vectorI18ShellcodePieceDataSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) @shellcodePieces) #9
  %103 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %100, i64 noundef %102)
          to label %104 unwind label %.loopexit.split-lp117

104:                                              ; preds = %101
  %105 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %103, ptr noundef nonnull @.str.22)
          to label %106 unwind label %.loopexit.split-lp117

106:                                              ; preds = %104
  %107 = load i32, ptr @generationCounter, align 4, !tbaa !11
  %108 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %105, i32 noundef %107)
          to label %109 unwind label %.loopexit.split-lp117

109:                                              ; preds = %106
  %110 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %111 unwind label %.loopexit.split-lp117

111:                                              ; preds = %109
  %112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %113 unwind label %.loopexit.split-lp117

113:                                              ; preds = %111
  invoke void @_Z19setupEvaluationJobsv()
          to label %.preheader114 unwind label %.loopexit.split-lp117

.preheader114:                                    ; preds = %113, %367
  %.181 = phi i1 [ %.484, %367 ], [ false, %113 ]
  %.275 = phi i8 [ %.679, %367 ], [ %.174336, %113 ]
  %.143 = phi i32 [ %.345, %367 ], [ %.042337, %113 ]
  %.141 = phi double [ %.3, %367 ], [ %.040338, %113 ]
  %.037 = phi i1 [ %117, %367 ], [ false, %113 ]
  br i1 %.037, label %.loopexit115, label %114

114:                                              ; preds = %.preheader114
  %115 = invoke noundef i32 @_Z31puppetMasterGetResultsQueueSizev()
          to label %116 unwind label %.loopexit116

116:                                              ; preds = %114
  %117 = icmp eq i32 %115, 3000
  br i1 %117, label %118, label %367

118:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #9
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 3000, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %119 unwind label %122

119:                                              ; preds = %118
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #9
  %120 = invoke noundef i32 @_Z31puppetMasterGetResultsQueueSizev()
          to label %.preheader unwind label %124

.preheader:                                       ; preds = %119
  %121 = icmp sgt i32 %120, 0
  br i1 %121, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %273, %.thread, %.preheader
  %.282.lcssa = phi i1 [ %.181, %.preheader ], [ true, %.thread ], [ %.181, %273 ]
  %.376.lcssa = phi i8 [ %.275, %.preheader ], [ %.477, %.thread ], [ %.275, %273 ]
  %.038.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %.038331, %.thread ], [ %.139, %273 ]
  invoke void @_ZN3Cga5EpochERKSt6vectorIdSaIdEE(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.61") align 8 %28, ptr noundef nonnull align 8 dereferenceable(265) %7, ptr noundef nonnull align 8 dereferenceable(24) %10)
          to label %282 unwind label %289

.loopexit116:                                     ; preds = %114, %367
  %lpad.loopexit118 = landingpad { ptr, i32 }
          cleanup
  br label %374

.loopexit.split-lp117:                            ; preds = %.lr.ph339, %86, %89, %91, %93, %95, %99, %101, %104, %106, %109, %111, %113
  %lpad.loopexit.split-lp119 = landingpad { ptr, i32 }
          cleanup
  br label %374

122:                                              ; preds = %118
  %123 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #9
  br label %366

124:                                              ; preds = %119
  %125 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

.lr.ph:                                           ; preds = %.preheader, %273
  %.038331 = phi double [ %.139, %273 ], [ 0.000000e+00, %.preheader ]
  %.046330 = phi i32 [ %276, %273 ], [ 0, %.preheader ]
  %126 = invoke noundef zeroext i1 @_Z26puppetMasterGetEvalResultsR17botEvaluationData(ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %127 unwind label %.loopexit.loopexit

127:                                              ; preds = %.lr.ph
  br i1 %126, label %133, label %128

128:                                              ; preds = %127
  %129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.23)
          to label %130 unwind label %.loopexit.split-lp

130:                                              ; preds = %128
  %131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %132 unwind label %.loopexit.split-lp

132:                                              ; preds = %130
  call void @exit(i32 noundef 1) #12
  unreachable

.loopexit.loopexit:                               ; preds = %.lr.ph
  %lpad.loopexit456 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

.loopexit.loopexit.split-lp:                      ; preds = %149, %138, %136
  %lpad.loopexit.split-lp457 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

.loopexit.split-lp:                               ; preds = %128, %130, %157, %159
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

133:                                              ; preds = %127
  %134 = load i8, ptr %35, align 8, !tbaa !44, !range !40, !noundef !41
  %135 = trunc nuw i8 %134 to i1
  br i1 %135, label %136, label %259

136:                                              ; preds = %133
  %137 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.24)
          to label %138 unwind label %.loopexit.loopexit.split-lp

138:                                              ; preds = %136
  %139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %140 unwind label %.loopexit.loopexit.split-lp

140:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %13) #9
  %141 = load i32, ptr %12, align 8, !tbaa !46
  invoke void @_ZN3Cga15GetSingleGenomeEi(ptr dead_on_unwind nonnull writable sret(%class.CGenome) align 8 %13, ptr noundef nonnull align 8 dereferenceable(265) %7, i32 noundef %141)
          to label %142 unwind label %162

142:                                              ; preds = %140
  %143 = load i32, ptr @chunkCounter, align 4, !tbaa !11
  %144 = zext i32 %143 to i64
  %145 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZNSt6vectorI18ShellcodePieceDataSaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) @shellcodePieces, i64 noundef %144)
          to label %146 unwind label %164

146:                                              ; preds = %142
  %147 = getelementptr inbounds i8, ptr %145, i64 56
  %148 = invoke noundef nonnull align 8 dereferenceable(108) ptr @_ZN7CGenomeaSERKS_(ptr noundef nonnull align 8 dereferenceable(108) %147, ptr noundef nonnull align 8 dereferenceable(108) %13)
          to label %149 unwind label %164

149:                                              ; preds = %146
  call void @_ZN7CGenomeD1Ev(ptr noundef nonnull align 8 dereferenceable(108) %13) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %13) #9
  %150 = load i32, ptr @chunkCounter, align 4, !tbaa !11
  %151 = zext i32 %150 to i64
  %152 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZNSt6vectorI18ShellcodePieceDataSaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) @shellcodePieces, i64 noundef %151)
          to label %153 unwind label %.loopexit.loopexit.split-lp

153:                                              ; preds = %149
  %154 = getelementptr inbounds i8, ptr %152, i64 56
  %155 = call noundef i32 @_ZNK7CGenome2IDEv(ptr noundef nonnull align 8 dereferenceable(108) %154)
  %156 = load i32, ptr %37, align 4, !tbaa !47
  %.not93 = icmp eq i32 %155, %156
  br i1 %.not93, label %167, label %157

157:                                              ; preds = %153
  %158 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.25)
          to label %159 unwind label %.loopexit.split-lp

159:                                              ; preds = %157
  %160 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %158, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %161 unwind label %.loopexit.split-lp

161:                                              ; preds = %159
  call void @exit(i32 noundef 1) #12
  unreachable

162:                                              ; preds = %140
  %163 = landingpad { ptr, i32 }
          cleanup
  br label %166

164:                                              ; preds = %146, %142
  %165 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7CGenomeD1Ev(ptr noundef nonnull align 8 dereferenceable(108) %13) #9
  br label %166

166:                                              ; preds = %164, %162
  %.pn91 = phi { ptr, i32 } [ %165, %164 ], [ %163, %162 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %13) #9
  br label %.loopexit

167:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %14) #9
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %14)
          to label %168 unwind label %192

168:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %169 unwind label %194

169:                                              ; preds = %168
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #9
  %170 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull @.str.27)
          to label %171 unwind label %.loopexit109

171:                                              ; preds = %169
  %172 = load i32, ptr @chunkCounter, align 4, !tbaa !11
  %173 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %170, i32 noundef %172)
          to label %174 unwind label %.loopexit109

174:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(128) %14)
          to label %175 unwind label %196

175:                                              ; preds = %174
  %176 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %177 unwind label %198

177:                                              ; preds = %175
  %178 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  %179 = load i32, ptr @chunkCounter, align 4, !tbaa !11
  %180 = zext i32 %179 to i64
  %181 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZNSt6vectorI18ShellcodePieceDataSaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) @shellcodePieces, i64 noundef %180)
          to label %182 unwind label %.loopexit109

182:                                              ; preds = %177
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %183 unwind label %.loopexit109

183:                                              ; preds = %182
  %184 = getelementptr inbounds i8, ptr %181, i64 56
  %185 = invoke noundef zeroext i1 @_ZN7CGenome17WriteGenomeToFileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(108) %184, ptr noundef nonnull %21)
          to label %186 unwind label %200

186:                                              ; preds = %183
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  br i1 %185, label %202, label %187

187:                                              ; preds = %186
  %188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.28)
          to label %189 unwind label %.loopexit.split-lp110

189:                                              ; preds = %187
  %190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %191 unwind label %.loopexit.split-lp110

191:                                              ; preds = %189
  call void @exit(i32 noundef 1) #12
  unreachable

192:                                              ; preds = %167
  %193 = landingpad { ptr, i32 }
          cleanup
  br label %258

194:                                              ; preds = %168
  %195 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #9
  br label %257

.loopexit109:                                     ; preds = %169, %171, %177, %182, %204, %206, %208, %222, %225, %227, %229, %231, %234, %236, %240, %244, %246, %250, %254
  %lpad.loopexit111 = landingpad { ptr, i32 }
          cleanup
  br label %256

.loopexit.split-lp110:                            ; preds = %187, %189, %215, %217, %219
  %lpad.loopexit.split-lp112 = landingpad { ptr, i32 }
          cleanup
  br label %256

196:                                              ; preds = %174
  %197 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #9
  br label %256

198:                                              ; preds = %175
  %199 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  br label %256

200:                                              ; preds = %183
  %201 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  br label %256

202:                                              ; preds = %186
  %203 = trunc nuw i8 %.275 to i1
  br i1 %203, label %222, label %204

204:                                              ; preds = %202
  %205 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.29)
          to label %206 unwind label %.loopexit109

206:                                              ; preds = %204
  %207 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248) %4, ptr noundef %207, i32 noundef 16)
          to label %208 unwind label %.loopexit109

208:                                              ; preds = %206
  %209 = load ptr, ptr %4, align 8, !tbaa !48
  %210 = getelementptr i8, ptr %209, i64 -24
  %211 = load i64, ptr %210, align 8
  %212 = getelementptr inbounds i8, ptr %4, i64 %211
  %213 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv(ptr noundef nonnull align 8 dereferenceable(264) %212)
          to label %214 unwind label %.loopexit109

214:                                              ; preds = %208
  br i1 %213, label %215, label %222

215:                                              ; preds = %214
  %216 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.30)
          to label %217 unwind label %.loopexit.split-lp110

217:                                              ; preds = %215
  %218 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %216, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %219 unwind label %.loopexit.split-lp110

219:                                              ; preds = %217
  %220 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %221 unwind label %.loopexit.split-lp110

221:                                              ; preds = %219
  call void @exit(i32 noundef 1) #12
  unreachable

222:                                              ; preds = %214, %202
  %.477 = phi i8 [ %.275, %202 ], [ 1, %214 ]
  %223 = load i32, ptr @chunkCounter, align 4, !tbaa !11
  %224 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %4, i32 noundef %223)
          to label %225 unwind label %.loopexit109

225:                                              ; preds = %222
  %226 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %224, ptr noundef nonnull @.str.31)
          to label %227 unwind label %.loopexit109

227:                                              ; preds = %225
  %228 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %226, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %229 unwind label %.loopexit109

229:                                              ; preds = %227
  %230 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %228, ptr noundef nonnull @.str.32)
          to label %231 unwind label %.loopexit109

231:                                              ; preds = %229
  %232 = load i32, ptr %37, align 4, !tbaa !47
  %233 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %230, i32 noundef %232)
          to label %234 unwind label %.loopexit109

234:                                              ; preds = %231
  %235 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %233, ptr noundef nonnull @.str.31)
          to label %236 unwind label %.loopexit109

236:                                              ; preds = %234
  %237 = load i32, ptr @chunkCounter, align 4, !tbaa !11
  %238 = zext i32 %237 to i64
  %239 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZNSt6vectorI18ShellcodePieceDataSaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) @shellcodePieces, i64 noundef %238)
          to label %240 unwind label %.loopexit109

240:                                              ; preds = %236
  %241 = getelementptr inbounds i8, ptr %239, i64 56
  %242 = call noundef i32 @_ZNK7CGenome2IDEv(ptr noundef nonnull align 8 dereferenceable(108) %241)
  %243 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %235, i32 noundef %242)
          to label %244 unwind label %.loopexit109

244:                                              ; preds = %240
  %245 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %243, ptr noundef nonnull @.str.33)
          to label %246 unwind label %.loopexit109

246:                                              ; preds = %244
  %247 = load i32, ptr @chunkCounter, align 4, !tbaa !11
  %248 = zext i32 %247 to i64
  %249 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZNSt6vectorI18ShellcodePieceDataSaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) @shellcodePieces, i64 noundef %248)
          to label %250 unwind label %.loopexit109

250:                                              ; preds = %246
  %251 = getelementptr inbounds i8, ptr %249, i64 56
  %252 = call noundef i32 @_ZNK7CGenome10NumNeuronsEv(ptr noundef nonnull align 8 dereferenceable(108) %251)
  %253 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %245, i32 noundef %252)
          to label %254 unwind label %.loopexit109

254:                                              ; preds = %250
  %255 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %253, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.thread unwind label %.loopexit109

.thread:                                          ; preds = %254
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %14) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %14) #9
  br label %._crit_edge

256:                                              ; preds = %.loopexit109, %.loopexit.split-lp110, %200, %198, %196
  %.pn94 = phi { ptr, i32 } [ %201, %200 ], [ %199, %198 ], [ %197, %196 ], [ %lpad.loopexit111, %.loopexit109 ], [ %lpad.loopexit.split-lp112, %.loopexit.split-lp110 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  br label %257

257:                                              ; preds = %256, %194
  %.pn94.pn = phi { ptr, i32 } [ %.pn94, %256 ], [ %195, %194 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %14) #9
  br label %258

258:                                              ; preds = %257, %192
  %.pn94.pn.pn = phi { ptr, i32 } [ %.pn94.pn, %257 ], [ %193, %192 ]
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %14) #9
  br label %.loopexit

259:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #9
  %260 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  store ptr %260, ptr %24, align 8
  %261 = load i32, ptr %12, align 8, !tbaa !46
  %262 = zext i32 %261 to i64
  %263 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %24, i64 noundef %262) #9
  store ptr %263, ptr %23, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEC2IPdvEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #9
  %264 = load ptr, ptr %22, align 8
  %265 = invoke ptr @_ZNSt6vectorIdSaIdEE5eraseEN9__gnu_cxx17__normal_iteratorIPKdS1_EE(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr %264)
          to label %266 unwind label %278

266:                                              ; preds = %259
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #9
  %267 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  store ptr %267, ptr %27, align 8
  %268 = load i32, ptr %12, align 8, !tbaa !46
  %269 = zext i32 %268 to i64
  %270 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %27, i64 noundef %269) #9
  store ptr %270, ptr %26, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEC2IPdvEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  %271 = load ptr, ptr %25, align 8
  %272 = invoke ptr @_ZNSt6vectorIdSaIdEE6insertEN9__gnu_cxx17__normal_iteratorIPKdS1_EERS4_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr %271, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %273 unwind label %280

273:                                              ; preds = %266
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  %274 = load double, ptr %36, align 8, !tbaa !50
  %275 = fcmp ogt double %274, %.038331
  %.139 = select i1 %275, double %274, double %.038331
  %276 = add nuw nsw i32 %.046330, 1
  %277 = icmp slt i32 %276, %120
  br i1 %277, label %.lr.ph, label %._crit_edge, !llvm.loop !51

278:                                              ; preds = %259
  %279 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  br label %.loopexit

280:                                              ; preds = %266
  %281 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  br label %.loopexit

282:                                              ; preds = %._crit_edge
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #9
  invoke void @_ZN3Cga35GetBestPhenotypesFromLastGenerationEi(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.61") align 8 %29, ptr noundef nonnull align 8 dereferenceable(265) %7, i32 noundef 5)
          to label %283 unwind label %291

283:                                              ; preds = %282
  invoke void @_ZN3Cga37ClearBestPhenotypesFromLastGenerationEi(ptr noundef nonnull align 8 dereferenceable(265) %7, i32 noundef 5)
          to label %284 unwind label %293

284:                                              ; preds = %283
  %285 = load i32, ptr @generationCounter, align 4, !tbaa !11
  %286 = add i32 %285, 1
  store i32 %286, ptr @generationCounter, align 4, !tbaa !11
  %287 = fcmp ogt double %.038.lcssa, %.141
  %288 = add nsw i32 %.143, 1
  %.244 = select i1 %287, i32 0, i32 %288
  %.2 = select i1 %287, double %.038.lcssa, double %.141
  invoke void @_Z29puppetMasterClearResultsQueuev()
          to label %295 unwind label %293

289:                                              ; preds = %._crit_edge
  %290 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

291:                                              ; preds = %282
  %292 = landingpad { ptr, i32 }
          cleanup
  br label %365

293:                                              ; preds = %338, %336, %334, %332, %330, %328, %326, %324, %322, %320, %318, %316, %314, %312, %310, %308, %306, %303, %301, %299, %297, %295, %284, %283
  %294 = landingpad { ptr, i32 }
          cleanup
  br label %364

295:                                              ; preds = %284
  %296 = invoke noundef float @_ZN5Timer5totalEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %297 unwind label %293

297:                                              ; preds = %295
  %298 = invoke noundef float @_ZN5Timer5totalEv(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %299 unwind label %293

299:                                              ; preds = %297
  %300 = invoke noundef float @_ZN5Timer5totalEv(ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %301 unwind label %293

301:                                              ; preds = %299
  %302 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.34)
          to label %303 unwind label %293

303:                                              ; preds = %301
  %304 = load i32, ptr @lowestCharDiff, align 4, !tbaa !11
  %305 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %302, i32 noundef %304)
          to label %306 unwind label %293

306:                                              ; preds = %303
  %307 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %305, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %308 unwind label %293

308:                                              ; preds = %306
  %309 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.35)
          to label %310 unwind label %293

310:                                              ; preds = %308
  %311 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %309, i32 noundef %.244)
          to label %312 unwind label %293

312:                                              ; preds = %310
  %313 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %311, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %314 unwind label %293

314:                                              ; preds = %312
  %315 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %316 unwind label %293

316:                                              ; preds = %314
  %317 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.36)
          to label %318 unwind label %293

318:                                              ; preds = %316
  %319 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %317, float noundef %296)
          to label %320 unwind label %293

320:                                              ; preds = %318
  %321 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %319, ptr noundef nonnull @.str.37)
          to label %322 unwind label %293

322:                                              ; preds = %320
  %323 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %321, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %324 unwind label %293

324:                                              ; preds = %322
  %325 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.38)
          to label %326 unwind label %293

326:                                              ; preds = %324
  %327 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %325, float noundef %298)
          to label %328 unwind label %293

328:                                              ; preds = %326
  %329 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull @.str.37)
          to label %330 unwind label %293

330:                                              ; preds = %328
  %331 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %329, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %332 unwind label %293

332:                                              ; preds = %330
  %333 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.39)
          to label %334 unwind label %293

334:                                              ; preds = %332
  %335 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %333, float noundef %300)
          to label %336 unwind label %293

336:                                              ; preds = %334
  %337 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %335, ptr noundef nonnull @.str.37)
          to label %338 unwind label %293

338:                                              ; preds = %336
  %339 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %337, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %340 unwind label %293

340:                                              ; preds = %338
  %341 = invoke noundef double @_ZN3Cga32GetCurrentCompatibilityThresholdEv(ptr noundef nonnull align 8 dereferenceable(265) %7)
          to label %342 unwind label %345

342:                                              ; preds = %340
  %343 = call noundef i32 @_ZNK3Cga10NumSpeciesEv(ptr noundef nonnull align 8 dereferenceable(265) %7)
  %344 = icmp slt i32 %343, 100
  br i1 %344, label %.invoke, label %347

345:                                              ; preds = %.invoke, %340
  %346 = landingpad { ptr, i32 }
          cleanup
  br label %364

347:                                              ; preds = %342
  %.not = icmp eq i32 %343, 100
  br i1 %.not, label %349, label %.invoke

.invoke:                                          ; preds = %347, %342
  %.sink = phi double [ -1.000000e-01, %342 ], [ 1.000000e-01, %347 ]
  %348 = fadd double %341, %.sink
  invoke void @_ZN3Cga25SetCompatibilityThresholdEd(ptr noundef nonnull align 8 dereferenceable(265) %7, double noundef %348)
          to label %349 unwind label %345

349:                                              ; preds = %.invoke, %347
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %30) #9
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #9
  invoke void @_ZN3Cga16CreatePhenotypesEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.61") align 8 %31, ptr noundef nonnull align 8 dereferenceable(265) %7)
          to label %350 unwind label %353

350:                                              ; preds = %349
  %351 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIP10CNeuralNetSaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull align 8 dereferenceable(24) %31) #9
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #9
  br label %355

352:                                              ; preds = %360
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #9
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #9
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #9
  br label %367

353:                                              ; preds = %349
  %354 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #9
  br label %363

355:                                              ; preds = %350, %360
  %indvars.iv447 = phi i64 [ 0, %350 ], [ %indvars.iv.next448, %360 ]
  %356 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP9ShellyBotSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @shenaniganBots, i64 noundef %indvars.iv447) #9
  %357 = load ptr, ptr %356, align 8, !tbaa !15
  %358 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP10CNeuralNetSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %indvars.iv447) #9
  %359 = load ptr, ptr %358, align 8, !tbaa !15
  invoke void @_ZN9ShellyBot14insertNewBrainEP10CNeuralNet(ptr noundef nonnull align 8 dereferenceable(112) %357, ptr noundef %359)
          to label %360 unwind label %361

360:                                              ; preds = %355
  %indvars.iv.next448 = add nuw nsw i64 %indvars.iv447, 1
  %exitcond450.not = icmp eq i64 %indvars.iv.next448, 3000
  br i1 %exitcond450.not, label %352, label %355, !llvm.loop !52

361:                                              ; preds = %355
  %362 = landingpad { ptr, i32 }
          cleanup
  br label %363

363:                                              ; preds = %361, %353
  %.pn = phi { ptr, i32 } [ %362, %361 ], [ %354, %353 ]
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #9
  br label %364

364:                                              ; preds = %345, %363, %293
  %.pn.pn.pn = phi { ptr, i32 } [ %294, %293 ], [ %.pn, %363 ], [ %346, %345 ]
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #9
  br label %365

365:                                              ; preds = %364, %291
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %364 ], [ %292, %291 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #9
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %.loopexit.loopexit.split-lp, %.loopexit.split-lp, %289, %365, %280, %278, %258, %166, %124
  %.pn98.pn.pn = phi { ptr, i32 } [ %125, %124 ], [ %.pn.pn.pn.pn, %365 ], [ %290, %289 ], [ %.pn94.pn.pn, %258 ], [ %.pn91, %166 ], [ %281, %280 ], [ %279, %278 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit456, %.loopexit.loopexit ], [ %lpad.loopexit.split-lp457, %.loopexit.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #9
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  br label %366

366:                                              ; preds = %.loopexit, %122
  %.pn98.pn.pn.pn = phi { ptr, i32 } [ %.pn98.pn.pn, %.loopexit ], [ %123, %122 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #9
  br label %374

367:                                              ; preds = %352, %116
  %.484 = phi i1 [ %.282.lcssa, %352 ], [ %.181, %116 ]
  %.679 = phi i8 [ %.376.lcssa, %352 ], [ %.275, %116 ]
  %.345 = phi i32 [ %.244, %352 ], [ %.143, %116 ]
  %.3 = phi double [ %.2, %352 ], [ %.141, %116 ]
  %368 = invoke i32 @nanosleep(ptr noundef nonnull @_ZZ15runPuppetMastervE9sleepTime, ptr noundef null)
          to label %.preheader114 unwind label %.loopexit116, !llvm.loop !53

._crit_edge340:                                   ; preds = %.loopexit115, %.preheader121
  %.174.lcssa = phi i8 [ %.073342, %.preheader121 ], [ %.275, %.loopexit115 ]
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #9
  call void @_ZN3CgaD1Ev(ptr noundef nonnull align 8 dereferenceable(265) %7) #9
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %7) #9
  %369 = load i32, ptr @chunkCounter, align 4, !tbaa !11
  %370 = add i32 %369, 1
  store i32 %370, ptr @chunkCounter, align 4, !tbaa !11
  %371 = zext i32 %370 to i64
  %372 = call noundef i64 @_ZNKSt6vectorI18ShellcodePieceDataSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) @shellcodePieces) #9
  %373 = icmp ugt i64 %372, %371
  br i1 %373, label %39, label %._crit_edge345, !llvm.loop !54

374:                                              ; preds = %.loopexit116, %.loopexit.split-lp117, %366, %81, %73
  %.pn103 = phi { ptr, i32 } [ %82, %81 ], [ %.pn98.pn.pn.pn, %366 ], [ %74, %73 ], [ %lpad.loopexit118, %.loopexit116 ], [ %lpad.loopexit.split-lp119, %.loopexit.split-lp117 ]
  call void @_ZNSt6vectorIP10CNeuralNetSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #9
  call void @_ZN3CgaD1Ev(ptr noundef nonnull align 8 dereferenceable(265) %7) #9
  br label %375

375:                                              ; preds = %374, %71
  %.pn103.pn = phi { ptr, i32 } [ %.pn103, %374 ], [ %72, %71 ]
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %7) #9
  br label %378

._crit_edge345:                                   ; preds = %._crit_edge340
  %376 = trunc nuw i8 %.174.lcssa to i1
  br i1 %376, label %377, label %._crit_edge345.thread

377:                                              ; preds = %._crit_edge345
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(248) %4)
          to label %._crit_edge345.thread unwind label %.loopexit.split-lp123

._crit_edge345.thread:                            ; preds = %0, %377, %._crit_edge345
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #9
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %4) #9
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %4) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %1) #9
  ret void

378:                                              ; preds = %.loopexit122, %.loopexit.split-lp123, %375, %62
  %.pn106.pn = phi { ptr, i32 } [ %.pn106, %62 ], [ %.pn103.pn, %375 ], [ %lpad.loopexit124, %.loopexit122 ], [ %lpad.loopexit.split-lp125, %.loopexit.split-lp123 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #9
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %4) #9
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %4) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %1) #9
  resume { ptr, i32 } %.pn106.pn
}

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(248)) unnamed_addr #4 align 2

; Function Attrs: nounwind
declare void @srand(i32 noundef) local_unnamed_addr #6

; Function Attrs: nounwind
declare i64 @time(ptr noundef) local_unnamed_addr #6

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN5Timer5resetEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

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

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

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

declare void @_ZN9ShellyBotC1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #3

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #8

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

declare void @_ZN3Cga16CreatePhenotypesEv(ptr dead_on_unwind writable sret(%"class.std::vector.61") align 8, ptr noundef nonnull align 8 dereferenceable(265)) local_unnamed_addr #3

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

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

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

declare void @_ZN9ShellyBot14insertNewBrainEP10CNeuralNet(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef) local_unnamed_addr #3

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

declare void @_Z26puppetMasterClearAllQueuesv() local_unnamed_addr #3

declare noundef i32 @_Z31puppetMasterGetResultsQueueSizev() local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

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

declare noundef zeroext i1 @_Z26puppetMasterGetEvalResultsR17botEvaluationData(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

declare void @_ZN3Cga15GetSingleGenomeEi(ptr dead_on_unwind writable sret(%class.CGenome) align 8, ptr noundef nonnull align 8 dereferenceable(265), i32 noundef) local_unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(108) ptr @_ZN7CGenomeaSERKS_(ptr noundef nonnull align 8 dereferenceable(108), ptr noundef nonnull align 8 dereferenceable(108)) local_unnamed_addr #3

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7CGenome2IDEv(ptr noundef nonnull align 8 dereferenceable(108)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4

declare noundef zeroext i1 @_ZN7CGenome17WriteGenomeToFileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(108), ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248), ptr noundef, i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv(ptr noundef nonnull align 8 dereferenceable(264)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7CGenome10NumNeuronsEv(ptr noundef nonnull align 8 dereferenceable(108)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #0 align 2

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

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

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

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

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

declare void @_ZN3Cga5EpochERKSt6vectorIdSaIdEE(ptr dead_on_unwind writable sret(%"class.std::vector.61") align 8, ptr noundef nonnull align 8 dereferenceable(265), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

declare void @_ZN3Cga35GetBestPhenotypesFromLastGenerationEi(ptr dead_on_unwind writable sret(%"class.std::vector.61") align 8, ptr noundef nonnull align 8 dereferenceable(265), i32 noundef) local_unnamed_addr #3

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

declare void @_Z29puppetMasterClearResultsQueuev() local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN5Timer5totalEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8), float noundef) local_unnamed_addr #4 align 2

declare noundef double @_ZN3Cga32GetCurrentCompatibilityThresholdEv(ptr noundef nonnull align 8 dereferenceable(265)) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3Cga10NumSpeciesEv(ptr noundef nonnull align 8 dereferenceable(265)) local_unnamed_addr #0 align 2

declare void @_ZN3Cga25SetCompatibilityThresholdEd(ptr noundef nonnull align 8 dereferenceable(265), double noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(248)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTS8timespec", !7, i64 0, !7, i64 8}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!6, !7, i64 8}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !8, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !8, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"any pointer", !8, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!20, !12, i64 0}
!20 = !{!"_ZTS18ShellcodePieceData", !12, i64 0, !21, i64 8, !25, i64 32, !29, i64 56}
!21 = !{!"_ZTSSt6vectorIdSaIdEE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!25 = !{!"_ZTSSt6vectorIhSaIhEE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!29 = !{!"_ZTS7CGenome", !12, i64 0, !30, i64 8, !34, i64 32, !16, i64 56, !12, i64 64, !14, i64 72, !14, i64 80, !14, i64 88, !12, i64 96, !12, i64 100, !12, i64 104}
!30 = !{!"_ZTSSt6vectorI11SNeuronGeneSaIS0_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseI11SNeuronGeneSaIS0_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseI11SNeuronGeneSaIS0_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseI11SNeuronGeneSaIS0_EE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!34 = !{!"_ZTSSt6vectorI9SLinkGeneSaIS0_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseI9SLinkGeneSaIS0_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseI9SLinkGeneSaIS0_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseI9SLinkGeneSaIS0_EE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!38 = !{!39, !39, i64 0}
!39 = !{!"bool", !8, i64 0}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = distinct !{!42, !18}
!43 = distinct !{!43, !18}
!44 = !{!45, !39, i64 16}
!45 = !{!"_ZTS17botEvaluationData", !12, i64 0, !12, i64 4, !14, i64 8, !39, i64 16}
!46 = !{!45, !12, i64 0}
!47 = !{!45, !12, i64 4}
!48 = !{!49, !49, i64 0}
!49 = !{!"vtable pointer", !9, i64 0}
!50 = !{!45, !14, i64 8}
!51 = distinct !{!51, !18}
!52 = distinct !{!52, !18}
!53 = distinct !{!53, !18}
!54 = distinct !{!54, !18}


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