; LLVM IR from interpretml/interpret :: shared/libebm (DataSetBoosting)

; 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.NAMESPACE_MAIN::RandomDeterministic" = type { i64, i64, i64 }
%"class.NAMESPACE_MAIN::RandomNondeterministic" = type { i64, i64, %"class.std::random_device" }
%"class.std::random_device" = type { %union.anon }
%union.anon = type { %"class.std::mersenne_twister_engine" }
%"class.std::mersenne_twister_engine" = type { [624 x i64], i64 }
%"struct.NAMESPACE_MAIN::DataSetBoosting" = type { i64, i64, ptr, ptr, ptr }
%"struct.NAMESPACE_MAIN::DataSubsetBoosting" = type { i64, ptr, ptr, ptr, ptr, ptr, ptr }
%"struct.NAMESPACE_MAIN::DataSetInnerBag" = type { i64, double, ptr }
%"struct.NAMESPACE_MAIN::TermInnerBag" = type { ptr, ptr }
%"struct.NAMESPACE_MAIN::SubsetInnerBag" = type { ptr }
%struct.ObjectiveWrapper = type { ptr, ptr, ptr, ptr, i32, i32, i32, double, double, double, double, double, double, double, double, i32, i64, i64, i64, i32, ptr }

@g_traceLevel = external global i32, align 4
@.str = external hidden unnamed_addr constant [89 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [41 x i8], align 1
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage = external hidden constant [34 x i8], align 16
@__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE = external hidden unnamed_addr constant [9 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [25 x i8], align 1
@__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE = external hidden unnamed_addr constant [130 x i8], align 1
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_0 = external hidden constant [80 x i8], align 16
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_1 = external hidden constant [62 x i8], align 16
@_ZTISt9bad_alloc = external constant ptr
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_2 = external hidden constant [70 x i8], align 16
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_3 = external hidden constant [70 x i8], align 16
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_4 = external hidden constant [85 x i8], align 16
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_5 = external hidden constant [63 x i8], align 16
@.str.123 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [49 x i8], align 1
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_6 = external hidden constant [59 x i8], align 16
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_7 = external hidden constant [105 x i8], align 16
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_8 = external hidden constant [56 x i8], align 16
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_9 = external hidden constant [57 x i8], align 16
@.str.125 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [42 x i8], align 1
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage__10_ = external hidden constant [104 x i8], align 16
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage__11_ = external hidden constant [55 x i8], align 16
@.str.129 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [53 x i8], align 1
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage__12_ = external hidden constant [52 x i8], align 16
@.str.141 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [15 x i8], align 1
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage__13_ = external hidden constant [33 x i8], align 16

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

declare void @InteralLogWithoutArguments(i32 noundef, ptr noundef) #1

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

declare void @LogAssertFailure(i64 noundef, ptr noundef, ptr noundef, ptr noundef) #1

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

; Function Attrs: nounwind
declare void @free(ptr noundef) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef, i64 noundef) #4

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare hidden void @_ZL17StopClangAnalysisv() #5

declare ptr @AlignedAlloc(i64 noundef) #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56)) #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef, i64 noundef) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i64 @_ZN14NAMESPACE_MAINL11MakeLowMaskImEET_i(i32 noundef) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK14NAMESPACE_MAIN4Term18GetBitsRequiredMinEv(ptr noundef nonnull align 8 dereferenceable(776)) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZN14NAMESPACE_MAINL22GetCountItemsBitPackedEim(i32 noundef, i64 noundef) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZN14NAMESPACE_MAINL12GetCountBitsEim(i32 noundef, i64 noundef) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(56)) #4 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776)) #4 align 2

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isnand(double noundef) #9

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isinfd(double noundef) #9

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE(ptr noundef nonnull align 8 dereferenceable(40) %0, i1 noundef zeroext %1, ptr noundef %2, i64 noundef %3, i64 noundef %4, ptr noundef %5) #10 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca i8, align 1
  %10 = alloca ptr, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i64, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i64, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca %"class.NAMESPACE_MAIN::RandomDeterministic", align 8
  %22 = alloca ptr, align 8
  %23 = alloca i64, align 8
  %24 = alloca %"class.NAMESPACE_MAIN::RandomNondeterministic", align 8
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca ptr, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca ptr, align 8
  %37 = alloca i32, align 4
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca i64, align 8
  %42 = alloca i32, align 4
  %43 = alloca i64, align 8
  %44 = alloca ptr, align 8
  %45 = alloca i32, align 4
  %46 = alloca i64, align 8
  %47 = alloca ptr, align 8
  %48 = alloca i32, align 4
  %49 = alloca i64, align 8
  %50 = alloca i64, align 8
  %51 = alloca i8, align 1
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca double, align 8
  %56 = alloca ptr, align 8
  %57 = alloca i64, align 8
  %58 = alloca double, align 8
  %59 = alloca i32, align 4
  %60 = alloca i64, align 8
  %61 = alloca ptr, align 8
  %62 = alloca i32, align 4
  %63 = alloca ptr, align 8
  %64 = alloca double, align 8
  %65 = alloca i8, align 1
  %66 = alloca double, align 8
  %67 = alloca i32, align 4
  %68 = alloca ptr, align 8
  %69 = alloca i64, align 8
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca ptr, align 8
  %73 = alloca ptr, align 8
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i64, align 8
  %77 = alloca i64, align 8
  %78 = alloca i64, align 8
  %79 = alloca i64, align 8
  %80 = alloca ptr, align 8
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i64, align 8
  %84 = alloca i64, align 8
  %85 = alloca double, align 8
  %86 = alloca i8, align 1
  %87 = alloca ptr, align 8
  %88 = alloca i32, align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  %89 = zext i1 %1 to i8
  store i8 %89, ptr %9, align 1, !tbaa !9
  store ptr %2, ptr %10, align 8, !tbaa !5
  store i64 %3, ptr %11, align 8, !tbaa !11
  store i64 %4, ptr %12, align 8, !tbaa !11
  store ptr %5, ptr %13, align 8, !tbaa !5
  %90 = load ptr, ptr %8, align 8
  br label %91

91:                                               ; preds = %6
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #14
  store i32 3, ptr %14, align 4, !tbaa !13
  %92 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %93 = icmp sle i32 3, %92
  br i1 %93, label %94, label %95

94:                                               ; preds = %91
  call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage)
  br label %95

95:                                               ; preds = %94, %91
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #14
  br label %96

96:                                               ; preds = %95
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #14
  %97 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetBoosting", ptr %90, i32 0, i32 0
  %98 = load i64, ptr %97, align 8, !tbaa !15
  store i64 %98, ptr %15, align 8, !tbaa !11
  %99 = load i64, ptr %15, align 8, !tbaa !11
  %100 = icmp ule i64 1, %99
  br i1 %100, label %103, label %101

101:                                              ; preds = %96
  call void @LogAssertFailure(i64 noundef 737, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.121)
  call void @__assert_fail(ptr noundef @.str.122, ptr noundef @.str, i32 noundef 737, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

102:                                              ; No predecessors!
  br label %103

103:                                              ; preds = %102, %96
  %104 = phi i1 [ true, %96 ], [ false, %102 ]
  %105 = load i64, ptr %12, align 8, !tbaa !11
  %106 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef 16, i64 noundef %105) #14
  br i1 %106, label %107, label %115

107:                                              ; preds = %103
  br label %108

108:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #14
  store i32 2, ptr %16, align 4, !tbaa !13
  %109 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %110 = icmp sle i32 2, %109
  br i1 %110, label %111, label %112

111:                                              ; preds = %108
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_0)
  br label %112

112:                                              ; preds = %111, %108
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #14
  br label %113

113:                                              ; preds = %112
  br label %114

114:                                              ; preds = %113
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %17, align 4
  br label %1006

115:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #14
  %116 = load i64, ptr %12, align 8, !tbaa !11
  %117 = mul i64 16, %116
  store i64 %117, ptr %18, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #14
  %118 = load i64, ptr %11, align 8, !tbaa !11
  %119 = call noundef ptr @_ZN14NAMESPACE_MAIN15DataSetInnerBag24AllocateDataSetInnerBagsEm(i64 noundef %118)
  store ptr %119, ptr %19, align 8, !tbaa !5
  %120 = load ptr, ptr %19, align 8, !tbaa !5
  %121 = icmp eq ptr null, %120
  br i1 %121, label %122, label %130

122:                                              ; preds = %115
  br label %123

123:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #14
  store i32 2, ptr %20, align 4, !tbaa !13
  %124 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %125 = icmp sle i32 2, %124
  br i1 %125, label %126, label %127

126:                                              ; preds = %123
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_1)
  br label %127

127:                                              ; preds = %126, %123
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #14
  br label %128

128:                                              ; preds = %127
  br label %129

129:                                              ; preds = %128
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %17, align 4
  br label %1005

130:                                              ; preds = %115
  %131 = load ptr, ptr %19, align 8, !tbaa !5
  %132 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetBoosting", ptr %90, i32 0, i32 3
  store ptr %131, ptr %132, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #14
  store ptr null, ptr %22, align 8, !tbaa !5
  %133 = load i64, ptr %11, align 8, !tbaa !11
  %134 = icmp ne i64 0, %133
  br i1 %134, label %135, label %223

135:                                              ; preds = %130
  %136 = load ptr, ptr %10, align 8, !tbaa !5
  %137 = icmp eq ptr null, %136
  br i1 %137, label %138, label %194

138:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #14
  call void @llvm.lifetime.start.p0(i64 5016, ptr %24) #14
  invoke void @_ZN14NAMESPACE_MAIN22RandomNondeterministicImEC2Ev(ptr noundef nonnull align 8 dereferenceable(5016) %24)
          to label %139 unwind label %143

139:                                              ; preds = %138
  %140 = call noundef i64 @_ZNSt14numeric_limitsImE3maxEv() #14
  %141 = invoke noundef i64 @_ZN14NAMESPACE_MAIN22RandomNondeterministicImE4NextEm(ptr noundef nonnull align 8 dereferenceable(5016) %24, i64 noundef %140)
          to label %142 unwind label %147

142:                                              ; preds = %139
  store i64 %141, ptr %23, align 8, !tbaa !11
  call void @_ZN14NAMESPACE_MAIN22RandomNondeterministicImED2Ev(ptr noundef nonnull align 8 dereferenceable(5016) %24) #14
  call void @llvm.lifetime.end.p0(i64 5016, ptr %24) #14
  br label %188

143:                                              ; preds = %138
  %144 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9bad_alloc
          catch ptr null
  %145 = extractvalue { ptr, i32 } %144, 0
  store ptr %145, ptr %25, align 8
  %146 = extractvalue { ptr, i32 } %144, 1
  store i32 %146, ptr %26, align 4
  br label %151

147:                                              ; preds = %139
  %148 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9bad_alloc
          catch ptr null
  %149 = extractvalue { ptr, i32 } %148, 0
  store ptr %149, ptr %25, align 8
  %150 = extractvalue { ptr, i32 } %148, 1
  store i32 %150, ptr %26, align 4
  call void @_ZN14NAMESPACE_MAIN22RandomNondeterministicImED2Ev(ptr noundef nonnull align 8 dereferenceable(5016) %24) #14
  br label %151

151:                                              ; preds = %147, %143
  call void @llvm.lifetime.end.p0(i64 5016, ptr %24) #14
  br label %152

152:                                              ; preds = %151
  %153 = load i32, ptr %26, align 4
  %154 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9bad_alloc) #14
  %155 = icmp eq i32 %153, %154
  br i1 %155, label %156, label %164

156:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #14
  %157 = load ptr, ptr %25, align 8
  %158 = call ptr @__cxa_begin_catch(ptr %157) #14
  store ptr %158, ptr %28, align 8
  br label %159

159:                                              ; preds = %156
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #14
  store i32 2, ptr %29, align 4, !tbaa !13
  %160 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %161 = icmp sle i32 2, %160
  br i1 %161, label %162, label %184

162:                                              ; preds = %159
  invoke void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_3)
          to label %163 unwind label %180

163:                                              ; preds = %162
  br label %184

164:                                              ; preds = %152
  %165 = load ptr, ptr %25, align 8
  %166 = call ptr @__cxa_begin_catch(ptr %165) #14
  br label %167

167:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #14
  store i32 2, ptr %27, align 4, !tbaa !13
  %168 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %169 = icmp sle i32 2, %168
  br i1 %169, label %170, label %176

170:                                              ; preds = %167
  invoke void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_2)
          to label %171 unwind label %172

171:                                              ; preds = %170
  br label %176

172:                                              ; preds = %170
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %25, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #14
  invoke void @__cxa_end_catch()
          to label %179 unwind label %1013

176:                                              ; preds = %171, %167
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #14
  br label %177

177:                                              ; preds = %176
  br label %178

178:                                              ; preds = %177
  store i32 -2, ptr %7, align 4
  store i32 1, ptr %17, align 4
  call void @__cxa_end_catch()
  br label %190

179:                                              ; preds = %172
  br label %193

180:                                              ; preds = %162
  %181 = landingpad { ptr, i32 }
          cleanup
  %182 = extractvalue { ptr, i32 } %181, 0
  store ptr %182, ptr %25, align 8
  %183 = extractvalue { ptr, i32 } %181, 1
  store i32 %183, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #14
  invoke void @__cxa_end_catch()
          to label %187 unwind label %1013

184:                                              ; preds = %163, %159
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #14
  br label %185

185:                                              ; preds = %184
  br label %186

186:                                              ; preds = %185
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %17, align 4
  call void @__cxa_end_catch()
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #14
  br label %190

187:                                              ; preds = %180
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #14
  br label %193

188:                                              ; preds = %142
  %189 = load i64, ptr %23, align 8, !tbaa !11
  call void @_ZN14NAMESPACE_MAIN19RandomDeterministic10InitializeEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %189)
  store i32 0, ptr %17, align 4
  br label %190

190:                                              ; preds = %188, %186, %178
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #14
  %191 = load i32, ptr %17, align 4
  switch i32 %191, label %1004 [
    i32 0, label %192
  ]

192:                                              ; preds = %190
  br label %197

193:                                              ; preds = %187, %179
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #14
  br label %1008

194:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #14
  %195 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %195, ptr %30, align 8, !tbaa !5
  %196 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN14NAMESPACE_MAIN19RandomDeterministic10InitializeERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(24) %196)
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #14
  br label %197

197:                                              ; preds = %194, %192
  %198 = load i64, ptr %15, align 8, !tbaa !11
  %199 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef 1, i64 noundef %198) #14
  br i1 %199, label %200, label %208

200:                                              ; preds = %197
  br label %201

201:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #14
  store i32 2, ptr %31, align 4, !tbaa !13
  %202 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %203 = icmp sle i32 2, %202
  br i1 %203, label %204, label %205

204:                                              ; preds = %201
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_4)
  br label %205

205:                                              ; preds = %204, %201
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #14
  br label %206

206:                                              ; preds = %205
  br label %207

207:                                              ; preds = %206
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %17, align 4
  br label %1004

208:                                              ; preds = %197
  %209 = load i64, ptr %15, align 8, !tbaa !11
  %210 = mul i64 1, %209
  %211 = call noalias ptr @malloc(i64 noundef %210) #16
  store ptr %211, ptr %22, align 8, !tbaa !5
  %212 = load ptr, ptr %22, align 8, !tbaa !5
  %213 = icmp eq ptr null, %212
  br i1 %213, label %214, label %222

214:                                              ; preds = %208
  br label %215

215:                                              ; preds = %214
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #14
  store i32 2, ptr %32, align 4, !tbaa !13
  %216 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %217 = icmp sle i32 2, %216
  br i1 %217, label %218, label %219

218:                                              ; preds = %215
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_5)
  br label %219

219:                                              ; preds = %218, %215
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #14
  br label %220

220:                                              ; preds = %219
  br label %221

221:                                              ; preds = %220
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %17, align 4
  br label %1004

222:                                              ; preds = %208
  br label %223

223:                                              ; preds = %222, %130
  %224 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetBoosting", ptr %90, i32 0, i32 2
  %225 = load ptr, ptr %224, align 8, !tbaa !18
  %226 = icmp ne ptr null, %225
  br i1 %226, label %229, label %227

227:                                              ; preds = %223
  call void @LogAssertFailure(i64 noundef 787, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.5)
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 787, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

228:                                              ; No predecessors!
  br label %229

229:                                              ; preds = %228, %223
  %230 = phi i1 [ true, %223 ], [ false, %228 ]
  %231 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetBoosting", ptr %90, i32 0, i32 1
  %232 = load i64, ptr %231, align 8, !tbaa !19
  %233 = icmp ule i64 1, %232
  br i1 %233, label %236, label %234

234:                                              ; preds = %229
  call void @LogAssertFailure(i64 noundef 788, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.7)
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str, i32 noundef 788, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

235:                                              ; No predecessors!
  br label %236

236:                                              ; preds = %235, %229
  %237 = phi i1 [ true, %229 ], [ false, %235 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #14
  %238 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetBoosting", ptr %90, i32 0, i32 2
  %239 = load ptr, ptr %238, align 8, !tbaa !18
  %240 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetBoosting", ptr %90, i32 0, i32 1
  %241 = load i64, ptr %240, align 8, !tbaa !19
  %242 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %239, i64 %241
  store ptr %242, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #14
  %243 = load i64, ptr %11, align 8, !tbaa !11
  %244 = icmp eq i64 0, %243
  br i1 %244, label %245, label %246

245:                                              ; preds = %236
  br label %248

246:                                              ; preds = %236
  %247 = load i64, ptr %11, align 8, !tbaa !11
  br label %248

248:                                              ; preds = %246, %245
  %249 = phi i64 [ 1, %245 ], [ %247, %246 ]
  store i64 %249, ptr %34, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #14
  store i64 0, ptr %35, align 8, !tbaa !11
  br label %250

250:                                              ; preds = %974, %248
  %251 = load ptr, ptr %19, align 8, !tbaa !5
  %252 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInnerBag", ptr %251, i32 0, i32 2
  %253 = load ptr, ptr %252, align 8, !tbaa !20
  %254 = icmp eq ptr null, %253
  br i1 %254, label %257, label %255

255:                                              ; preds = %250
  call void @LogAssertFailure(i64 noundef 794, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.123)
  call void @__assert_fail(ptr noundef @.str.124, ptr noundef @.str, i32 noundef 794, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

256:                                              ; No predecessors!
  br label %257

257:                                              ; preds = %256, %250
  %258 = phi i1 [ true, %250 ], [ false, %256 ]
  %259 = load i64, ptr %12, align 8, !tbaa !11
  %260 = icmp ne i64 0, %259
  br i1 %260, label %261, label %391

261:                                              ; preds = %257
  %262 = load i8, ptr %9, align 1, !tbaa !9, !range !23, !noundef !24
  %263 = trunc i8 %262 to i1
  br i1 %263, label %264, label %391

264:                                              ; preds = %261
  %265 = load ptr, ptr %13, align 8, !tbaa !5
  %266 = icmp ne ptr null, %265
  br i1 %266, label %269, label %267

267:                                              ; preds = %264
  call void @LogAssertFailure(i64 noundef 796, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.45)
  call void @__assert_fail(ptr noundef @.str.46, ptr noundef @.str, i32 noundef 796, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

268:                                              ; No predecessors!
  br label %269

269:                                              ; preds = %268, %264
  %270 = phi i1 [ true, %264 ], [ false, %268 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #14
  %271 = load i64, ptr %18, align 8, !tbaa !11
  %272 = call noalias ptr @malloc(i64 noundef %271) #16
  store ptr %272, ptr %36, align 8, !tbaa !5
  %273 = load ptr, ptr %36, align 8, !tbaa !5
  %274 = icmp eq ptr null, %273
  br i1 %274, label %275, label %284

275:                                              ; preds = %269
  br label %276

276:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #14
  store i32 2, ptr %37, align 4, !tbaa !13
  %277 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %278 = icmp sle i32 2, %277
  br i1 %278, label %279, label %280

279:                                              ; preds = %276
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_6)
  br label %280

280:                                              ; preds = %279, %276
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #14
  br label %281

281:                                              ; preds = %280
  br label %282

282:                                              ; preds = %281
  %283 = load ptr, ptr %22, align 8, !tbaa !5
  call void @free(ptr noundef %283) #14
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %17, align 4
  br label %388

284:                                              ; preds = %269
  %285 = load ptr, ptr %36, align 8, !tbaa !5
  %286 = load ptr, ptr %19, align 8, !tbaa !5
  %287 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInnerBag", ptr %286, i32 0, i32 2
  store ptr %285, ptr %287, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #14
  %288 = load ptr, ptr %36, align 8, !tbaa !5
  %289 = load i64, ptr %18, align 8, !tbaa !11
  %290 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteINS_12TermInnerBagEEEPT_S3_m(ptr noundef %288, i64 noundef %289) #14
  store ptr %290, ptr %38, align 8, !tbaa !5
  br label %291

291:                                              ; preds = %298, %284
  %292 = load ptr, ptr %36, align 8, !tbaa !5
  %293 = getelementptr inbounds %"struct.NAMESPACE_MAIN::TermInnerBag", ptr %292, i32 0, i32 0
  store ptr null, ptr %293, align 8, !tbaa !25
  %294 = load ptr, ptr %36, align 8, !tbaa !5
  %295 = getelementptr inbounds %"struct.NAMESPACE_MAIN::TermInnerBag", ptr %294, i32 0, i32 1
  store ptr null, ptr %295, align 8, !tbaa !27
  %296 = load ptr, ptr %36, align 8, !tbaa !5
  %297 = getelementptr inbounds %"struct.NAMESPACE_MAIN::TermInnerBag", ptr %296, i32 1
  store ptr %297, ptr %36, align 8, !tbaa !5
  br label %298

298:                                              ; preds = %291
  %299 = load ptr, ptr %38, align 8, !tbaa !5
  %300 = load ptr, ptr %36, align 8, !tbaa !5
  %301 = icmp ne ptr %299, %300
  br i1 %301, label %291, label %302, !llvm.loop !28

302:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #14
  %303 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %303, ptr %39, align 8, !tbaa !5
  %304 = load ptr, ptr %19, align 8, !tbaa !5
  %305 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInnerBag", ptr %304, i32 0, i32 2
  %306 = load ptr, ptr %305, align 8, !tbaa !20
  store ptr %306, ptr %36, align 8, !tbaa !5
  br label %307

307:                                              ; preds = %382, %302
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #14
  %308 = load ptr, ptr %39, align 8, !tbaa !5
  %309 = load ptr, ptr %308, align 8, !tbaa !5
  store ptr %309, ptr %40, align 8, !tbaa !5
  %310 = load ptr, ptr %39, align 8, !tbaa !5
  %311 = getelementptr inbounds ptr, ptr %310, i32 1
  store ptr %311, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #14
  %312 = load ptr, ptr %40, align 8, !tbaa !5
  %313 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %312) #14
  store i64 %313, ptr %41, align 8, !tbaa !11
  %314 = load i64, ptr %41, align 8, !tbaa !11
  %315 = icmp ne i64 1, %314
  br i1 %315, label %316, label %376

316:                                              ; preds = %307
  %317 = call noundef i64 @_ZN14NAMESPACE_MAINL6EbmMaxImEET_S1_S1_(i64 noundef 8, i64 noundef 8) #14
  %318 = load i64, ptr %41, align 8, !tbaa !11
  %319 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %317, i64 noundef %318) #14
  br i1 %319, label %320, label %329

320:                                              ; preds = %316
  br label %321

321:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #14
  store i32 2, ptr %42, align 4, !tbaa !13
  %322 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %323 = icmp sle i32 2, %322
  br i1 %323, label %324, label %325

324:                                              ; preds = %321
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_7)
  br label %325

