; LLVM IR from cruppstahl/upscaledb :: tools/ups_bench/generator_runtime.ll (ZN16RuntimeGeneratorC2EiP13ConfigurationP8Databaseb)

; 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::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 }
%"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.std::allocator" = type { i8 }
%class.RuntimeGenerator = type <{ %class.Generator.base, [3 x i8], i32, i64, ptr, %"class.std::vector", %"class.std::vector", %"class.boost::random::mersenne_twister_engine", %"class.boost::random::uniform_01", %struct.Timer, double, ptr, ptr, ptr, %"class.std::basic_ofstream", i8, [7 x i8], %struct.Metrics, i8, [7 x i8] }>
%class.Generator.base = type <{ ptr, i32, [4 x i8], ptr, ptr, i32, [4 x i8], %struct.ups_record_t, ptr, [4 x i32], i8 }>
%struct.ups_record_t = type { i32, ptr, i32 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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 }
%"class.boost::random::mersenne_twister_engine" = type { [624 x i32], i64 }
%"class.boost::random::uniform_01" = type { %"class.boost::random::detail::backward_compatible_uniform_01" }
%"class.boost::random::detail::backward_compatible_uniform_01" = type { %"class.boost::random::mersenne_twister_engine", double }
%struct.Timer = type { %"class.boost::chrono::time_point" }
%"class.boost::chrono::time_point" = type { %"class.boost::chrono::duration" }
%"class.boost::chrono::duration" = type { 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.4 }
%union.anon.4 = type { i32 }
%struct.Metrics = type { ptr, i64, i64, i64, i64, i64, i64, i64, double, double, double, double, double, double, double, double, double, double, double, double, double, %struct.ups_env_metrics_t }
%struct.ups_env_metrics_t = type { i16, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, %struct.btree_metrics_t, %struct.btree_metrics_t, i32 }
%struct.btree_metrics_t = type { i16, i64, i64, i64, i32, %struct.min_max_avg_u32_t, %struct.min_max_avg_u32_t, %struct.min_max_avg_u32_t, %struct.min_max_avg_u32_t, %struct.min_max_avg_u32_t, %struct.min_max_avg_u32_t, %struct.min_max_avg_u32_t, %struct.min_max_avg_u32_t, %struct.min_max_avg_u32_t }
%struct.min_max_avg_u32_t = type { i32, i32, i32, i32, i32 }
%struct.Configuration = type <{ i8, [3 x i8], i32, i8, i8, i8, [5 x i8], %"class.std::__cxx11::basic_string", i8, [3 x i8], i32, i32, i32, i8, [3 x i8], i32, i64, i64, i64, i64, i32, i8, [3 x i8], i32, i32, i32, i32, i8, i8, [2 x i8], i32, i8, [3 x i8], i32, i8, i8, i8, i8, i8, [3 x i8], i32, i32, i32, i8, i8, i8, i8, i32, i32, %"class.std::__cxx11::basic_string", i32, i32, i32, i8, i8, [2 x i8], i32, i32, i32, i8, i8, i8, i8, i32, i8, i8, [2 x i8] }>
%class.Generator = type <{ ptr, i32, [4 x i8], ptr, ptr, i32, [4 x i8], %struct.ups_record_t, ptr, [4 x i32], i8, [7 x i8] }>

@_ZTV16RuntimeGenerator = external dso_local unnamed_addr constant { [11 x ptr] }, align 8
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [91 x i8], align 1
@__PRETTY_FUNCTION__._ZN16RuntimeGeneratorC2EiP13ConfigurationP8Databaseb = external hidden unnamed_addr constant [75 x i8], align 1

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 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 #2 align 2

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN16RuntimeGeneratorC2EiP13ConfigurationP8Databaseb(ptr noundef nonnull align 8 dereferenceable(6569) %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, i1 noundef zeroext %4) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i8, align 1
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator", align 1
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator", align 1
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca i1, align 1
  store ptr %0, ptr %6, align 8, !tbaa !5
  store i32 %1, ptr %7, align 4, !tbaa !9
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  %21 = zext i1 %4 to i8
  store i8 %21, ptr %10, align 1, !tbaa !11
  %22 = load ptr, ptr %6, align 8
  %23 = load i32, ptr %7, align 4, !tbaa !9
  %24 = load ptr, ptr %8, align 8, !tbaa !5
  %25 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN9GeneratorC2EiP13ConfigurationP8Database(ptr noundef nonnull align 8 dereferenceable(89) %22, i32 noundef %23, ptr noundef %24, ptr noundef %25)
  store ptr getelementptr inbounds inrange(-16, 72) ({ [11 x ptr] }, ptr @_ZTV16RuntimeGenerator, i32 0, i32 0, i32 2), ptr %22, align 8, !tbaa !13
  %26 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 2
  store i32 0, ptr %26, align 4, !tbaa !15
  %27 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 3
  store i64 0, ptr %27, align 8, !tbaa !44
  %28 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr null, ptr %28, align 8, !tbaa !45
  %29 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 5
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #9
  %30 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 6
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  %31 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 7
  invoke void @_ZN5boost6random23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EEC2Ev(ptr noundef nonnull align 8 dereferenceable(2504) %31)
          to label %32 unwind label %58

32:                                               ; preds = %5
  %33 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 8
  %34 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 7
  invoke void @_ZN5boost6random10uniform_01INS0_23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EEEdEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(2512) %33, ptr noundef nonnull align 8 dereferenceable(2504) %34)
          to label %35 unwind label %58

35:                                               ; preds = %32
  %36 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 9
  invoke void @_ZN5TimerIN5boost6chrono12system_clockEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %37 unwind label %58

37:                                               ; preds = %35
  %38 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 10
  store double 0.000000e+00, ptr %38, align 8, !tbaa !46
  %39 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 11
  store ptr null, ptr %39, align 8, !tbaa !47
  %40 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 12
  store ptr null, ptr %40, align 8, !tbaa !48
  %41 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 13
  store ptr null, ptr %41, align 8, !tbaa !49
  %42 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 14
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(248) %42)
          to label %43 unwind label %58

43:                                               ; preds = %37
  %44 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 15
  store i8 1, ptr %44, align 8, !tbaa !50
  %45 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 17
  %46 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 18
  store i8 0, ptr %46, align 8, !tbaa !51
  %47 = load ptr, ptr %8, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.Configuration, ptr %47, i32 0, i32 16
  %49 = load i64, ptr %48, align 8, !tbaa !52
  %50 = icmp ne i64 %49, 0
  br i1 %50, label %51, label %66

51:                                               ; preds = %43
  %52 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 7
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  %53 = load ptr, ptr %8, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.Configuration, ptr %53, i32 0, i32 16
  %55 = load i64, ptr %54, align 8, !tbaa !52
  %56 = trunc i64 %55 to i32
  store i32 %56, ptr %13, align 4, !tbaa !9
  invoke void @_ZN5boost6random23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE4seedERKj(ptr noundef nonnull align 8 dereferenceable(2504) %52, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %57 unwind label %62

57:                                               ; preds = %51
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  br label %66

58:                                               ; preds = %37, %35, %32, %5
  %59 = landingpad { ptr, i32 }
          cleanup
  %60 = extractvalue { ptr, i32 } %59, 0
  store ptr %60, ptr %11, align 8
  %61 = extractvalue { ptr, i32 } %59, 1
  store i32 %61, ptr %12, align 4
  br label %756

62:                                               ; preds = %51
  %63 = landingpad { ptr, i32 }
          cleanup
  %64 = extractvalue { ptr, i32 } %63, 0
  store ptr %64, ptr %11, align 8
  %65 = extractvalue { ptr, i32 } %63, 1
  store i32 %65, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  br label %755

66:                                               ; preds = %57, %43
  %67 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 17
  call void @llvm.memset.p0.i64(ptr align 8 %67, i8 0, i64 832, i1 false)
  %68 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 17
  %69 = getelementptr inbounds %struct.Metrics, ptr %68, i32 0, i32 9
  store double 0x416312CFFFAE147B, ptr %69, align 8, !tbaa !56
  %70 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 17
  %71 = getelementptr inbounds %struct.Metrics, ptr %70, i32 0, i32 12
  store double 0x416312CFFFAE147B, ptr %71, align 8, !tbaa !57
  %72 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 17
  %73 = getelementptr inbounds %struct.Metrics, ptr %72, i32 0, i32 15
  store double 0x416312CFFFAE147B, ptr %73, align 8, !tbaa !58
  %74 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 17
  %75 = getelementptr inbounds %struct.Metrics, ptr %74, i32 0, i32 18
  store double 0x416312CFFFAE147B, ptr %75, align 8, !tbaa !59
  %76 = load i8, ptr %10, align 1, !tbaa !11, !range !60, !noundef !61
  %77 = trunc i8 %76 to i1
  br i1 %77, label %78, label %144

78:                                               ; preds = %66
  %79 = load ptr, ptr %8, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.Configuration, ptr %79, i32 0, i32 3
  %81 = load i8, ptr %80, align 8, !tbaa !62, !range !60, !noundef !61
  %82 = trunc i8 %81 to i1
  br i1 %82, label %143, label %83

83:                                               ; preds = %78
  %84 = load ptr, ptr %8, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.Configuration, ptr %84, i32 0, i32 8
  %86 = load i8, ptr %85, align 8, !tbaa !63, !range !60, !noundef !61
  %87 = trunc i8 %86 to i1
  br i1 %87, label %143, label %88

88:                                               ; preds = %83
  %89 = load ptr, ptr %8, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.Configuration, ptr %89, i32 0, i32 2
  %91 = load i32, ptr %90, align 4, !tbaa !64
  %92 = icmp ne i32 %91, 0
  br i1 %92, label %143, label %93

93:                                               ; preds = %88
  %94 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 136) #10
          to label %95 unwind label %112

95:                                               ; preds = %93
  store i1 true, ptr %20, align 1
  %96 = load ptr, ptr %8, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.Configuration, ptr %96, i32 0, i32 19
  %98 = load ptr, ptr %8, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.Configuration, ptr %98, i32 0, i32 17
  %100 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(8) %99)
          to label %101 unwind label %116

101:                                              ; preds = %95
  %102 = load ptr, ptr %8, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.Configuration, ptr %102, i32 0, i32 18
  %104 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull align 8 dereferenceable(8) %103)
          to label %105 unwind label %116

105:                                              ; preds = %101
  %106 = load i64, ptr %104, align 8, !tbaa !65
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %107 unwind label %120

107:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %108 unwind label %124

108:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %109 unwind label %128

109:                                              ; preds = %108
  invoke void @_ZN5boost16progress_displayC2EmRSoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_S9_(ptr noundef nonnull align 8 dereferenceable(132) %94, i64 noundef %106, ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %110 unwind label %132

110:                                              ; preds = %109
  store i1 false, ptr %20, align 1
  %111 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 13
  store ptr %94, ptr %111, align 8, !tbaa !49
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #9
  br label %143

112:                                              ; preds = %743, %718, %709, %700, %687, %679, %654, %645, %636, %623, %615, %583, %567, %551, %531, %523, %493, %477, %461, %441, %433, %408, %399, %390, %377, %348, %323, %314, %305, %292, %284, %259, %250, %241, %228, %220, %195, %186, %177, %164, %149, %93
  %113 = landingpad { ptr, i32 }
          cleanup
  %114 = extractvalue { ptr, i32 } %113, 0
  store ptr %114, ptr %11, align 8
  %115 = extractvalue { ptr, i32 } %113, 1
  store i32 %115, ptr %12, align 4
  br label %755

116:                                              ; preds = %101, %95
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %11, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %12, align 4
  br label %139

120:                                              ; preds = %105
  %121 = landingpad { ptr, i32 }
          cleanup
  %122 = extractvalue { ptr, i32 } %121, 0
  store ptr %122, ptr %11, align 8
  %123 = extractvalue { ptr, i32 } %121, 1
  store i32 %123, ptr %12, align 4
  br label %138

124:                                              ; preds = %107
  %125 = landingpad { ptr, i32 }
          cleanup
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %11, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %12, align 4
  br label %137

128:                                              ; preds = %108
  %129 = landingpad { ptr, i32 }
          cleanup
  %130 = extractvalue { ptr, i32 } %129, 0
  store ptr %130, ptr %11, align 8
  %131 = extractvalue { ptr, i32 } %129, 1
  store i32 %131, ptr %12, align 4
  br label %136

132:                                              ; preds = %109
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %11, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  br label %136

136:                                              ; preds = %132, %128
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  br label %137

137:                                              ; preds = %136, %124
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  br label %138

138:                                              ; preds = %137, %120
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #9
  br label %139

139:                                              ; preds = %138, %116
  %140 = load i1, ptr %20, align 1
  br i1 %140, label %141, label %142

141:                                              ; preds = %139
  call void @_ZdlPvm(ptr noundef %94, i64 noundef 136) #11
  br label %142

142:                                              ; preds = %141, %139
  br label %755

143:                                              ; preds = %110, %88, %83, %78
  br label %144

144:                                              ; preds = %143, %66
  %145 = getelementptr inbounds %class.Generator, ptr %22, i32 0, i32 3
  %146 = load ptr, ptr %145, align 8, !tbaa !66
  %147 = getelementptr inbounds %struct.Configuration, ptr %146, i32 0, i32 49
  %148 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %147) #9
  br i1 %148, label %156, label %149