325:                                              ; preds = %324, %321
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #14
  br label %326

326:                                              ; preds = %325
  br label %327

327:                                              ; preds = %326
  %328 = load ptr, ptr %22, align 8, !tbaa !5
  call void @free(ptr noundef %328) #14
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %17, align 4
  br label %379

329:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #14
  %330 = load i64, ptr %41, align 8, !tbaa !11
  %331 = mul i64 8, %330
  store i64 %331, ptr %43, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #14
  %332 = load i64, ptr %43, align 8, !tbaa !11
  %333 = call ptr @AlignedAlloc(i64 noundef %332)
  store ptr %333, ptr %44, align 8, !tbaa !5
  %334 = load ptr, ptr %44, align 8, !tbaa !5
  %335 = icmp eq ptr null, %334
  br i1 %335, label %336, label %345

336:                                              ; preds = %329
  br label %337

337:                                              ; preds = %336
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #14
  store i32 2, ptr %45, align 4, !tbaa !13
  %338 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %339 = icmp sle i32 2, %338
  br i1 %339, label %340, label %341

340:                                              ; preds = %337
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_8)
  br label %341

341:                                              ; preds = %340, %337
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #14
  br label %342

342:                                              ; preds = %341
  br label %343

343:                                              ; preds = %342
  %344 = load ptr, ptr %22, align 8, !tbaa !5
  call void @free(ptr noundef %344) #14
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %17, align 4
  br label %373

345:                                              ; preds = %329
  %346 = load ptr, ptr %44, align 8, !tbaa !5
  %347 = load ptr, ptr %36, align 8, !tbaa !5
  %348 = getelementptr inbounds %"struct.NAMESPACE_MAIN::TermInnerBag", ptr %347, i32 0, i32 0
  store ptr %346, ptr %348, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #14
  %349 = load i64, ptr %41, align 8, !tbaa !11
  %350 = mul i64 8, %349
  store i64 %350, ptr %46, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #14
  %351 = load i64, ptr %46, align 8, !tbaa !11
  %352 = call ptr @AlignedAlloc(i64 noundef %351)
  store ptr %352, ptr %47, align 8, !tbaa !5
  %353 = load ptr, ptr %47, align 8, !tbaa !5
  %354 = icmp eq ptr null, %353
  br i1 %354, label %355, label %364

355:                                              ; preds = %345
  br label %356

356:                                              ; preds = %355
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #14
  store i32 2, ptr %48, align 4, !tbaa !13
  %357 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %358 = icmp sle i32 2, %357
  br i1 %358, label %359, label %360

359:                                              ; preds = %356
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_9)
  br label %360

360:                                              ; preds = %359, %356
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #14
  br label %361

361:                                              ; preds = %360
  br label %362

362:                                              ; preds = %361
  %363 = load ptr, ptr %22, align 8, !tbaa !5
  call void @free(ptr noundef %363) #14
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %17, align 4
  br label %372

364:                                              ; preds = %345
  %365 = load ptr, ptr %47, align 8, !tbaa !5
  %366 = load ptr, ptr %36, align 8, !tbaa !5
  %367 = getelementptr inbounds %"struct.NAMESPACE_MAIN::TermInnerBag", ptr %366, i32 0, i32 1
  store ptr %365, ptr %367, align 8, !tbaa !27
  %368 = load ptr, ptr %44, align 8, !tbaa !5
  %369 = load i64, ptr %43, align 8, !tbaa !11
  call void @llvm.memset.p0.i64(ptr align 8 %368, i8 0, i64 %369, i1 false)
  %370 = load ptr, ptr %47, align 8, !tbaa !5
  %371 = load i64, ptr %46, align 8, !tbaa !11
  call void @llvm.memset.p0.i64(ptr align 8 %370, i8 0, i64 %371, i1 false)
  store i32 0, ptr %17, align 4
  br label %372

372:                                              ; preds = %364, %362
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #14
  br label %373

373:                                              ; preds = %372, %343
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #14
  %374 = load i32, ptr %17, align 4
  switch i32 %374, label %379 [
    i32 0, label %375
  ]

375:                                              ; preds = %373
  br label %376

376:                                              ; preds = %375, %307
  %377 = load ptr, ptr %36, align 8, !tbaa !5
  %378 = getelementptr inbounds %"struct.NAMESPACE_MAIN::TermInnerBag", ptr %377, i32 1
  store ptr %378, ptr %36, align 8, !tbaa !5
  store i32 0, ptr %17, align 4
  br label %379

379:                                              ; preds = %376, %373, %327
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #14
  %380 = load i32, ptr %17, align 4
  switch i32 %380, label %387 [
    i32 0, label %381
  ]

381:                                              ; preds = %379
  br label %382

382:                                              ; preds = %381
  %383 = load ptr, ptr %38, align 8, !tbaa !5
  %384 = load ptr, ptr %36, align 8, !tbaa !5
  %385 = icmp ne ptr %383, %384
  br i1 %385, label %307, label %386, !llvm.loop !30

386:                                              ; preds = %382
  store i32 0, ptr %17, align 4
  br label %387

387:                                              ; preds = %386, %379
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #14
  br label %388

388:                                              ; preds = %387, %282
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #14
  %389 = load i32, ptr %17, align 4
  switch i32 %389, label %1003 [
    i32 0, label %390
  ]

390:                                              ; preds = %388
  br label %391

391:                                              ; preds = %390, %261, %257
  %392 = load ptr, ptr %22, align 8, !tbaa !5
  %393 = icmp ne ptr null, %392
  br i1 %393, label %394, label %435

394:                                              ; preds = %391
  %395 = load i64, ptr %11, align 8, !tbaa !11
  %396 = icmp ne i64 0, %395
  br i1 %396, label %399, label %397

397:                                              ; preds = %394
  call void @LogAssertFailure(i64 noundef 852, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.125)
  call void @__assert_fail(ptr noundef @.str.126, ptr noundef @.str, i32 noundef 852, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

398:                                              ; No predecessors!
  br label %399

399:                                              ; preds = %398, %394
  %400 = phi i1 [ true, %394 ], [ false, %398 ]
  %401 = load ptr, ptr %22, align 8, !tbaa !5
  %402 = load i64, ptr %15, align 8, !tbaa !11
  %403 = mul i64 1, %402
  call void @llvm.memset.p0.i64(ptr align 1 %401, i8 0, i64 %403, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #14
  %404 = load i64, ptr %15, align 8, !tbaa !11
  store i64 %404, ptr %49, align 8, !tbaa !11
  br label %405

405:                                              ; preds = %431, %399
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #14
  %406 = load i64, ptr %15, align 8, !tbaa !11
  %407 = call noundef i64 @_ZN14NAMESPACE_MAIN19RandomDeterministic8NextFastImEENSt9enable_ifIXaasr3std11is_unsignedIT_EE5valueltclL_ZNSt14numeric_limitsIjE3maxEvEEclsr3std14numeric_limitsIS3_EE3maxEES3_E4typeES3_(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %406)
  store i64 %407, ptr %50, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #14
  %408 = load ptr, ptr %22, align 8, !tbaa !5
  %409 = load i64, ptr %50, align 8, !tbaa !11
  %410 = getelementptr inbounds i8, ptr %408, i64 %409
  %411 = load i8, ptr %410, align 1, !tbaa !31
  store i8 %411, ptr %51, align 1, !tbaa !31
  %412 = call noundef zeroext i8 @_ZNSt14numeric_limitsIhE3maxEv() #14
  %413 = zext i8 %412 to i32
  %414 = load i8, ptr %51, align 1, !tbaa !31
  %415 = zext i8 %414 to i32
  %416 = icmp eq i32 %413, %415
  br i1 %416, label %417, label %418

417:                                              ; preds = %405
  store i32 31, ptr %17, align 4
  br label %428

418:                                              ; preds = %405
  %419 = load i8, ptr %51, align 1, !tbaa !31
  %420 = zext i8 %419 to i32
  %421 = add nsw i32 %420, 1
  %422 = trunc i32 %421 to i8
  %423 = load ptr, ptr %22, align 8, !tbaa !5
  %424 = load i64, ptr %50, align 8, !tbaa !11
  %425 = getelementptr inbounds i8, ptr %423, i64 %424
  store i8 %422, ptr %425, align 1, !tbaa !31
  %426 = load i64, ptr %49, align 8, !tbaa !11
  %427 = add i64 %426, -1
  store i64 %427, ptr %49, align 8, !tbaa !11
  store i32 0, ptr %17, align 4
  br label %428

428:                                              ; preds = %418, %417
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #14
  %429 = load i32, ptr %17, align 4
  switch i32 %429, label %1016 [
    i32 0, label %430
    i32 31, label %431
  ]

430:                                              ; preds = %428
  br label %431

431:                                              ; preds = %430, %428
  %432 = load i64, ptr %49, align 8, !tbaa !11
  %433 = icmp ne i64 0, %432
  br i1 %433, label %405, label %434, !llvm.loop !32

434:                                              ; preds = %431
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #14
  br label %435

435:                                              ; preds = %434, %391
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #14
  %436 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetBoosting", ptr %90, i32 0, i32 4
  %437 = load ptr, ptr %436, align 8, !tbaa !33
  store ptr %437, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #14
  %438 = load ptr, ptr %22, align 8, !tbaa !5
  %439 = icmp ne ptr null, %438
  br i1 %439, label %443, label %440

440:                                              ; preds = %435
  %441 = load ptr, ptr %52, align 8, !tbaa !5
  %442 = icmp ne ptr null, %441
  br i1 %442, label %443, label %622

443:                                              ; preds = %440, %435
  store double 0.000000e+00, ptr %55, align 8, !tbaa !34
  %444 = load ptr, ptr %22, align 8, !tbaa !5
  store ptr %444, ptr %53, align 8, !tbaa !5
  %445 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetBoosting", ptr %90, i32 0, i32 2
  %446 = load ptr, ptr %445, align 8, !tbaa !18
  store ptr %446, ptr %54, align 8, !tbaa !5
  br label %447

447:                                              ; preds = %617, %443
  %448 = load ptr, ptr %54, align 8, !tbaa !5
  %449 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %448, i32 0, i32 6
  %450 = load ptr, ptr %449, align 8, !tbaa !35
  %451 = icmp ne ptr null, %450
  br i1 %451, label %454, label %452

452:                                              ; preds = %447
  call void @LogAssertFailure(i64 noundef 878, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.127)
  call void @__assert_fail(ptr noundef @.str.128, ptr noundef @.str, i32 noundef 878, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

453:                                              ; No predecessors!
  br label %454

454:                                              ; preds = %453, %447
  %455 = phi i1 [ true, %447 ], [ false, %453 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #14
  %456 = load ptr, ptr %54, align 8, !tbaa !5
  %457 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %456, i32 0, i32 6
  %458 = load ptr, ptr %457, align 8, !tbaa !35
  %459 = load i64, ptr %35, align 8, !tbaa !11
  %460 = getelementptr inbounds %"struct.NAMESPACE_MAIN::SubsetInnerBag", ptr %458, i64 %459
  store ptr %460, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #14
  %461 = load ptr, ptr %54, align 8, !tbaa !5
  %462 = call noundef i64 @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(56) %461)
  store i64 %462, ptr %57, align 8, !tbaa !11
  %463 = load i64, ptr %57, align 8, !tbaa !11
  %464 = icmp ule i64 1, %463
  br i1 %464, label %467, label %465

465:                                              ; preds = %454
  call void @LogAssertFailure(i64 noundef 881, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.9)
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str, i32 noundef 881, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

466:                                              ; No predecessors!
  br label %467

467:                                              ; preds = %466, %454
  %468 = phi i1 [ true, %454 ], [ false, %466 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #14
  store double 0.000000e+00, ptr %58, align 8, !tbaa !34
  %469 = load ptr, ptr %54, align 8, !tbaa !5
  %470 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %469, i32 0, i32 1
  %471 = load ptr, ptr %470, align 8, !tbaa !37
  %472 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %471, i32 0, i32 17
  %473 = load i64, ptr %472, align 8, !tbaa !38
  %474 = load i64, ptr %57, align 8, !tbaa !11
  %475 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %473, i64 noundef %474) #14
  br i1 %475, label %476, label %485

476:                                              ; preds = %467
  br label %477

477:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #14
  store i32 2, ptr %59, align 4, !tbaa !13
  %478 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %479 = icmp sle i32 2, %478
  br i1 %479, label %480, label %481

480:                                              ; preds = %477
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage__10_)
  br label %481

481:                                              ; preds = %480, %477
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #14
  br label %482

482:                                              ; preds = %481
  br label %483

483:                                              ; preds = %482
  %484 = load ptr, ptr %22, align 8, !tbaa !5
  call void @free(ptr noundef %484) #14
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %17, align 4
  br label %614

485:                                              ; preds = %467
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #14
  %486 = load ptr, ptr %54, align 8, !tbaa !5
  %487 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %486, i32 0, i32 1
  %488 = load ptr, ptr %487, align 8, !tbaa !37
  %489 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %488, i32 0, i32 17
  %490 = load i64, ptr %489, align 8, !tbaa !38
  %491 = load i64, ptr %57, align 8, !tbaa !11
  %492 = mul i64 %490, %491
  store i64 %492, ptr %60, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #14
  %493 = load i64, ptr %60, align 8, !tbaa !11
  %494 = call ptr @AlignedAlloc(i64 noundef %493)
  store ptr %494, ptr %61, align 8, !tbaa !5
  %495 = load ptr, ptr %61, align 8, !tbaa !5
  %496 = icmp eq ptr null, %495
  br i1 %496, label %497, label %506

497:                                              ; preds = %485
  br label %498

498:                                              ; preds = %497
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #14
  store i32 2, ptr %62, align 4, !tbaa !13
  %499 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %500 = icmp sle i32 2, %499
  br i1 %500, label %501, label %502

501:                                              ; preds = %498
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage__11_)
  br label %502

502:                                              ; preds = %501, %498
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #14
  br label %503

503:                                              ; preds = %502
  br label %504

504:                                              ; preds = %503
  %505 = load ptr, ptr %22, align 8, !tbaa !5
  call void @free(ptr noundef %505) #14
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %17, align 4
  br label %613

506:                                              ; preds = %485
  %507 = load ptr, ptr %61, align 8, !tbaa !5
  %508 = load ptr, ptr %56, align 8, !tbaa !5
  %509 = getelementptr inbounds %"struct.NAMESPACE_MAIN::SubsetInnerBag", ptr %508, i32 0, i32 0
  store ptr %507, ptr %509, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #14
  %510 = load ptr, ptr %61, align 8, !tbaa !5
  %511 = load i64, ptr %60, align 8, !tbaa !11
  %512 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef %510, i64 noundef %511) #14
  store ptr %512, ptr %63, align 8, !tbaa !5
  br label %513

513:                                              ; preds = %603, %506
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #14
  store double 1.000000e+00, ptr %64, align 8, !tbaa !34
  %514 = load ptr, ptr %53, align 8, !tbaa !5
  %515 = icmp ne ptr null, %514
  br i1 %515, label %516, label %529

516:                                              ; preds = %513
  %517 = load i64, ptr %11, align 8, !tbaa !11
  %518 = icmp ne i64 0, %517
  br i1 %518, label %521, label %519