149:                                              ; preds = %144
  %150 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 14
  %151 = getelementptr inbounds %class.Generator, ptr %22, i32 0, i32 3
  %152 = load ptr, ptr %151, align 8, !tbaa !66
  %153 = getelementptr inbounds %struct.Configuration, ptr %152, i32 0, i32 49
  %154 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %153) #9
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248) %150, ptr noundef %154, i32 noundef 16)
          to label %155 unwind label %112

155:                                              ; preds = %149
  br label %156

156:                                              ; preds = %155, %144
  %157 = load ptr, ptr %8, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.Configuration, ptr %157, i32 0, i32 10
  %159 = load i32, ptr %158, align 4, !tbaa !67
  switch i32 %159, label %747 [
    i32 3, label %160
    i32 4, label %224
    i32 5, label %288
    i32 6, label %373
    i32 2, label %437
    i32 0, label %437
    i32 1, label %527
    i32 7, label %619
    i32 8, label %683
  ]

160:                                              ; preds = %156
  %161 = load ptr, ptr %8, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.Configuration, ptr %161, i32 0, i32 15
  %163 = load i32, ptr %162, align 4, !tbaa !68
  switch i32 %163, label %223 [
    i32 0, label %164
    i32 1, label %177
    i32 2, label %186
    i32 3, label %195
    i32 4, label %220
  ]

164:                                              ; preds = %160
  %165 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 5024) #10
          to label %166 unwind label %112

166:                                              ; preds = %164
  %167 = load ptr, ptr %8, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.Configuration, ptr %167, i32 0, i32 16
  %169 = load i64, ptr %168, align 8, !tbaa !52
  %170 = trunc i64 %169 to i32
  invoke void @_ZN23NumericRandomDatasourceIhEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020) %165, i32 noundef %170)
          to label %171 unwind label %173

171:                                              ; preds = %166
  %172 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %165, ptr %172, align 8, !tbaa !45
  br label %223

173:                                              ; preds = %166
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %11, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %165, i64 noundef 5024) #11
  br label %755

177:                                              ; preds = %160
  %178 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #10
          to label %179 unwind label %112

179:                                              ; preds = %177
  invoke void @_ZN26NumericAscendingDatasourceIhEC2Ev(ptr noundef nonnull align 8 dereferenceable(9) %178)
          to label %180 unwind label %182

180:                                              ; preds = %179
  %181 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %178, ptr %181, align 8, !tbaa !45
  br label %223

182:                                              ; preds = %179
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %11, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %178, i64 noundef 16) #11
  br label %755

186:                                              ; preds = %160
  %187 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #10
          to label %188 unwind label %112

188:                                              ; preds = %186
  invoke void @_ZN27NumericDescendingDatasourceIhEC2Ev(ptr noundef nonnull align 8 dereferenceable(9) %187)
          to label %189 unwind label %191

189:                                              ; preds = %188
  %190 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %187, ptr %190, align 8, !tbaa !45
  br label %223

191:                                              ; preds = %188
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %11, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %187, i64 noundef 16) #11
  br label %755

195:                                              ; preds = %160
  %196 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #10
          to label %197 unwind label %112

197:                                              ; preds = %195
  %198 = load ptr, ptr %8, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.Configuration, ptr %198, i32 0, i32 17
  %200 = load i64, ptr %199, align 8, !tbaa !69
  %201 = icmp ne i64 %200, 0
  br i1 %201, label %202, label %206

202:                                              ; preds = %197
  %203 = load ptr, ptr %8, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.Configuration, ptr %203, i32 0, i32 17
  %205 = load i64, ptr %204, align 8, !tbaa !69
  br label %207

206:                                              ; preds = %197
  br label %207

207:                                              ; preds = %206, %202
  %208 = phi i64 [ %205, %202 ], [ 1048576, %206 ]
  %209 = trunc i64 %208 to i32
  %210 = load ptr, ptr %8, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.Configuration, ptr %210, i32 0, i32 16
  %212 = load i64, ptr %211, align 8, !tbaa !52
  %213 = trunc i64 %212 to i32
  invoke void @_ZN24NumericZipfianDatasourceIhEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52) %196, i32 noundef %209, i32 noundef %213, double noundef 8.000000e-01)
          to label %214 unwind label %216

214:                                              ; preds = %207
  %215 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %196, ptr %215, align 8, !tbaa !45
  br label %223

216:                                              ; preds = %207
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %11, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %196, i64 noundef 56) #11
  br label %755

220:                                              ; preds = %160
  %221 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.5)
          to label %222 unwind label %112

222:                                              ; preds = %220
  br label %223

223:                                              ; preds = %222, %214, %189, %180, %171, %160
  br label %747

224:                                              ; preds = %156
  %225 = load ptr, ptr %8, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.Configuration, ptr %225, i32 0, i32 15
  %227 = load i32, ptr %226, align 4, !tbaa !68
  switch i32 %227, label %287 [
    i32 0, label %228
    i32 1, label %241
    i32 2, label %250
    i32 3, label %259
    i32 4, label %284
  ]

228:                                              ; preds = %224
  %229 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 5024) #10
          to label %230 unwind label %112

230:                                              ; preds = %228
  %231 = load ptr, ptr %8, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.Configuration, ptr %231, i32 0, i32 16
  %233 = load i64, ptr %232, align 8, !tbaa !52
  %234 = trunc i64 %233 to i32
  invoke void @_ZN23NumericRandomDatasourceItEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020) %229, i32 noundef %234)
          to label %235 unwind label %237

235:                                              ; preds = %230
  %236 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %229, ptr %236, align 8, !tbaa !45
  br label %287

237:                                              ; preds = %230
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %11, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %229, i64 noundef 5024) #11
  br label %755

241:                                              ; preds = %224
  %242 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #10
          to label %243 unwind label %112

243:                                              ; preds = %241
  invoke void @_ZN26NumericAscendingDatasourceItEC2Ev(ptr noundef nonnull align 8 dereferenceable(10) %242)
          to label %244 unwind label %246

244:                                              ; preds = %243
  %245 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %242, ptr %245, align 8, !tbaa !45
  br label %287

246:                                              ; preds = %243
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %11, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %242, i64 noundef 16) #11
  br label %755

250:                                              ; preds = %224
  %251 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #10
          to label %252 unwind label %112

252:                                              ; preds = %250
  invoke void @_ZN27NumericDescendingDatasourceItEC2Ev(ptr noundef nonnull align 8 dereferenceable(10) %251)
          to label %253 unwind label %255

253:                                              ; preds = %252
  %254 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %251, ptr %254, align 8, !tbaa !45
  br label %287

255:                                              ; preds = %252
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %11, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %251, i64 noundef 16) #11
  br label %755

259:                                              ; preds = %224
  %260 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #10
          to label %261 unwind label %112

261:                                              ; preds = %259
  %262 = load ptr, ptr %8, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.Configuration, ptr %262, i32 0, i32 17
  %264 = load i64, ptr %263, align 8, !tbaa !69
  %265 = icmp ne i64 %264, 0
  br i1 %265, label %266, label %270

266:                                              ; preds = %261
  %267 = load ptr, ptr %8, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.Configuration, ptr %267, i32 0, i32 17
  %269 = load i64, ptr %268, align 8, !tbaa !69
  br label %271

270:                                              ; preds = %261
  br label %271

271:                                              ; preds = %270, %266
  %272 = phi i64 [ %269, %266 ], [ 1048576, %270 ]
  %273 = trunc i64 %272 to i32
  %274 = load ptr, ptr %8, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.Configuration, ptr %274, i32 0, i32 16
  %276 = load i64, ptr %275, align 8, !tbaa !52
  %277 = trunc i64 %276 to i32
  invoke void @_ZN24NumericZipfianDatasourceItEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52) %260, i32 noundef %273, i32 noundef %277, double noundef 8.000000e-01)
          to label %278 unwind label %280

278:                                              ; preds = %271
  %279 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %260, ptr %279, align 8, !tbaa !45
  br label %287

280:                                              ; preds = %271
  %281 = landingpad { ptr, i32 }
          cleanup
  %282 = extractvalue { ptr, i32 } %281, 0
  store ptr %282, ptr %11, align 8
  %283 = extractvalue { ptr, i32 } %281, 1
  store i32 %283, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %260, i64 noundef 56) #11
  br label %755

284:                                              ; preds = %224
  %285 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.5)
          to label %286 unwind label %112

286:                                              ; preds = %284
  br label %287

287:                                              ; preds = %286, %278, %253, %244, %235, %224
  br label %747

288:                                              ; preds = %156
  %289 = load ptr, ptr %8, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.Configuration, ptr %289, i32 0, i32 15
  %291 = load i32, ptr %290, align 4, !tbaa !68
  switch i32 %291, label %372 [
    i32 0, label %292
    i32 1, label %305
    i32 2, label %314
    i32 3, label %323
    i32 4, label %348
  ]

292:                                              ; preds = %288
  %293 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 5024) #10
          to label %294 unwind label %112

294:                                              ; preds = %292
  %295 = load ptr, ptr %8, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.Configuration, ptr %295, i32 0, i32 16
  %297 = load i64, ptr %296, align 8, !tbaa !52
  %298 = trunc i64 %297 to i32
  invoke void @_ZN23NumericRandomDatasourceIjEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020) %293, i32 noundef %298)
          to label %299 unwind label %301

299:                                              ; preds = %294
  %300 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %293, ptr %300, align 8, !tbaa !45
  br label %372

301:                                              ; preds = %294
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %11, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %293, i64 noundef 5024) #11
  br label %755

305:                                              ; preds = %288
  %306 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #10
          to label %307 unwind label %112

307:                                              ; preds = %305
  invoke void @_ZN26NumericAscendingDatasourceIjEC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %306)
          to label %308 unwind label %310

308:                                              ; preds = %307
  %309 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %306, ptr %309, align 8, !tbaa !45
  br label %372

310:                                              ; preds = %307
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %11, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %306, i64 noundef 16) #11
  br label %755

314:                                              ; preds = %288
  %315 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #10
          to label %316 unwind label %112

316:                                              ; preds = %314
  invoke void @_ZN27NumericDescendingDatasourceIjEC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %315)
          to label %317 unwind label %319

317:                                              ; preds = %316
  %318 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %315, ptr %318, align 8, !tbaa !45
  br label %372

319:                                              ; preds = %316
  %320 = landingpad { ptr, i32 }
          cleanup
  %321 = extractvalue { ptr, i32 } %320, 0
  store ptr %321, ptr %11, align 8
  %322 = extractvalue { ptr, i32 } %320, 1
  store i32 %322, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %315, i64 noundef 16) #11
  br label %755

323:                                              ; preds = %288
  %324 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #10
          to label %325 unwind label %112

325:                                              ; preds = %323
  %326 = load ptr, ptr %8, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.Configuration, ptr %326, i32 0, i32 17
  %328 = load i64, ptr %327, align 8, !tbaa !69
  %329 = icmp ne i64 %328, 0
  br i1 %329, label %330, label %334

330:                                              ; preds = %325
  %331 = load ptr, ptr %8, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.Configuration, ptr %331, i32 0, i32 17
  %333 = load i64, ptr %332, align 8, !tbaa !69
  br label %335

334:                                              ; preds = %325
  br label %335

335:                                              ; preds = %334, %330
  %336 = phi i64 [ %333, %330 ], [ 1048576, %334 ]
  %337 = trunc i64 %336 to i32
  %338 = load ptr, ptr %8, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.Configuration, ptr %338, i32 0, i32 16
  %340 = load i64, ptr %339, align 8, !tbaa !52
  %341 = trunc i64 %340 to i32
  invoke void @_ZN24NumericZipfianDatasourceIjEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52) %324, i32 noundef %337, i32 noundef %341, double noundef 8.000000e-01)
          to label %342 unwind label %344

342:                                              ; preds = %335
  %343 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %324, ptr %343, align 8, !tbaa !45
  br label %372

344:                                              ; preds = %335
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %11, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %324, i64 noundef 56) #11
  br label %755

348:                                              ; preds = %288
  %349 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 2576) #10
          to label %350 unwind label %112

350:                                              ; preds = %348
  %351 = load ptr, ptr %8, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.Configuration, ptr %351, i32 0, i32 17
  %353 = load i64, ptr %352, align 8, !tbaa !69
  %354 = icmp ne i64 %353, 0
  br i1 %354, label %355, label %359

355:                                              ; preds = %350
  %356 = load ptr, ptr %8, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.Configuration, ptr %356, i32 0, i32 17
  %358 = load i64, ptr %357, align 8, !tbaa !69
  br label %360

359:                                              ; preds = %350
  br label %360

360:                                              ; preds = %359, %355
  %361 = phi i64 [ %358, %355 ], [ 1048576, %359 ]
  %362 = trunc i64 %361 to i32
  %363 = load ptr, ptr %8, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.Configuration, ptr %363, i32 0, i32 16
  %365 = load i64, ptr %364, align 8, !tbaa !52
  invoke void @_ZN26NumericClusteredDatasourceC2Ejl(ptr noundef nonnull align 8 dereferenceable(2576) %349, i32 noundef %362, i64 noundef %365)
          to label %366 unwind label %368

366:                                              ; preds = %360
  %367 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %349, ptr %367, align 8, !tbaa !45
  br label %372

368:                                              ; preds = %360
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %11, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %349, i64 noundef 2576) #11
  br label %755

372:                                              ; preds = %366, %342, %317, %308, %299, %288
  br label %747

373:                                              ; preds = %156
  %374 = load ptr, ptr %8, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.Configuration, ptr %374, i32 0, i32 15
  %376 = load i32, ptr %375, align 4, !tbaa !68
  switch i32 %376, label %436 [
    i32 0, label %377
    i32 1, label %390
    i32 2, label %399
    i32 3, label %408
    i32 4, label %433
  ]