519:                                              ; preds = %516
  call void @LogAssertFailure(i64 noundef 906, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.125)
  call void @__assert_fail(ptr noundef @.str.126, ptr noundef @.str, i32 noundef 906, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

520:                                              ; No predecessors!
  br label %521

521:                                              ; preds = %520, %516
  %522 = phi i1 [ true, %516 ], [ false, %520 ]
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #14
  %523 = load ptr, ptr %53, align 8, !tbaa !5
  %524 = load i8, ptr %523, align 1, !tbaa !31
  store i8 %524, ptr %65, align 1, !tbaa !31
  %525 = load ptr, ptr %53, align 8, !tbaa !5
  %526 = getelementptr inbounds i8, ptr %525, i32 1
  store ptr %526, ptr %53, align 8, !tbaa !5
  %527 = load i8, ptr %65, align 1, !tbaa !31
  %528 = uitofp i8 %527 to double
  store double %528, ptr %64, align 8, !tbaa !34
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #14
  br label %529

529:                                              ; preds = %521, %513
  %530 = load ptr, ptr %52, align 8, !tbaa !5
  %531 = icmp ne ptr null, %530
  br i1 %531, label %532, label %571

532:                                              ; preds = %529
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #14
  %533 = load ptr, ptr %52, align 8, !tbaa !5
  %534 = load double, ptr %533, align 8, !tbaa !34
  store double %534, ptr %66, align 8, !tbaa !34
  %535 = load double, ptr %66, align 8, !tbaa !34
  %536 = call noundef zeroext i1 @_ZSt5isnand(double noundef %535)
  br i1 %536, label %537, label %539

537:                                              ; preds = %532
  call void @LogAssertFailure(i64 noundef 916, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.129)
  call void @__assert_fail(ptr noundef @.str.130, ptr noundef @.str, i32 noundef 916, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

538:                                              ; No predecessors!
  br label %539

539:                                              ; preds = %538, %532
  %540 = phi i1 [ true, %532 ], [ false, %538 ]
  %541 = load double, ptr %66, align 8, !tbaa !34
  %542 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %541)
  br i1 %542, label %543, label %545

543:                                              ; preds = %539
  call void @LogAssertFailure(i64 noundef 917, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.131)
  call void @__assert_fail(ptr noundef @.str.132, ptr noundef @.str, i32 noundef 917, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

544:                                              ; No predecessors!
  br label %545

545:                                              ; preds = %544, %539
  %546 = phi i1 [ true, %539 ], [ false, %544 ]
  %547 = call noundef float @_ZNSt14numeric_limitsIfE3minEv() #14
  %548 = fpext float %547 to double
  %549 = load double, ptr %66, align 8, !tbaa !34
  %550 = fcmp ole double %548, %549
  br i1 %550, label %553, label %551

551:                                              ; preds = %545
  call void @LogAssertFailure(i64 noundef 918, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.133)
  call void @__assert_fail(ptr noundef @.str.134, ptr noundef @.str, i32 noundef 918, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

552:                                              ; No predecessors!
  br label %553

553:                                              ; preds = %552, %545
  %554 = phi i1 [ true, %545 ], [ false, %552 ]
  %555 = load double, ptr %66, align 8, !tbaa !34
  %556 = call noundef float @_ZNSt14numeric_limitsIfE3maxEv() #14
  %557 = fpext float %556 to double
  %558 = fcmp ole double %555, %557
  br i1 %558, label %561, label %559

559:                                              ; preds = %553
  call void @LogAssertFailure(i64 noundef 919, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.135)
  call void @__assert_fail(ptr noundef @.str.136, ptr noundef @.str, i32 noundef 919, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

560:                                              ; No predecessors!
  br label %561

561:                                              ; preds = %560, %553
  %562 = phi i1 [ true, %553 ], [ false, %560 ]
  %563 = load double, ptr %66, align 8, !tbaa !34
  %564 = load double, ptr %64, align 8, !tbaa !34
  %565 = fmul double %564, %563
  store double %565, ptr %64, align 8, !tbaa !34
  %566 = load ptr, ptr %52, align 8, !tbaa !5
  %567 = getelementptr inbounds double, ptr %566, i32 1
  store ptr %567, ptr %52, align 8, !tbaa !5
  %568 = load double, ptr %64, align 8, !tbaa !34
  %569 = load double, ptr %58, align 8, !tbaa !34
  %570 = fadd double %569, %568
  store double %570, ptr %58, align 8, !tbaa !34
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #14
  br label %571

571:                                              ; preds = %561, %529
  %572 = load ptr, ptr %54, align 8, !tbaa !5
  %573 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %572, i32 0, i32 1
  %574 = load ptr, ptr %573, align 8, !tbaa !37
  %575 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %574, i32 0, i32 17
  %576 = load i64, ptr %575, align 8, !tbaa !38
  %577 = icmp eq i64 8, %576
  br i1 %577, label %578, label %581

578:                                              ; preds = %571
  %579 = load double, ptr %64, align 8, !tbaa !34
  %580 = load ptr, ptr %61, align 8, !tbaa !5
  store double %579, ptr %580, align 8, !tbaa !34
  br label %595

581:                                              ; preds = %571
  %582 = load ptr, ptr %54, align 8, !tbaa !5
  %583 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %582, i32 0, i32 1
  %584 = load ptr, ptr %583, align 8, !tbaa !37
  %585 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %584, i32 0, i32 17
  %586 = load i64, ptr %585, align 8, !tbaa !38
  %587 = icmp eq i64 4, %586
  br i1 %587, label %590, label %588

588:                                              ; preds = %581
  call void @LogAssertFailure(i64 noundef 930, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.23)
  call void @__assert_fail(ptr noundef @.str.24, ptr noundef @.str, i32 noundef 930, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

589:                                              ; No predecessors!
  br label %590

590:                                              ; preds = %589, %581
  %591 = phi i1 [ true, %581 ], [ false, %589 ]
  %592 = load double, ptr %64, align 8, !tbaa !34
  %593 = fptrunc double %592 to float
  %594 = load ptr, ptr %61, align 8, !tbaa !5
  store float %593, ptr %594, align 4, !tbaa !42
  br label %595

595:                                              ; preds = %590, %578
  %596 = load ptr, ptr %61, align 8, !tbaa !5
  %597 = load ptr, ptr %54, align 8, !tbaa !5
  %598 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %597, i32 0, i32 1
  %599 = load ptr, ptr %598, align 8, !tbaa !37
  %600 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %599, i32 0, i32 17
  %601 = load i64, ptr %600, align 8, !tbaa !38
  %602 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef %596, i64 noundef %601) #14
  store ptr %602, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #14
  br label %603

603:                                              ; preds = %595
  %604 = load ptr, ptr %63, align 8, !tbaa !5
  %605 = load ptr, ptr %61, align 8, !tbaa !5
  %606 = icmp ne ptr %604, %605
  br i1 %606, label %513, label %607, !llvm.loop !44

607:                                              ; preds = %603
  %608 = load double, ptr %58, align 8, !tbaa !34
  %609 = load double, ptr %55, align 8, !tbaa !34
  %610 = fadd double %609, %608
  store double %610, ptr %55, align 8, !tbaa !34
  %611 = load ptr, ptr %54, align 8, !tbaa !5
  %612 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %611, i32 1
  store ptr %612, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #14
  store i32 0, ptr %17, align 4
  br label %613

613:                                              ; preds = %607, %504
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #14
  br label %614

614:                                              ; preds = %613, %483
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #14
  %615 = load i32, ptr %17, align 4
  switch i32 %615, label %971 [
    i32 0, label %616
  ]

616:                                              ; preds = %614
  br label %617

617:                                              ; preds = %616
  %618 = load ptr, ptr %33, align 8, !tbaa !5
  %619 = load ptr, ptr %54, align 8, !tbaa !5
  %620 = icmp ne ptr %618, %619
  br i1 %620, label %447, label %621, !llvm.loop !45

621:                                              ; preds = %617
  br label %622

622:                                              ; preds = %621, %440
  %623 = load ptr, ptr %52, align 8, !tbaa !5
  %624 = icmp eq ptr null, %623
  br i1 %624, label %625, label %628

625:                                              ; preds = %622
  %626 = load i64, ptr %15, align 8, !tbaa !11
  %627 = uitofp i64 %626 to double
  store double %627, ptr %55, align 8, !tbaa !34
  br label %628

628:                                              ; preds = %625, %622
  %629 = load double, ptr %55, align 8, !tbaa !34
  %630 = call noundef zeroext i1 @_ZSt5isnand(double noundef %629)
  br i1 %630, label %631, label %633

631:                                              ; preds = %628
  call void @LogAssertFailure(i64 noundef 946, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.137)
  call void @__assert_fail(ptr noundef @.str.138, ptr noundef @.str, i32 noundef 946, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

632:                                              ; No predecessors!
  br label %633

633:                                              ; preds = %632, %628
  %634 = phi i1 [ true, %628 ], [ false, %632 ]
  %635 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #14
  %636 = load double, ptr %55, align 8, !tbaa !34
  %637 = fcmp ole double %635, %636
  br i1 %637, label %640, label %638

638:                                              ; preds = %633
  call void @LogAssertFailure(i64 noundef 947, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.139)
  call void @__assert_fail(ptr noundef @.str.140, ptr noundef @.str, i32 noundef 947, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

639:                                              ; No predecessors!
  br label %640

640:                                              ; preds = %639, %633
  %641 = phi i1 [ true, %633 ], [ false, %639 ]
  %642 = load double, ptr %55, align 8, !tbaa !34
  %643 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %642)
  br i1 %643, label %644, label %653

644:                                              ; preds = %640
  br label %645

645:                                              ; preds = %644
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #14
  store i32 2, ptr %67, align 4, !tbaa !13
  %646 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %647 = icmp sle i32 2, %646
  br i1 %647, label %648, label %649

648:                                              ; preds = %645
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage__12_)
  br label %649

649:                                              ; preds = %648, %645
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #14
  br label %650

650:                                              ; preds = %649
  br label %651

651:                                              ; preds = %650
  %652 = load ptr, ptr %22, align 8, !tbaa !5
  call void @free(ptr noundef %652) #14
  store i32 -4, ptr %7, align 4
  store i32 1, ptr %17, align 4
  br label %971

653:                                              ; preds = %640
  %654 = load double, ptr %55, align 8, !tbaa !34
  %655 = load ptr, ptr %19, align 8, !tbaa !5
  %656 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInnerBag", ptr %655, i32 0, i32 1
  store double %654, ptr %656, align 8, !tbaa !46
  %657 = load i64, ptr %15, align 8, !tbaa !11
  %658 = load ptr, ptr %19, align 8, !tbaa !5
  %659 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInnerBag", ptr %658, i32 0, i32 0
  store i64 %657, ptr %659, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #14
  %660 = load ptr, ptr %19, align 8, !tbaa !5
  %661 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInnerBag", ptr %660, i32 0, i32 2
  %662 = load ptr, ptr %661, align 8, !tbaa !20
  store ptr %662, ptr %68, align 8, !tbaa !5
  %663 = load ptr, ptr %68, align 8, !tbaa !5
  %664 = icmp ne ptr null, %663
  br i1 %664, label %665, label %966

665:                                              ; preds = %653
  %666 = load i64, ptr %12, align 8, !tbaa !11
  %667 = icmp ule i64 1, %666
  br i1 %667, label %670, label %668

668:                                              ; preds = %665
  call void @LogAssertFailure(i64 noundef 960, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.1)
  call void @__assert_fail(ptr noundef @.str.2, ptr noundef @.str, i32 noundef 960, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

669:                                              ; No predecessors!
  br label %670

670:                                              ; preds = %669, %665
  %671 = phi i1 [ true, %665 ], [ false, %669 ]
  %672 = load ptr, ptr %13, align 8, !tbaa !5
  %673 = icmp ne ptr null, %672
  br i1 %673, label %676, label %674

674:                                              ; preds = %670
  call void @LogAssertFailure(i64 noundef 961, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.45)
  call void @__assert_fail(ptr noundef @.str.46, ptr noundef @.str, i32 noundef 961, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

675:                                              ; No predecessors!
  br label %676

676:                                              ; preds = %675, %670
  %677 = phi i1 [ true, %670 ], [ false, %675 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #14
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %678

678:                                              ; preds = %961, %676
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #14
  %679 = load ptr, ptr %13, align 8, !tbaa !5
  %680 = load i64, ptr %69, align 8, !tbaa !11
  %681 = getelementptr inbounds ptr, ptr %679, i64 %680
  %682 = load ptr, ptr %681, align 8, !tbaa !5
  store ptr %682, ptr %70, align 8, !tbaa !5
  %683 = load ptr, ptr %70, align 8, !tbaa !5
  %684 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %683) #14
  %685 = icmp ne i64 1, %684
  br i1 %685, label %686, label %958

686:                                              ; preds = %678
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #14
  %687 = load ptr, ptr %68, align 8, !tbaa !5
  %688 = load i64, ptr %69, align 8, !tbaa !11
  %689 = getelementptr inbounds %"struct.NAMESPACE_MAIN::TermInnerBag", ptr %687, i64 %688
  store ptr %689, ptr %71, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #14
  %690 = load ptr, ptr %71, align 8, !tbaa !5
  %691 = call noundef ptr @_ZN14NAMESPACE_MAIN12TermInnerBag9GetCountsEv(ptr noundef nonnull align 8 dereferenceable(16) %690)
  store ptr %691, ptr %72, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #14
  %692 = load ptr, ptr %71, align 8, !tbaa !5
  %693 = call noundef ptr @_ZN14NAMESPACE_MAIN12TermInnerBag10GetWeightsEv(ptr noundef nonnull align 8 dereferenceable(16) %692)
  store ptr %693, ptr %73, align 8, !tbaa !5
  %694 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetBoosting", ptr %90, i32 0, i32 4
  %695 = load ptr, ptr %694, align 8, !tbaa !33
  store ptr %695, ptr %52, align 8, !tbaa !5
  %696 = load ptr, ptr %22, align 8, !tbaa !5
  store ptr %696, ptr %53, align 8, !tbaa !5
  %697 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetBoosting", ptr %90, i32 0, i32 2
  %698 = load ptr, ptr %697, align 8, !tbaa !18
  store ptr %698, ptr %54, align 8, !tbaa !5
  br label %699

699:                                              ; preds = %953, %686
  %700 = load ptr, ptr %70, align 8, !tbaa !5
  %701 = call noundef i32 @_ZNK14NAMESPACE_MAIN4Term18GetBitsRequiredMinEv(ptr noundef nonnull align 8 dereferenceable(776) %700) #14
  %702 = icmp sle i32 1, %701
  br i1 %702, label %705, label %703

703:                                              ; preds = %699
  call void @LogAssertFailure(i64 noundef 976, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.81)
  call void @__assert_fail(ptr noundef @.str.82, ptr noundef @.str, i32 noundef 976, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

704:                                              ; No predecessors!
  br label %705

705:                                              ; preds = %704, %699
  %706 = phi i1 [ true, %699 ], [ false, %704 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #14
  %707 = load ptr, ptr %70, align 8, !tbaa !5
  %708 = call noundef i32 @_ZNK14NAMESPACE_MAIN4Term18GetBitsRequiredMinEv(ptr noundef nonnull align 8 dereferenceable(776) %707) #14
  %709 = load ptr, ptr %54, align 8, !tbaa !5
  %710 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %709)
  %711 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %710, i32 0, i32 18
  %712 = load i64, ptr %711, align 8, !tbaa !48
  %713 = call noundef i32 @_ZN14NAMESPACE_MAINL22GetCountItemsBitPackedEim(i32 noundef %708, i64 noundef %712) #14
  store i32 %713, ptr %74, align 4, !tbaa !13
  %714 = load i32, ptr %74, align 4, !tbaa !13
  %715 = icmp sle i32 1, %714
  br i1 %715, label %718, label %716

716:                                              ; preds = %705
  call void @LogAssertFailure(i64 noundef 979, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.141)
  call void @__assert_fail(ptr noundef @.str.142, ptr noundef @.str, i32 noundef 979, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

717:                                              ; No predecessors!
  br label %718

718:                                              ; preds = %717, %705
  %719 = phi i1 [ true, %705 ], [ false, %717 ]
  br label %720

720:                                              ; preds = %718
  %721 = load i32, ptr %74, align 4, !tbaa !13
  %722 = icmp ne i32 0, %721
  br i1 %722, label %724, label %723

723:                                              ; preds = %720
  call void @_ZL17StopClangAnalysisv() #14
  br label %724

724:                                              ; preds = %723, %720
  br label %725

725:                                              ; preds = %724
  br label %726

726:                                              ; preds = %725
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #14
  %727 = load i32, ptr %74, align 4, !tbaa !13
  %728 = load ptr, ptr %54, align 8, !tbaa !5
  %729 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %728)
  %730 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %729, i32 0, i32 18
  %731 = load i64, ptr %730, align 8, !tbaa !48
  %732 = call noundef i32 @_ZN14NAMESPACE_MAINL12GetCountBitsEim(i32 noundef %727, i64 noundef %731) #14
  store i32 %732, ptr %75, align 4, !tbaa !13
  %733 = load i32, ptr %75, align 4, !tbaa !13
  %734 = icmp sle i32 1, %733
  br i1 %734, label %737, label %735

735:                                              ; preds = %726
  call void @LogAssertFailure(i64 noundef 984, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.143)
  call void @__assert_fail(ptr noundef @.str.144, ptr noundef @.str, i32 noundef 984, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

736:                                              ; No predecessors!
  br label %737

737:                                              ; preds = %736, %726
  %738 = phi i1 [ true, %726 ], [ false, %736 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #14
  %739 = load ptr, ptr %54, align 8, !tbaa !5
  %740 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %739)
  %741 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %740, i32 0, i32 16
  %742 = load i64, ptr %741, align 8, !tbaa !49
  store i64 %742, ptr %76, align 8, !tbaa !11
  %743 = load i64, ptr %76, align 8, !tbaa !11
  %744 = icmp ule i64 1, %743
  br i1 %744, label %747, label %745

745:                                              ; preds = %737
  call void @LogAssertFailure(i64 noundef 987, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.19)
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str, i32 noundef 987, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

746:                                              ; No predecessors!
  br label %747

747:                                              ; preds = %746, %737
  %748 = phi i1 [ true, %737 ], [ false, %746 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #14
  %749 = load ptr, ptr %54, align 8, !tbaa !5
  %750 = call noundef i64 @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(56) %749)
  store i64 %750, ptr %77, align 8, !tbaa !11
  %751 = load i64, ptr %77, align 8, !tbaa !11
  %752 = icmp ule i64 1, %751
  br i1 %752, label %755, label %753

753:                                              ; preds = %747
  call void @LogAssertFailure(i64 noundef 990, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.9)
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str, i32 noundef 990, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

754:                                              ; No predecessors!
  br label %755

755:                                              ; preds = %754, %747
  %756 = phi i1 [ true, %747 ], [ false, %754 ]
  %757 = load i64, ptr %77, align 8, !tbaa !11
  %758 = load i64, ptr %76, align 8, !tbaa !11
  %759 = urem i64 %757, %758
  %760 = icmp eq i64 0, %759
  br i1 %760, label %763, label %761

761:                                              ; preds = %755
  call void @LogAssertFailure(i64 noundef 991, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.21)
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str, i32 noundef 991, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

762:                                              ; No predecessors!
  br label %763

763:                                              ; preds = %762, %755
  %764 = phi i1 [ true, %755 ], [ false, %762 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #14
  %765 = load i64, ptr %77, align 8, !tbaa !11
  %766 = load i64, ptr %76, align 8, !tbaa !11
  %767 = udiv i64 %765, %766
  store i64 %767, ptr %78, align 8, !tbaa !11
  %768 = load i64, ptr %78, align 8, !tbaa !11
  %769 = icmp ule i64 1, %768
  br i1 %769, label %772, label %770

770:                                              ; preds = %763
  call void @LogAssertFailure(i64 noundef 994, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.87)
  call void @__assert_fail(ptr noundef @.str.88, ptr noundef @.str, i32 noundef 994, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

771:                                              ; No predecessors!
  br label %772

772:                                              ; preds = %771, %763
  %773 = phi i1 [ true, %763 ], [ false, %771 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #14
  %774 = load ptr, ptr %54, align 8, !tbaa !5
  %775 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %774, i32 0, i32 1
  %776 = load ptr, ptr %775, align 8, !tbaa !37
  %777 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %776, i32 0, i32 18
  %778 = load i64, ptr %777, align 8, !tbaa !48
  %779 = icmp eq i64 8, %778
  br i1 %779, label %780, label %783

780:                                              ; preds = %772
  %781 = load i32, ptr %75, align 4, !tbaa !13
  %782 = call noundef i64 @_ZN14NAMESPACE_MAINL11MakeLowMaskImEET_i(i32 noundef %781) #14
  store i64 %782, ptr %79, align 8, !tbaa !11
  br label %797

783:                                              ; preds = %772
  %784 = load ptr, ptr %54, align 8, !tbaa !5
  %785 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %784, i32 0, i32 1
  %786 = load ptr, ptr %785, align 8, !tbaa !37
  %787 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %786, i32 0, i32 18
  %788 = load i64, ptr %787, align 8, !tbaa !48
  %789 = icmp eq i64 4, %788
  br i1 %789, label %792, label %790

790:                                              ; preds = %783
  call void @LogAssertFailure(i64 noundef 1000, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.39)
  call void @__assert_fail(ptr noundef @.str.40, ptr noundef @.str, i32 noundef 1000, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

791:                                              ; No predecessors!
  br label %792

792:                                              ; preds = %791, %783
  %793 = phi i1 [ true, %783 ], [ false, %791 ]
  %794 = load i32, ptr %75, align 4, !tbaa !13
  %795 = call noundef i32 @_ZN14NAMESPACE_MAINL11MakeLowMaskIjEET_i(i32 noundef %794) #14
  %796 = zext i32 %795 to i64
  store i64 %796, ptr %79, align 8, !tbaa !11
  br label %797

797:                                              ; preds = %792, %780
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #14
  %798 = load ptr, ptr %54, align 8, !tbaa !5
  %799 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %798, i32 0, i32 5
  %800 = load ptr, ptr %799, align 8, !tbaa !50
  %801 = load i64, ptr %69, align 8, !tbaa !11
  %802 = getelementptr inbounds ptr, ptr %800, i64 %801
  %803 = load ptr, ptr %802, align 8, !tbaa !5
  store ptr %803, ptr %80, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #14
  %804 = load i32, ptr %74, align 4, !tbaa !13
  %805 = sub nsw i32 %804, 1
  %806 = load i32, ptr %75, align 4, !tbaa !13
  %807 = mul nsw i32 %805, %806
  store i32 %807, ptr %81, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #14
  %808 = load i64, ptr %78, align 8, !tbaa !11
  %809 = load i32, ptr %74, align 4, !tbaa !13
  %810 = sext i32 %809 to i64
  %811 = urem i64 %808, %810
  %812 = trunc i64 %811 to i32
  %813 = load i32, ptr %75, align 4, !tbaa !13
  %814 = mul nsw i32 %812, %813
  store i32 %814, ptr %82, align 4, !tbaa !13
  br label %815

815:                                              ; preds = %939, %797
  br label %816

816:                                              ; preds = %815
  br label %817

817:                                              ; preds = %936, %816
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #14
  store i64 0, ptr %83, align 8, !tbaa !11
  br label %818

818:                                              ; preds = %919, %817
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #14
  %819 = load i32, ptr %82, align 4, !tbaa !13
  %820 = icmp sle i32 0, %819
  br i1 %820, label %823, label %821

821:                                              ; preds = %818
  call void @LogAssertFailure(i64 noundef 1016, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.145)
  call void @__assert_fail(ptr noundef @.str.146, ptr noundef @.str, i32 noundef 1016, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

822:                                              ; No predecessors!
  br label %823

823:                                              ; preds = %822, %818
  %824 = phi i1 [ true, %818 ], [ false, %822 ]
  %825 = load ptr, ptr %54, align 8, !tbaa !5
  %826 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %825, i32 0, i32 1
  %827 = load ptr, ptr %826, align 8, !tbaa !37
  %828 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %827, i32 0, i32 18
  %829 = load i64, ptr %828, align 8, !tbaa !48
  %830 = icmp eq i64 8, %829
  br i1 %830, label %831, label %841

831:                                              ; preds = %823
  %832 = load i64, ptr %79, align 8, !tbaa !11
  %833 = load ptr, ptr %80, align 8, !tbaa !5
  %834 = load i64, ptr %83, align 8, !tbaa !11
  %835 = getelementptr inbounds i64, ptr %833, i64 %834
  %836 = load i64, ptr %835, align 8, !tbaa !11
  %837 = load i32, ptr %82, align 4, !tbaa !13
  %838 = zext i32 %837 to i64
  %839 = lshr i64 %836, %838
  %840 = and i64 %832, %839
  store i64 %840, ptr %84, align 8, !tbaa !11
  br label %861

841:                                              ; preds = %823
  %842 = load ptr, ptr %54, align 8, !tbaa !5
  %843 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %842, i32 0, i32 1
  %844 = load ptr, ptr %843, align 8, !tbaa !37
  %845 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %844, i32 0, i32 18
  %846 = load i64, ptr %845, align 8, !tbaa !48
  %847 = icmp eq i64 4, %846
  br i1 %847, label %850, label %848

848:                                              ; preds = %841
  call void @LogAssertFailure(i64 noundef 1022, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.39)
  call void @__assert_fail(ptr noundef @.str.40, ptr noundef @.str, i32 noundef 1022, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

849:                                              ; No predecessors!
  br label %850

850:                                              ; preds = %849, %841
  %851 = phi i1 [ true, %841 ], [ false, %849 ]
  %852 = load i64, ptr %79, align 8, !tbaa !11
  %853 = load ptr, ptr %80, align 8, !tbaa !5
  %854 = load i64, ptr %83, align 8, !tbaa !11
  %855 = getelementptr inbounds i32, ptr %853, i64 %854
  %856 = load i32, ptr %855, align 4, !tbaa !13
  %857 = load i32, ptr %82, align 4, !tbaa !13
  %858 = lshr i32 %856, %857
  %859 = zext i32 %858 to i64
  %860 = and i64 %852, %859
  store i64 %860, ptr %84, align 8, !tbaa !11
  br label %861

861:                                              ; preds = %850, %831
  %862 = load i64, ptr %84, align 8, !tbaa !11
  %863 = load ptr, ptr %70, align 8, !tbaa !5
  %864 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %863) #14
  %865 = icmp ult i64 %862, %864
  br i1 %865, label %868, label %866

866:                                              ; preds = %861
  call void @LogAssertFailure(i64 noundef 1027, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.103)
  call void @__assert_fail(ptr noundef @.str.104, ptr noundef @.str, i32 noundef 1027, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

867:                                              ; No predecessors!
  br label %868

868:                                              ; preds = %867, %861
  %869 = phi i1 [ true, %861 ], [ false, %867 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #14
  store double 1.000000e+00, ptr %85, align 8, !tbaa !34
  %870 = load ptr, ptr %52, align 8, !tbaa !5
  %871 = icmp ne ptr null, %870
  br i1 %871, label %872, label %877

872:                                              ; preds = %868
  %873 = load ptr, ptr %52, align 8, !tbaa !5
  %874 = load double, ptr %873, align 8, !tbaa !34
  store double %874, ptr %85, align 8, !tbaa !34
  %875 = load ptr, ptr %52, align 8, !tbaa !5
  %876 = getelementptr inbounds double, ptr %875, i32 1
  store ptr %876, ptr %52, align 8, !tbaa !5
  br label %877

877:                                              ; preds = %872, %868
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #14
  store i8 1, ptr %86, align 1, !tbaa !31
  %878 = load ptr, ptr %53, align 8, !tbaa !5
  %879 = icmp ne ptr null, %878
  br i1 %879, label %880, label %895

880:                                              ; preds = %877
  %881 = load i64, ptr %11, align 8, !tbaa !11
  %882 = icmp ne i64 0, %881
  br i1 %882, label %885, label %883

883:                                              ; preds = %880
  call void @LogAssertFailure(i64 noundef 1037, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.125)
  call void @__assert_fail(ptr noundef @.str.126, ptr noundef @.str, i32 noundef 1037, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

884:                                              ; No predecessors!
  br label %885

885:                                              ; preds = %884, %880
  %886 = phi i1 [ true, %880 ], [ false, %884 ]
  %887 = load ptr, ptr %53, align 8, !tbaa !5
  %888 = load i8, ptr %887, align 1, !tbaa !31
  store i8 %888, ptr %86, align 1, !tbaa !31
  %889 = load ptr, ptr %53, align 8, !tbaa !5
  %890 = getelementptr inbounds i8, ptr %889, i32 1
  store ptr %890, ptr %53, align 8, !tbaa !5
  %891 = load i8, ptr %86, align 1, !tbaa !31
  %892 = uitofp i8 %891 to double
  %893 = load double, ptr %85, align 8, !tbaa !34
  %894 = fmul double %893, %892
  store double %894, ptr %85, align 8, !tbaa !34
  br label %895

895:                                              ; preds = %885, %877
  %896 = load ptr, ptr %72, align 8, !tbaa !5
  %897 = icmp ne ptr null, %896
  br i1 %897, label %898, label %906

898:                                              ; preds = %895
  %899 = load i8, ptr %86, align 1, !tbaa !31
  %900 = zext i8 %899 to i64
  %901 = load ptr, ptr %72, align 8, !tbaa !5
  %902 = load i64, ptr %84, align 8, !tbaa !11
  %903 = getelementptr inbounds i64, ptr %901, i64 %902
  %904 = load i64, ptr %903, align 8, !tbaa !11
  %905 = add i64 %904, %900
  store i64 %905, ptr %903, align 8, !tbaa !11
  br label %906

906:                                              ; preds = %898, %895
  %907 = load ptr, ptr %73, align 8, !tbaa !5
  %908 = icmp ne ptr null, %907
  br i1 %908, label %909, label %916

909:                                              ; preds = %906
  %910 = load double, ptr %85, align 8, !tbaa !34
  %911 = load ptr, ptr %73, align 8, !tbaa !5
  %912 = load i64, ptr %84, align 8, !tbaa !11
  %913 = getelementptr inbounds double, ptr %911, i64 %912
  %914 = load double, ptr %913, align 8, !tbaa !34
  %915 = fadd double %914, %910
  store double %915, ptr %913, align 8, !tbaa !34
  br label %916

916:                                              ; preds = %909, %906
  %917 = load i64, ptr %83, align 8, !tbaa !11
  %918 = add i64 %917, 1
  store i64 %918, ptr %83, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #14
  br label %919

919:                                              ; preds = %916
  %920 = load i64, ptr %76, align 8, !tbaa !11
  %921 = load i64, ptr %83, align 8, !tbaa !11
  %922 = icmp ne i64 %920, %921
  br i1 %922, label %818, label %923, !llvm.loop !51

923:                                              ; preds = %919
  %924 = load i64, ptr %78, align 8, !tbaa !11
  %925 = add i64 %924, -1
  store i64 %925, ptr %78, align 8, !tbaa !11
  %926 = load i64, ptr %78, align 8, !tbaa !11
  %927 = icmp eq i64 0, %926
  br i1 %927, label %928, label %929

928:                                              ; preds = %923
  store i32 54, ptr %17, align 4
  br label %933

929:                                              ; preds = %923
  %930 = load i32, ptr %75, align 4, !tbaa !13
  %931 = load i32, ptr %82, align 4, !tbaa !13
  %932 = sub nsw i32 %931, %930
  store i32 %932, ptr %82, align 4, !tbaa !13
  store i32 0, ptr %17, align 4
  br label %933

933:                                              ; preds = %929, %928
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #14
  %934 = load i32, ptr %17, align 4
  switch i32 %934, label %1016 [
    i32 0, label %935
    i32 54, label %950
  ]

935:                                              ; preds = %933
  br label %936

936:                                              ; preds = %935
  %937 = load i32, ptr %82, align 4, !tbaa !13
  %938 = icmp sle i32 0, %937
  br i1 %938, label %817, label %939, !llvm.loop !52

939:                                              ; preds = %936
  %940 = load i32, ptr %81, align 4, !tbaa !13
  store i32 %940, ptr %82, align 4, !tbaa !13
  %941 = load ptr, ptr %80, align 8, !tbaa !5
  %942 = load ptr, ptr %54, align 8, !tbaa !5
  %943 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %942, i32 0, i32 1
  %944 = load ptr, ptr %943, align 8, !tbaa !37
  %945 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %944, i32 0, i32 18
  %946 = load i64, ptr %945, align 8, !tbaa !48
  %947 = load i64, ptr %76, align 8, !tbaa !11
  %948 = mul i64 %946, %947
  %949 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef %941, i64 noundef %948) #14
  store ptr %949, ptr %80, align 8, !tbaa !5
  br label %815, !llvm.loop !53

950:                                              ; preds = %933
  %951 = load ptr, ptr %54, align 8, !tbaa !5
  %952 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %951, i32 1
  store ptr %952, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #14
  br label %953

953:                                              ; preds = %950
  %954 = load ptr, ptr %33, align 8, !tbaa !5
  %955 = load ptr, ptr %54, align 8, !tbaa !5
  %956 = icmp ne ptr %954, %955
  br i1 %956, label %699, label %957, !llvm.loop !54

957:                                              ; preds = %953
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #14
  br label %958

958:                                              ; preds = %957, %678
  %959 = load i64, ptr %69, align 8, !tbaa !11
  %960 = add i64 %959, 1
  store i64 %960, ptr %69, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #14
  br label %961

961:                                              ; preds = %958
  %962 = load i64, ptr %12, align 8, !tbaa !11
  %963 = load i64, ptr %69, align 8, !tbaa !11
  %964 = icmp ne i64 %962, %963
  br i1 %964, label %678, label %965, !llvm.loop !55

965:                                              ; preds = %961
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #14
  br label %966

966:                                              ; preds = %965, %653
  %967 = load ptr, ptr %19, align 8, !tbaa !5
  %968 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInnerBag", ptr %967, i32 1
  store ptr %968, ptr %19, align 8, !tbaa !5
  %969 = load i64, ptr %35, align 8, !tbaa !11
  %970 = add i64 %969, 1
  store i64 %970, ptr %35, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #14
  store i32 0, ptr %17, align 4
  br label %971

971:                                              ; preds = %966, %651, %614
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #14
  %972 = load i32, ptr %17, align 4
  switch i32 %972, label %1003 [
    i32 0, label %973
  ]

973:                                              ; preds = %971
  br label %974

974:                                              ; preds = %973
  %975 = load i64, ptr %34, align 8, !tbaa !11
  %976 = load i64, ptr %35, align 8, !tbaa !11
  %977 = icmp ne i64 %975, %976
  br i1 %977, label %250, label %978, !llvm.loop !56

978:                                              ; preds = %974
  %979 = load ptr, ptr %22, align 8, !tbaa !5
  %980 = icmp ne ptr null, %979
  br i1 %980, label %981, label %995

981:                                              ; preds = %978
  %982 = load i64, ptr %11, align 8, !tbaa !11
  %983 = icmp ne i64 0, %982
  br i1 %983, label %986, label %984

984:                                              ; preds = %981
  call void @LogAssertFailure(i64 noundef 1079, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef @.str.125)
  call void @__assert_fail(ptr noundef @.str.126, ptr noundef @.str, i32 noundef 1079, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

985:                                              ; No predecessors!
  br label %986

986:                                              ; preds = %985, %981
  %987 = phi i1 [ true, %981 ], [ false, %985 ]
  %988 = load ptr, ptr %22, align 8, !tbaa !5
  call void @free(ptr noundef %988) #14
  %989 = load ptr, ptr %10, align 8, !tbaa !5
  %990 = icmp ne ptr null, %989
  br i1 %990, label %991, label %994

991:                                              ; preds = %986
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #14
  %992 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %992, ptr %87, align 8, !tbaa !5
  %993 = load ptr, ptr %87, align 8, !tbaa !5
  call void @_ZN14NAMESPACE_MAIN19RandomDeterministic10InitializeERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %993, ptr noundef nonnull align 8 dereferenceable(24) %21)
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #14
  br label %994

994:                                              ; preds = %991, %986
  br label %995

995:                                              ; preds = %994, %978
  br label %996

996:                                              ; preds = %995
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #14
  store i32 3, ptr %88, align 4, !tbaa !13
  %997 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %998 = icmp sle i32 3, %997
  br i1 %998, label %999, label %1000

999:                                              ; preds = %996
  call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage__13_)
  br label %1000

1000:                                             ; preds = %999, %996
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #14
  br label %1001

1001:                                             ; preds = %1000
  br label %1002

1002:                                             ; preds = %1001
  store i32 0, ptr %7, align 4
  store i32 1, ptr %17, align 4
  br label %1003

1003:                                             ; preds = %1002, %971, %388
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #14
  br label %1004

1004:                                             ; preds = %1003, %221, %207, %190
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #14
  br label %1005

1005:                                             ; preds = %1004, %129
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  br label %1006

1006:                                             ; preds = %1005, %114
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #14
  %1007 = load i32, ptr %7, align 4
  ret i32 %1007

1008:                                             ; preds = %193
  %1009 = load ptr, ptr %25, align 8
  %1010 = load i32, ptr %26, align 4
  %1011 = insertvalue { ptr, i32 } poison, ptr %1009, 0
  %1012 = insertvalue { ptr, i32 } %1011, i32 %1010, 1
  resume { ptr, i32 } %1012

1013:                                             ; preds = %180, %172
  %1014 = landingpad { ptr, i32 }
          catch ptr null
  %1015 = extractvalue { ptr, i32 } %1014, 0
  call void @__clang_call_terminate(ptr %1015) #15
  unreachable

1016:                                             ; preds = %933, %428
  unreachable
}

declare noundef ptr @_ZN14NAMESPACE_MAIN15DataSetInnerBag24AllocateDataSetInnerBagsEm(i64 noundef) #1

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN14NAMESPACE_MAIN22RandomNondeterministicImEC2Ev(ptr noundef nonnull align 8 dereferenceable(5016)) unnamed_addr #11 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef i64 @_ZN14NAMESPACE_MAIN22RandomNondeterministicImE4NextEm(ptr noundef nonnull align 8 dereferenceable(5016), i64 noundef) #11 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNSt14numeric_limitsImE3maxEv() #9 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN14NAMESPACE_MAIN22RandomNondeterministicImED2Ev(ptr noundef nonnull align 8 dereferenceable(5016)) unnamed_addr #4 align 2

; Function Attrs: nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #12

declare ptr @__cxa_begin_catch(ptr)

declare void @__cxa_end_catch()

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #13

declare void @_ZN14NAMESPACE_MAIN19RandomDeterministic10InitializeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #1

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN14NAMESPACE_MAIN19RandomDeterministic10InitializeERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteINS_12TermInnerBagEEEPT_S3_m(ptr noundef, i64 noundef) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i64 @_ZN14NAMESPACE_MAINL6EbmMaxImEET_S1_S1_(i64 noundef, i64 noundef) #4

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef i64 @_ZN14NAMESPACE_MAIN19RandomDeterministic8NextFastImEENSt9enable_ifIXaasr3std11is_unsignedIT_EE5valueltclL_ZNSt14numeric_limitsIjE3maxEvEEclsr3std14numeric_limitsIS3_EE3maxEES3_E4typeES3_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #11 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_ZNSt14numeric_limitsIhE3maxEv() #9 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNSt14numeric_limitsIfE3minEv() #9 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNSt14numeric_limitsIfE3maxEv() #9 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE3minEv() #9 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN12TermInnerBag9GetCountsEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN12TermInnerBag10GetWeightsEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZN14NAMESPACE_MAINL11MakeLowMaskIjEET_i(i32 noundef) #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!16, !12, i64 0}
!16 = !{!"_ZTSN14NAMESPACE_MAIN15DataSetBoostingE", !12, i64 0, !12, i64 8, !6, i64 16, !6, i64 24, !6, i64 32}
!17 = !{!16, !6, i64 24}
!18 = !{!16, !6, i64 16}
!19 = !{!16, !12, i64 8}
!20 = !{!21, !6, i64 16}
!21 = !{!"_ZTSN14NAMESPACE_MAIN15DataSetInnerBagE", !12, i64 0, !22, i64 8, !6, i64 16}
!22 = !{!"double", !7, i64 0}
!23 = !{i8 0, i8 2}
!24 = !{}
!25 = !{!26, !6, i64 0}
!26 = !{!"_ZTSN14NAMESPACE_MAIN12TermInnerBagE", !6, i64 0, !6, i64 8}
!27 = !{!26, !6, i64 8}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = distinct !{!30, !29}
!31 = !{!7, !7, i64 0}
!32 = distinct !{!32, !29}
!33 = !{!16, !6, i64 32}
!34 = !{!22, !22, i64 0}
!35 = !{!36, !6, i64 48}
!36 = !{!"_ZTSN14NAMESPACE_MAIN18DataSubsetBoostingE", !12, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!37 = !{!36, !6, i64 8}
!38 = !{!39, !12, i64 128}
!39 = !{!"_ZTS16ObjectiveWrapper", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !14, i64 32, !14, i64 36, !14, i64 40, !22, i64 48, !22, i64 56, !22, i64 64, !22, i64 72, !22, i64 80, !22, i64 88, !22, i64 96, !22, i64 104, !14, i64 112, !12, i64 120, !12, i64 128, !12, i64 136, !14, i64 144, !6, i64 152}
!40 = !{!41, !6, i64 0}
!41 = !{!"_ZTSN14NAMESPACE_MAIN14SubsetInnerBagE", !6, i64 0}
!42 = !{!43, !43, i64 0}
!43 = !{!"float", !7, i64 0}
!44 = distinct !{!44, !29}
!45 = distinct !{!45, !29}
!46 = !{!21, !22, i64 8}
!47 = !{!21, !12, i64 0}
!48 = !{!39, !12, i64 136}
!49 = !{!39, !12, i64 120}
!50 = !{!36, !6, i64 40}
!51 = distinct !{!51, !29}
!52 = distinct !{!52, !29}
!53 = distinct !{!53, !29}
!54 = distinct !{!54, !29}
!55 = distinct !{!55, !29}
!56 = distinct !{!56, !29}


; 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.NAMESPACE_MAIN::RandomDeterministic" = type { i64, i64, i64 }
%"class.NAMESPACE_MAIN::RandomNondeterministic" = type { i64, i64, %"class.std::random_device" }
%"class.std::random_device" = type { %union.anon }
%union.anon = type { %"class.std::mersenne_twister_engine" }
%"class.std::mersenne_twister_engine" = type { [624 x i64], i64 }
%"struct.NAMESPACE_MAIN::DataSubsetBoosting" = type { i64, ptr, ptr, ptr, ptr, ptr, ptr }
%"struct.NAMESPACE_MAIN::SubsetInnerBag" = type { ptr }
%"struct.NAMESPACE_MAIN::TermInnerBag" = type { ptr, ptr }

@g_traceLevel = external local_unnamed_addr global i32, align 4
@.str = external hidden unnamed_addr constant [89 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [41 x i8], align 1
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage = external hidden constant [34 x i8], align 16
@__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE = external hidden unnamed_addr constant [9 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [25 x i8], align 1
@__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE = external hidden unnamed_addr constant [130 x i8], align 1
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_0 = external hidden constant [80 x i8], align 16
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_1 = external hidden constant [62 x i8], align 16
@_ZTISt9bad_alloc = external constant ptr
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_2 = external hidden constant [70 x i8], align 16
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_3 = external hidden constant [70 x i8], align 16
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_4 = external hidden constant [85 x i8], align 16
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_5 = external hidden constant [63 x i8], align 16
@.str.123 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [49 x i8], align 1
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_6 = external hidden constant [59 x i8], align 16
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_7 = external hidden constant [105 x i8], align 16
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_8 = external hidden constant [56 x i8], align 16
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_9 = external hidden constant [57 x i8], align 16
@.str.125 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [42 x i8], align 1
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage__10_ = external hidden constant [104 x i8], align 16
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage__11_ = external hidden constant [55 x i8], align 16
@.str.129 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [53 x i8], align 1
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage__12_ = external hidden constant [52 x i8], align 16
@.str.141 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage__13_ = external hidden constant [33 x i8], align 16

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

declare void @InteralLogWithoutArguments(i32 noundef, ptr noundef) local_unnamed_addr #1

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

declare void @LogAssertFailure(i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef, i64 noundef) local_unnamed_addr #4

declare ptr @AlignedAlloc(i64 noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i64 @_ZN14NAMESPACE_MAINL11MakeLowMaskImEET_i(i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK14NAMESPACE_MAIN4Term18GetBitsRequiredMinEv(ptr noundef nonnull align 8 dereferenceable(776)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZN14NAMESPACE_MAINL22GetCountItemsBitPackedEim(i32 noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZN14NAMESPACE_MAINL12GetCountBitsEim(i32 noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #4 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) #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isnand(double noundef) local_unnamed_addr #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isinfd(double noundef) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE(ptr nocapture noundef nonnull align 8 dereferenceable(40) %0, i1 noundef zeroext %1, ptr noundef %2, i64 noundef %3, i64 noundef %4, ptr noundef readonly %5) local_unnamed_addr #9 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca %"class.NAMESPACE_MAIN::RandomDeterministic", align 8
  %8 = alloca %"class.NAMESPACE_MAIN::RandomNondeterministic", align 8
  %9 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %10 = icmp sgt i32 %9, 2
  br i1 %10, label %11, label %12

11:                                               ; preds = %6
  tail call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage)
  br label %12

12:                                               ; preds = %11, %6
  %13 = load i64, ptr %0, align 8, !tbaa !9
  %.not = icmp eq i64 %13, 0
  br i1 %.not, label %14, label %15

14:                                               ; preds = %12
  tail call void @LogAssertFailure(i64 noundef 737, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.121)
  tail call void @__assert_fail(ptr noundef nonnull @.str.122, ptr noundef nonnull @.str, i32 noundef 737, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

15:                                               ; preds = %12
  %16 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef 16, i64 noundef %4) #16
  br i1 %16, label %17, label %21

17:                                               ; preds = %15
  %18 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %19 = icmp sgt i32 %18, 1
  br i1 %19, label %20, label %603

20:                                               ; preds = %17
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_0)
  br label %603

21:                                               ; preds = %15
  %22 = shl i64 %4, 4
  %23 = tail call noundef ptr @_ZN14NAMESPACE_MAIN15DataSetInnerBag24AllocateDataSetInnerBagsEm(i64 noundef %3)
  %24 = icmp eq ptr %23, null
  br i1 %24, label %25, label %29

25:                                               ; preds = %21
  %26 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %27 = icmp sgt i32 %26, 1
  br i1 %27, label %28, label %603

28:                                               ; preds = %25
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_1)
  br label %603

29:                                               ; preds = %21
  %30 = getelementptr inbounds i8, ptr %0, i64 24
  store ptr %23, ptr %30, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #16
  %.not362 = icmp eq i64 %3, 0
  br i1 %.not362, label %73, label %31

31:                                               ; preds = %29
  %32 = icmp eq ptr %2, null
  br i1 %32, label %33, label %59

33:                                               ; preds = %31
  call void @llvm.lifetime.start.p0(i64 5016, ptr nonnull %8) #16
  invoke void @_ZN14NAMESPACE_MAIN22RandomNondeterministicImEC2Ev(ptr noundef nonnull align 8 dereferenceable(5016) %8)
          to label %34 unwind label %37

34:                                               ; preds = %33
  %35 = call noundef i64 @_ZNSt14numeric_limitsImE3maxEv() #16
  %36 = invoke noundef i64 @_ZN14NAMESPACE_MAIN22RandomNondeterministicImE4NextEm(ptr noundef nonnull align 8 dereferenceable(5016) %8, i64 noundef %35)
          to label %57 unwind label %39

37:                                               ; preds = %33
  %38 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9bad_alloc
          catch ptr null
  br label %41

39:                                               ; preds = %34
  %40 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9bad_alloc
          catch ptr null
  call void @_ZN14NAMESPACE_MAIN22RandomNondeterministicImED2Ev(ptr noundef nonnull align 8 dereferenceable(5016) %8) #16
  br label %41

41:                                               ; preds = %39, %37
  %.pn = phi { ptr, i32 } [ %40, %39 ], [ %38, %37 ]
  %.0276 = extractvalue { ptr, i32 } %.pn, 0
  %.0278 = extractvalue { ptr, i32 } %.pn, 1
  call void @llvm.lifetime.end.p0(i64 5016, ptr nonnull %8) #16
  %42 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9bad_alloc) #16
  %43 = icmp eq i32 %.0278, %42
  %44 = call ptr @__cxa_begin_catch(ptr %.0276) #16
  %45 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %46 = icmp sgt i32 %45, 1
  br i1 %43, label %47, label %49

47:                                               ; preds = %41
  br i1 %46, label %48, label %56

48:                                               ; preds = %47
  invoke void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_3)
          to label %56 unwind label %54

49:                                               ; preds = %41
  br i1 %46, label %50, label %53

50:                                               ; preds = %49
  invoke void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_2)
          to label %53 unwind label %51

51:                                               ; preds = %50
  %52 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %58 unwind label %604

53:                                               ; preds = %50, %49
  call void @__cxa_end_catch()
  br label %.thread

54:                                               ; preds = %48
  %55 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %58 unwind label %604

56:                                               ; preds = %48, %47
  call void @__cxa_end_catch()
  br label %.thread

57:                                               ; preds = %34
  call void @_ZN14NAMESPACE_MAIN22RandomNondeterministicImED2Ev(ptr noundef nonnull align 8 dereferenceable(5016) %8) #16
  call void @llvm.lifetime.end.p0(i64 5016, ptr nonnull %8) #16
  call void @_ZN14NAMESPACE_MAIN19RandomDeterministic10InitializeEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %36)
  br label %60

58:                                               ; preds = %54, %51
  %.pn364 = phi { ptr, i32 } [ %52, %51 ], [ %55, %54 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #16
  resume { ptr, i32 } %.pn364

59:                                               ; preds = %31
  call void @_ZN14NAMESPACE_MAIN19RandomDeterministic10InitializeERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %2)
  br label %60

60:                                               ; preds = %57, %59
  %61 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef 1, i64 noundef %13) #16
  br i1 %61, label %62, label %66

62:                                               ; preds = %60
  %63 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %64 = icmp sgt i32 %63, 1
  br i1 %64, label %65, label %.thread

65:                                               ; preds = %62
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_4)
  br label %.thread

66:                                               ; preds = %60
  %67 = call noalias ptr @malloc(i64 noundef %13) #17
  %68 = icmp eq ptr %67, null
  br i1 %68, label %69, label %73

69:                                               ; preds = %66
  %70 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %71 = icmp sgt i32 %70, 1
  br i1 %71, label %72, label %.thread

72:                                               ; preds = %69
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_5)
  br label %.thread

73:                                               ; preds = %66, %29
  %.0275 = phi ptr [ %67, %66 ], [ null, %29 ]
  %74 = getelementptr inbounds i8, ptr %0, i64 16
  %75 = load ptr, ptr %74, align 8, !tbaa !14
  %.not366 = icmp eq ptr %75, null
  br i1 %.not366, label %76, label %77

76:                                               ; preds = %73
  call void @LogAssertFailure(i64 noundef 787, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.5)
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, i32 noundef 787, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

77:                                               ; preds = %73
  %78 = getelementptr inbounds i8, ptr %0, i64 8
  %79 = load i64, ptr %78, align 8, !tbaa !15
  %.not367 = icmp eq i64 %79, 0
  br i1 %.not367, label %80, label %81

80:                                               ; preds = %77
  call void @LogAssertFailure(i64 noundef 788, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.7)
  call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str, i32 noundef 788, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

81:                                               ; preds = %77
  %82 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %75, i64 %79
  %83 = call i64 @llvm.umax.i64(i64 %3, i64 1)
  %.not368 = icmp ne i64 %4, 0
  %brmerge.not = and i1 %.not368, %1
  %.not369 = icmp eq ptr %5, null
  %.not433 = icmp eq ptr %.0275, null
  %84 = getelementptr inbounds i8, ptr %0, i64 32
  %85 = uitofp i64 %13 to double
  br label %86

86:                                               ; preds = %.loopexit435, %81
  %.0314 = phi double [ undef, %81 ], [ %.5319, %.loopexit435 ]
  %.0280 = phi i64 [ 0, %81 ], [ %593, %.loopexit435 ]
  %.0269 = phi ptr [ %23, %81 ], [ %592, %.loopexit435 ]
  %87 = getelementptr inbounds i8, ptr %.0269, i64 16
  %88 = load ptr, ptr %87, align 8, !tbaa !16
  %89 = icmp eq ptr %88, null
  br i1 %89, label %91, label %90

90:                                               ; preds = %86
  call void @LogAssertFailure(i64 noundef 794, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.123)
  call void @__assert_fail(ptr noundef nonnull @.str.124, ptr noundef nonnull @.str, i32 noundef 794, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

91:                                               ; preds = %86
  br i1 %brmerge.not, label %92, label %.loopexit437

92:                                               ; preds = %91
  br i1 %.not369, label %93, label %94

93:                                               ; preds = %92
  call void @LogAssertFailure(i64 noundef 796, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.45)
  call void @__assert_fail(ptr noundef nonnull @.str.46, ptr noundef nonnull @.str, i32 noundef 796, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

94:                                               ; preds = %92
  %95 = call noalias ptr @malloc(i64 noundef %22) #17
  %96 = icmp eq ptr %95, null
  br i1 %96, label %97, label %102

97:                                               ; preds = %94
  %98 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %99 = icmp sgt i32 %98, 1
  br i1 %99, label %100, label %101

100:                                              ; preds = %97
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_6)
  br label %101

101:                                              ; preds = %100, %97
  call void @free(ptr noundef %.0275) #16
  br label %.thread

102:                                              ; preds = %94
  %103 = ptrtoint ptr %95 to i64
  store ptr %95, ptr %87, align 8, !tbaa !16
  %104 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteINS_12TermInnerBagEEEPT_S3_m(ptr noundef nonnull %95, i64 noundef %22) #16
  %105 = ptrtoint ptr %104 to i64
  %106 = add i64 %105, -16
  %107 = sub i64 %106, %103
  %108 = and i64 %107, -16
  %109 = add i64 %108, 16
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %95, i8 0, i64 %109, i1 false), !tbaa !19
  %110 = load ptr, ptr %87, align 8, !tbaa !16
  br label %111

111:                                              ; preds = %142, %102
  %.0285 = phi ptr [ %5, %102 ], [ %113, %142 ]
  %.1283 = phi ptr [ %110, %102 ], [ %143, %142 ]
  %112 = load ptr, ptr %.0285, align 8, !tbaa !19
  %113 = getelementptr inbounds i8, ptr %.0285, i64 8
  %114 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %112) #16
  %.not371 = icmp eq i64 %114, 1
  br i1 %.not371, label %142, label %115

115:                                              ; preds = %111
  %116 = call noundef i64 @_ZN14NAMESPACE_MAINL6EbmMaxImEET_S1_S1_(i64 noundef 8, i64 noundef 8) #16
  %117 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %116, i64 noundef %114) #16
  br i1 %117, label %118, label %123

118:                                              ; preds = %115
  %119 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %120 = icmp sgt i32 %119, 1
  br i1 %120, label %121, label %122

121:                                              ; preds = %118
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_7)
  br label %122

122:                                              ; preds = %121, %118
  call void @free(ptr noundef %.0275) #16
  br label %.thread

123:                                              ; preds = %115
  %124 = shl i64 %114, 3
  %125 = call ptr @AlignedAlloc(i64 noundef %124)
  %126 = icmp eq ptr %125, null
  br i1 %126, label %127, label %132

127:                                              ; preds = %123
  %128 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %129 = icmp sgt i32 %128, 1
  br i1 %129, label %130, label %131

130:                                              ; preds = %127
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_8)
  br label %131

131:                                              ; preds = %130, %127
  call void @free(ptr noundef %.0275) #16
  br label %.thread

132:                                              ; preds = %123
  store ptr %125, ptr %.1283, align 8, !tbaa !20
  %133 = call ptr @AlignedAlloc(i64 noundef %124)
  %134 = icmp eq ptr %133, null
  br i1 %134, label %135, label %140

135:                                              ; preds = %132
  %136 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %137 = icmp sgt i32 %136, 1
  br i1 %137, label %138, label %139

138:                                              ; preds = %135
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage_9)
  br label %139

139:                                              ; preds = %138, %135
  call void @free(ptr noundef %.0275) #16
  br label %.thread

140:                                              ; preds = %132
  %141 = getelementptr inbounds i8, ptr %.1283, i64 8
  store ptr %133, ptr %141, align 8, !tbaa !22
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %125, i8 0, i64 %124, i1 false)
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %133, i8 0, i64 %124, i1 false)
  br label %142

142:                                              ; preds = %140, %111
  %143 = getelementptr inbounds i8, ptr %.1283, i64 16
  %.not372 = icmp eq ptr %104, %143
  br i1 %.not372, label %.loopexit437, label %111, !llvm.loop !23

.loopexit437:                                     ; preds = %142, %91
  br i1 %.not433, label %158, label %144

144:                                              ; preds = %.loopexit437
  br i1 %.not362, label %145, label %146

145:                                              ; preds = %144
  call void @LogAssertFailure(i64 noundef 852, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.125)
  call void @__assert_fail(ptr noundef nonnull @.str.126, ptr noundef nonnull @.str, i32 noundef 852, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

146:                                              ; preds = %144
  call void @llvm.memset.p0.i64(ptr nonnull align 1 %.0275, i8 0, i64 %13, i1 false)
  br label %147

147:                                              ; preds = %156, %146
  %.0286 = phi i64 [ %13, %146 ], [ %.1287, %156 ]
  %148 = call noundef i64 @_ZN14NAMESPACE_MAIN19RandomDeterministic8NextFastImEENSt9enable_ifIXaasr3std11is_unsignedIT_EE5valueltclL_ZNSt14numeric_limitsIjE3maxEvEEclsr3std14numeric_limitsIS3_EE3maxEES3_E4typeES3_(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %13)
  %149 = getelementptr inbounds i8, ptr %.0275, i64 %148
  %150 = load i8, ptr %149, align 1, !tbaa !25
  %151 = call noundef zeroext i8 @_ZNSt14numeric_limitsIhE3maxEv() #16
  %152 = icmp eq i8 %151, %150
  br i1 %152, label %156, label %153

153:                                              ; preds = %147
  %154 = add i8 %150, 1
  store i8 %154, ptr %149, align 1, !tbaa !25
  %155 = add i64 %.0286, -1
  br label %156

156:                                              ; preds = %147, %153
  %.1287 = phi i64 [ %155, %153 ], [ %.0286, %147 ]
  %.not373 = icmp eq i64 %.1287, 0
  br i1 %.not373, label %.thread415, label %147, !llvm.loop !26

.thread415:                                       ; preds = %156
  %157 = load ptr, ptr %84, align 8, !tbaa !27
  br label %160

158:                                              ; preds = %.loopexit437
  %159 = load ptr, ptr %84, align 8, !tbaa !27
  %.not434 = icmp eq ptr %159, null
  br i1 %.not434, label %.loopexit436, label %160

160:                                              ; preds = %.thread415, %158
  %161 = phi ptr [ %157, %.thread415 ], [ %159, %158 ]
  %162 = load ptr, ptr %74, align 8, !tbaa !14
  br label %163

163:                                              ; preds = %.split490.us, %160
  %.1315 = phi double [ 0.000000e+00, %160 ], [ %278, %.split490.us ]
  %.0310 = phi ptr [ %162, %160 ], [ %279, %.split490.us ]
  %.0300 = phi ptr [ %.0275, %160 ], [ %.us-phi492, %.split490.us ]
  %.0288 = phi ptr [ %161, %160 ], [ %.us-phi491, %.split490.us ]
  %164 = getelementptr inbounds i8, ptr %.0310, i64 48
  %165 = load ptr, ptr %164, align 8, !tbaa !28
  %.not374 = icmp eq ptr %165, null
  br i1 %.not374, label %166, label %167

166:                                              ; preds = %163
  call void @LogAssertFailure(i64 noundef 878, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.127)
  call void @__assert_fail(ptr noundef nonnull @.str.128, ptr noundef nonnull @.str, i32 noundef 878, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

167:                                              ; preds = %163
  %168 = getelementptr inbounds %"struct.NAMESPACE_MAIN::SubsetInnerBag", ptr %165, i64 %.0280
  %169 = call noundef i64 @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(56) %.0310)
  %.not375 = icmp eq i64 %169, 0
  br i1 %.not375, label %170, label %171

170:                                              ; preds = %167
  call void @LogAssertFailure(i64 noundef 881, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.9)
  call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, i32 noundef 881, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

171:                                              ; preds = %167
  %172 = getelementptr inbounds i8, ptr %.0310, i64 8
  %173 = load ptr, ptr %172, align 8, !tbaa !30
  %174 = getelementptr inbounds i8, ptr %173, i64 128
  %175 = load i64, ptr %174, align 8, !tbaa !31
  %176 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %175, i64 noundef %169) #16
  br i1 %176, label %177, label %182

177:                                              ; preds = %171
  %178 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %179 = icmp sgt i32 %178, 1
  br i1 %179, label %180, label %181

180:                                              ; preds = %177
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage__10_)
  br label %181

181:                                              ; preds = %180, %177
  call void @free(ptr noundef %.0275) #16
  br label %.thread

182:                                              ; preds = %171
  %183 = load ptr, ptr %172, align 8, !tbaa !30
  %184 = getelementptr inbounds i8, ptr %183, i64 128
  %185 = load i64, ptr %184, align 8, !tbaa !31
  %186 = mul i64 %185, %169
  %187 = call ptr @AlignedAlloc(i64 noundef %186)
  %188 = icmp eq ptr %187, null
  br i1 %188, label %189, label %194

189:                                              ; preds = %182
  %190 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %191 = icmp sgt i32 %190, 1
  br i1 %191, label %192, label %193

192:                                              ; preds = %189
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage__11_)
  br label %193

193:                                              ; preds = %192, %189
  call void @free(ptr noundef %.0275) #16
  br label %.thread

194:                                              ; preds = %182
  store ptr %187, ptr %168, align 8, !tbaa !33
  %195 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef nonnull %187, i64 noundef %186) #16
  br i1 %.not362, label %.split.us.preheader, label %.split

.split.us.preheader:                              ; preds = %194
  %.not376.us.peel = icmp eq ptr %.0300, null
  br i1 %.not376.us.peel, label %196, label %.split478.us

196:                                              ; preds = %.split.us.preheader
  %.not377.us.peel = icmp eq ptr %.0288, null
  br i1 %.not377.us.peel, label %213, label %197

197:                                              ; preds = %196
  %198 = load double, ptr %.0288, align 8, !tbaa !35
  %199 = call noundef zeroext i1 @_ZSt5isnand(double noundef %198)
  br i1 %199, label %.split480.us, label %200

200:                                              ; preds = %197
  %201 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %198)
  br i1 %201, label %.split482.us, label %202