377:                                              ; preds = %373
  %378 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 5024) #10
          to label %379 unwind label %112

379:                                              ; preds = %377
  %380 = load ptr, ptr %8, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.Configuration, ptr %380, i32 0, i32 16
  %382 = load i64, ptr %381, align 8, !tbaa !52
  %383 = trunc i64 %382 to i32
  invoke void @_ZN23NumericRandomDatasourceImEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020) %378, i32 noundef %383)
          to label %384 unwind label %386

384:                                              ; preds = %379
  %385 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %378, ptr %385, align 8, !tbaa !45
  br label %436

386:                                              ; preds = %379
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %11, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %378, i64 noundef 5024) #11
  br label %755

390:                                              ; preds = %373
  %391 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #10
          to label %392 unwind label %112

392:                                              ; preds = %390
  invoke void @_ZN26NumericAscendingDatasourceImEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %391)
          to label %393 unwind label %395

393:                                              ; preds = %392
  %394 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %391, ptr %394, align 8, !tbaa !45
  br label %436

395:                                              ; preds = %392
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %11, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %391, i64 noundef 16) #11
  br label %755

399:                                              ; preds = %373
  %400 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #10
          to label %401 unwind label %112

401:                                              ; preds = %399
  invoke void @_ZN27NumericDescendingDatasourceImEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %400)
          to label %402 unwind label %404

402:                                              ; preds = %401
  %403 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %400, ptr %403, align 8, !tbaa !45
  br label %436

404:                                              ; preds = %401
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %11, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %400, i64 noundef 16) #11
  br label %755

408:                                              ; preds = %373
  %409 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #10
          to label %410 unwind label %112

410:                                              ; preds = %408
  %411 = load ptr, ptr %8, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.Configuration, ptr %411, i32 0, i32 17
  %413 = load i64, ptr %412, align 8, !tbaa !69
  %414 = icmp ne i64 %413, 0
  br i1 %414, label %415, label %419

415:                                              ; preds = %410
  %416 = load ptr, ptr %8, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.Configuration, ptr %416, i32 0, i32 17
  %418 = load i64, ptr %417, align 8, !tbaa !69
  br label %420

419:                                              ; preds = %410
  br label %420

420:                                              ; preds = %419, %415
  %421 = phi i64 [ %418, %415 ], [ 1048576, %419 ]
  %422 = trunc i64 %421 to i32
  %423 = load ptr, ptr %8, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.Configuration, ptr %423, i32 0, i32 16
  %425 = load i64, ptr %424, align 8, !tbaa !52
  %426 = trunc i64 %425 to i32
  invoke void @_ZN24NumericZipfianDatasourceImEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52) %409, i32 noundef %422, i32 noundef %426, double noundef 8.000000e-01)
          to label %427 unwind label %429

427:                                              ; preds = %420
  %428 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %409, ptr %428, align 8, !tbaa !45
  br label %436

429:                                              ; preds = %420
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %11, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %409, i64 noundef 56) #11
  br label %755

433:                                              ; preds = %373
  %434 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.5)
          to label %435 unwind label %112

435:                                              ; preds = %433
  br label %436

436:                                              ; preds = %435, %427, %402, %393, %384, %373
  br label %747

437:                                              ; preds = %156, %156
  %438 = load ptr, ptr %8, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.Configuration, ptr %438, i32 0, i32 15
  %440 = load i32, ptr %439, align 4, !tbaa !68
  switch i32 %440, label %526 [
    i32 0, label %441
    i32 1, label %461
    i32 2, label %477
    i32 3, label %493
    i32 4, label %523
  ]

441:                                              ; preds = %437
  %442 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 2528) #10
          to label %443 unwind label %112

443:                                              ; preds = %441
  %444 = load ptr, ptr %8, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.Configuration, ptr %444, i32 0, i32 20
  %446 = load i32, ptr %445, align 8, !tbaa !70
  %447 = load ptr, ptr %8, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.Configuration, ptr %447, i32 0, i32 21
  %449 = load i8, ptr %448, align 4, !tbaa !71, !range !60, !noundef !61
  %450 = trunc i8 %449 to i1
  %451 = load ptr, ptr %8, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.Configuration, ptr %451, i32 0, i32 16
  %453 = load i64, ptr %452, align 8, !tbaa !52
  %454 = trunc i64 %453 to i32
  invoke void @_ZN22BinaryRandomDatasourceC2Ejbj(ptr noundef nonnull align 8 dereferenceable(2524) %442, i32 noundef %446, i1 noundef zeroext %450, i32 noundef %454)
          to label %455 unwind label %457

455:                                              ; preds = %443
  %456 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %442, ptr %456, align 8, !tbaa !45
  br label %526

457:                                              ; preds = %443
  %458 = landingpad { ptr, i32 }
          cleanup
  %459 = extractvalue { ptr, i32 } %458, 0
  store ptr %459, ptr %11, align 8
  %460 = extractvalue { ptr, i32 } %458, 1
  store i32 %460, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %442, i64 noundef 2528) #11
  br label %755

461:                                              ; preds = %437
  %462 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #10
          to label %463 unwind label %112

463:                                              ; preds = %461
  %464 = load ptr, ptr %8, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.Configuration, ptr %464, i32 0, i32 20
  %466 = load i32, ptr %465, align 8, !tbaa !70
  %467 = load ptr, ptr %8, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.Configuration, ptr %467, i32 0, i32 21
  %469 = load i8, ptr %468, align 4, !tbaa !71, !range !60, !noundef !61
  %470 = trunc i8 %469 to i1
  invoke void @_ZN25BinaryAscendingDatasourceC2Ejb(ptr noundef nonnull align 8 dereferenceable(40) %462, i32 noundef %466, i1 noundef zeroext %470)
          to label %471 unwind label %473

471:                                              ; preds = %463
  %472 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %462, ptr %472, align 8, !tbaa !45
  br label %526

473:                                              ; preds = %463
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %11, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %462, i64 noundef 40) #11
  br label %755

477:                                              ; preds = %437
  %478 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #10
          to label %479 unwind label %112

479:                                              ; preds = %477
  %480 = load ptr, ptr %8, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.Configuration, ptr %480, i32 0, i32 20
  %482 = load i32, ptr %481, align 8, !tbaa !70
  %483 = load ptr, ptr %8, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.Configuration, ptr %483, i32 0, i32 21
  %485 = load i8, ptr %484, align 4, !tbaa !71, !range !60, !noundef !61
  %486 = trunc i8 %485 to i1
  invoke void @_ZN26BinaryDescendingDatasourceC2Ejb(ptr noundef nonnull align 8 dereferenceable(40) %478, i32 noundef %482, i1 noundef zeroext %486)
          to label %487 unwind label %489

487:                                              ; preds = %479
  %488 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %478, ptr %488, align 8, !tbaa !45
  br label %526

489:                                              ; preds = %479
  %490 = landingpad { ptr, i32 }
          cleanup
  %491 = extractvalue { ptr, i32 } %490, 0
  store ptr %491, ptr %11, align 8
  %492 = extractvalue { ptr, i32 } %490, 1
  store i32 %492, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %478, i64 noundef 40) #11
  br label %755

493:                                              ; preds = %437
  %494 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 2616) #10
          to label %495 unwind label %112

495:                                              ; preds = %493
  %496 = load ptr, ptr %8, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.Configuration, ptr %496, i32 0, i32 17
  %498 = load i64, ptr %497, align 8, !tbaa !69
  %499 = icmp ne i64 %498, 0
  br i1 %499, label %500, label %504

500:                                              ; preds = %495
  %501 = load ptr, ptr %8, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.Configuration, ptr %501, i32 0, i32 17
  %503 = load i64, ptr %502, align 8, !tbaa !69
  br label %505

504:                                              ; preds = %495
  br label %505

505:                                              ; preds = %504, %500
  %506 = phi i64 [ %503, %500 ], [ 1048576, %504 ]
  %507 = load ptr, ptr %8, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.Configuration, ptr %507, i32 0, i32 20
  %509 = load i32, ptr %508, align 8, !tbaa !70
  %510 = load ptr, ptr %8, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.Configuration, ptr %510, i32 0, i32 21
  %512 = load i8, ptr %511, align 4, !tbaa !71, !range !60, !noundef !61
  %513 = trunc i8 %512 to i1
  %514 = load ptr, ptr %8, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.Configuration, ptr %514, i32 0, i32 16
  %516 = load i64, ptr %515, align 8, !tbaa !52
  invoke void @_ZN23BinaryZipfianDatasourceC2Emjbld(ptr noundef nonnull align 8 dereferenceable(2612) %494, i64 noundef %506, i32 noundef %509, i1 noundef zeroext %513, i64 noundef %516, double noundef 8.000000e-01)
          to label %517 unwind label %519

517:                                              ; preds = %505
  %518 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %494, ptr %518, align 8, !tbaa !45
  br label %526

519:                                              ; preds = %505
  %520 = landingpad { ptr, i32 }
          cleanup
  %521 = extractvalue { ptr, i32 } %520, 0
  store ptr %521, ptr %11, align 8
  %522 = extractvalue { ptr, i32 } %520, 1
  store i32 %522, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %494, i64 noundef 2616) #11
  br label %755

523:                                              ; preds = %437
  %524 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.5)
          to label %525 unwind label %112

525:                                              ; preds = %523
  br label %526

526:                                              ; preds = %525, %517, %487, %471, %455, %437
  br label %747

527:                                              ; preds = %156
  %528 = load ptr, ptr %8, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.Configuration, ptr %528, i32 0, i32 15
  %530 = load i32, ptr %529, align 4, !tbaa !68
  switch i32 %530, label %618 [
    i32 0, label %531
    i32 1, label %551
    i32 2, label %567
    i32 3, label %583
    i32 4, label %615
  ]

531:                                              ; preds = %527
  %532 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 2552) #10
          to label %533 unwind label %112

533:                                              ; preds = %531
  %534 = load ptr, ptr %8, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.Configuration, ptr %534, i32 0, i32 20
  %536 = load i32, ptr %535, align 8, !tbaa !70
  %537 = load ptr, ptr %8, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.Configuration, ptr %537, i32 0, i32 21
  %539 = load i8, ptr %538, align 4, !tbaa !71, !range !60, !noundef !61
  %540 = trunc i8 %539 to i1
  %541 = load ptr, ptr %8, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.Configuration, ptr %541, i32 0, i32 16
  %543 = load i64, ptr %542, align 8, !tbaa !52
  %544 = trunc i64 %543 to i32
  invoke void @_ZN22StringRandomDatasourceC2Ejbj(ptr noundef nonnull align 8 dereferenceable(2548) %532, i32 noundef %536, i1 noundef zeroext %540, i32 noundef %544)
          to label %545 unwind label %547

545:                                              ; preds = %533
  %546 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %532, ptr %546, align 8, !tbaa !45
  br label %618

547:                                              ; preds = %533
  %548 = landingpad { ptr, i32 }
          cleanup
  %549 = extractvalue { ptr, i32 } %548, 0
  store ptr %549, ptr %11, align 8
  %550 = extractvalue { ptr, i32 } %548, 1
  store i32 %550, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %532, i64 noundef 2552) #11
  br label %755

551:                                              ; preds = %527
  %552 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #10
          to label %553 unwind label %112

553:                                              ; preds = %551
  %554 = load ptr, ptr %8, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.Configuration, ptr %554, i32 0, i32 20
  %556 = load i32, ptr %555, align 8, !tbaa !70
  %557 = load ptr, ptr %8, align 8, !tbaa !5
  %558 = getelementptr inbounds %struct.Configuration, ptr %557, i32 0, i32 21
  %559 = load i8, ptr %558, align 4, !tbaa !71, !range !60, !noundef !61
  %560 = trunc i8 %559 to i1
  invoke void @_ZN25StringAscendingDatasourceC2Ejb(ptr noundef nonnull align 8 dereferenceable(44) %552, i32 noundef %556, i1 noundef zeroext %560)
          to label %561 unwind label %563

561:                                              ; preds = %553
  %562 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %552, ptr %562, align 8, !tbaa !45
  br label %618

563:                                              ; preds = %553
  %564 = landingpad { ptr, i32 }
          cleanup
  %565 = extractvalue { ptr, i32 } %564, 0
  store ptr %565, ptr %11, align 8
  %566 = extractvalue { ptr, i32 } %564, 1
  store i32 %566, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %552, i64 noundef 48) #11
  br label %755

567:                                              ; preds = %527
  %568 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #10
          to label %569 unwind label %112

569:                                              ; preds = %567
  %570 = load ptr, ptr %8, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.Configuration, ptr %570, i32 0, i32 20
  %572 = load i32, ptr %571, align 8, !tbaa !70
  %573 = load ptr, ptr %8, align 8, !tbaa !5
  %574 = getelementptr inbounds %struct.Configuration, ptr %573, i32 0, i32 21
  %575 = load i8, ptr %574, align 4, !tbaa !71, !range !60, !noundef !61
  %576 = trunc i8 %575 to i1
  invoke void @_ZN26StringDescendingDatasourceC2Ejb(ptr noundef nonnull align 8 dereferenceable(44) %568, i32 noundef %572, i1 noundef zeroext %576)
          to label %577 unwind label %579

577:                                              ; preds = %569
  %578 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %568, ptr %578, align 8, !tbaa !45
  br label %618