202:                                              ; preds = %200
  %203 = call noundef float @_ZNSt14numeric_limitsIfE3minEv() #16
  %204 = fpext float %203 to double
  %205 = fcmp ult double %198, %204
  br i1 %205, label %.split484.us, label %206

206:                                              ; preds = %202
  %207 = call noundef float @_ZNSt14numeric_limitsIfE3maxEv() #16
  %208 = fpext float %207 to double
  %209 = fcmp ugt double %198, %208
  br i1 %209, label %.split486.us, label %210

210:                                              ; preds = %206
  %211 = getelementptr inbounds i8, ptr %.0288, i64 8
  %212 = fadd double %198, 0.000000e+00
  br label %213

213:                                              ; preds = %210, %196
  %.1324.us.peel = phi double [ %198, %210 ], [ 1.000000e+00, %196 ]
  %.1322.us.peel = phi double [ %212, %210 ], [ 0.000000e+00, %196 ]
  %.2290.us.peel = phi ptr [ %211, %210 ], [ null, %196 ]
  %214 = load ptr, ptr %172, align 8, !tbaa !30
  %215 = getelementptr inbounds i8, ptr %214, i64 128
  %216 = load i64, ptr %215, align 8, !tbaa !31
  switch i64 %216, label %.split488.us [
    i64 8, label %219
    i64 4, label %217
  ]

217:                                              ; preds = %213
  %218 = fptrunc double %.1324.us.peel to float
  store float %218, ptr %187, align 4, !tbaa !36
  br label %220

219:                                              ; preds = %213
  store double %.1324.us.peel, ptr %187, align 8, !tbaa !35
  br label %220

220:                                              ; preds = %219, %217
  %221 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef nonnull %187, i64 noundef %216) #16
  %.not378.us.peel = icmp eq ptr %195, %221
  br i1 %.not378.us.peel, label %.split490.us, label %.split.us.peel.next

.split.us.peel.next:                              ; preds = %220, %245
  %.0325.us = phi ptr [ %246, %245 ], [ %221, %220 ]
  %.0321.us = phi double [ %.1322.us, %245 ], [ %.1322.us.peel, %220 ]
  %.1289.us = phi ptr [ %.2290.us, %245 ], [ %.2290.us.peel, %220 ]
  %.not377.us = icmp eq ptr %.1289.us, null
  br i1 %.not377.us, label %238, label %222

222:                                              ; preds = %.split.us.peel.next
  %223 = load double, ptr %.1289.us, align 8, !tbaa !35
  %224 = call noundef zeroext i1 @_ZSt5isnand(double noundef %223)
  br i1 %224, label %.split480.us, label %225