579:                                              ; preds = %569
  %580 = landingpad { ptr, i32 }
          cleanup
  %581 = extractvalue { ptr, i32 } %580, 0
  store ptr %581, ptr %11, align 8
  %582 = extractvalue { ptr, i32 } %580, 1
  store i32 %582, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %568, i64 noundef 48) #11
  br label %755

583:                                              ; preds = %527
  %584 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 2608) #10
          to label %585 unwind label %112

585:                                              ; preds = %583
  %586 = load ptr, ptr %8, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.Configuration, ptr %586, i32 0, i32 17
  %588 = load i64, ptr %587, align 8, !tbaa !69
  %589 = icmp ne i64 %588, 0
  br i1 %589, label %590, label %594

590:                                              ; preds = %585
  %591 = load ptr, ptr %8, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.Configuration, ptr %591, i32 0, i32 17
  %593 = load i64, ptr %592, align 8, !tbaa !69
  br label %595

594:                                              ; preds = %585
  br label %595

595:                                              ; preds = %594, %590
  %596 = phi i64 [ %593, %590 ], [ 1048576, %594 ]
  %597 = trunc i64 %596 to i32
  %598 = load ptr, ptr %8, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.Configuration, ptr %598, i32 0, i32 20
  %600 = load i32, ptr %599, align 8, !tbaa !70
  %601 = load ptr, ptr %8, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.Configuration, ptr %601, i32 0, i32 21
  %603 = load i8, ptr %602, align 4, !tbaa !71, !range !60, !noundef !61
  %604 = trunc i8 %603 to i1
  %605 = load ptr, ptr %8, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.Configuration, ptr %605, i32 0, i32 16
  %607 = load i64, ptr %606, align 8, !tbaa !52
  %608 = trunc i64 %607 to i32
  invoke void @_ZN23StringZipfianDatasourceC2Ejjbjd(ptr noundef nonnull align 8 dereferenceable(2604) %584, i32 noundef %597, i32 noundef %600, i1 noundef zeroext %604, i32 noundef %608, double noundef 8.000000e-01)
          to label %609 unwind label %611

609:                                              ; preds = %595
  %610 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %584, ptr %610, align 8, !tbaa !45
  br label %618

611:                                              ; preds = %595
  %612 = landingpad { ptr, i32 }
          cleanup
  %613 = extractvalue { ptr, i32 } %612, 0
  store ptr %613, ptr %11, align 8
  %614 = extractvalue { ptr, i32 } %612, 1
  store i32 %614, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %584, i64 noundef 2608) #11
  br label %755

615:                                              ; preds = %527
  %616 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.5)
          to label %617 unwind label %112

617:                                              ; preds = %615
  br label %618

618:                                              ; preds = %617, %609, %577, %561, %545, %527
  br label %747

619:                                              ; preds = %156
  %620 = load ptr, ptr %8, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.Configuration, ptr %620, i32 0, i32 15
  %622 = load i32, ptr %621, align 4, !tbaa !68
  switch i32 %622, label %682 [
    i32 0, label %623
    i32 1, label %636
    i32 2, label %645
    i32 3, label %654
    i32 4, label %679
  ]

623:                                              ; preds = %619
  %624 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 5024) #10
          to label %625 unwind label %112

625:                                              ; preds = %623
  %626 = load ptr, ptr %8, align 8, !tbaa !5
  %627 = getelementptr inbounds %struct.Configuration, ptr %626, i32 0, i32 16
  %628 = load i64, ptr %627, align 8, !tbaa !52
  %629 = trunc i64 %628 to i32
  invoke void @_ZN23NumericRandomDatasourceIfEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020) %624, i32 noundef %629)
          to label %630 unwind label %632

630:                                              ; preds = %625
  %631 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %624, ptr %631, align 8, !tbaa !45
  br label %682

632:                                              ; preds = %625
  %633 = landingpad { ptr, i32 }
          cleanup
  %634 = extractvalue { ptr, i32 } %633, 0
  store ptr %634, ptr %11, align 8
  %635 = extractvalue { ptr, i32 } %633, 1
  store i32 %635, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %624, i64 noundef 5024) #11
  br label %755

636:                                              ; preds = %619
  %637 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #10
          to label %638 unwind label %112

638:                                              ; preds = %636
  invoke void @_ZN26NumericAscendingDatasourceIfEC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %637)
          to label %639 unwind label %641

639:                                              ; preds = %638
  %640 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %637, ptr %640, align 8, !tbaa !45
  br label %682

641:                                              ; preds = %638
  %642 = landingpad { ptr, i32 }
          cleanup
  %643 = extractvalue { ptr, i32 } %642, 0
  store ptr %643, ptr %11, align 8
  %644 = extractvalue { ptr, i32 } %642, 1
  store i32 %644, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %637, i64 noundef 16) #11
  br label %755

645:                                              ; preds = %619
  %646 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #10
          to label %647 unwind label %112

647:                                              ; preds = %645
  invoke void @_ZN27NumericDescendingDatasourceIfEC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %646)
          to label %648 unwind label %650

648:                                              ; preds = %647
  %649 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %646, ptr %649, align 8, !tbaa !45
  br label %682

650:                                              ; preds = %647
  %651 = landingpad { ptr, i32 }
          cleanup
  %652 = extractvalue { ptr, i32 } %651, 0
  store ptr %652, ptr %11, align 8
  %653 = extractvalue { ptr, i32 } %651, 1
  store i32 %653, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %646, i64 noundef 16) #11
  br label %755

654:                                              ; preds = %619
  %655 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #10
          to label %656 unwind label %112

656:                                              ; preds = %654
  %657 = load ptr, ptr %8, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.Configuration, ptr %657, i32 0, i32 17
  %659 = load i64, ptr %658, align 8, !tbaa !69
  %660 = icmp ne i64 %659, 0
  br i1 %660, label %661, label %665

661:                                              ; preds = %656
  %662 = load ptr, ptr %8, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.Configuration, ptr %662, i32 0, i32 17
  %664 = load i64, ptr %663, align 8, !tbaa !69
  br label %666

665:                                              ; preds = %656
  br label %666

666:                                              ; preds = %665, %661
  %667 = phi i64 [ %664, %661 ], [ 1048576, %665 ]
  %668 = trunc i64 %667 to i32
  %669 = load ptr, ptr %8, align 8, !tbaa !5
  %670 = getelementptr inbounds %struct.Configuration, ptr %669, i32 0, i32 16
  %671 = load i64, ptr %670, align 8, !tbaa !52
  %672 = trunc i64 %671 to i32
  invoke void @_ZN24NumericZipfianDatasourceIfEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52) %655, i32 noundef %668, i32 noundef %672, double noundef 8.000000e-01)
          to label %673 unwind label %675

673:                                              ; preds = %666
  %674 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %655, ptr %674, align 8, !tbaa !45
  br label %682

675:                                              ; preds = %666
  %676 = landingpad { ptr, i32 }
          cleanup
  %677 = extractvalue { ptr, i32 } %676, 0
  store ptr %677, ptr %11, align 8
  %678 = extractvalue { ptr, i32 } %676, 1
  store i32 %678, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %655, i64 noundef 56) #11
  br label %755

679:                                              ; preds = %619
  %680 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.5)
          to label %681 unwind label %112

681:                                              ; preds = %679
  br label %682

682:                                              ; preds = %681, %673, %648, %639, %630, %619
  br label %747

683:                                              ; preds = %156
  %684 = load ptr, ptr %8, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.Configuration, ptr %684, i32 0, i32 15
  %686 = load i32, ptr %685, align 4, !tbaa !68
  switch i32 %686, label %746 [
    i32 0, label %687
    i32 1, label %700
    i32 2, label %709
    i32 3, label %718
    i32 4, label %743
  ]

687:                                              ; preds = %683
  %688 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 5024) #10
          to label %689 unwind label %112

689:                                              ; preds = %687
  %690 = load ptr, ptr %8, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.Configuration, ptr %690, i32 0, i32 16
  %692 = load i64, ptr %691, align 8, !tbaa !52
  %693 = trunc i64 %692 to i32
  invoke void @_ZN23NumericRandomDatasourceIdEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020) %688, i32 noundef %693)
          to label %694 unwind label %696

694:                                              ; preds = %689
  %695 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %688, ptr %695, align 8, !tbaa !45
  br label %746

696:                                              ; preds = %689
  %697 = landingpad { ptr, i32 }
          cleanup
  %698 = extractvalue { ptr, i32 } %697, 0
  store ptr %698, ptr %11, align 8
  %699 = extractvalue { ptr, i32 } %697, 1
  store i32 %699, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %688, i64 noundef 5024) #11
  br label %755

700:                                              ; preds = %683
  %701 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #10
          to label %702 unwind label %112

702:                                              ; preds = %700
  invoke void @_ZN26NumericAscendingDatasourceIdEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %701)
          to label %703 unwind label %705

703:                                              ; preds = %702
  %704 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %701, ptr %704, align 8, !tbaa !45
  br label %746

705:                                              ; preds = %702
  %706 = landingpad { ptr, i32 }
          cleanup
  %707 = extractvalue { ptr, i32 } %706, 0
  store ptr %707, ptr %11, align 8
  %708 = extractvalue { ptr, i32 } %706, 1
  store i32 %708, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %701, i64 noundef 16) #11
  br label %755

709:                                              ; preds = %683
  %710 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #10
          to label %711 unwind label %112

711:                                              ; preds = %709
  invoke void @_ZN27NumericDescendingDatasourceIdEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %710)
          to label %712 unwind label %714

712:                                              ; preds = %711
  %713 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %710, ptr %713, align 8, !tbaa !45
  br label %746

714:                                              ; preds = %711
  %715 = landingpad { ptr, i32 }
          cleanup
  %716 = extractvalue { ptr, i32 } %715, 0
  store ptr %716, ptr %11, align 8
  %717 = extractvalue { ptr, i32 } %715, 1
  store i32 %717, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %710, i64 noundef 16) #11
  br label %755

718:                                              ; preds = %683
  %719 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #10
          to label %720 unwind label %112

720:                                              ; preds = %718
  %721 = load ptr, ptr %8, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.Configuration, ptr %721, i32 0, i32 17
  %723 = load i64, ptr %722, align 8, !tbaa !69
  %724 = icmp ne i64 %723, 0
  br i1 %724, label %725, label %729

725:                                              ; preds = %720
  %726 = load ptr, ptr %8, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.Configuration, ptr %726, i32 0, i32 17
  %728 = load i64, ptr %727, align 8, !tbaa !69
  br label %730

729:                                              ; preds = %720
  br label %730

730:                                              ; preds = %729, %725
  %731 = phi i64 [ %728, %725 ], [ 1048576, %729 ]
  %732 = trunc i64 %731 to i32
  %733 = load ptr, ptr %8, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct.Configuration, ptr %733, i32 0, i32 16
  %735 = load i64, ptr %734, align 8, !tbaa !52
  %736 = trunc i64 %735 to i32
  invoke void @_ZN24NumericZipfianDatasourceIdEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52) %719, i32 noundef %732, i32 noundef %736, double noundef 8.000000e-01)
          to label %737 unwind label %739

737:                                              ; preds = %730
  %738 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  store ptr %719, ptr %738, align 8, !tbaa !45
  br label %746

739:                                              ; preds = %730
  %740 = landingpad { ptr, i32 }
          cleanup
  %741 = extractvalue { ptr, i32 } %740, 0
  store ptr %741, ptr %11, align 8
  %742 = extractvalue { ptr, i32 } %740, 1
  store i32 %742, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %719, i64 noundef 56) #11
  br label %755

743:                                              ; preds = %683
  %744 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.5)
          to label %745 unwind label %112

745:                                              ; preds = %743
  br label %746

746:                                              ; preds = %745, %737, %712, %703, %694, %683
  br label %747

747:                                              ; preds = %746, %682, %618, %526, %436, %372, %287, %223, %156
  %748 = getelementptr inbounds %class.RuntimeGenerator, ptr %22, i32 0, i32 4
  %749 = load ptr, ptr %748, align 8, !tbaa !45
  %750 = icmp ne ptr %749, null
  br i1 %750, label %751, label %752

751:                                              ; preds = %747
  br label %754

752:                                              ; preds = %747
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 235, ptr noundef @__PRETTY_FUNCTION__._ZN16RuntimeGeneratorC2EiP13ConfigurationP8Databaseb) #12
  unreachable

753:                                              ; No predecessors!
  br label %754

754:                                              ; preds = %753, %751
  ret void

755:                                              ; preds = %739, %714, %705, %696, %675, %650, %641, %632, %611, %579, %563, %547, %519, %489, %473, %457, %429, %404, %395, %386, %368, %344, %319, %310, %301, %280, %255, %246, %237, %216, %191, %182, %173, %142, %112, %62
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %42) #9
  br label %756

756:                                              ; preds = %755, %58
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #9
  call void @_ZN9GeneratorD2Ev(ptr noundef nonnull align 8 dereferenceable(89) %22) #9
  br label %757

757:                                              ; preds = %756
  %758 = load ptr, ptr %11, align 8
  %759 = load i32, ptr %12, align 4
  %760 = insertvalue { ptr, i32 } poison, ptr %758, 0
  %761 = insertvalue { ptr, i32 } %760, i32 %759, 1
  resume { ptr, i32 } %761
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9GeneratorC2EiP13ConfigurationP8Database(ptr noundef nonnull align 8 dereferenceable(89), i32 noundef, ptr noundef, ptr noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5boost6random10uniform_01INS0_23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EEEdEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(2512), ptr noundef nonnull align 8 dereferenceable(2504)) unnamed_addr #2 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5boost16progress_displayC2EmRSoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_S9_(ptr noundef nonnull align 8 dereferenceable(132), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23NumericRandomDatasourceIhEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020), i32 noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN24NumericZipfianDatasourceIhEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52), i32 noundef, i32 noundef, double noundef) unnamed_addr #2 align 2

declare i32 @printf(ptr noundef, ...) #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23NumericRandomDatasourceItEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020), i32 noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN24NumericZipfianDatasourceItEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52), i32 noundef, i32 noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23NumericRandomDatasourceIjEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020), i32 noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN24NumericZipfianDatasourceIjEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52), i32 noundef, i32 noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN26NumericClusteredDatasourceC2Ejl(ptr noundef nonnull align 8 dereferenceable(2576), i32 noundef, i64 noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23NumericRandomDatasourceImEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020), i32 noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN24NumericZipfianDatasourceImEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52), i32 noundef, i32 noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN22BinaryRandomDatasourceC2Ejbj(ptr noundef nonnull align 8 dereferenceable(2524), i32 noundef, i1 noundef zeroext, i32 noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN25BinaryAscendingDatasourceC2Ejb(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, i1 noundef zeroext) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN26BinaryDescendingDatasourceC2Ejb(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, i1 noundef zeroext) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23BinaryZipfianDatasourceC2Emjbld(ptr noundef nonnull align 8 dereferenceable(2612), i64 noundef, i32 noundef, i1 noundef zeroext, i64 noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN22StringRandomDatasourceC2Ejbj(ptr noundef nonnull align 8 dereferenceable(2548), i32 noundef, i1 noundef zeroext, i32 noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN25StringAscendingDatasourceC2Ejb(ptr noundef nonnull align 8 dereferenceable(44), i32 noundef, i1 noundef zeroext) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN26StringDescendingDatasourceC2Ejb(ptr noundef nonnull align 8 dereferenceable(44), i32 noundef, i1 noundef zeroext) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23StringZipfianDatasourceC2Ejjbjd(ptr noundef nonnull align 8 dereferenceable(2604), i32 noundef, i32 noundef, i1 noundef zeroext, i32 noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23NumericRandomDatasourceIfEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020), i32 noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN24NumericZipfianDatasourceIfEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52), i32 noundef, i32 noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23NumericRandomDatasourceIdEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020), i32 noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN24NumericZipfianDatasourceIdEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52), i32 noundef, i32 noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #8

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { 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 #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #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, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"vtable pointer", !8, i64 0}
!15 = !{!16, !10, i64 92}
!16 = !{!"_ZTS16RuntimeGenerator", !17, i64 0, !10, i64 92, !19, i64 96, !6, i64 104, !20, i64 112, !20, i64 136, !24, i64 160, !25, i64 2664, !28, i64 5176, !27, i64 5184, !6, i64 5192, !6, i64 5200, !6, i64 5208, !31, i64 5216, !12, i64 5728, !39, i64 5736, !12, i64 6568}
!17 = !{!"_ZTS9Generator", !10, i64 8, !6, i64 16, !6, i64 24, !10, i64 32, !18, i64 40, !6, i64 64, !7, i64 72, !12, i64 88}
!18 = !{!"_ZTS12ups_record_t", !10, i64 0, !6, i64 8, !10, i64 16}
!19 = !{!"long", !7, i64 0}
!20 = !{!"_ZTSSt6vectorIhSaIhEE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSN5boost6random23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EEE", !7, i64 0, !19, i64 2496}
!25 = !{!"_ZTSN5boost6random10uniform_01INS0_23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EEEdEE", !26, i64 0}
!26 = !{!"_ZTSN5boost6random6detail30backward_compatible_uniform_01INS0_23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EEEdEE", !24, i64 0, !27, i64 2504}
!27 = !{!"double", !7, i64 0}
!28 = !{!"_ZTS5TimerIN5boost6chrono12system_clockEE", !29, i64 0}
!29 = !{!"_ZTSN5boost6chrono10time_pointINS0_12system_clockENS0_8durationIlNS_5ratioILl1ELl1000000000EEEEEEE", !30, i64 0}
!30 = !{!"_ZTSN5boost6chrono8durationIlNS_5ratioILl1ELl1000000000EEEEE", !19, i64 0}
!31 = !{!"_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE", !32, i64 0, !33, i64 8}
!32 = !{!"_ZTSSo"}
!33 = !{!"_ZTSSt13basic_filebufIcSt11char_traitsIcEE", !34, i64 0, !7, i64 64, !36, i64 104, !37, i64 120, !38, i64 124, !38, i64 132, !38, i64 140, !6, i64 152, !19, i64 160, !12, i64 168, !12, i64 169, !12, i64 170, !7, i64 171, !6, i64 176, !6, i64 184, !12, i64 192, !6, i64 200, !6, i64 208, !19, i64 216, !6, i64 224, !6, i64 232}
!34 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !35, i64 56}
!35 = !{!"_ZTSSt6locale", !6, i64 0}
!36 = !{!"_ZTSSt12__basic_fileIcE", !6, i64 0, !12, i64 8}
!37 = !{!"_ZTSSt13_Ios_Openmode", !7, i64 0}
!38 = !{!"_ZTS11__mbstate_t", !10, i64 0, !7, i64 4}
!39 = !{!"_ZTS7Metrics", !6, i64 0, !19, i64 8, !19, i64 16, !19, i64 24, !19, i64 32, !19, i64 40, !19, i64 48, !19, i64 56, !27, i64 64, !27, i64 72, !27, i64 80, !27, i64 88, !27, i64 96, !27, i64 104, !27, i64 112, !27, i64 120, !27, i64 128, !27, i64 136, !27, i64 144, !27, i64 152, !27, i64 160, !40, i64 168}
!40 = !{!"_ZTS17ups_env_metrics_t", !41, i64 0, !19, i64 8, !19, i64 16, !19, i64 24, !19, i64 32, !19, i64 40, !19, i64 48, !19, i64 56, !19, i64 64, !19, i64 72, !19, i64 80, !19, i64 88, !19, i64 96, !19, i64 104, !19, i64 112, !19, i64 120, !19, i64 128, !19, i64 136, !19, i64 144, !19, i64 152, !19, i64 160, !19, i64 168, !19, i64 176, !19, i64 184, !19, i64 192, !19, i64 200, !19, i64 208, !19, i64 216, !42, i64 224, !42, i64 440, !10, i64 656}
!41 = !{!"short", !7, i64 0}
!42 = !{!"_ZTS15btree_metrics_t", !41, i64 0, !19, i64 8, !19, i64 16, !19, i64 24, !10, i64 32, !43, i64 36, !43, i64 56, !43, i64 76, !43, i64 96, !43, i64 116, !43, i64 136, !43, i64 156, !43, i64 176, !43, i64 196}
!43 = !{!"_ZTS17min_max_avg_u32_t", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16}
!44 = !{!16, !19, i64 96}
!45 = !{!16, !6, i64 104}
!46 = !{!16, !27, i64 5184}
!47 = !{!16, !6, i64 5192}
!48 = !{!16, !6, i64 5200}
!49 = !{!16, !6, i64 5208}
!50 = !{!16, !12, i64 5728}
!51 = !{!16, !12, i64 6568}
!52 = !{!53, !19, i64 72}
!53 = !{!"_ZTS13Configuration", !12, i64 0, !10, i64 4, !12, i64 8, !12, i64 9, !12, i64 10, !54, i64 16, !12, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !12, i64 64, !10, i64 68, !19, i64 72, !19, i64 80, !19, i64 88, !19, i64 96, !10, i64 104, !12, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !12, i64 128, !12, i64 129, !10, i64 132, !12, i64 136, !10, i64 140, !12, i64 144, !12, i64 145, !12, i64 146, !12, i64 147, !12, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !12, i64 164, !12, i64 165, !12, i64 166, !10, i64 168, !10, i64 172, !54, i64 176, !10, i64 208, !10, i64 212, !10, i64 216, !12, i64 220, !12, i64 221, !10, i64 224, !10, i64 228, !10, i64 232, !12, i64 236, !12, i64 237, !12, i64 238, !12, i64 239, !10, i64 240, !12, i64 244, !12, i64 245}
!54 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !55, i64 0, !19, i64 8, !7, i64 16}
!55 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!56 = !{!16, !27, i64 5808}
!57 = !{!16, !27, i64 5832}
!58 = !{!16, !27, i64 5856}
!59 = !{!16, !27, i64 5880}
!60 = !{i8 0, i8 2}
!61 = !{}
!62 = !{!53, !12, i64 8}
!63 = !{!53, !12, i64 48}
!64 = !{!53, !10, i64 4}
!65 = !{!19, !19, i64 0}
!66 = !{!17, !6, i64 16}
!67 = !{!53, !10, i64 52}
!68 = !{!53, !10, i64 68}
!69 = !{!53, !19, i64 80}
!70 = !{!53, !10, i64 104}
!71 = !{!53, !12, i64 108}


; 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::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 }
%"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.std::allocator" = type { i8 }

@_ZTV16RuntimeGenerator = external dso_local unnamed_addr constant { [11 x ptr] }, align 8
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [91 x i8], align 1
@__PRETTY_FUNCTION__._ZN16RuntimeGeneratorC2EiP13ConfigurationP8Databaseb = external hidden unnamed_addr constant [75 x i8], align 1

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 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 #2 align 2

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 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 #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN16RuntimeGeneratorC2EiP13ConfigurationP8Databaseb(ptr noundef nonnull align 8 dereferenceable(6569) %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, i1 noundef zeroext %4) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca i32, align 4
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator", align 1
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator", align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator", align 1
  tail call void @_ZN9GeneratorC2EiP13ConfigurationP8Database(ptr noundef nonnull align 8 dereferenceable(89) %0, i32 noundef %1, ptr noundef %2, ptr noundef %3)
  store ptr getelementptr inbounds inrange(-16, 72) (i8, ptr @_ZTV16RuntimeGenerator, i64 16), ptr %0, align 8, !tbaa !5
  %13 = getelementptr inbounds i8, ptr %0, i64 92
  %14 = getelementptr inbounds i8, ptr %0, i64 104
  %15 = getelementptr inbounds i8, ptr %0, i64 112
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %13, i8 0, i64 20, i1 false)
  tail call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  %16 = getelementptr inbounds i8, ptr %0, i64 136
  tail call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #9
  %17 = getelementptr inbounds i8, ptr %0, i64 160
  invoke void @_ZN5boost6random23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EEC2Ev(ptr noundef nonnull align 8 dereferenceable(2504) %17)
          to label %18 unwind label %33

18:                                               ; preds = %5
  %19 = getelementptr inbounds i8, ptr %0, i64 2664
  invoke void @_ZN5boost6random10uniform_01INS0_23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EEEdEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(2512) %19, ptr noundef nonnull align 8 dereferenceable(2504) %17)
          to label %20 unwind label %33

20:                                               ; preds = %18
  %21 = getelementptr inbounds i8, ptr %0, i64 5176
  tail call void @_ZN5TimerIN5boost6chrono12system_clockEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21)
  %22 = getelementptr inbounds i8, ptr %0, i64 5184
  %23 = getelementptr inbounds i8, ptr %0, i64 5208
  %24 = getelementptr inbounds i8, ptr %0, i64 5216
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %22, i8 0, i64 32, i1 false)
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(248) %24)
          to label %25 unwind label %33

25:                                               ; preds = %20
  %26 = getelementptr inbounds i8, ptr %0, i64 5728
  store i8 1, ptr %26, align 8, !tbaa !8
  %27 = getelementptr inbounds i8, ptr %0, i64 6568
  store i8 0, ptr %27, align 8, !tbaa !41
  %28 = getelementptr inbounds i8, ptr %2, i64 72
  %29 = load i64, ptr %28, align 8, !tbaa !42
  %.not = icmp eq i64 %29, 0
  br i1 %.not, label %37, label %30

30:                                               ; preds = %25
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #9
  %31 = trunc i64 %29 to i32
  store i32 %31, ptr %6, align 4, !tbaa !46
  invoke void @_ZN5boost6random23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE4seedERKj(ptr noundef nonnull align 8 dereferenceable(2504) %17, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %32 unwind label %35

32:                                               ; preds = %30
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #9
  br label %37

33:                                               ; preds = %20, %18, %5
  %34 = landingpad { ptr, i32 }
          cleanup
  br label %383

35:                                               ; preds = %30
  %36 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #9
  br label %382

37:                                               ; preds = %32, %25
  %38 = getelementptr inbounds i8, ptr %0, i64 5736
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(832) %38, i8 0, i64 832, i1 false)
  %39 = getelementptr inbounds i8, ptr %0, i64 5808
  store double 0x416312CFFFAE147B, ptr %39, align 8, !tbaa !47
  %40 = getelementptr inbounds i8, ptr %0, i64 5832
  store double 0x416312CFFFAE147B, ptr %40, align 8, !tbaa !48
  %41 = getelementptr inbounds i8, ptr %0, i64 5856
  store double 0x416312CFFFAE147B, ptr %41, align 8, !tbaa !49
  %42 = getelementptr inbounds i8, ptr %0, i64 5880
  store double 0x416312CFFFAE147B, ptr %42, align 8, !tbaa !50
  br i1 %4, label %43, label %80

43:                                               ; preds = %37
  %44 = getelementptr inbounds i8, ptr %2, i64 8
  %45 = load i8, ptr %44, align 8, !tbaa !51, !range !52, !noundef !53
  %46 = trunc nuw i8 %45 to i1
  br i1 %46, label %80, label %47