225:                                              ; preds = %222
  %226 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %223)
  br i1 %226, label %.split482.us, label %227

227:                                              ; preds = %225
  %228 = call noundef float @_ZNSt14numeric_limitsIfE3minEv() #16
  %229 = fpext float %228 to double
  %230 = fcmp ult double %223, %229
  br i1 %230, label %.split484.us, label %231

231:                                              ; preds = %227
  %232 = call noundef float @_ZNSt14numeric_limitsIfE3maxEv() #16
  %233 = fpext float %232 to double
  %234 = fcmp ugt double %223, %233
  br i1 %234, label %.split486.us, label %235

235:                                              ; preds = %231
  %236 = getelementptr inbounds i8, ptr %.1289.us, i64 8
  %237 = fadd double %.0321.us, %223
  br label %238

238:                                              ; preds = %235, %.split.us.peel.next
  %.1324.us = phi double [ %223, %235 ], [ 1.000000e+00, %.split.us.peel.next ]
  %.1322.us = phi double [ %237, %235 ], [ %.0321.us, %.split.us.peel.next ]
  %.2290.us = phi ptr [ %236, %235 ], [ null, %.split.us.peel.next ]
  %239 = load ptr, ptr %172, align 8, !tbaa !30
  %240 = getelementptr inbounds i8, ptr %239, i64 128
  %241 = load i64, ptr %240, align 8, !tbaa !31
  switch i64 %241, label %.split488.us [
    i64 8, label %244
    i64 4, label %242
  ]

242:                                              ; preds = %238
  %243 = fptrunc double %.1324.us to float
  store float %243, ptr %.0325.us, align 4, !tbaa !36
  br label %245

244:                                              ; preds = %238
  store double %.1324.us, ptr %.0325.us, align 8, !tbaa !35
  br label %245

245:                                              ; preds = %244, %242
  %246 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef nonnull %.0325.us, i64 noundef %241) #16
  %.not378.us = icmp eq ptr %195, %246
  br i1 %.not378.us, label %.split490.us, label %.split.us.peel.next, !llvm.loop !38

.split:                                           ; preds = %194, %276
  %.0325 = phi ptr [ %277, %276 ], [ %187, %194 ]
  %.0321 = phi double [ %.1322, %276 ], [ 0.000000e+00, %194 ]
  %.1301 = phi ptr [ %.2302, %276 ], [ %.0300, %194 ]
  %.1289 = phi ptr [ %.2290, %276 ], [ %.0288, %194 ]
  %.not376 = icmp eq ptr %.1301, null
  br i1 %.not376, label %251, label %247

247:                                              ; preds = %.split
  %248 = load i8, ptr %.1301, align 1, !tbaa !25
  %249 = getelementptr inbounds i8, ptr %.1301, i64 1
  %250 = uitofp i8 %248 to double
  br label %251

.split478.us:                                     ; preds = %.split.us.preheader
  call void @LogAssertFailure(i64 noundef 906, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.125)
  call void @__assert_fail(ptr noundef nonnull @.str.126, ptr noundef nonnull @.str, i32 noundef 906, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

251:                                              ; preds = %247, %.split
  %.0323 = phi double [ %250, %247 ], [ 1.000000e+00, %.split ]
  %.2302 = phi ptr [ %249, %247 ], [ null, %.split ]
  %.not377 = icmp eq ptr %.1289, null
  br i1 %.not377, label %269, label %252

252:                                              ; preds = %251
  %253 = load double, ptr %.1289, align 8, !tbaa !35
  %254 = call noundef zeroext i1 @_ZSt5isnand(double noundef %253)
  br i1 %254, label %.split480.us, label %255

.split480.us:                                     ; preds = %197, %252, %222
  call void @LogAssertFailure(i64 noundef 916, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.129)
  call void @__assert_fail(ptr noundef nonnull @.str.130, ptr noundef nonnull @.str, i32 noundef 916, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

255:                                              ; preds = %252
  %256 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %253)
  br i1 %256, label %.split482.us, label %257

.split482.us:                                     ; preds = %200, %255, %225
  call void @LogAssertFailure(i64 noundef 917, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.131)
  call void @__assert_fail(ptr noundef nonnull @.str.132, ptr noundef nonnull @.str, i32 noundef 917, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

257:                                              ; preds = %255
  %258 = call noundef float @_ZNSt14numeric_limitsIfE3minEv() #16
  %259 = fpext float %258 to double
  %260 = fcmp ult double %253, %259
  br i1 %260, label %.split484.us, label %261

.split484.us:                                     ; preds = %202, %257, %227
  call void @LogAssertFailure(i64 noundef 918, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.133)
  call void @__assert_fail(ptr noundef nonnull @.str.134, ptr noundef nonnull @.str, i32 noundef 918, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

261:                                              ; preds = %257
  %262 = call noundef float @_ZNSt14numeric_limitsIfE3maxEv() #16
  %263 = fpext float %262 to double
  %264 = fcmp ugt double %253, %263
  br i1 %264, label %.split486.us, label %265

.split486.us:                                     ; preds = %206, %261, %231
  call void @LogAssertFailure(i64 noundef 919, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.135)
  call void @__assert_fail(ptr noundef nonnull @.str.136, ptr noundef nonnull @.str, i32 noundef 919, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

265:                                              ; preds = %261
  %266 = fmul double %.0323, %253
  %267 = getelementptr inbounds i8, ptr %.1289, i64 8
  %268 = fadd double %.0321, %266
  br label %269

269:                                              ; preds = %265, %251
  %.1324 = phi double [ %266, %265 ], [ %.0323, %251 ]
  %.1322 = phi double [ %268, %265 ], [ %.0321, %251 ]
  %.2290 = phi ptr [ %267, %265 ], [ null, %251 ]
  %270 = load ptr, ptr %172, align 8, !tbaa !30
  %271 = getelementptr inbounds i8, ptr %270, i64 128
  %272 = load i64, ptr %271, align 8, !tbaa !31
  switch i64 %272, label %.split488.us [
    i64 8, label %273
    i64 4, label %274
  ]

273:                                              ; preds = %269
  store double %.1324, ptr %.0325, align 8, !tbaa !35
  br label %276

.split488.us:                                     ; preds = %213, %269, %238
  call void @LogAssertFailure(i64 noundef 930, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.23)
  call void @__assert_fail(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str, i32 noundef 930, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

274:                                              ; preds = %269
  %275 = fptrunc double %.1324 to float
  store float %275, ptr %.0325, align 4, !tbaa !36
  br label %276

276:                                              ; preds = %274, %273
  %277 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef nonnull %.0325, i64 noundef %272) #16
  %.not378 = icmp eq ptr %195, %277
  br i1 %.not378, label %.split490.us, label %.split, !llvm.loop !40

.split490.us:                                     ; preds = %276, %245, %220
  %.us-phi = phi double [ %.1322.us.peel, %220 ], [ %.1322.us, %245 ], [ %.1322, %276 ]
  %.us-phi491 = phi ptr [ %.2290.us.peel, %220 ], [ %.2290.us, %245 ], [ %.2290, %276 ]
  %.us-phi492 = phi ptr [ null, %220 ], [ null, %245 ], [ %.2302, %276 ]
  %278 = fadd double %.1315, %.us-phi
  %279 = getelementptr inbounds i8, ptr %.0310, i64 56
  %.not379 = icmp eq ptr %82, %279
  br i1 %.not379, label %.loopexit436, label %163, !llvm.loop !41

.loopexit436:                                     ; preds = %.split490.us, %158
  %.4318 = phi double [ %.0314, %158 ], [ %278, %.split490.us ]
  %.5293 = phi ptr [ null, %158 ], [ %.us-phi491, %.split490.us ]
  %280 = icmp eq ptr %.5293, null
  %.5319 = select i1 %280, double %85, double %.4318
  %281 = call noundef zeroext i1 @_ZSt5isnand(double noundef %.5319)
  br i1 %281, label %282, label %283

282:                                              ; preds = %.loopexit436
  call void @LogAssertFailure(i64 noundef 946, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.137)
  call void @__assert_fail(ptr noundef nonnull @.str.138, ptr noundef nonnull @.str, i32 noundef 946, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

283:                                              ; preds = %.loopexit436
  %284 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #16
  %285 = fcmp ugt double %284, %.5319
  br i1 %285, label %286, label %287

286:                                              ; preds = %283
  call void @LogAssertFailure(i64 noundef 947, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.139)
  call void @__assert_fail(ptr noundef nonnull @.str.140, ptr noundef nonnull @.str, i32 noundef 947, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

287:                                              ; preds = %283
  %288 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %.5319)
  br i1 %288, label %289, label %294

289:                                              ; preds = %287
  %290 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %291 = icmp sgt i32 %290, 1
  br i1 %291, label %292, label %293

292:                                              ; preds = %289
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage__12_)
  br label %293

293:                                              ; preds = %292, %289
  call void @free(ptr noundef %.0275) #16
  br label %.thread

294:                                              ; preds = %287
  %295 = getelementptr inbounds i8, ptr %.0269, i64 8
  store double %.5319, ptr %295, align 8, !tbaa !42
  store i64 %13, ptr %.0269, align 8, !tbaa !43
  %296 = load ptr, ptr %87, align 8, !tbaa !16
  %.not380 = icmp eq ptr %296, null
  br i1 %.not380, label %.loopexit435, label %297

297:                                              ; preds = %294
  br i1 %.not368, label %299, label %298

298:                                              ; preds = %297
  call void @LogAssertFailure(i64 noundef 960, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.1)
  call void @__assert_fail(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, i32 noundef 960, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

299:                                              ; preds = %297
  br i1 %.not369, label %300, label %.preheader

300:                                              ; preds = %299
  call void @LogAssertFailure(i64 noundef 961, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.45)
  call void @__assert_fail(ptr noundef nonnull @.str.46, ptr noundef nonnull @.str, i32 noundef 961, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

.preheader:                                       ; preds = %299, %.loopexit
  %.0299 = phi i64 [ %591, %.loopexit ], [ 0, %299 ]
  %301 = getelementptr inbounds ptr, ptr %5, i64 %.0299
  %302 = load ptr, ptr %301, align 8, !tbaa !19
  %303 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %302) #16
  %.not383 = icmp eq i64 %303, 1
  br i1 %.not383, label %.loopexit, label %304

304:                                              ; preds = %.preheader
  %305 = getelementptr inbounds %"struct.NAMESPACE_MAIN::TermInnerBag", ptr %296, i64 %.0299
  %306 = call noundef ptr @_ZN14NAMESPACE_MAIN12TermInnerBag9GetCountsEv(ptr noundef nonnull align 8 dereferenceable(16) %305)
  %307 = call noundef ptr @_ZN14NAMESPACE_MAIN12TermInnerBag10GetWeightsEv(ptr noundef nonnull align 8 dereferenceable(16) %305)
  %308 = load ptr, ptr %84, align 8, !tbaa !27
  %309 = load ptr, ptr %74, align 8, !tbaa !14
  %.not390 = icmp eq ptr %306, null
  %.not391 = icmp eq ptr %307, null
  br label %310

310:                                              ; preds = %.split511.us, %304
  %.3313 = phi ptr [ %309, %304 ], [ %590, %.split511.us ]
  %.5305 = phi ptr [ %.0275, %304 ], [ %.us-phi512, %.split511.us ]
  %.6294 = phi ptr [ %308, %304 ], [ %.us-phi513, %.split511.us ]
  %311 = call noundef i32 @_ZNK14NAMESPACE_MAIN4Term18GetBitsRequiredMinEv(ptr noundef nonnull align 8 dereferenceable(776) %302) #16
  %312 = icmp sgt i32 %311, 0
  br i1 %312, label %314, label %313

313:                                              ; preds = %310
  call void @LogAssertFailure(i64 noundef 976, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.81)
  call void @__assert_fail(ptr noundef nonnull @.str.82, ptr noundef nonnull @.str, i32 noundef 976, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

314:                                              ; preds = %310
  %315 = call noundef i32 @_ZNK14NAMESPACE_MAIN4Term18GetBitsRequiredMinEv(ptr noundef nonnull align 8 dereferenceable(776) %302) #16
  %316 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %.3313)
  %317 = getelementptr inbounds i8, ptr %316, i64 136
  %318 = load i64, ptr %317, align 8, !tbaa !44
  %319 = call noundef i32 @_ZN14NAMESPACE_MAINL22GetCountItemsBitPackedEim(i32 noundef %315, i64 noundef %318) #16
  %320 = icmp sgt i32 %319, 0
  br i1 %320, label %322, label %321

321:                                              ; preds = %314
  call void @LogAssertFailure(i64 noundef 979, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.141)
  call void @__assert_fail(ptr noundef nonnull @.str.142, ptr noundef nonnull @.str, i32 noundef 979, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

322:                                              ; preds = %314
  %323 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %.3313)
  %324 = getelementptr inbounds i8, ptr %323, i64 136
  %325 = load i64, ptr %324, align 8, !tbaa !44
  %326 = call noundef i32 @_ZN14NAMESPACE_MAINL12GetCountBitsEim(i32 noundef %319, i64 noundef %325) #16
  %327 = icmp sgt i32 %326, 0
  br i1 %327, label %329, label %328

328:                                              ; preds = %322
  call void @LogAssertFailure(i64 noundef 984, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.143)
  call void @__assert_fail(ptr noundef nonnull @.str.144, ptr noundef nonnull @.str, i32 noundef 984, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

329:                                              ; preds = %322
  %330 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %.3313)
  %331 = getelementptr inbounds i8, ptr %330, i64 120
  %332 = load i64, ptr %331, align 8, !tbaa !45
  %.not384 = icmp eq i64 %332, 0
  br i1 %.not384, label %333, label %334

333:                                              ; preds = %329
  call void @LogAssertFailure(i64 noundef 987, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.19)
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str, i32 noundef 987, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

334:                                              ; preds = %329
  %335 = call noundef i64 @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(56) %.3313)
  %.not385 = icmp eq i64 %335, 0
  br i1 %.not385, label %336, label %337

336:                                              ; preds = %334
  call void @LogAssertFailure(i64 noundef 990, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.9)
  call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, i32 noundef 990, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

337:                                              ; preds = %334
  %338 = urem i64 %335, %332
  %339 = udiv i64 %335, %332
  %340 = icmp eq i64 %338, 0
  br i1 %340, label %342, label %341

341:                                              ; preds = %337
  call void @LogAssertFailure(i64 noundef 991, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.21)
  call void @__assert_fail(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str, i32 noundef 991, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

342:                                              ; preds = %337
  %.not386 = icmp ugt i64 %332, %335
  br i1 %.not386, label %343, label %344

343:                                              ; preds = %342
  call void @LogAssertFailure(i64 noundef 994, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.87)
  call void @__assert_fail(ptr noundef nonnull @.str.88, ptr noundef nonnull @.str, i32 noundef 994, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

344:                                              ; preds = %342
  %345 = getelementptr inbounds i8, ptr %.3313, i64 8
  %346 = load ptr, ptr %345, align 8, !tbaa !30
  %347 = getelementptr inbounds i8, ptr %346, i64 136
  %348 = load i64, ptr %347, align 8, !tbaa !44
  switch i64 %348, label %351 [
    i64 8, label %349
    i64 4, label %352
  ]

349:                                              ; preds = %344
  %350 = call noundef i64 @_ZN14NAMESPACE_MAINL11MakeLowMaskImEET_i(i32 noundef %326) #16
  br label %355

351:                                              ; preds = %344
  call void @LogAssertFailure(i64 noundef 1000, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.39)
  call void @__assert_fail(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str, i32 noundef 1000, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

352:                                              ; preds = %344
  %353 = call noundef i32 @_ZN14NAMESPACE_MAINL11MakeLowMaskIjEET_i(i32 noundef %326) #16
  %354 = zext i32 %353 to i64
  br label %355

355:                                              ; preds = %352, %349
  %.0272 = phi i64 [ %350, %349 ], [ %354, %352 ]
  %356 = getelementptr inbounds i8, ptr %.3313, i64 40
  %357 = load ptr, ptr %356, align 8, !tbaa !46
  %358 = getelementptr inbounds ptr, ptr %357, i64 %.0299
  %359 = load ptr, ptr %358, align 8, !tbaa !19
  %360 = add nsw i32 %319, -1
  %361 = mul nsw i32 %326, %360
  %362 = zext nneg i32 %319 to i64
  %363 = urem i64 %339, %362
  %364 = trunc nuw nsw i64 %363 to i32
  %365 = mul nuw nsw i32 %326, %364
  br i1 %.not390, label %.split542.us, label %.split504

.split542.us:                                     ; preds = %355
  br i1 %.not391, label %.split542.us.split.us, label %.split542.us.split

.split542.us.split.us:                            ; preds = %.split542.us
  br i1 %.not362, label %.split504.us.us.us.us.preheader, label %.split504.us.us.us

.split504.us.us.us.us.preheader:                  ; preds = %.split542.us.split.us
  %.not392.us.us.us.us.us.us.us.us.us.peel = icmp eq i64 %332, 1
  br label %.split504.us.us.us.us

.split504.us.us.us.us:                            ; preds = %.split504.us.us.us.us.preheader, %.split506.us.split.us.split.us.us.us.us
  %.6306.us.us.us = phi ptr [ null, %.split506.us.split.us.split.us.us.us.us ], [ %.5305, %.split504.us.us.us.us.preheader ]
  %.7295.us.us.us = phi ptr [ %spec.select.lcssa, %.split506.us.split.us.split.us.us.us.us ], [ %.6294, %.split504.us.us.us.us.preheader ]
  %.0273.us.us.us = phi i64 [ %404, %.split506.us.split.us.split.us.us.us.us ], [ %339, %.split504.us.us.us.us.preheader ]
  %.0271.us.us.us = phi ptr [ %410, %.split506.us.split.us.split.us.us.us.us ], [ %359, %.split504.us.us.us.us.preheader ]
  %.0266.us.us.us = phi i32 [ %361, %.split506.us.split.us.split.us.us.us.us ], [ %365, %.split504.us.us.us.us.preheader ]
  br label %.split493.us.us.us.us.us.us.us

.split493.us.us.us.us.us.us.us:                   ; preds = %383, %.split504.us.us.us.us
  %.7307.us.us.us.us.us.us = phi ptr [ %.6306.us.us.us, %.split504.us.us.us.us ], [ null, %383 ]
  %.8296.us.us.us.us.us.us = phi ptr [ %.7295.us.us.us, %.split504.us.us.us.us ], [ %spec.select.lcssa, %383 ]
  %.1274.us.us.us.us.us.us = phi i64 [ %.0273.us.us.us, %.split504.us.us.us.us ], [ %404, %383 ]
  %.1267.us.us.us.us.us.us = phi i32 [ %.0266.us.us.us, %.split504.us.us.us.us ], [ %384, %383 ]
  %366 = zext nneg i32 %.1267.us.us.us.us.us.us to i64
  %367 = load ptr, ptr %345, align 8, !tbaa !30
  %368 = getelementptr inbounds i8, ptr %367, i64 136
  %369 = load i64, ptr %368, align 8, !tbaa !44
  switch i64 %369, label %.split495.us [
    i64 8, label %374
    i64 4, label %370
  ]

370:                                              ; preds = %.split493.us.us.us.us.us.us.us
  %371 = load i32, ptr %.0271.us.us.us, align 4, !tbaa !5
  %372 = lshr i32 %371, %.1267.us.us.us.us.us.us
  %373 = zext i32 %372 to i64
  br label %377

374:                                              ; preds = %.split493.us.us.us.us.us.us.us
  %375 = load i64, ptr %.0271.us.us.us, align 8, !tbaa !47
  %376 = lshr i64 %375, %366
  br label %377

377:                                              ; preds = %374, %370
  %.pn387.us.us.us.us.us.us.us.us.us.peel = phi i64 [ %376, %374 ], [ %373, %370 ]
  %.0264.us.us.us.us.us.us.us.us.us.peel = and i64 %.pn387.us.us.us.us.us.us.us.us.us.peel, %.0272
  %378 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %302) #16
  %379 = icmp ult i64 %.0264.us.us.us.us.us.us.us.us.us.peel, %378
  br i1 %379, label %380, label %.split497.us

380:                                              ; preds = %377
  %.not389.us.us.us.us.us.us.us.us.us.peel = icmp eq ptr %.7307.us.us.us.us.us.us, null
  br i1 %.not389.us.us.us.us.us.us.us.us.us.peel, label %381, label %.split499.us

381:                                              ; preds = %380
  %.not388.us.us.us.us.us.us.us.us.us.peel = icmp eq ptr %.8296.us.us.us.us.us.us, null
  %382 = getelementptr inbounds i8, ptr %.8296.us.us.us.us.us.us, i64 8
  %spec.select.peel = select i1 %.not388.us.us.us.us.us.us.us.us.us.peel, ptr null, ptr %382
  br i1 %.not392.us.us.us.us.us.us.us.us.us.peel, label %.split501.us.us.split.us.split.us.us.us.us.us.us, label %.peel.next657

383:                                              ; preds = %.split501.us.us.split.us.split.us.us.us.us.us.us
  %384 = sub nsw i32 %.1267.us.us.us.us.us.us, %326
  %385 = icmp sgt i32 %384, -1
  br i1 %385, label %.split493.us.us.us.us.us.us.us, label %.split506.us.split.us.split.us.us.us.us, !llvm.loop !48

.peel.next657:                                    ; preds = %381, %401
  %.9297.us.us.us.us.us.us.us.us.us = phi ptr [ %spec.select, %401 ], [ %spec.select.peel, %381 ]
  %.0265.us.us.us.us.us.us.us.us.us = phi i64 [ %403, %401 ], [ 1, %381 ]
  %386 = load ptr, ptr %345, align 8, !tbaa !30
  %387 = getelementptr inbounds i8, ptr %386, i64 136
  %388 = load i64, ptr %387, align 8, !tbaa !44
  switch i64 %388, label %.split495.us [
    i64 8, label %394
    i64 4, label %389
  ]

389:                                              ; preds = %.peel.next657
  %390 = getelementptr inbounds i32, ptr %.0271.us.us.us, i64 %.0265.us.us.us.us.us.us.us.us.us
  %391 = load i32, ptr %390, align 4, !tbaa !5
  %392 = lshr i32 %391, %.1267.us.us.us.us.us.us
  %393 = zext i32 %392 to i64
  br label %398

394:                                              ; preds = %.peel.next657
  %395 = getelementptr inbounds i64, ptr %.0271.us.us.us, i64 %.0265.us.us.us.us.us.us.us.us.us
  %396 = load i64, ptr %395, align 8, !tbaa !47
  %397 = lshr i64 %396, %366
  br label %398

398:                                              ; preds = %394, %389
  %.pn387.us.us.us.us.us.us.us.us.us = phi i64 [ %397, %394 ], [ %393, %389 ]
  %.0264.us.us.us.us.us.us.us.us.us = and i64 %.pn387.us.us.us.us.us.us.us.us.us, %.0272
  %399 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %302) #16
  %400 = icmp ult i64 %.0264.us.us.us.us.us.us.us.us.us, %399
  br i1 %400, label %401, label %.split497.us

401:                                              ; preds = %398
  %.not388.us.us.us.us.us.us.us.us.us = icmp eq ptr %.9297.us.us.us.us.us.us.us.us.us, null
  %402 = getelementptr inbounds i8, ptr %.9297.us.us.us.us.us.us.us.us.us, i64 8
  %spec.select = select i1 %.not388.us.us.us.us.us.us.us.us.us, ptr null, ptr %402
  %403 = add i64 %.0265.us.us.us.us.us.us.us.us.us, 1
  %.not392.us.us.us.us.us.us.us.us.us = icmp eq i64 %332, %403
  br i1 %.not392.us.us.us.us.us.us.us.us.us, label %.split501.us.us.split.us.split.us.us.us.us.us.us, label %.peel.next657, !llvm.loop !49

.split501.us.us.split.us.split.us.us.us.us.us.us: ; preds = %401, %381
  %spec.select.lcssa = phi ptr [ %spec.select.peel, %381 ], [ %spec.select, %401 ]
  %404 = add i64 %.1274.us.us.us.us.us.us, -1
  %405 = icmp eq i64 %404, 0
  br i1 %405, label %.split511.us, label %383

.split506.us.split.us.split.us.us.us.us:          ; preds = %383
  %406 = load ptr, ptr %345, align 8, !tbaa !30
  %407 = getelementptr inbounds i8, ptr %406, i64 136
  %408 = load i64, ptr %407, align 8, !tbaa !44
  %409 = mul i64 %408, %332
  %410 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef nonnull %.0271.us.us.us, i64 noundef %409) #16
  br label %.split504.us.us.us.us, !llvm.loop !50

.split504.us.us.us:                               ; preds = %.split542.us.split.us, %.split506.us.split.us.split.us558.us
  %.6306.us.us = phi ptr [ %.9309.us.us.us.us.us.us, %.split506.us.split.us.split.us558.us ], [ %.5305, %.split542.us.split.us ]
  %.7295.us.us = phi ptr [ %spec.select595, %.split506.us.split.us.split.us558.us ], [ %.6294, %.split542.us.split.us ]
  %.0273.us.us = phi i64 [ %435, %.split506.us.split.us.split.us558.us ], [ %339, %.split542.us.split.us ]
  %.0271.us.us = phi ptr [ %441, %.split506.us.split.us.split.us558.us ], [ %359, %.split542.us.split.us ]
  %.0266.us.us = phi i32 [ %361, %.split506.us.split.us.split.us558.us ], [ %365, %.split542.us.split.us ]
  br label %.split493.us.us.us.us553.us

.split493.us.us.us.us553.us:                      ; preds = %.split504.us.us.us, %412
  %.7307.us.us.us554.us = phi ptr [ %.6306.us.us, %.split504.us.us.us ], [ %.9309.us.us.us.us.us.us, %412 ]
  %.8296.us.us.us555.us = phi ptr [ %.7295.us.us, %.split504.us.us.us ], [ %spec.select595, %412 ]
  %.1274.us.us.us556.us = phi i64 [ %.0273.us.us, %.split504.us.us.us ], [ %435, %412 ]
  %.1267.us.us.us557.us = phi i32 [ %.0266.us.us, %.split504.us.us.us ], [ %413, %412 ]
  %411 = zext nneg i32 %.1267.us.us.us557.us to i64
  br label %415

412:                                              ; preds = %.split501.us.us.split.us.split.us527.us.us
  %413 = sub nsw i32 %.1267.us.us.us557.us, %326
  %414 = icmp sgt i32 %413, -1
  br i1 %414, label %.split493.us.us.us.us553.us, label %.split506.us.split.us.split.us558.us, !llvm.loop !48

415:                                              ; preds = %431, %.split493.us.us.us.us553.us
  %.8308.us.us.us.us518.us.us = phi ptr [ %.7307.us.us.us554.us, %.split493.us.us.us.us553.us ], [ %.9309.us.us.us.us.us.us, %431 ]
  %.9297.us.us.us.us519.us.us = phi ptr [ %.8296.us.us.us555.us, %.split493.us.us.us.us553.us ], [ %spec.select595, %431 ]
  %.0265.us.us.us.us520.us.us = phi i64 [ 0, %.split493.us.us.us.us553.us ], [ %434, %431 ]
  %416 = load ptr, ptr %345, align 8, !tbaa !30
  %417 = getelementptr inbounds i8, ptr %416, i64 136
  %418 = load i64, ptr %417, align 8, !tbaa !44
  switch i64 %418, label %.split495.us [
    i64 8, label %424
    i64 4, label %419
  ]

419:                                              ; preds = %415
  %420 = getelementptr inbounds i32, ptr %.0271.us.us, i64 %.0265.us.us.us.us520.us.us
  %421 = load i32, ptr %420, align 4, !tbaa !5
  %422 = lshr i32 %421, %.1267.us.us.us557.us
  %423 = zext i32 %422 to i64
  br label %428

424:                                              ; preds = %415
  %425 = getelementptr inbounds i64, ptr %.0271.us.us, i64 %.0265.us.us.us.us520.us.us
  %426 = load i64, ptr %425, align 8, !tbaa !47
  %427 = lshr i64 %426, %411
  br label %428

428:                                              ; preds = %424, %419
  %.pn387.us.us.us.us521.us.us = phi i64 [ %427, %424 ], [ %423, %419 ]
  %.0264.us.us.us.us522.us.us = and i64 %.pn387.us.us.us.us521.us.us, %.0272
  %429 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %302) #16
  %430 = icmp ult i64 %.0264.us.us.us.us522.us.us, %429
  br i1 %430, label %431, label %.split497.us

431:                                              ; preds = %428
  %.not388.us.us.us.us523.us.us = icmp eq ptr %.9297.us.us.us.us519.us.us, null
  %432 = getelementptr inbounds i8, ptr %.9297.us.us.us.us519.us.us, i64 8
  %spec.select595 = select i1 %.not388.us.us.us.us523.us.us, ptr null, ptr %432
  %.not389.us.us.us.us525.us.us = icmp eq ptr %.8308.us.us.us.us518.us.us, null
  %433 = getelementptr inbounds i8, ptr %.8308.us.us.us.us518.us.us, i64 1
  %.9309.us.us.us.us.us.us = select i1 %.not389.us.us.us.us525.us.us, ptr null, ptr %433
  %434 = add i64 %.0265.us.us.us.us520.us.us, 1
  %.not392.us.us.us.us526.us.us = icmp eq i64 %332, %434
  br i1 %.not392.us.us.us.us526.us.us, label %.split501.us.us.split.us.split.us527.us.us, label %415, !llvm.loop !51

.split501.us.us.split.us.split.us527.us.us:       ; preds = %431
  %435 = add i64 %.1274.us.us.us556.us, -1
  %436 = icmp eq i64 %435, 0
  br i1 %436, label %.split511.us, label %412

.split506.us.split.us.split.us558.us:             ; preds = %412
  %437 = load ptr, ptr %345, align 8, !tbaa !30
  %438 = getelementptr inbounds i8, ptr %437, i64 136
  %439 = load i64, ptr %438, align 8, !tbaa !44
  %440 = mul i64 %439, %332
  %441 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef nonnull %.0271.us.us, i64 noundef %440) #16
  br label %.split504.us.us.us, !llvm.loop !50

.split542.us.split:                               ; preds = %.split542.us
  br i1 %.not362, label %.split504.us.us.us585.preheader, label %.split504.us.us

.split504.us.us.us585.preheader:                  ; preds = %.split542.us.split
  %.not392.us.us.us.us.us.us.peel = icmp eq i64 %332, 1
  br label %.split504.us.us.us585

.split504.us.us.us585:                            ; preds = %.split504.us.us.us585.preheader, %.split506.us.split.us548.split.us.us
  %.6306.us.us586 = phi ptr [ null, %.split506.us.split.us548.split.us.us ], [ %.5305, %.split504.us.us.us585.preheader ]
  %.7295.us.us587 = phi ptr [ %.10298.us.us.us.us.us.us.lcssa634, %.split506.us.split.us548.split.us.us ], [ %.6294, %.split504.us.us.us585.preheader ]
  %.0273.us.us588 = phi i64 [ %492, %.split506.us.split.us548.split.us.us ], [ %339, %.split504.us.us.us585.preheader ]
  %.0271.us.us589 = phi ptr [ %498, %.split506.us.split.us548.split.us.us ], [ %359, %.split504.us.us.us585.preheader ]
  %.0266.us.us590 = phi i32 [ %361, %.split506.us.split.us548.split.us.us ], [ %365, %.split504.us.us.us585.preheader ]
  br label %.split493.us.us.us543.us.us

.split493.us.us.us543.us.us:                      ; preds = %465, %.split504.us.us.us585
  %.7307.us.us544.us.us = phi ptr [ %.6306.us.us586, %.split504.us.us.us585 ], [ null, %465 ]
  %.8296.us.us545.us.us = phi ptr [ %.7295.us.us587, %.split504.us.us.us585 ], [ %.10298.us.us.us.us.us.us.lcssa634, %465 ]
  %.1274.us.us546.us.us = phi i64 [ %.0273.us.us588, %.split504.us.us.us585 ], [ %492, %465 ]
  %.1267.us.us547.us.us = phi i32 [ %.0266.us.us590, %.split504.us.us.us585 ], [ %466, %465 ]
  %442 = zext nneg i32 %.1267.us.us547.us.us to i64
  %443 = load ptr, ptr %345, align 8, !tbaa !30
  %444 = getelementptr inbounds i8, ptr %443, i64 136
  %445 = load i64, ptr %444, align 8, !tbaa !44
  switch i64 %445, label %.split495.us [
    i64 8, label %450
    i64 4, label %446
  ]

446:                                              ; preds = %.split493.us.us.us543.us.us
  %447 = load i32, ptr %.0271.us.us589, align 4, !tbaa !5
  %448 = lshr i32 %447, %.1267.us.us547.us.us
  %449 = zext i32 %448 to i64
  br label %453

450:                                              ; preds = %.split493.us.us.us543.us.us
  %451 = load i64, ptr %.0271.us.us589, align 8, !tbaa !47
  %452 = lshr i64 %451, %442
  br label %453

453:                                              ; preds = %450, %446
  %.pn387.us.us.us.us.us.us.peel = phi i64 [ %452, %450 ], [ %449, %446 ]
  %.0264.us.us.us.us.us.us.peel = and i64 %.pn387.us.us.us.us.us.us.peel, %.0272
  %454 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %302) #16
  %455 = icmp ult i64 %.0264.us.us.us.us.us.us.peel, %454
  br i1 %455, label %456, label %.split497.us

456:                                              ; preds = %453
  %.not388.us.us.us.us.us.us.peel = icmp eq ptr %.8296.us.us545.us.us, null
  br i1 %.not388.us.us.us.us.us.us.peel, label %460, label %457

457:                                              ; preds = %456
  %458 = load double, ptr %.8296.us.us545.us.us, align 8, !tbaa !35
  %459 = getelementptr inbounds i8, ptr %.8296.us.us545.us.us, i64 8
  br label %460

460:                                              ; preds = %457, %456
  %.10298.us.us.us.us.us.us.peel = phi ptr [ %459, %457 ], [ null, %456 ]
  %.0262.us.us.us.us.us.us.peel = phi double [ %458, %457 ], [ 1.000000e+00, %456 ]
  %.not389.us.us.us.us.us.us.peel = icmp eq ptr %.7307.us.us544.us.us, null
  br i1 %.not389.us.us.us.us.us.us.peel, label %461, label %.split499.us

461:                                              ; preds = %460
  %462 = getelementptr inbounds double, ptr %307, i64 %.0264.us.us.us.us.us.us.peel
  %463 = load double, ptr %462, align 8, !tbaa !35
  %464 = fadd double %.0262.us.us.us.us.us.us.peel, %463
  store double %464, ptr %462, align 8, !tbaa !35
  br i1 %.not392.us.us.us.us.us.us.peel, label %.split501.us.us.split.us.split.us.us.us, label %.peel.next

465:                                              ; preds = %.split501.us.us.split.us.split.us.us.us
  %466 = sub nsw i32 %.1267.us.us547.us.us, %326
  %467 = icmp sgt i32 %466, -1
  br i1 %467, label %.split493.us.us.us543.us.us, label %.split506.us.split.us548.split.us.us, !llvm.loop !48

.peel.next:                                       ; preds = %461, %487
  %.9297.us.us.us.us.us.us = phi ptr [ %.10298.us.us.us.us.us.us, %487 ], [ %.10298.us.us.us.us.us.us.peel, %461 ]
  %.0265.us.us.us.us.us.us = phi i64 [ %491, %487 ], [ 1, %461 ]
  %468 = load ptr, ptr %345, align 8, !tbaa !30
  %469 = getelementptr inbounds i8, ptr %468, i64 136
  %470 = load i64, ptr %469, align 8, !tbaa !44
  switch i64 %470, label %.split495.us [
    i64 8, label %476
    i64 4, label %471
  ]

471:                                              ; preds = %.peel.next
  %472 = getelementptr inbounds i32, ptr %.0271.us.us589, i64 %.0265.us.us.us.us.us.us
  %473 = load i32, ptr %472, align 4, !tbaa !5
  %474 = lshr i32 %473, %.1267.us.us547.us.us
  %475 = zext i32 %474 to i64
  br label %480

476:                                              ; preds = %.peel.next
  %477 = getelementptr inbounds i64, ptr %.0271.us.us589, i64 %.0265.us.us.us.us.us.us
  %478 = load i64, ptr %477, align 8, !tbaa !47
  %479 = lshr i64 %478, %442
  br label %480

480:                                              ; preds = %476, %471
  %.pn387.us.us.us.us.us.us = phi i64 [ %479, %476 ], [ %475, %471 ]
  %.0264.us.us.us.us.us.us = and i64 %.pn387.us.us.us.us.us.us, %.0272
  %481 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %302) #16
  %482 = icmp ult i64 %.0264.us.us.us.us.us.us, %481
  br i1 %482, label %483, label %.split497.us

483:                                              ; preds = %480
  %.not388.us.us.us.us.us.us = icmp eq ptr %.9297.us.us.us.us.us.us, null
  br i1 %.not388.us.us.us.us.us.us, label %487, label %484

484:                                              ; preds = %483
  %485 = load double, ptr %.9297.us.us.us.us.us.us, align 8, !tbaa !35
  %486 = getelementptr inbounds i8, ptr %.9297.us.us.us.us.us.us, i64 8
  br label %487

487:                                              ; preds = %483, %484
  %.10298.us.us.us.us.us.us = phi ptr [ %486, %484 ], [ null, %483 ]
  %.0262.us.us.us.us.us.us = phi double [ %485, %484 ], [ 1.000000e+00, %483 ]
  %488 = getelementptr inbounds double, ptr %307, i64 %.0264.us.us.us.us.us.us
  %489 = load double, ptr %488, align 8, !tbaa !35
  %490 = fadd double %.0262.us.us.us.us.us.us, %489
  store double %490, ptr %488, align 8, !tbaa !35
  %491 = add i64 %.0265.us.us.us.us.us.us, 1
  %.not392.us.us.us.us.us.us = icmp eq i64 %332, %491
  br i1 %.not392.us.us.us.us.us.us, label %.split501.us.us.split.us.split.us.us.us, label %.peel.next, !llvm.loop !52

.split501.us.us.split.us.split.us.us.us:          ; preds = %487, %461
  %.10298.us.us.us.us.us.us.lcssa634 = phi ptr [ %.10298.us.us.us.us.us.us.peel, %461 ], [ %.10298.us.us.us.us.us.us, %487 ]
  %492 = add i64 %.1274.us.us546.us.us, -1
  %493 = icmp eq i64 %492, 0
  br i1 %493, label %.split511.us, label %465

.split506.us.split.us548.split.us.us:             ; preds = %465
  %494 = load ptr, ptr %345, align 8, !tbaa !30
  %495 = getelementptr inbounds i8, ptr %494, i64 136
  %496 = load i64, ptr %495, align 8, !tbaa !44
  %497 = mul i64 %496, %332
  %498 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef nonnull %.0271.us.us589, i64 noundef %497) #16
  br label %.split504.us.us.us585, !llvm.loop !50

.split504.us.us:                                  ; preds = %.split542.us.split, %.split506.us.split.us548.split
  %.6306.us = phi ptr [ %.9309.us.us.us, %.split506.us.split.us548.split ], [ %.5305, %.split542.us.split ]
  %.7295.us = phi ptr [ %.10298.us.us.us, %.split506.us.split.us548.split ], [ %.6294, %.split542.us.split ]
  %.0273.us = phi i64 [ %534, %.split506.us.split.us548.split ], [ %339, %.split542.us.split ]
  %.0271.us = phi ptr [ %540, %.split506.us.split.us548.split ], [ %359, %.split542.us.split ]
  %.0266.us = phi i32 [ %361, %.split506.us.split.us548.split ], [ %365, %.split542.us.split ]
  br label %.split493.us.us.us543