47:                                               ; preds = %43
  %48 = getelementptr inbounds i8, ptr %2, i64 48
  %49 = load i8, ptr %48, align 8, !tbaa !54, !range !52, !noundef !53
  %50 = trunc nuw i8 %49 to i1
  br i1 %50, label %80, label %51

51:                                               ; preds = %47
  %52 = getelementptr inbounds i8, ptr %2, i64 4
  %53 = load i32, ptr %52, align 4, !tbaa !55
  %.not89 = icmp eq i32 %53, 0
  br i1 %.not89, label %54, label %80

54:                                               ; preds = %51
  %55 = invoke noalias noundef nonnull dereferenceable(136) ptr @_Znwm(i64 noundef 136) #10
          to label %56 unwind label %67

56:                                               ; preds = %54
  %57 = getelementptr inbounds i8, ptr %2, i64 96
  %58 = getelementptr inbounds i8, ptr %2, i64 80
  %59 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(8) %58)
  %60 = getelementptr inbounds i8, ptr %2, i64 88
  %61 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %60)
  %62 = load i64, ptr %61, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %63 unwind label %69

63:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %64 unwind label %71

64:                                               ; preds = %63
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %65 unwind label %73

65:                                               ; preds = %64
  invoke void @_ZN5boost16progress_displayC2EmRSoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_S9_(ptr noundef nonnull align 8 dereferenceable(132) %55, i64 noundef %62, ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %66 unwind label %75

66:                                               ; preds = %65
  store ptr %55, ptr %23, align 8, !tbaa !57
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  br label %80

67:                                               ; preds = %369, %364, %359, %352, %339, %334, %329, %322, %304, %294, %284, %272, %256, %246, %236, %224, %211, %206, %201, %194, %182, %172, %167, %162, %155, %142, %137, %132, %125, %112, %107, %102, %95, %85, %54
  %68 = landingpad { ptr, i32 }
          cleanup
  br label %382

69:                                               ; preds = %56
  %70 = landingpad { ptr, i32 }
          cleanup
  br label %79

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

73:                                               ; preds = %64
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %77

75:                                               ; preds = %65
  %76 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  br label %77

77:                                               ; preds = %75, %73
  %.pn = phi { ptr, i32 } [ %76, %75 ], [ %74, %73 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  br label %78

78:                                               ; preds = %77, %71
  %.pn.pn = phi { ptr, i32 } [ %.pn, %77 ], [ %72, %71 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  br label %79

79:                                               ; preds = %78, %69
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %78 ], [ %70, %69 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  call void @_ZdlPvm(ptr noundef nonnull %55, i64 noundef 136) #11
  br label %382

80:                                               ; preds = %43, %47, %51, %66, %37
  %81 = getelementptr inbounds i8, ptr %0, i64 16
  %82 = load ptr, ptr %81, align 8, !tbaa !58
  %83 = getelementptr inbounds i8, ptr %82, i64 176
  %84 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %83) #9
  br i1 %84, label %89, label %85

85:                                               ; preds = %80
  %86 = load ptr, ptr %81, align 8, !tbaa !58
  %87 = getelementptr inbounds i8, ptr %86, i64 176
  %88 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %87) #9
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248) %24, ptr noundef %88, i32 noundef 16)
          to label %89 unwind label %67

89:                                               ; preds = %85, %80
  %90 = getelementptr inbounds i8, ptr %2, i64 52
  %91 = load i32, ptr %90, align 4, !tbaa !59
  switch i32 %91, label %380 [
    i32 3, label %92
    i32 4, label %122
    i32 5, label %152
    i32 6, label %191
    i32 2, label %221
    i32 0, label %221
    i32 1, label %269
    i32 7, label %319
    i32 8, label %349
  ]

92:                                               ; preds = %89
  %93 = getelementptr inbounds i8, ptr %2, i64 68
  %94 = load i32, ptr %93, align 4, !tbaa !60
  switch i32 %94, label %380 [
    i32 0, label %95
    i32 1, label %102
    i32 2, label %107
    i32 3, label %112
    i32 4, label %.sink.split
  ]

95:                                               ; preds = %92
  %96 = invoke noalias noundef nonnull dereferenceable(5024) ptr @_Znwm(i64 noundef 5024) #10
          to label %97 unwind label %67

97:                                               ; preds = %95
  %98 = load i64, ptr %28, align 8, !tbaa !42
  %99 = trunc i64 %98 to i32
  invoke void @_ZN23NumericRandomDatasourceIhEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020) %96, i32 noundef %99)
          to label %.thread.sink.split unwind label %100

100:                                              ; preds = %97
  %101 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %96, i64 noundef 5024) #11
  br label %382

102:                                              ; preds = %92
  %103 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #10
          to label %104 unwind label %67

104:                                              ; preds = %102
  invoke void @_ZN26NumericAscendingDatasourceIhEC2Ev(ptr noundef nonnull align 8 dereferenceable(9) %103)
          to label %.thread.sink.split unwind label %105

105:                                              ; preds = %104
  %106 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %103, i64 noundef 16) #11
  br label %382

107:                                              ; preds = %92
  %108 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #10
          to label %109 unwind label %67

109:                                              ; preds = %107
  invoke void @_ZN27NumericDescendingDatasourceIhEC2Ev(ptr noundef nonnull align 8 dereferenceable(9) %108)
          to label %.thread.sink.split unwind label %110

110:                                              ; preds = %109
  %111 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %108, i64 noundef 16) #11
  br label %382

112:                                              ; preds = %92
  %113 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #10
          to label %114 unwind label %67

114:                                              ; preds = %112
  %115 = getelementptr inbounds i8, ptr %2, i64 80
  %116 = load i64, ptr %115, align 8, !tbaa !61
  %.not101 = icmp eq i64 %116, 0
  %117 = trunc i64 %116 to i32
  %spec.select = select i1 %.not101, i32 1048576, i32 %117
  %118 = load i64, ptr %28, align 8, !tbaa !42
  %119 = trunc i64 %118 to i32
  invoke void @_ZN24NumericZipfianDatasourceIhEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52) %113, i32 noundef %spec.select, i32 noundef %119, double noundef 8.000000e-01)
          to label %.thread.sink.split unwind label %120

120:                                              ; preds = %114
  %121 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %113, i64 noundef 56) #11
  br label %382

122:                                              ; preds = %89
  %123 = getelementptr inbounds i8, ptr %2, i64 68
  %124 = load i32, ptr %123, align 4, !tbaa !60
  switch i32 %124, label %380 [
    i32 0, label %125
    i32 1, label %132
    i32 2, label %137
    i32 3, label %142
    i32 4, label %.sink.split
  ]

125:                                              ; preds = %122
  %126 = invoke noalias noundef nonnull dereferenceable(5024) ptr @_Znwm(i64 noundef 5024) #10
          to label %127 unwind label %67

127:                                              ; preds = %125
  %128 = load i64, ptr %28, align 8, !tbaa !42
  %129 = trunc i64 %128 to i32
  invoke void @_ZN23NumericRandomDatasourceItEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020) %126, i32 noundef %129)
          to label %.thread.sink.split unwind label %130

130:                                              ; preds = %127
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %126, i64 noundef 5024) #11
  br label %382

132:                                              ; preds = %122
  %133 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #10
          to label %134 unwind label %67

134:                                              ; preds = %132
  invoke void @_ZN26NumericAscendingDatasourceItEC2Ev(ptr noundef nonnull align 8 dereferenceable(10) %133)
          to label %.thread.sink.split unwind label %135

135:                                              ; preds = %134
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %133, i64 noundef 16) #11
  br label %382

137:                                              ; preds = %122
  %138 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #10
          to label %139 unwind label %67

139:                                              ; preds = %137
  invoke void @_ZN27NumericDescendingDatasourceItEC2Ev(ptr noundef nonnull align 8 dereferenceable(10) %138)
          to label %.thread.sink.split unwind label %140

140:                                              ; preds = %139
  %141 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %138, i64 noundef 16) #11
  br label %382

142:                                              ; preds = %122
  %143 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #10
          to label %144 unwind label %67

144:                                              ; preds = %142
  %145 = getelementptr inbounds i8, ptr %2, i64 80
  %146 = load i64, ptr %145, align 8, !tbaa !61
  %.not100 = icmp eq i64 %146, 0
  %147 = trunc i64 %146 to i32
  %spec.select106 = select i1 %.not100, i32 1048576, i32 %147
  %148 = load i64, ptr %28, align 8, !tbaa !42
  %149 = trunc i64 %148 to i32
  invoke void @_ZN24NumericZipfianDatasourceItEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52) %143, i32 noundef %spec.select106, i32 noundef %149, double noundef 8.000000e-01)
          to label %.thread.sink.split unwind label %150

150:                                              ; preds = %144
  %151 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %143, i64 noundef 56) #11
  br label %382

152:                                              ; preds = %89
  %153 = getelementptr inbounds i8, ptr %2, i64 68
  %154 = load i32, ptr %153, align 4, !tbaa !60
  switch i32 %154, label %380 [
    i32 0, label %155
    i32 1, label %162
    i32 2, label %167
    i32 3, label %172
    i32 4, label %182
  ]

155:                                              ; preds = %152
  %156 = invoke noalias noundef nonnull dereferenceable(5024) ptr @_Znwm(i64 noundef 5024) #10
          to label %157 unwind label %67

157:                                              ; preds = %155
  %158 = load i64, ptr %28, align 8, !tbaa !42
  %159 = trunc i64 %158 to i32
  invoke void @_ZN23NumericRandomDatasourceIjEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020) %156, i32 noundef %159)
          to label %.thread.sink.split unwind label %160

160:                                              ; preds = %157
  %161 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %156, i64 noundef 5024) #11
  br label %382

162:                                              ; preds = %152
  %163 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #10
          to label %164 unwind label %67

164:                                              ; preds = %162
  invoke void @_ZN26NumericAscendingDatasourceIjEC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %163)
          to label %.thread.sink.split unwind label %165

165:                                              ; preds = %164
  %166 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %163, i64 noundef 16) #11
  br label %382

167:                                              ; preds = %152
  %168 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #10
          to label %169 unwind label %67

169:                                              ; preds = %167
  invoke void @_ZN27NumericDescendingDatasourceIjEC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %168)
          to label %.thread.sink.split unwind label %170

170:                                              ; preds = %169
  %171 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %168, i64 noundef 16) #11
  br label %382

172:                                              ; preds = %152
  %173 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #10
          to label %174 unwind label %67

174:                                              ; preds = %172
  %175 = getelementptr inbounds i8, ptr %2, i64 80
  %176 = load i64, ptr %175, align 8, !tbaa !61
  %.not99 = icmp eq i64 %176, 0
  %177 = trunc i64 %176 to i32
  %spec.select107 = select i1 %.not99, i32 1048576, i32 %177
  %178 = load i64, ptr %28, align 8, !tbaa !42
  %179 = trunc i64 %178 to i32
  invoke void @_ZN24NumericZipfianDatasourceIjEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52) %173, i32 noundef %spec.select107, i32 noundef %179, double noundef 8.000000e-01)
          to label %.thread.sink.split unwind label %180

180:                                              ; preds = %174
  %181 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %173, i64 noundef 56) #11
  br label %382

182:                                              ; preds = %152
  %183 = invoke noalias noundef nonnull dereferenceable(2576) ptr @_Znwm(i64 noundef 2576) #10
          to label %184 unwind label %67

184:                                              ; preds = %182
  %185 = getelementptr inbounds i8, ptr %2, i64 80
  %186 = load i64, ptr %185, align 8, !tbaa !61
  %.not98 = icmp eq i64 %186, 0
  %187 = trunc i64 %186 to i32
  %spec.select108 = select i1 %.not98, i32 1048576, i32 %187
  %188 = load i64, ptr %28, align 8, !tbaa !42
  invoke void @_ZN26NumericClusteredDatasourceC2Ejl(ptr noundef nonnull align 8 dereferenceable(2576) %183, i32 noundef %spec.select108, i64 noundef %188)
          to label %.thread.sink.split unwind label %189

189:                                              ; preds = %184
  %190 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %183, i64 noundef 2576) #11
  br label %382

191:                                              ; preds = %89
  %192 = getelementptr inbounds i8, ptr %2, i64 68
  %193 = load i32, ptr %192, align 4, !tbaa !60
  switch i32 %193, label %380 [
    i32 0, label %194
    i32 1, label %201
    i32 2, label %206
    i32 3, label %211
    i32 4, label %.sink.split
  ]

194:                                              ; preds = %191
  %195 = invoke noalias noundef nonnull dereferenceable(5024) ptr @_Znwm(i64 noundef 5024) #10
          to label %196 unwind label %67

196:                                              ; preds = %194
  %197 = load i64, ptr %28, align 8, !tbaa !42
  %198 = trunc i64 %197 to i32
  invoke void @_ZN23NumericRandomDatasourceImEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020) %195, i32 noundef %198)
          to label %.thread.sink.split unwind label %199

199:                                              ; preds = %196
  %200 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %195, i64 noundef 5024) #11
  br label %382

201:                                              ; preds = %191
  %202 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #10
          to label %203 unwind label %67

203:                                              ; preds = %201
  invoke void @_ZN26NumericAscendingDatasourceImEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %202)
          to label %.thread.sink.split unwind label %204

204:                                              ; preds = %203
  %205 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %202, i64 noundef 16) #11
  br label %382

206:                                              ; preds = %191
  %207 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #10
          to label %208 unwind label %67

208:                                              ; preds = %206
  invoke void @_ZN27NumericDescendingDatasourceImEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %207)
          to label %.thread.sink.split unwind label %209

209:                                              ; preds = %208
  %210 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %207, i64 noundef 16) #11
  br label %382

211:                                              ; preds = %191
  %212 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #10
          to label %213 unwind label %67

213:                                              ; preds = %211
  %214 = getelementptr inbounds i8, ptr %2, i64 80
  %215 = load i64, ptr %214, align 8, !tbaa !61
  %.not97 = icmp eq i64 %215, 0
  %216 = trunc i64 %215 to i32
  %spec.select109 = select i1 %.not97, i32 1048576, i32 %216
  %217 = load i64, ptr %28, align 8, !tbaa !42
  %218 = trunc i64 %217 to i32
  invoke void @_ZN24NumericZipfianDatasourceImEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52) %212, i32 noundef %spec.select109, i32 noundef %218, double noundef 8.000000e-01)
          to label %.thread.sink.split unwind label %219

219:                                              ; preds = %213
  %220 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %212, i64 noundef 56) #11
  br label %382

221:                                              ; preds = %89, %89
  %222 = getelementptr inbounds i8, ptr %2, i64 68
  %223 = load i32, ptr %222, align 4, !tbaa !60
  switch i32 %223, label %380 [
    i32 0, label %224
    i32 1, label %236
    i32 2, label %246
    i32 3, label %256
    i32 4, label %.sink.split
  ]

224:                                              ; preds = %221
  %225 = invoke noalias noundef nonnull dereferenceable(2528) ptr @_Znwm(i64 noundef 2528) #10
          to label %226 unwind label %67

226:                                              ; preds = %224
  %227 = getelementptr inbounds i8, ptr %2, i64 104
  %228 = load i32, ptr %227, align 8, !tbaa !62
  %229 = getelementptr inbounds i8, ptr %2, i64 108
  %230 = load i8, ptr %229, align 4, !tbaa !63, !range !52, !noundef !53
  %231 = trunc nuw i8 %230 to i1
  %232 = load i64, ptr %28, align 8, !tbaa !42
  %233 = trunc i64 %232 to i32
  invoke void @_ZN22BinaryRandomDatasourceC2Ejbj(ptr noundef nonnull align 8 dereferenceable(2524) %225, i32 noundef %228, i1 noundef zeroext %231, i32 noundef %233)
          to label %.thread.sink.split unwind label %234

234:                                              ; preds = %226
  %235 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %225, i64 noundef 2528) #11
  br label %382

236:                                              ; preds = %221
  %237 = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #10
          to label %238 unwind label %67

238:                                              ; preds = %236
  %239 = getelementptr inbounds i8, ptr %2, i64 104
  %240 = load i32, ptr %239, align 8, !tbaa !62
  %241 = getelementptr inbounds i8, ptr %2, i64 108
  %242 = load i8, ptr %241, align 4, !tbaa !63, !range !52, !noundef !53
  %243 = trunc nuw i8 %242 to i1
  invoke void @_ZN25BinaryAscendingDatasourceC2Ejb(ptr noundef nonnull align 8 dereferenceable(40) %237, i32 noundef %240, i1 noundef zeroext %243)
          to label %.thread.sink.split unwind label %244

244:                                              ; preds = %238
  %245 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %237, i64 noundef 40) #11
  br label %382

246:                                              ; preds = %221
  %247 = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #10
          to label %248 unwind label %67

248:                                              ; preds = %246
  %249 = getelementptr inbounds i8, ptr %2, i64 104
  %250 = load i32, ptr %249, align 8, !tbaa !62
  %251 = getelementptr inbounds i8, ptr %2, i64 108
  %252 = load i8, ptr %251, align 4, !tbaa !63, !range !52, !noundef !53
  %253 = trunc nuw i8 %252 to i1
  invoke void @_ZN26BinaryDescendingDatasourceC2Ejb(ptr noundef nonnull align 8 dereferenceable(40) %247, i32 noundef %250, i1 noundef zeroext %253)
          to label %.thread.sink.split unwind label %254

254:                                              ; preds = %248
  %255 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %247, i64 noundef 40) #11
  br label %382

256:                                              ; preds = %221
  %257 = invoke noalias noundef nonnull dereferenceable(2616) ptr @_Znwm(i64 noundef 2616) #10
          to label %258 unwind label %67

258:                                              ; preds = %256
  %259 = getelementptr inbounds i8, ptr %2, i64 80
  %260 = load i64, ptr %259, align 8, !tbaa !61
  %.not96 = icmp eq i64 %260, 0
  %spec.select110 = select i1 %.not96, i64 1048576, i64 %260
  %261 = getelementptr inbounds i8, ptr %2, i64 104
  %262 = load i32, ptr %261, align 8, !tbaa !62
  %263 = getelementptr inbounds i8, ptr %2, i64 108
  %264 = load i8, ptr %263, align 4, !tbaa !63, !range !52, !noundef !53
  %265 = trunc nuw i8 %264 to i1
  %266 = load i64, ptr %28, align 8, !tbaa !42
  invoke void @_ZN23BinaryZipfianDatasourceC2Emjbld(ptr noundef nonnull align 8 dereferenceable(2612) %257, i64 noundef %spec.select110, i32 noundef %262, i1 noundef zeroext %265, i64 noundef %266, double noundef 8.000000e-01)
          to label %.thread.sink.split unwind label %267

267:                                              ; preds = %258
  %268 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %257, i64 noundef 2616) #11
  br label %382

269:                                              ; preds = %89
  %270 = getelementptr inbounds i8, ptr %2, i64 68
  %271 = load i32, ptr %270, align 4, !tbaa !60
  switch i32 %271, label %380 [
    i32 0, label %272
    i32 1, label %284
    i32 2, label %294
    i32 3, label %304
    i32 4, label %.sink.split
  ]

272:                                              ; preds = %269
  %273 = invoke noalias noundef nonnull dereferenceable(2552) ptr @_Znwm(i64 noundef 2552) #10
          to label %274 unwind label %67

274:                                              ; preds = %272
  %275 = getelementptr inbounds i8, ptr %2, i64 104
  %276 = load i32, ptr %275, align 8, !tbaa !62
  %277 = getelementptr inbounds i8, ptr %2, i64 108
  %278 = load i8, ptr %277, align 4, !tbaa !63, !range !52, !noundef !53
  %279 = trunc nuw i8 %278 to i1
  %280 = load i64, ptr %28, align 8, !tbaa !42
  %281 = trunc i64 %280 to i32
  invoke void @_ZN22StringRandomDatasourceC2Ejbj(ptr noundef nonnull align 8 dereferenceable(2548) %273, i32 noundef %276, i1 noundef zeroext %279, i32 noundef %281)
          to label %.thread.sink.split unwind label %282

282:                                              ; preds = %274
  %283 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %273, i64 noundef 2552) #11
  br label %382

284:                                              ; preds = %269
  %285 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #10
          to label %286 unwind label %67

286:                                              ; preds = %284
  %287 = getelementptr inbounds i8, ptr %2, i64 104
  %288 = load i32, ptr %287, align 8, !tbaa !62
  %289 = getelementptr inbounds i8, ptr %2, i64 108
  %290 = load i8, ptr %289, align 4, !tbaa !63, !range !52, !noundef !53
  %291 = trunc nuw i8 %290 to i1
  invoke void @_ZN25StringAscendingDatasourceC2Ejb(ptr noundef nonnull align 8 dereferenceable(44) %285, i32 noundef %288, i1 noundef zeroext %291)
          to label %.thread.sink.split unwind label %292

292:                                              ; preds = %286
  %293 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %285, i64 noundef 48) #11
  br label %382

294:                                              ; preds = %269
  %295 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #10
          to label %296 unwind label %67

296:                                              ; preds = %294
  %297 = getelementptr inbounds i8, ptr %2, i64 104
  %298 = load i32, ptr %297, align 8, !tbaa !62
  %299 = getelementptr inbounds i8, ptr %2, i64 108
  %300 = load i8, ptr %299, align 4, !tbaa !63, !range !52, !noundef !53
  %301 = trunc nuw i8 %300 to i1
  invoke void @_ZN26StringDescendingDatasourceC2Ejb(ptr noundef nonnull align 8 dereferenceable(44) %295, i32 noundef %298, i1 noundef zeroext %301)
          to label %.thread.sink.split unwind label %302

302:                                              ; preds = %296
  %303 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %295, i64 noundef 48) #11
  br label %382

304:                                              ; preds = %269
  %305 = invoke noalias noundef nonnull dereferenceable(2608) ptr @_Znwm(i64 noundef 2608) #10
          to label %306 unwind label %67

306:                                              ; preds = %304
  %307 = getelementptr inbounds i8, ptr %2, i64 80
  %308 = load i64, ptr %307, align 8, !tbaa !61
  %.not95 = icmp eq i64 %308, 0
  %309 = trunc i64 %308 to i32
  %spec.select111 = select i1 %.not95, i32 1048576, i32 %309
  %310 = getelementptr inbounds i8, ptr %2, i64 104
  %311 = load i32, ptr %310, align 8, !tbaa !62
  %312 = getelementptr inbounds i8, ptr %2, i64 108
  %313 = load i8, ptr %312, align 4, !tbaa !63, !range !52, !noundef !53
  %314 = trunc nuw i8 %313 to i1
  %315 = load i64, ptr %28, align 8, !tbaa !42
  %316 = trunc i64 %315 to i32
  invoke void @_ZN23StringZipfianDatasourceC2Ejjbjd(ptr noundef nonnull align 8 dereferenceable(2604) %305, i32 noundef %spec.select111, i32 noundef %311, i1 noundef zeroext %314, i32 noundef %316, double noundef 8.000000e-01)
          to label %.thread.sink.split unwind label %317

317:                                              ; preds = %306
  %318 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %305, i64 noundef 2608) #11
  br label %382

319:                                              ; preds = %89
  %320 = getelementptr inbounds i8, ptr %2, i64 68
  %321 = load i32, ptr %320, align 4, !tbaa !60
  switch i32 %321, label %380 [
    i32 0, label %322
    i32 1, label %329
    i32 2, label %334
    i32 3, label %339
    i32 4, label %.sink.split
  ]

322:                                              ; preds = %319
  %323 = invoke noalias noundef nonnull dereferenceable(5024) ptr @_Znwm(i64 noundef 5024) #10
          to label %324 unwind label %67

324:                                              ; preds = %322
  %325 = load i64, ptr %28, align 8, !tbaa !42
  %326 = trunc i64 %325 to i32
  invoke void @_ZN23NumericRandomDatasourceIfEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020) %323, i32 noundef %326)
          to label %.thread.sink.split unwind label %327

327:                                              ; preds = %324
  %328 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %323, i64 noundef 5024) #11
  br label %382

329:                                              ; preds = %319
  %330 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #10
          to label %331 unwind label %67

331:                                              ; preds = %329
  invoke void @_ZN26NumericAscendingDatasourceIfEC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %330)
          to label %.thread.sink.split unwind label %332

332:                                              ; preds = %331
  %333 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %330, i64 noundef 16) #11
  br label %382

334:                                              ; preds = %319
  %335 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #10
          to label %336 unwind label %67

336:                                              ; preds = %334
  invoke void @_ZN27NumericDescendingDatasourceIfEC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %335)
          to label %.thread.sink.split unwind label %337

337:                                              ; preds = %336
  %338 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %335, i64 noundef 16) #11
  br label %382

339:                                              ; preds = %319
  %340 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #10
          to label %341 unwind label %67

341:                                              ; preds = %339
  %342 = getelementptr inbounds i8, ptr %2, i64 80
  %343 = load i64, ptr %342, align 8, !tbaa !61
  %.not94 = icmp eq i64 %343, 0
  %344 = trunc i64 %343 to i32
  %spec.select112 = select i1 %.not94, i32 1048576, i32 %344
  %345 = load i64, ptr %28, align 8, !tbaa !42
  %346 = trunc i64 %345 to i32
  invoke void @_ZN24NumericZipfianDatasourceIfEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52) %340, i32 noundef %spec.select112, i32 noundef %346, double noundef 8.000000e-01)
          to label %.thread.sink.split unwind label %347

347:                                              ; preds = %341
  %348 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %340, i64 noundef 56) #11
  br label %382

349:                                              ; preds = %89
  %350 = getelementptr inbounds i8, ptr %2, i64 68
  %351 = load i32, ptr %350, align 4, !tbaa !60
  switch i32 %351, label %380 [
    i32 0, label %352
    i32 1, label %359
    i32 2, label %364
    i32 3, label %369
    i32 4, label %.sink.split
  ]

352:                                              ; preds = %349
  %353 = invoke noalias noundef nonnull dereferenceable(5024) ptr @_Znwm(i64 noundef 5024) #10
          to label %354 unwind label %67

354:                                              ; preds = %352
  %355 = load i64, ptr %28, align 8, !tbaa !42
  %356 = trunc i64 %355 to i32
  invoke void @_ZN23NumericRandomDatasourceIdEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020) %353, i32 noundef %356)
          to label %.thread.sink.split unwind label %357

357:                                              ; preds = %354
  %358 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %353, i64 noundef 5024) #11
  br label %382

359:                                              ; preds = %349
  %360 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #10
          to label %361 unwind label %67

361:                                              ; preds = %359
  invoke void @_ZN26NumericAscendingDatasourceIdEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %360)
          to label %.thread.sink.split unwind label %362

362:                                              ; preds = %361
  %363 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %360, i64 noundef 16) #11
  br label %382

364:                                              ; preds = %349
  %365 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #10
          to label %366 unwind label %67

366:                                              ; preds = %364
  invoke void @_ZN27NumericDescendingDatasourceIdEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %365)
          to label %.thread.sink.split unwind label %367

367:                                              ; preds = %366
  %368 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %365, i64 noundef 16) #11
  br label %382

369:                                              ; preds = %349
  %370 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #10
          to label %371 unwind label %67

371:                                              ; preds = %369
  %372 = getelementptr inbounds i8, ptr %2, i64 80
  %373 = load i64, ptr %372, align 8, !tbaa !61
  %.not93 = icmp eq i64 %373, 0
  %374 = trunc i64 %373 to i32
  %spec.select113 = select i1 %.not93, i32 1048576, i32 %374
  %375 = load i64, ptr %28, align 8, !tbaa !42
  %376 = trunc i64 %375 to i32
  invoke void @_ZN24NumericZipfianDatasourceIdEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52) %370, i32 noundef %spec.select113, i32 noundef %376, double noundef 8.000000e-01)
          to label %.thread.sink.split unwind label %377

377:                                              ; preds = %371
  %378 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %370, i64 noundef 56) #11
  br label %382

.sink.split:                                      ; preds = %349, %319, %269, %221, %191, %122, %92
  %379 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5)
  br label %380

380:                                              ; preds = %.sink.split, %349, %319, %269, %221, %191, %152, %122, %92, %89
  %.pr = load ptr, ptr %14, align 8, !tbaa !64
  %.not105 = icmp eq ptr %.pr, null
  br i1 %.not105, label %381, label %.thread

381:                                              ; preds = %380
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 235, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN16RuntimeGeneratorC2EiP13ConfigurationP8Databaseb) #12
  unreachable

.thread.sink.split:                               ; preds = %371, %366, %361, %354, %341, %336, %331, %324, %306, %296, %286, %274, %258, %248, %238, %226, %213, %208, %203, %196, %184, %174, %169, %164, %157, %144, %139, %134, %127, %114, %109, %104, %97
  %.sink = phi ptr [ %96, %97 ], [ %103, %104 ], [ %108, %109 ], [ %113, %114 ], [ %126, %127 ], [ %133, %134 ], [ %138, %139 ], [ %143, %144 ], [ %156, %157 ], [ %163, %164 ], [ %168, %169 ], [ %173, %174 ], [ %183, %184 ], [ %195, %196 ], [ %202, %203 ], [ %207, %208 ], [ %212, %213 ], [ %225, %226 ], [ %237, %238 ], [ %247, %248 ], [ %257, %258 ], [ %273, %274 ], [ %285, %286 ], [ %295, %296 ], [ %305, %306 ], [ %323, %324 ], [ %330, %331 ], [ %335, %336 ], [ %340, %341 ], [ %353, %354 ], [ %360, %361 ], [ %365, %366 ], [ %370, %371 ]
  store ptr %.sink, ptr %14, align 8, !tbaa !64
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %380
  ret void

382:                                              ; preds = %79, %377, %367, %362, %357, %347, %337, %332, %327, %317, %302, %292, %282, %267, %254, %244, %234, %219, %209, %204, %199, %189, %180, %170, %165, %160, %150, %140, %135, %130, %120, %110, %105, %100, %67, %35
  %.pn102 = phi { ptr, i32 } [ %378, %377 ], [ %68, %67 ], [ %368, %367 ], [ %363, %362 ], [ %358, %357 ], [ %348, %347 ], [ %338, %337 ], [ %333, %332 ], [ %328, %327 ], [ %318, %317 ], [ %303, %302 ], [ %293, %292 ], [ %283, %282 ], [ %268, %267 ], [ %255, %254 ], [ %245, %244 ], [ %235, %234 ], [ %220, %219 ], [ %210, %209 ], [ %205, %204 ], [ %200, %199 ], [ %190, %189 ], [ %181, %180 ], [ %171, %170 ], [ %166, %165 ], [ %161, %160 ], [ %151, %150 ], [ %141, %140 ], [ %136, %135 ], [ %131, %130 ], [ %121, %120 ], [ %111, %110 ], [ %106, %105 ], [ %101, %100 ], [ %.pn.pn.pn, %79 ], [ %36, %35 ]
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %24) #9
  br label %383

383:                                              ; preds = %382, %33
  %.pn102.pn = phi { ptr, i32 } [ %.pn102, %382 ], [ %34, %33 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  call void @_ZN9GeneratorD2Ev(ptr noundef nonnull align 8 dereferenceable(89) %0) #9
  resume { ptr, i32 } %.pn102.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9GeneratorC2EiP13ConfigurationP8Database(ptr noundef nonnull align 8 dereferenceable(89), i32 noundef, ptr noundef, ptr noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5boost6random10uniform_01INS0_23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EEEdEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(2512), ptr noundef nonnull align 8 dereferenceable(2504)) unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5boost16progress_displayC2EmRSoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_S9_(ptr noundef nonnull align 8 dereferenceable(132), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

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

; 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 #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23NumericRandomDatasourceIhEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020), i32 noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN24NumericZipfianDatasourceIhEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52), i32 noundef, i32 noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23NumericRandomDatasourceItEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020), i32 noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN24NumericZipfianDatasourceItEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52), i32 noundef, i32 noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23NumericRandomDatasourceIjEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020), i32 noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN24NumericZipfianDatasourceIjEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52), i32 noundef, i32 noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN26NumericClusteredDatasourceC2Ejl(ptr noundef nonnull align 8 dereferenceable(2576), i32 noundef, i64 noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23NumericRandomDatasourceImEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020), i32 noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN24NumericZipfianDatasourceImEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52), i32 noundef, i32 noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN22BinaryRandomDatasourceC2Ejbj(ptr noundef nonnull align 8 dereferenceable(2524), i32 noundef, i1 noundef zeroext, i32 noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN25BinaryAscendingDatasourceC2Ejb(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, i1 noundef zeroext) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN26BinaryDescendingDatasourceC2Ejb(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, i1 noundef zeroext) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23BinaryZipfianDatasourceC2Emjbld(ptr noundef nonnull align 8 dereferenceable(2612), i64 noundef, i32 noundef, i1 noundef zeroext, i64 noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN22StringRandomDatasourceC2Ejbj(ptr noundef nonnull align 8 dereferenceable(2548), i32 noundef, i1 noundef zeroext, i32 noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN25StringAscendingDatasourceC2Ejb(ptr noundef nonnull align 8 dereferenceable(44), i32 noundef, i1 noundef zeroext) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN26StringDescendingDatasourceC2Ejb(ptr noundef nonnull align 8 dereferenceable(44), i32 noundef, i1 noundef zeroext) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23StringZipfianDatasourceC2Ejjbjd(ptr noundef nonnull align 8 dereferenceable(2604), i32 noundef, i32 noundef, i1 noundef zeroext, i32 noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23NumericRandomDatasourceIfEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020), i32 noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN24NumericZipfianDatasourceIfEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52), i32 noundef, i32 noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23NumericRandomDatasourceIdEC2Ej(ptr noundef nonnull align 8 dereferenceable(5020), i32 noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN24NumericZipfianDatasourceIdEC2Ejjd(ptr noundef nonnull align 8 dereferenceable(52), i32 noundef, i32 noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #8

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { 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 #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { nofree 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 #8 = { 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 #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, !6, i64 0}
!6 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !15, i64 5728}
!9 = !{!"_ZTS16RuntimeGenerator", !10, i64 0, !11, i64 92, !16, i64 96, !13, i64 104, !17, i64 112, !17, i64 136, !21, i64 160, !22, i64 2664, !25, i64 5176, !24, i64 5184, !13, i64 5192, !13, i64 5200, !13, i64 5208, !28, i64 5216, !15, i64 5728, !36, i64 5736, !15, i64 6568}
!10 = !{!"_ZTS9Generator", !11, i64 8, !13, i64 16, !13, i64 24, !11, i64 32, !14, i64 40, !13, i64 64, !12, i64 72, !15, i64 88}
!11 = !{!"int", !12, i64 0}
!12 = !{!"omnipotent char", !7, i64 0}
!13 = !{!"any pointer", !12, i64 0}
!14 = !{!"_ZTS12ups_record_t", !11, i64 0, !13, i64 8, !11, i64 16}
!15 = !{!"bool", !12, i64 0}
!16 = !{!"long", !12, i64 0}
!17 = !{!"_ZTSSt6vectorIhSaIhEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!21 = !{!"_ZTSN5boost6random23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EEE", !12, i64 0, !16, i64 2496}
!22 = !{!"_ZTSN5boost6random10uniform_01INS0_23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EEEdEE", !23, i64 0}
!23 = !{!"_ZTSN5boost6random6detail30backward_compatible_uniform_01INS0_23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EEEdEE", !21, i64 0, !24, i64 2504}
!24 = !{!"double", !12, i64 0}
!25 = !{!"_ZTS5TimerIN5boost6chrono12system_clockEE", !26, i64 0}
!26 = !{!"_ZTSN5boost6chrono10time_pointINS0_12system_clockENS0_8durationIlNS_5ratioILl1ELl1000000000EEEEEEE", !27, i64 0}
!27 = !{!"_ZTSN5boost6chrono8durationIlNS_5ratioILl1ELl1000000000EEEEE", !16, i64 0}
!28 = !{!"_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE", !29, i64 0, !30, i64 8}
!29 = !{!"_ZTSSo"}
!30 = !{!"_ZTSSt13basic_filebufIcSt11char_traitsIcEE", !31, i64 0, !12, i64 64, !33, i64 104, !34, i64 120, !35, i64 124, !35, i64 132, !35, i64 140, !13, i64 152, !16, i64 160, !15, i64 168, !15, i64 169, !15, i64 170, !12, i64 171, !13, i64 176, !13, i64 184, !15, i64 192, !13, i64 200, !13, i64 208, !16, i64 216, !13, i64 224, !13, i64 232}
!31 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !32, i64 56}
!32 = !{!"_ZTSSt6locale", !13, i64 0}
!33 = !{!"_ZTSSt12__basic_fileIcE", !13, i64 0, !15, i64 8}
!34 = !{!"_ZTSSt13_Ios_Openmode", !12, i64 0}
!35 = !{!"_ZTS11__mbstate_t", !11, i64 0, !12, i64 4}
!36 = !{!"_ZTS7Metrics", !13, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !16, i64 56, !24, i64 64, !24, i64 72, !24, i64 80, !24, i64 88, !24, i64 96, !24, i64 104, !24, i64 112, !24, i64 120, !24, i64 128, !24, i64 136, !24, i64 144, !24, i64 152, !24, i64 160, !37, i64 168}
!37 = !{!"_ZTS17ups_env_metrics_t", !38, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !16, i64 56, !16, i64 64, !16, i64 72, !16, i64 80, !16, i64 88, !16, i64 96, !16, i64 104, !16, i64 112, !16, i64 120, !16, i64 128, !16, i64 136, !16, i64 144, !16, i64 152, !16, i64 160, !16, i64 168, !16, i64 176, !16, i64 184, !16, i64 192, !16, i64 200, !16, i64 208, !16, i64 216, !39, i64 224, !39, i64 440, !11, i64 656}
!38 = !{!"short", !12, i64 0}
!39 = !{!"_ZTS15btree_metrics_t", !38, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !11, i64 32, !40, i64 36, !40, i64 56, !40, i64 76, !40, i64 96, !40, i64 116, !40, i64 136, !40, i64 156, !40, i64 176, !40, i64 196}
!40 = !{!"_ZTS17min_max_avg_u32_t", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16}
!41 = !{!9, !15, i64 6568}
!42 = !{!43, !16, i64 72}
!43 = !{!"_ZTS13Configuration", !15, i64 0, !11, i64 4, !15, i64 8, !15, i64 9, !15, i64 10, !44, i64 16, !15, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !15, i64 64, !11, i64 68, !16, i64 72, !16, i64 80, !16, i64 88, !16, i64 96, !11, i64 104, !15, i64 108, !11, i64 112, !11, i64 116, !11, i64 120, !11, i64 124, !15, i64 128, !15, i64 129, !11, i64 132, !15, i64 136, !11, i64 140, !15, i64 144, !15, i64 145, !15, i64 146, !15, i64 147, !15, i64 148, !11, i64 152, !11, i64 156, !11, i64 160, !15, i64 164, !15, i64 165, !15, i64 166, !11, i64 168, !11, i64 172, !44, i64 176, !11, i64 208, !11, i64 212, !11, i64 216, !15, i64 220, !15, i64 221, !11, i64 224, !11, i64 228, !11, i64 232, !15, i64 236, !15, i64 237, !15, i64 238, !15, i64 239, !11, i64 240, !15, i64 244, !15, i64 245}
!44 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !45, i64 0, !16, i64 8, !12, i64 16}
!45 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !13, i64 0}
!46 = !{!11, !11, i64 0}
!47 = !{!9, !24, i64 5808}
!48 = !{!9, !24, i64 5832}
!49 = !{!9, !24, i64 5856}
!50 = !{!9, !24, i64 5880}
!51 = !{!43, !15, i64 8}
!52 = !{i8 0, i8 2}
!53 = !{}
!54 = !{!43, !15, i64 48}
!55 = !{!43, !11, i64 4}
!56 = !{!16, !16, i64 0}
!57 = !{!9, !13, i64 5208}
!58 = !{!10, !13, i64 16}
!59 = !{!43, !11, i64 52}
!60 = !{!43, !11, i64 68}
!61 = !{!43, !16, i64 80}
!62 = !{!43, !11, i64 104}
!63 = !{!43, !15, i64 108}
!64 = !{!9, !13, i64 104}


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