.split493.us.us.us543:                            ; preds = %.split504.us.us, %500
  %.7307.us.us544 = phi ptr [ %.6306.us, %.split504.us.us ], [ %.9309.us.us.us, %500 ]
  %.8296.us.us545 = phi ptr [ %.7295.us, %.split504.us.us ], [ %.10298.us.us.us, %500 ]
  %.1274.us.us546 = phi i64 [ %.0273.us, %.split504.us.us ], [ %534, %500 ]
  %.1267.us.us547 = phi i32 [ %.0266.us, %.split504.us.us ], [ %501, %500 ]
  %499 = zext nneg i32 %.1267.us.us547 to i64
  br label %503

500:                                              ; preds = %.split501.us.us.split.us.split
  %501 = sub nsw i32 %.1267.us.us547, %326
  %502 = icmp sgt i32 %501, -1
  br i1 %502, label %.split493.us.us.us543, label %.split506.us.split.us548.split, !llvm.loop !48

503:                                              ; preds = %529, %.split493.us.us.us543
  %.8308.us.us.us = phi ptr [ %.7307.us.us544, %.split493.us.us.us543 ], [ %.9309.us.us.us, %529 ]
  %.9297.us.us.us = phi ptr [ %.8296.us.us545, %.split493.us.us.us543 ], [ %.10298.us.us.us, %529 ]
  %.0265.us.us.us = phi i64 [ 0, %.split493.us.us.us543 ], [ %533, %529 ]
  %504 = load ptr, ptr %345, align 8, !tbaa !30
  %505 = getelementptr inbounds i8, ptr %504, i64 136
  %506 = load i64, ptr %505, align 8, !tbaa !44
  switch i64 %506, label %.split495.us [
    i64 8, label %512
    i64 4, label %507
  ]

507:                                              ; preds = %503
  %508 = getelementptr inbounds i32, ptr %.0271.us, i64 %.0265.us.us.us
  %509 = load i32, ptr %508, align 4, !tbaa !5
  %510 = lshr i32 %509, %.1267.us.us547
  %511 = zext i32 %510 to i64
  br label %516

512:                                              ; preds = %503
  %513 = getelementptr inbounds i64, ptr %.0271.us, i64 %.0265.us.us.us
  %514 = load i64, ptr %513, align 8, !tbaa !47
  %515 = lshr i64 %514, %499
  br label %516

516:                                              ; preds = %512, %507
  %.pn387.us.us.us = phi i64 [ %515, %512 ], [ %511, %507 ]
  %.0264.us.us.us = and i64 %.pn387.us.us.us, %.0272
  %517 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %302) #16
  %518 = icmp ult i64 %.0264.us.us.us, %517
  br i1 %518, label %519, label %.split497.us

519:                                              ; preds = %516
  %.not388.us.us.us = icmp eq ptr %.9297.us.us.us, null
  br i1 %.not388.us.us.us, label %523, label %520

520:                                              ; preds = %519
  %521 = load double, ptr %.9297.us.us.us, align 8, !tbaa !35
  %522 = getelementptr inbounds i8, ptr %.9297.us.us.us, i64 8
  br label %523

523:                                              ; preds = %520, %519
  %.10298.us.us.us = phi ptr [ %522, %520 ], [ null, %519 ]
  %.0262.us.us.us = phi double [ %521, %520 ], [ 1.000000e+00, %519 ]
  %.not389.us.us.us = icmp eq ptr %.8308.us.us.us, null
  br i1 %.not389.us.us.us, label %529, label %524

524:                                              ; preds = %523
  %525 = load i8, ptr %.8308.us.us.us, align 1, !tbaa !25
  %526 = getelementptr inbounds i8, ptr %.8308.us.us.us, i64 1
  %527 = uitofp i8 %525 to double
  %528 = fmul double %.0262.us.us.us, %527
  br label %529

529:                                              ; preds = %524, %523
  %.9309.us.us.us = phi ptr [ %526, %524 ], [ null, %523 ]
  %.1263.us.us.us = phi double [ %528, %524 ], [ %.0262.us.us.us, %523 ]
  %530 = getelementptr inbounds double, ptr %307, i64 %.0264.us.us.us
  %531 = load double, ptr %530, align 8, !tbaa !35
  %532 = fadd double %.1263.us.us.us, %531
  store double %532, ptr %530, align 8, !tbaa !35
  %533 = add i64 %.0265.us.us.us, 1
  %.not392.us.us.us = icmp eq i64 %332, %533
  br i1 %.not392.us.us.us, label %.split501.us.us.split.us.split, label %503, !llvm.loop !51

.split501.us.us.split.us.split:                   ; preds = %529
  %534 = add i64 %.1274.us.us546, -1
  %535 = icmp eq i64 %534, 0
  br i1 %535, label %.split511.us, label %500

.split506.us.split.us548.split:                   ; preds = %500
  %536 = load ptr, ptr %345, align 8, !tbaa !30
  %537 = getelementptr inbounds i8, ptr %536, i64 136
  %538 = load i64, ptr %537, align 8, !tbaa !44
  %539 = mul i64 %538, %332
  %540 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef nonnull %.0271.us, i64 noundef %539) #16
  br label %.split504.us.us, !llvm.loop !50

.split504:                                        ; preds = %355, %.split506
  %.6306 = phi ptr [ %.9309, %.split506 ], [ %.5305, %355 ]
  %.7295 = phi ptr [ %.10298, %.split506 ], [ %.6294, %355 ]
  %.0273 = phi i64 [ %580, %.split506 ], [ %339, %355 ]
  %.0271 = phi ptr [ %589, %.split506 ], [ %359, %355 ]
  %.0266 = phi i32 [ %361, %.split506 ], [ %365, %355 ]
  br label %.split493

.split493:                                        ; preds = %582, %.split504
  %.7307 = phi ptr [ %.6306, %.split504 ], [ %.9309, %582 ]
  %.8296 = phi ptr [ %.7295, %.split504 ], [ %.10298, %582 ]
  %.1274 = phi i64 [ %.0273, %.split504 ], [ %580, %582 ]
  %.1267 = phi i32 [ %.0266, %.split504 ], [ %583, %582 ]
  %541 = zext nneg i32 %.1267 to i64
  br label %542

542:                                              ; preds = %578, %.split493
  %.8308 = phi ptr [ %.7307, %.split493 ], [ %.9309, %578 ]
  %.9297 = phi ptr [ %.8296, %.split493 ], [ %.10298, %578 ]
  %.0265 = phi i64 [ 0, %.split493 ], [ %579, %578 ]
  %543 = load ptr, ptr %345, align 8, !tbaa !30
  %544 = getelementptr inbounds i8, ptr %543, i64 136
  %545 = load i64, ptr %544, align 8, !tbaa !44
  switch i64 %545, label %.split495.us [
    i64 8, label %546
    i64 4, label %550
  ]

546:                                              ; preds = %542
  %547 = getelementptr inbounds i64, ptr %.0271, i64 %.0265
  %548 = load i64, ptr %547, align 8, !tbaa !47
  %549 = lshr i64 %548, %541
  br label %555

.split495.us:                                     ; preds = %.split493.us.us.us543.us.us, %.split493.us.us.us.us.us.us.us, %542, %503, %.peel.next, %415, %.peel.next657
  call void @LogAssertFailure(i64 noundef 1022, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.39)
  call void @__assert_fail(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str, i32 noundef 1022, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

550:                                              ; preds = %542
  %551 = getelementptr inbounds i32, ptr %.0271, i64 %.0265
  %552 = load i32, ptr %551, align 4, !tbaa !5
  %553 = lshr i32 %552, %.1267
  %554 = zext i32 %553 to i64
  br label %555

555:                                              ; preds = %550, %546
  %.pn387 = phi i64 [ %549, %546 ], [ %554, %550 ]
  %.0264 = and i64 %.pn387, %.0272
  %556 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %302) #16
  %557 = icmp ult i64 %.0264, %556
  br i1 %557, label %558, label %.split497.us

.split497.us:                                     ; preds = %453, %377, %555, %516, %480, %428, %398
  call void @LogAssertFailure(i64 noundef 1027, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.103)
  call void @__assert_fail(ptr noundef nonnull @.str.104, ptr noundef nonnull @.str, i32 noundef 1027, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

558:                                              ; preds = %555
  %.not388 = icmp eq ptr %.9297, null
  br i1 %.not388, label %562, label %559

559:                                              ; preds = %558
  %560 = load double, ptr %.9297, align 8, !tbaa !35
  %561 = getelementptr inbounds i8, ptr %.9297, i64 8
  br label %562

562:                                              ; preds = %559, %558
  %.10298 = phi ptr [ %561, %559 ], [ null, %558 ]
  %.0262 = phi double [ %560, %559 ], [ 1.000000e+00, %558 ]
  %.not389 = icmp eq ptr %.8308, null
  br i1 %.not389, label %569, label %563

563:                                              ; preds = %562
  br i1 %.not362, label %.split499.us, label %564

.split499.us:                                     ; preds = %460, %380, %563
  call void @LogAssertFailure(i64 noundef 1037, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.125)
  call void @__assert_fail(ptr noundef nonnull @.str.126, ptr noundef nonnull @.str, i32 noundef 1037, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

564:                                              ; preds = %563
  %565 = load i8, ptr %.8308, align 1, !tbaa !25
  %566 = getelementptr inbounds i8, ptr %.8308, i64 1
  %567 = uitofp i8 %565 to double
  %568 = fmul double %.0262, %567
  br label %569

569:                                              ; preds = %564, %562
  %.9309 = phi ptr [ %566, %564 ], [ null, %562 ]
  %.1263 = phi double [ %568, %564 ], [ %.0262, %562 ]
  %.0261 = phi i8 [ %565, %564 ], [ 1, %562 ]
  %570 = zext i8 %.0261 to i64
  %571 = getelementptr inbounds i64, ptr %306, i64 %.0264
  %572 = load i64, ptr %571, align 8, !tbaa !47
  %573 = add i64 %572, %570
  store i64 %573, ptr %571, align 8, !tbaa !47
  br i1 %.not391, label %578, label %574

574:                                              ; preds = %569
  %575 = getelementptr inbounds double, ptr %307, i64 %.0264
  %576 = load double, ptr %575, align 8, !tbaa !35
  %577 = fadd double %.1263, %576
  store double %577, ptr %575, align 8, !tbaa !35
  br label %578

578:                                              ; preds = %574, %569
  %579 = add i64 %.0265, 1
  %.not392 = icmp eq i64 %332, %579
  br i1 %.not392, label %.split501, label %542, !llvm.loop !51

.split501:                                        ; preds = %578
  %580 = add i64 %.1274, -1
  %581 = icmp eq i64 %580, 0
  br i1 %581, label %.split511.us, label %582

582:                                              ; preds = %.split501
  %583 = sub nsw i32 %.1267, %326
  %584 = icmp sgt i32 %583, -1
  br i1 %584, label %.split493, label %.split506, !llvm.loop !48

.split506:                                        ; preds = %582
  %585 = load ptr, ptr %345, align 8, !tbaa !30
  %586 = getelementptr inbounds i8, ptr %585, i64 136
  %587 = load i64, ptr %586, align 8, !tbaa !44
  %588 = mul i64 %587, %332
  %589 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef nonnull %.0271, i64 noundef %588) #16
  br label %.split504, !llvm.loop !50

.split511.us:                                     ; preds = %.split501, %.split501.us.us.split.us.split, %.split501.us.us.split.us.split.us.us.us, %.split501.us.us.split.us.split.us527.us.us, %.split501.us.us.split.us.split.us.us.us.us.us.us
  %.us-phi512 = phi ptr [ null, %.split501.us.us.split.us.split.us.us.us.us.us.us ], [ %.9309.us.us.us.us.us.us, %.split501.us.us.split.us.split.us527.us.us ], [ null, %.split501.us.us.split.us.split.us.us.us ], [ %.9309.us.us.us, %.split501.us.us.split.us.split ], [ %.9309, %.split501 ]
  %.us-phi513 = phi ptr [ %spec.select.lcssa, %.split501.us.us.split.us.split.us.us.us.us.us.us ], [ %spec.select595, %.split501.us.us.split.us.split.us527.us.us ], [ %.10298.us.us.us.us.us.us.lcssa634, %.split501.us.us.split.us.split.us.us.us ], [ %.10298.us.us.us, %.split501.us.us.split.us.split ], [ %.10298, %.split501 ]
  %590 = getelementptr inbounds i8, ptr %.3313, i64 56
  %.not393 = icmp eq ptr %82, %590
  br i1 %.not393, label %.loopexit, label %310, !llvm.loop !53

.loopexit:                                        ; preds = %.split511.us, %.preheader
  %591 = add nuw i64 %.0299, 1
  %.not394 = icmp eq i64 %591, %4
  br i1 %.not394, label %.loopexit435, label %.preheader, !llvm.loop !54

.loopexit435:                                     ; preds = %.loopexit, %294
  %592 = getelementptr inbounds i8, ptr %.0269, i64 24
  %593 = add nuw i64 %.0280, 1
  %.not395 = icmp eq i64 %83, %593
  br i1 %.not395, label %594, label %86, !llvm.loop !55

594:                                              ; preds = %.loopexit435
  br i1 %.not433, label %599, label %595

595:                                              ; preds = %594
  br i1 %.not362, label %596, label %597

596:                                              ; preds = %595
  call void @LogAssertFailure(i64 noundef 1079, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE, ptr noundef nonnull @.str.125)
  call void @__assert_fail(ptr noundef nonnull @.str.126, ptr noundef nonnull @.str, i32 noundef 1079, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermE) #15
  unreachable

597:                                              ; preds = %595
  call void @free(ptr noundef nonnull %.0275) #16
  %.not396 = icmp eq ptr %2, null
  br i1 %.not396, label %599, label %598

598:                                              ; preds = %597
  call void @_ZN14NAMESPACE_MAIN19RandomDeterministic10InitializeERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %7)
  br label %599

599:                                              ; preds = %594, %598, %597
  %600 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %601 = icmp sgt i32 %600, 2
  br i1 %601, label %602, label %.thread

602:                                              ; preds = %599
  call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN15DataSetBoosting8InitBagsEbPvmmPKPKNS_4TermEE13LOG__sMessage__13_)
  br label %.thread

.thread:                                          ; preds = %193, %181, %293, %139, %131, %122, %101, %53, %56, %602, %599, %69, %72, %62, %65
  %.17 = phi i32 [ -1, %65 ], [ -1, %62 ], [ -1, %72 ], [ -1, %69 ], [ 0, %602 ], [ 0, %599 ], [ -2, %53 ], [ -1, %56 ], [ -1, %101 ], [ -1, %122 ], [ -1, %131 ], [ -1, %139 ], [ -4, %293 ], [ -1, %181 ], [ -1, %193 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #16
  br label %603

603:                                              ; preds = %.thread, %28, %25, %17, %20
  %.19 = phi i32 [ -1, %20 ], [ -1, %17 ], [ %.17, %.thread ], [ -1, %28 ], [ -1, %25 ]
  ret i32 %.19

604:                                              ; preds = %54, %51
  %605 = landingpad { ptr, i32 }
          catch ptr null
  %606 = extractvalue { ptr, i32 } %605, 0
  call void @__clang_call_terminate(ptr %606) #15
  unreachable
}

declare noundef ptr @_ZN14NAMESPACE_MAIN15DataSetInnerBag24AllocateDataSetInnerBagsEm(i64 noundef) local_unnamed_addr #1

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef i64 @_ZN14NAMESPACE_MAIN22RandomNondeterministicImE4NextEm(ptr noundef nonnull align 8 dereferenceable(5016), i64 noundef) local_unnamed_addr #10 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNSt14numeric_limitsImE3maxEv() local_unnamed_addr #8 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN14NAMESPACE_MAIN22RandomNondeterministicImED2Ev(ptr noundef nonnull align 8 dereferenceable(5016)) unnamed_addr #4 align 2

; Function Attrs: nofree nosync nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #11

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

declare void @__cxa_end_catch() local_unnamed_addr

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #12

declare void @_ZN14NAMESPACE_MAIN19RandomDeterministic10InitializeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN14NAMESPACE_MAIN19RandomDeterministic10InitializeERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #13 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteINS_12TermInnerBagEEEPT_S3_m(ptr noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i64 @_ZN14NAMESPACE_MAINL6EbmMaxImEET_S1_S1_(i64 noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef i64 @_ZN14NAMESPACE_MAIN19RandomDeterministic8NextFastImEENSt9enable_ifIXaasr3std11is_unsignedIT_EE5valueltclL_ZNSt14numeric_limitsIjE3maxEvEEclsr3std14numeric_limitsIS3_EE3maxEES3_E4typeES3_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #10 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_ZNSt14numeric_limitsIhE3maxEv() local_unnamed_addr #8 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNSt14numeric_limitsIfE3minEv() local_unnamed_addr #8 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNSt14numeric_limitsIfE3maxEv() local_unnamed_addr #8 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE3minEv() local_unnamed_addr #8 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZN14NAMESPACE_MAINL11MakeLowMaskIjEET_i(i32 noundef) local_unnamed_addr #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #14

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 = { 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 #3 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress 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 #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #7 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "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 = { 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 #9 = { 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 #10 = { alwaysinline 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 #11 = { nofree nosync nounwind memory(none) }
attributes #12 = { noinline noreturn nounwind uwtable "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 #13 = { alwaysinline 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 #14 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #15 = { noreturn nounwind }
attributes #16 = { nounwind }
attributes #17 = { nounwind allocsize(0) }

!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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTSN14NAMESPACE_MAIN15DataSetBoostingE", !11, i64 0, !11, i64 8, !12, i64 16, !12, i64 24, !12, i64 32}
!11 = !{!"long", !7, i64 0}
!12 = !{!"any pointer", !7, i64 0}
!13 = !{!10, !12, i64 24}
!14 = !{!10, !12, i64 16}
!15 = !{!10, !11, i64 8}
!16 = !{!17, !12, i64 16}
!17 = !{!"_ZTSN14NAMESPACE_MAIN15DataSetInnerBagE", !11, i64 0, !18, i64 8, !12, i64 16}
!18 = !{!"double", !7, i64 0}
!19 = !{!12, !12, i64 0}
!20 = !{!21, !12, i64 0}
!21 = !{!"_ZTSN14NAMESPACE_MAIN12TermInnerBagE", !12, i64 0, !12, i64 8}
!22 = !{!21, !12, i64 8}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!7, !7, i64 0}
!26 = distinct !{!26, !24}
!27 = !{!10, !12, i64 32}
!28 = !{!29, !12, i64 48}
!29 = !{!"_ZTSN14NAMESPACE_MAIN18DataSubsetBoostingE", !11, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48}
!30 = !{!29, !12, i64 8}
!31 = !{!32, !11, i64 128}
!32 = !{!"_ZTS16ObjectiveWrapper", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !6, i64 32, !6, i64 36, !6, i64 40, !18, i64 48, !18, i64 56, !18, i64 64, !18, i64 72, !18, i64 80, !18, i64 88, !18, i64 96, !18, i64 104, !6, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !6, i64 144, !12, i64 152}
!33 = !{!34, !12, i64 0}
!34 = !{!"_ZTSN14NAMESPACE_MAIN14SubsetInnerBagE", !12, i64 0}
!35 = !{!18, !18, i64 0}
!36 = !{!37, !37, i64 0}
!37 = !{!"float", !7, i64 0}
!38 = distinct !{!38, !24, !39}
!39 = !{!"llvm.loop.peeled.count", i32 1}
!40 = distinct !{!40, !24}
!41 = distinct !{!41, !24}
!42 = !{!17, !18, i64 8}
!43 = !{!17, !11, i64 0}
!44 = !{!32, !11, i64 136}
!45 = !{!32, !11, i64 120}
!46 = !{!29, !12, i64 40}
!47 = !{!11, !11, i64 0}
!48 = distinct !{!48, !24}
!49 = distinct !{!49, !24, !39}
!50 = distinct !{!50, !24}
!51 = distinct !{!51, !24}
!52 = distinct !{!52, !24, !39}
!53 = distinct !{!53, !24}
!54 = distinct !{!54, !24}
!55 = distinct !{!55, !24}


; Effective O3 passes: CorrelatedValuePropagationPass,DivRemPairsPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopFullUnrollPass,LoopIdiomRecognizePass,LoopInstSimplifyPass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass