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

; 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.BinSumsBoostingBridge = type { i32, i32, i64, i32, i64, i64, ptr, ptr, ptr, ptr, ptr }
%"struct.NAMESPACE_MAIN::TermFeature" = type { ptr, i64, i64 }
%"struct.NAMESPACE_MAIN::DataSubsetBoosting" = type { i64, ptr, ptr, ptr, ptr, ptr, 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 }
%"struct.NAMESPACE_MAIN::DataSetInnerBag" = type { i64, double, ptr }
%"struct.NAMESPACE_MAIN::TermInnerBag" = type { ptr, ptr }

@g_traceLevel = external global i32, align 4
@_ZN14NAMESPACE_MAINL24g_cLogGenerateTermUpdateE = external hidden global i32, align 4
@_ZZ18GenerateTermUpdateE13LOG__sMessage = external hidden constant [328 x i8], align 16
@.str = external hidden unnamed_addr constant [92 x i8], align 1
@__func__.GenerateTermUpdate = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [27 x i8], align 1
@__PRETTY_FUNCTION__.GenerateTermUpdate = external hidden unnamed_addr constant [224 x i8], align 1
@_ZZ18GenerateTermUpdateE13LOG__sMessage_0 = external hidden constant [58 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage_1 = external hidden constant [27 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage_2 = external hidden constant [74 x i8], align 16
@.str.3 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [39 x i8], align 1
@_ZZ18GenerateTermUpdateE13LOG__sMessage_3 = external hidden constant [27 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage_4 = external hidden constant [72 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage_5 = external hidden constant [70 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage_6 = external hidden constant [70 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage_7 = external hidden constant [47 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage_8 = external hidden constant [53 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage_9 = external hidden constant [48 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__10_ = external hidden constant [52 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__11_ = external hidden constant [81 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__12_ = external hidden constant [92 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__13_ = external hidden constant [87 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__14_ = external hidden constant [88 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__15_ = external hidden constant [81 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__16_ = external hidden constant [102 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__17_ = external hidden constant [90 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__18_ = external hidden constant [98 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__19_ = external hidden constant [98 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__20_ = external hidden constant [51 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__21_ = external hidden constant [55 x i8], align 16
@.str.5 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [25 x i8], align 1
@_ZZ18GenerateTermUpdateE13LOG__sMessage__22_ = external hidden constant [81 x i8], align 16
@.str.13 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [50 x i8], align 1
@_ZTISt9bad_alloc = external constant ptr
@_ZZ18GenerateTermUpdateE13LOG__sMessage__23_ = external hidden constant [63 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__24_ = external hidden constant [63 x i8], align 16
@.str.23 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [51 x i8], align 1
@_ZZ18GenerateTermUpdateE13LOG__sMessage__25_ = external hidden constant [53 x i8], align 16
@.str.47 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZZ18GenerateTermUpdateE13LOG__sMessage__26_ = external hidden constant [42 x i8], align 16
@.str.71 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [58 x i8], align 1
@_ZZ18GenerateTermUpdateE13LOG__sMessage__27_ = external hidden constant [39 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__28_ = external hidden constant [39 x i8], align 16

; Function Attrs: mustprogress uwtable
define dso_local i32 @GenerateTermUpdate(ptr noundef %0, ptr noundef %1, i64 noundef %2, i32 noundef %3, double noundef %4, i64 noundef %5, double noundef %6, double noundef %7, double noundef %8, double noundef %9, i64 noundef %10, double noundef %11, i64 noundef %12, double noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16) #0 personality ptr @__gxx_personality_v0 {
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i64, align 8
  %22 = alloca i32, align 4
  %23 = alloca double, align 8
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca i64, align 8
  %30 = alloca double, align 8
  %31 = alloca i64, align 8
  %32 = alloca double, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca ptr, align 8
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca i64, align 8
  %47 = alloca ptr, align 8
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca ptr, align 8
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i64, align 8
  %65 = alloca i32, align 4
  %66 = alloca double, align 8
  %67 = alloca i32, align 4
  %68 = alloca double, align 8
  %69 = alloca i32, align 4
  %70 = alloca double, align 8
  %71 = alloca i32, align 4
  %72 = alloca double, align 8
  %73 = alloca i64, align 8
  %74 = alloca i32, align 4
  %75 = alloca double, align 8
  %76 = alloca i32, align 4
  %77 = alloca i64, align 8
  %78 = alloca i32, align 4
  %79 = alloca double, align 8
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i64, align 8
  %83 = alloca i32, align 4
  %84 = alloca i64, align 8
  %85 = alloca i64, align 8
  %86 = alloca i64, align 8
  %87 = alloca i64, align 8
  %88 = alloca i8, align 1
  %89 = alloca i8, align 1
  %90 = alloca i8, align 1
  %91 = alloca i32, align 4
  %92 = alloca i64, align 8
  %93 = alloca i64, align 8
  %94 = alloca i64, align 8
  %95 = alloca i32, align 4
  %96 = alloca i64, align 8
  %97 = alloca ptr, align 8
  %98 = alloca ptr, align 8
  %99 = alloca ptr, align 8
  %100 = alloca ptr, align 8
  %101 = alloca i64, align 8
  %102 = alloca i32, align 4
  %103 = alloca i64, align 8
  %104 = alloca i32, align 4
  %105 = alloca double, align 8
  %106 = alloca double, align 8
  %107 = alloca double, align 8
  %108 = alloca double, align 8
  %109 = alloca double, align 8
  %110 = alloca ptr, align 8
  %111 = alloca %"class.NAMESPACE_MAIN::RandomDeterministic", align 8
  %112 = alloca i64, align 8
  %113 = alloca %"class.NAMESPACE_MAIN::RandomNondeterministic", align 8
  %114 = alloca ptr, align 8
  %115 = alloca i32, align 4
  %116 = alloca i32, align 4
  %117 = alloca ptr, align 8
  %118 = alloca i32, align 4
  %119 = alloca ptr, align 8
  %120 = alloca i64, align 8
  %121 = alloca i64, align 8
  %122 = alloca ptr, align 8
  %123 = alloca i64, align 8
  %124 = alloca i64, align 8
  %125 = alloca ptr, align 8
  %126 = alloca ptr, align 8
  %127 = alloca i32, align 4
  %128 = alloca i64, align 8
  %129 = alloca i64, align 8
  %130 = alloca i8, align 1
  %131 = alloca i64, align 8
  %132 = alloca i8, align 1
  %133 = alloca i64, align 8
  %134 = alloca i64, align 8
  %135 = alloca %struct.BinSumsBoostingBridge, align 8
  %136 = alloca i8, align 1
  %137 = alloca i8, align 1
  %138 = alloca ptr, align 8
  %139 = alloca i64, align 8
  %140 = alloca ptr, align 8
  %141 = alloca ptr, align 8
  %142 = alloca i32, align 4
  %143 = alloca double, align 8
  %144 = alloca double, align 8
  %145 = alloca i32, align 4
  %146 = alloca i8, align 1
  %147 = alloca i32, align 4
  %148 = alloca i32, align 4
  %149 = alloca i32, align 4
  %150 = alloca i32, align 4
  %151 = alloca i32, align 4
  %152 = alloca ptr, align 8
  %153 = alloca i32, align 4
  store ptr %0, ptr %19, align 8, !tbaa !5
  store ptr %1, ptr %20, align 8, !tbaa !5
  store i64 %2, ptr %21, align 8, !tbaa !9
  store i32 %3, ptr %22, align 4, !tbaa !11
  store double %4, ptr %23, align 8, !tbaa !13
  store i64 %5, ptr %24, align 8, !tbaa !9
  store double %6, ptr %25, align 8, !tbaa !13
  store double %7, ptr %26, align 8, !tbaa !13
  store double %8, ptr %27, align 8, !tbaa !13
  store double %9, ptr %28, align 8, !tbaa !13
  store i64 %10, ptr %29, align 8, !tbaa !9
  store double %11, ptr %30, align 8, !tbaa !13
  store i64 %12, ptr %31, align 8, !tbaa !9
  store double %13, ptr %32, align 8, !tbaa !13
  store ptr %14, ptr %33, align 8, !tbaa !5
  store ptr %15, ptr %34, align 8, !tbaa !5
  store ptr %16, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #13
  br label %154

154:                                              ; preds = %17
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #13
  store i32 3, ptr %37, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #13
  store i32 4, ptr %38, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #13
  %155 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  store i32 %155, ptr %39, align 4, !tbaa !11
  %156 = load i32, ptr %39, align 4, !tbaa !11
  %157 = icmp sle i32 3, %156
  br i1 %157, label %158, label %198

158:                                              ; preds = %154
  br label %159

159:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #13
  %160 = load i32, ptr %39, align 4, !tbaa !11
  %161 = icmp slt i32 %160, 4
  br i1 %161, label %162, label %173

162:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #13
  store ptr @_ZN14NAMESPACE_MAINL24g_cLogGenerateTermUpdateE, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #13
  %163 = load i32, ptr @_ZN14NAMESPACE_MAINL24g_cLogGenerateTermUpdateE, align 4, !tbaa !11
  %164 = sub nsw i32 %163, 1
  store i32 %164, ptr %42, align 4, !tbaa !11
  %165 = load i32, ptr %42, align 4, !tbaa !11
  %166 = icmp slt i32 %165, 0
  br i1 %166, label %167, label %168

167:                                              ; preds = %162
  store i32 4, ptr %43, align 4
  br label %170

168:                                              ; preds = %162
  %169 = load i32, ptr %42, align 4, !tbaa !11
  store i32 %169, ptr @_ZN14NAMESPACE_MAINL24g_cLogGenerateTermUpdateE, align 4, !tbaa !11
  store i32 3, ptr %40, align 4, !tbaa !11
  store i32 0, ptr %43, align 4
  br label %170

170:                                              ; preds = %168, %167
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #13
  %171 = load i32, ptr %43, align 4
  switch i32 %171, label %193 [
    i32 0, label %172
  ]

172:                                              ; preds = %170
  br label %174

173:                                              ; preds = %159
  store i32 4, ptr %40, align 4, !tbaa !11
  br label %174

174:                                              ; preds = %173, %172
  %175 = load i32, ptr %40, align 4, !tbaa !11
  %176 = load ptr, ptr %19, align 8, !tbaa !5
  %177 = load ptr, ptr %20, align 8, !tbaa !5
  %178 = load i64, ptr %21, align 8, !tbaa !9
  %179 = load i32, ptr %22, align 4, !tbaa !11
  %180 = load double, ptr %23, align 8, !tbaa !13
  %181 = load i64, ptr %24, align 8, !tbaa !9
  %182 = load double, ptr %25, align 8, !tbaa !13
  %183 = load double, ptr %26, align 8, !tbaa !13
  %184 = load double, ptr %27, align 8, !tbaa !13
  %185 = load double, ptr %28, align 8, !tbaa !13
  %186 = load i64, ptr %29, align 8, !tbaa !9
  %187 = load double, ptr %30, align 8, !tbaa !13
  %188 = load i64, ptr %31, align 8, !tbaa !9
  %189 = load double, ptr %32, align 8, !tbaa !13
  %190 = load ptr, ptr %33, align 8, !tbaa !5
  %191 = load ptr, ptr %34, align 8, !tbaa !5
  %192 = load ptr, ptr %35, align 8, !tbaa !5
  call void (i32, ptr, ...) @InteralLogWithArguments(i32 noundef %175, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage, ptr noundef %176, ptr noundef %177, i64 noundef %178, i32 noundef %179, double noundef %180, i64 noundef %181, double noundef %182, double noundef %183, double noundef %184, double noundef %185, i64 noundef %186, double noundef %187, i64 noundef %188, double noundef %189, ptr noundef %190, ptr noundef %191, ptr noundef %192)
  store i32 0, ptr %43, align 4
  br label %193

193:                                              ; preds = %174, %170
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #13
  %194 = load i32, ptr %43, align 4
  switch i32 %194, label %1674 [
    i32 0, label %195
    i32 4, label %197
  ]

195:                                              ; preds = %193
  br label %196

196:                                              ; preds = %195
  br label %197

197:                                              ; preds = %196, %193
  br label %198

198:                                              ; preds = %197, %154
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #13
  br label %199

199:                                              ; preds = %198
  br label %200

200:                                              ; preds = %199
  %201 = load ptr, ptr %35, align 8, !tbaa !5
  %202 = icmp ne ptr null, %201
  %203 = xor i1 %202, true
  %204 = xor i1 %203, true
  %205 = zext i1 %204 to i64
  %206 = call i64 @llvm.expect.i64(i64 %205, i64 1)
  %207 = icmp ne i64 %206, 0
  br i1 %207, label %208, label %210

208:                                              ; preds = %200
  %209 = load ptr, ptr %35, align 8, !tbaa !5
  store double 0xFFEFFFFFFFFFFFFF, ptr %209, align 8, !tbaa !13
  br label %210

210:                                              ; preds = %208, %200
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #13
  %211 = load ptr, ptr %20, align 8, !tbaa !5
  %212 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell25GetBoosterShellFromHandleEP14_BoosterHandle(ptr noundef %211)
  store ptr %212, ptr %44, align 8, !tbaa !5
  %213 = load ptr, ptr %44, align 8, !tbaa !5
  %214 = icmp eq ptr null, %213
  br i1 %214, label %215, label %216

215:                                              ; preds = %210
  store i32 -3, ptr %18, align 4
  store i32 1, ptr %43, align 4
  br label %1664

216:                                              ; preds = %210
  %217 = load ptr, ptr %44, align 8, !tbaa !5
  call void @_ZN14NAMESPACE_MAIN12BoosterShell12SetTermIndexEm(ptr noundef nonnull align 8 dereferenceable(112) %217, i64 noundef -1)
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #13
  %218 = load ptr, ptr %44, align 8, !tbaa !5
  %219 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell14GetBoosterCoreEv(ptr noundef nonnull align 8 dereferenceable(112) %218)
  store ptr %219, ptr %45, align 8, !tbaa !5
  %220 = load ptr, ptr %45, align 8, !tbaa !5
  %221 = icmp ne ptr null, %220
  br i1 %221, label %224, label %222

222:                                              ; preds = %216
  call void @LogAssertFailure(i64 noundef 786, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.1)
  call void @__assert_fail(ptr noundef @.str.2, ptr noundef @.str, i32 noundef 786, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

223:                                              ; No predecessors!
  br label %224

224:                                              ; preds = %223, %216
  %225 = phi i1 [ true, %216 ], [ false, %223 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #13
  %226 = load i64, ptr %21, align 8, !tbaa !9
  %227 = icmp slt i64 %226, 0
  br i1 %227, label %228, label %247

228:                                              ; preds = %224
  %229 = load i64, ptr %21, align 8, !tbaa !9
  %230 = icmp ne i64 %229, -1
  br i1 %230, label %231, label %239

231:                                              ; preds = %228
  br label %232

232:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #13
  store i32 1, ptr %48, align 4, !tbaa !11
  %233 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %234 = icmp sle i32 1, %233
  br i1 %234, label %235, label %236

235:                                              ; preds = %232
  call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage_0)
  br label %236

236:                                              ; preds = %235, %232
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #13
  br label %237

237:                                              ; preds = %236
  br label %238

238:                                              ; preds = %237
  store i32 -3, ptr %18, align 4
  store i32 1, ptr %43, align 4
  br label %1663

239:                                              ; preds = %228
  store i64 -2, ptr %46, align 8, !tbaa !9
  store ptr null, ptr %47, align 8, !tbaa !5
  br label %240

240:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #13
  store i32 3, ptr %49, align 4, !tbaa !11
  %241 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %242 = icmp sle i32 3, %241
  br i1 %242, label %243, label %244

243:                                              ; preds = %240
  call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage_1)
  br label %244

244:                                              ; preds = %243, %240
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #13
  br label %245

245:                                              ; preds = %244
  br label %246

246:                                              ; preds = %245
  br label %308

247:                                              ; preds = %224
  %248 = load ptr, ptr %45, align 8, !tbaa !5
  %249 = call noundef i64 @_ZNK14NAMESPACE_MAIN11BoosterCore13GetCountTermsEv(ptr noundef nonnull align 8 dereferenceable(520) %248)
  %250 = load i64, ptr %21, align 8, !tbaa !9
  %251 = icmp sle i64 %249, %250
  br i1 %251, label %252, label %260

252:                                              ; preds = %247
  br label %253

253:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #13
  store i32 1, ptr %50, align 4, !tbaa !11
  %254 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %255 = icmp sle i32 1, %254
  br i1 %255, label %256, label %257

256:                                              ; preds = %253
  call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage_2)
  br label %257

257:                                              ; preds = %256, %253
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #13
  br label %258

258:                                              ; preds = %257
  br label %259

259:                                              ; preds = %258
  store i32 -3, ptr %18, align 4
  store i32 1, ptr %43, align 4
  br label %1663

260:                                              ; preds = %247
  %261 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %261, ptr %46, align 8, !tbaa !9
  %262 = load ptr, ptr %45, align 8, !tbaa !5
  %263 = call noundef ptr @_ZNK14NAMESPACE_MAIN11BoosterCore8GetTermsEv(ptr noundef nonnull align 8 dereferenceable(520) %262)
  %264 = icmp ne ptr null, %263
  br i1 %264, label %267, label %265

265:                                              ; preds = %260
  call void @LogAssertFailure(i64 noundef 808, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.3)
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str, i32 noundef 808, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

266:                                              ; No predecessors!
  br label %267

267:                                              ; preds = %266, %260
  %268 = phi i1 [ true, %260 ], [ false, %266 ]
  %269 = load ptr, ptr %45, align 8, !tbaa !5
  %270 = call noundef ptr @_ZNK14NAMESPACE_MAIN11BoosterCore8GetTermsEv(ptr noundef nonnull align 8 dereferenceable(520) %269)
  %271 = load i64, ptr %46, align 8, !tbaa !9
  %272 = getelementptr inbounds ptr, ptr %270, i64 %271
  %273 = load ptr, ptr %272, align 8, !tbaa !5
  store ptr %273, ptr %47, align 8, !tbaa !5
  br label %274

274:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #13
  store i32 3, ptr %51, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #13
  store i32 4, ptr %52, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #13
  %275 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  store i32 %275, ptr %53, align 4, !tbaa !11
  %276 = load i32, ptr %53, align 4, !tbaa !11
  %277 = icmp sle i32 3, %276
  br i1 %277, label %278, label %305

278:                                              ; preds = %274
  br label %279

279:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #13
  %280 = load i32, ptr %53, align 4, !tbaa !11
  %281 = icmp slt i32 %280, 4
  br i1 %281, label %282, label %297

282:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #13
  %283 = load ptr, ptr %47, align 8, !tbaa !5
  %284 = call noundef ptr @_ZN14NAMESPACE_MAIN4Term49GetPointerCountLogEnterGenerateTermUpdateMessagesEv(ptr noundef nonnull align 8 dereferenceable(776) %283) #13
  store ptr %284, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #13
  %285 = load ptr, ptr %55, align 8, !tbaa !5
  %286 = load i32, ptr %285, align 4, !tbaa !11
  %287 = sub nsw i32 %286, 1
  store i32 %287, ptr %56, align 4, !tbaa !11
  %288 = load i32, ptr %56, align 4, !tbaa !11
  %289 = icmp slt i32 %288, 0
  br i1 %289, label %290, label %291

290:                                              ; preds = %282
  store i32 14, ptr %43, align 4
  br label %294

291:                                              ; preds = %282
  %292 = load i32, ptr %56, align 4, !tbaa !11
  %293 = load ptr, ptr %55, align 8, !tbaa !5
  store i32 %292, ptr %293, align 4, !tbaa !11
  store i32 3, ptr %54, align 4, !tbaa !11
  store i32 0, ptr %43, align 4
  br label %294

294:                                              ; preds = %291, %290
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #13
  %295 = load i32, ptr %43, align 4
  switch i32 %295, label %300 [
    i32 0, label %296
  ]

296:                                              ; preds = %294
  br label %298

297:                                              ; preds = %279
  store i32 4, ptr %54, align 4, !tbaa !11
  br label %298

298:                                              ; preds = %297, %296
  %299 = load i32, ptr %54, align 4, !tbaa !11
  call void @InteralLogWithoutArguments(i32 noundef %299, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage_3)
  store i32 0, ptr %43, align 4
  br label %300

300:                                              ; preds = %298, %294
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #13
  %301 = load i32, ptr %43, align 4
  switch i32 %301, label %1674 [
    i32 0, label %302
    i32 14, label %304
  ]

302:                                              ; preds = %300
  br label %303

303:                                              ; preds = %302
  br label %304

304:                                              ; preds = %303, %300
  br label %305

305:                                              ; preds = %304, %274
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #13
  br label %306

306:                                              ; preds = %305
  br label %307

307:                                              ; preds = %306
  br label %308

308:                                              ; preds = %307, %246
  %309 = load i32, ptr %22, align 4, !tbaa !11
  %310 = and i32 %309, -2048
  %311 = icmp ne i32 %310, 0
  br i1 %311, label %312, label %320

312:                                              ; preds = %308
  br label %313

313:                                              ; preds = %312
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #13
  store i32 1, ptr %57, align 4, !tbaa !11
  %314 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %315 = icmp sle i32 1, %314
  br i1 %315, label %316, label %317

316:                                              ; preds = %313
  call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage_4)
  br label %317

317:                                              ; preds = %316, %313
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #13
  br label %318

318:                                              ; preds = %317
  br label %319

319:                                              ; preds = %318
  br label %320

320:                                              ; preds = %319, %308
  %321 = load i32, ptr %22, align 4, !tbaa !11
  %322 = and i32 128, %321
  %323 = icmp ne i32 %322, 0
  br i1 %323, label %324, label %337

324:                                              ; preds = %320
  %325 = load i32, ptr %22, align 4, !tbaa !11
  %326 = and i32 768, %325
  %327 = icmp ne i32 %326, 0
  br i1 %327, label %328, label %336

328:                                              ; preds = %324
  br label %329

329:                                              ; preds = %328
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #13
  store i32 1, ptr %58, align 4, !tbaa !11
  %330 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %331 = icmp sle i32 1, %330
  br i1 %331, label %332, label %333

332:                                              ; preds = %329
  call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage_5)
  br label %333

333:                                              ; preds = %332, %329
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #13
  br label %334

334:                                              ; preds = %333
  br label %335

335:                                              ; preds = %334
  store i32 -3, ptr %18, align 4
  store i32 1, ptr %43, align 4
  br label %1663

336:                                              ; preds = %324
  br label %355

337:                                              ; preds = %320
  %338 = load i32, ptr %22, align 4, !tbaa !11
  %339 = and i32 256, %338
  %340 = icmp ne i32 %339, 0
  br i1 %340, label %341, label %354

341:                                              ; preds = %337
  %342 = load i32, ptr %22, align 4, !tbaa !11
  %343 = and i32 512, %342
  %344 = icmp ne i32 %343, 0
  br i1 %344, label %345, label %353

345:                                              ; preds = %341
  br label %346

346:                                              ; preds = %345
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #13
  store i32 1, ptr %59, align 4, !tbaa !11
  %347 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %348 = icmp sle i32 1, %347
  br i1 %348, label %349, label %350

349:                                              ; preds = %346
  call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage_6)
  br label %350

350:                                              ; preds = %349, %346
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #13
  br label %351

351:                                              ; preds = %350
  br label %352

352:                                              ; preds = %351
  store i32 -3, ptr %18, align 4
  store i32 1, ptr %43, align 4
  br label %1663

353:                                              ; preds = %341
  br label %354

354:                                              ; preds = %353, %337
  br label %355

355:                                              ; preds = %354, %336
  %356 = load double, ptr %23, align 8, !tbaa !13
  %357 = call noundef zeroext i1 @_ZSt5isnand(double noundef %356)
  br i1 %357, label %358, label %366

358:                                              ; preds = %355
  br label %359

359:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #13
  store i32 2, ptr %60, align 4, !tbaa !11
  %360 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %361 = icmp sle i32 2, %360
  br i1 %361, label %362, label %363

362:                                              ; preds = %359
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage_7)
  br label %363

363:                                              ; preds = %362, %359
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #13
  br label %364

364:                                              ; preds = %363
  br label %365

365:                                              ; preds = %364
  br label %403

366:                                              ; preds = %355
  %367 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #13
  %368 = load double, ptr %23, align 8, !tbaa !13
  %369 = fcmp oeq double %367, %368
  br i1 %369, label %370, label %378

370:                                              ; preds = %366
  br label %371

371:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #13
  store i32 2, ptr %61, align 4, !tbaa !11
  %372 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %373 = icmp sle i32 2, %372
  br i1 %373, label %374, label %375

374:                                              ; preds = %371
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage_8)
  br label %375

375:                                              ; preds = %374, %371
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #13
  br label %376

376:                                              ; preds = %375
  br label %377

377:                                              ; preds = %376
  br label %402

378:                                              ; preds = %366
  %379 = load double, ptr %23, align 8, !tbaa !13
  %380 = fcmp oeq double 0.000000e+00, %379
  br i1 %380, label %381, label %389

381:                                              ; preds = %378
  br label %382

382:                                              ; preds = %381
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #13
  store i32 2, ptr %62, align 4, !tbaa !11
  %383 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %384 = icmp sle i32 2, %383
  br i1 %384, label %385, label %386

385:                                              ; preds = %382
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage_9)
  br label %386

386:                                              ; preds = %385, %382
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #13
  br label %387

387:                                              ; preds = %386
  br label %388

388:                                              ; preds = %387
  br label %401

389:                                              ; preds = %378
  %390 = load double, ptr %23, align 8, !tbaa !13
  %391 = fcmp olt double %390, 0.000000e+00
  br i1 %391, label %392, label %400

392:                                              ; preds = %389
  br label %393

393:                                              ; preds = %392
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #13
  store i32 2, ptr %63, align 4, !tbaa !11
  %394 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %395 = icmp sle i32 2, %394
  br i1 %395, label %396, label %397

396:                                              ; preds = %393
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__10_)
  br label %397

397:                                              ; preds = %396, %393
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #13
  br label %398

398:                                              ; preds = %397
  br label %399

399:                                              ; preds = %398
  br label %400

400:                                              ; preds = %399, %389
  br label %401

401:                                              ; preds = %400, %388
  br label %402

402:                                              ; preds = %401, %377
  br label %403

403:                                              ; preds = %402, %365
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #13
  store i64 1, ptr %64, align 8, !tbaa !9
  %404 = load i64, ptr %24, align 8, !tbaa !9
  %405 = icmp sle i64 1, %404
  br i1 %405, label %406, label %413

406:                                              ; preds = %403
  %407 = load i64, ptr %24, align 8, !tbaa !9
  store i64 %407, ptr %64, align 8, !tbaa !9
  %408 = load i64, ptr %24, align 8, !tbaa !9
  %409 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %408) #13
  br i1 %409, label %410, label %412

410:                                              ; preds = %406
  %411 = call noundef i64 @_ZNSt14numeric_limitsImE3maxEv() #13
  store i64 %411, ptr %64, align 8, !tbaa !9
  br label %412

412:                                              ; preds = %410, %406
  br label %421

413:                                              ; preds = %403
  br label %414

414:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #13
  store i32 2, ptr %65, align 4, !tbaa !11
  %415 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %416 = icmp sle i32 2, %415
  br i1 %416, label %417, label %418

417:                                              ; preds = %414
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__11_)
  br label %418

418:                                              ; preds = %417, %414
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #13
  br label %419

419:                                              ; preds = %418
  br label %420

420:                                              ; preds = %419
  br label %421

421:                                              ; preds = %420, %412
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #13
  %422 = load double, ptr %25, align 8, !tbaa !13
  store double %422, ptr %66, align 8, !tbaa !13
  %423 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #13
  %424 = load double, ptr %66, align 8, !tbaa !13
  %425 = fcmp ole double %423, %424
  br i1 %425, label %439, label %426

426:                                              ; preds = %421
  %427 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #13
  store double %427, ptr %66, align 8, !tbaa !13
  %428 = load double, ptr %25, align 8, !tbaa !13
  %429 = fcmp ole double 0.000000e+00, %428
  br i1 %429, label %438, label %430

430:                                              ; preds = %426
  br label %431

431:                                              ; preds = %430
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #13
  store i32 2, ptr %67, align 4, !tbaa !11
  %432 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %433 = icmp sle i32 2, %432
  br i1 %433, label %434, label %435

434:                                              ; preds = %431
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__12_)
  br label %435

435:                                              ; preds = %434, %431
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #13
  br label %436

436:                                              ; preds = %435
  br label %437

437:                                              ; preds = %436
  br label %438

438:                                              ; preds = %437, %426
  br label %439

439:                                              ; preds = %438, %421
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #13
  %440 = load double, ptr %26, align 8, !tbaa !13
  store double %440, ptr %68, align 8, !tbaa !13
  %441 = load double, ptr %68, align 8, !tbaa !13
  %442 = fcmp ole double 0.000000e+00, %441
  br i1 %442, label %451, label %443

443:                                              ; preds = %439
  store double 0.000000e+00, ptr %68, align 8, !tbaa !13
  br label %444

444:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #13
  store i32 2, ptr %69, align 4, !tbaa !11
  %445 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %446 = icmp sle i32 2, %445
  br i1 %446, label %447, label %448

447:                                              ; preds = %444
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__13_)
  br label %448

448:                                              ; preds = %447, %444
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #13
  br label %449

449:                                              ; preds = %448
  br label %450

450:                                              ; preds = %449
  br label %451

451:                                              ; preds = %450, %439
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #13
  %452 = load double, ptr %27, align 8, !tbaa !13
  store double %452, ptr %70, align 8, !tbaa !13
  %453 = load double, ptr %70, align 8, !tbaa !13
  %454 = fcmp ole double 0.000000e+00, %453
  br i1 %454, label %463, label %455

455:                                              ; preds = %451
  store double 0.000000e+00, ptr %70, align 8, !tbaa !13
  br label %456

456:                                              ; preds = %455
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #13
  store i32 2, ptr %71, align 4, !tbaa !11
  %457 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %458 = icmp sle i32 2, %457
  br i1 %458, label %459, label %460

459:                                              ; preds = %456
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__14_)
  br label %460

460:                                              ; preds = %459, %456
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #13
  br label %461

461:                                              ; preds = %460
  br label %462

462:                                              ; preds = %461
  br label %463

463:                                              ; preds = %462, %451
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #13
  %464 = load double, ptr %28, align 8, !tbaa !13
  store double %464, ptr %72, align 8, !tbaa !13
  %465 = load double, ptr %28, align 8, !tbaa !13
  %466 = fcmp olt double 0.000000e+00, %465
  br i1 %466, label %469, label %467

467:                                              ; preds = %463
  %468 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #13
  store double %468, ptr %72, align 8, !tbaa !13
  br label %469

469:                                              ; preds = %467, %463
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #13
  store i64 1, ptr %73, align 8, !tbaa !9
  %470 = load i64, ptr %29, align 8, !tbaa !9
  %471 = icmp sle i64 1, %470
  br i1 %471, label %472, label %479

472:                                              ; preds = %469
  %473 = load i64, ptr %29, align 8, !tbaa !9
  store i64 %473, ptr %73, align 8, !tbaa !9
  %474 = load i64, ptr %29, align 8, !tbaa !9
  %475 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %474) #13
  br i1 %475, label %476, label %478

476:                                              ; preds = %472
  %477 = call noundef i64 @_ZNSt14numeric_limitsImE3maxEv() #13
  store i64 %477, ptr %73, align 8, !tbaa !9
  br label %478

478:                                              ; preds = %476, %472
  br label %487

479:                                              ; preds = %469
  br label %480

480:                                              ; preds = %479
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #13
  store i32 2, ptr %74, align 4, !tbaa !11
  %481 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %482 = icmp sle i32 2, %481
  br i1 %482, label %483, label %484

483:                                              ; preds = %480
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__15_)
  br label %484

484:                                              ; preds = %483, %480
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #13
  br label %485

485:                                              ; preds = %484
  br label %486

486:                                              ; preds = %485
  br label %487

487:                                              ; preds = %486, %478
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #13
  %488 = load double, ptr %30, align 8, !tbaa !13
  store double %488, ptr %75, align 8, !tbaa !13
  %489 = load double, ptr %75, align 8, !tbaa !13
  %490 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #13
  %491 = fcmp olt double %489, %490
  br i1 %491, label %492, label %505

492:                                              ; preds = %487
  %493 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #13
  store double %493, ptr %75, align 8, !tbaa !13
  %494 = load double, ptr %30, align 8, !tbaa !13
  %495 = fcmp olt double %494, 0.000000e+00
  br i1 %495, label %496, label %504

496:                                              ; preds = %492
  br label %497

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

500:                                              ; preds = %497
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__16_)
  br label %501

501:                                              ; preds = %500, %497
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #13
  br label %502

502:                                              ; preds = %501
  br label %503

503:                                              ; preds = %502
  br label %504

504:                                              ; preds = %503, %492
  br label %505

505:                                              ; preds = %504, %487
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #13
  store i64 2, ptr %77, align 8, !tbaa !9
  %506 = load i64, ptr %31, align 8, !tbaa !9
  %507 = icmp sle i64 2, %506
  br i1 %507, label %508, label %515

508:                                              ; preds = %505
  %509 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %509, ptr %77, align 8, !tbaa !9
  %510 = load i64, ptr %31, align 8, !tbaa !9
  %511 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %510) #13
  br i1 %511, label %512, label %514

512:                                              ; preds = %508
  %513 = call noundef i64 @_ZNSt14numeric_limitsImE3maxEv() #13
  store i64 %513, ptr %77, align 8, !tbaa !9
  br label %514

514:                                              ; preds = %512, %508
  br label %523

515:                                              ; preds = %505
  br label %516

516:                                              ; preds = %515
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #13
  store i32 2, ptr %78, align 4, !tbaa !11
  %517 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %518 = icmp sle i32 2, %517
  br i1 %518, label %519, label %520

519:                                              ; preds = %516
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__17_)
  br label %520

520:                                              ; preds = %519, %516
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #13
  br label %521

521:                                              ; preds = %520
  br label %522

522:                                              ; preds = %521
  br label %523

523:                                              ; preds = %522, %514
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #13
  %524 = load double, ptr %32, align 8, !tbaa !13
  store double %524, ptr %79, align 8, !tbaa !13
  %525 = load double, ptr %79, align 8, !tbaa !13
  %526 = fcmp ole double %525, 1.000000e+00
  br i1 %526, label %535, label %527

527:                                              ; preds = %523
  store double 1.000000e+00, ptr %79, align 8, !tbaa !13
  br label %528

528:                                              ; preds = %527
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #13
  store i32 2, ptr %80, align 4, !tbaa !11
  %529 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %530 = icmp sle i32 2, %529
  br i1 %530, label %531, label %532

531:                                              ; preds = %528
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__18_)
  br label %532

532:                                              ; preds = %531, %528
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #13
  br label %533

533:                                              ; preds = %532
  br label %534

534:                                              ; preds = %533
  br label %547

535:                                              ; preds = %523
  %536 = load double, ptr %79, align 8, !tbaa !13
  %537 = fcmp ole double 0.000000e+00, %536
  br i1 %537, label %546, label %538

538:                                              ; preds = %535
  store double 0.000000e+00, ptr %79, align 8, !tbaa !13
  br label %539

539:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #13
  store i32 2, ptr %81, align 4, !tbaa !11
  %540 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %541 = icmp sle i32 2, %540
  br i1 %541, label %542, label %543

542:                                              ; preds = %539
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__19_)
  br label %543

543:                                              ; preds = %542, %539
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #13
  br label %544

544:                                              ; preds = %543
  br label %545

545:                                              ; preds = %544
  br label %546

546:                                              ; preds = %545, %535
  br label %547

547:                                              ; preds = %546, %534
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #13
  %548 = load ptr, ptr %45, align 8, !tbaa !5
  %549 = call noundef i64 @_ZNK14NAMESPACE_MAIN11BoosterCore14GetCountScoresEv(ptr noundef nonnull align 8 dereferenceable(520) %548)
  store i64 %549, ptr %82, align 8, !tbaa !9
  %550 = load i64, ptr %82, align 8, !tbaa !9
  %551 = icmp eq i64 0, %550
  br i1 %551, label %552, label %572

552:                                              ; preds = %547
  %553 = load ptr, ptr %35, align 8, !tbaa !5
  %554 = icmp ne ptr null, %553
  %555 = xor i1 %554, true
  %556 = xor i1 %555, true
  %557 = zext i1 %556 to i64
  %558 = call i64 @llvm.expect.i64(i64 %557, i64 1)
  %559 = icmp ne i64 %558, 0
  br i1 %559, label %560, label %562

560:                                              ; preds = %552
  %561 = load ptr, ptr %35, align 8, !tbaa !5
  store double 0.000000e+00, ptr %561, align 8, !tbaa !13
  br label %562

562:                                              ; preds = %560, %552
  %563 = load ptr, ptr %44, align 8, !tbaa !5
  %564 = load i64, ptr %46, align 8, !tbaa !9
  call void @_ZN14NAMESPACE_MAIN12BoosterShell12SetTermIndexEm(ptr noundef nonnull align 8 dereferenceable(112) %563, i64 noundef %564)
  br label %565

565:                                              ; preds = %562
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #13
  store i32 2, ptr %83, align 4, !tbaa !11
  %566 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %567 = icmp sle i32 2, %566
  br i1 %567, label %568, label %569

568:                                              ; preds = %565
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__20_)
  br label %569

569:                                              ; preds = %568, %565
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #13
  br label %570

570:                                              ; preds = %569
  br label %571

571:                                              ; preds = %570
  store i32 0, ptr %18, align 4
  store i32 1, ptr %43, align 4
  br label %1662

572:                                              ; preds = %547
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #13
  %573 = load ptr, ptr %45, align 8, !tbaa !5
  %574 = call noundef i64 @_ZNK14NAMESPACE_MAIN11BoosterCore17GetCountInnerBagsEv(ptr noundef nonnull align 8 dereferenceable(520) %573)
  %575 = icmp eq i64 0, %574
  br i1 %575, label %576, label %577

576:                                              ; preds = %572
  br label %580

577:                                              ; preds = %572
  %578 = load ptr, ptr %45, align 8, !tbaa !5
  %579 = call noundef i64 @_ZNK14NAMESPACE_MAIN11BoosterCore17GetCountInnerBagsEv(ptr noundef nonnull align 8 dereferenceable(520) %578)
  br label %580

580:                                              ; preds = %577, %576
  %581 = phi i64 [ 1, %576 ], [ %579, %577 ]
  store i64 %581, ptr %84, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #13
  store i64 1, ptr %85, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #13
  store i64 0, ptr %86, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #13
  store i64 0, ptr %87, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #13
  store i8 0, ptr %88, align 1, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #13
  store i8 0, ptr %89, align 1, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #13
  store i8 0, ptr %90, align 1, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #13
  store i32 0, ptr %91, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #13
  store i64 0, ptr %92, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #13
  store i64 0, ptr %93, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #13
  store i64 0, ptr %94, align 8, !tbaa !9
  %582 = load ptr, ptr %47, align 8, !tbaa !5
  %583 = icmp ne ptr null, %582
  br i1 %583, label %584, label %723

584:                                              ; preds = %580
  %585 = load ptr, ptr %47, align 8, !tbaa !5
  %586 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %585) #13
  store i64 %586, ptr %85, align 8, !tbaa !9
  %587 = load i64, ptr %85, align 8, !tbaa !9
  %588 = icmp eq i64 0, %587
  br i1 %588, label %589, label %609

589:                                              ; preds = %584
  %590 = load ptr, ptr %35, align 8, !tbaa !5
  %591 = icmp ne ptr null, %590
  %592 = xor i1 %591, true
  %593 = xor i1 %592, true
  %594 = zext i1 %593 to i64
  %595 = call i64 @llvm.expect.i64(i64 %594, i64 1)
  %596 = icmp ne i64 %595, 0
  br i1 %596, label %597, label %599

597:                                              ; preds = %589
  %598 = load ptr, ptr %35, align 8, !tbaa !5
  store double 0.000000e+00, ptr %598, align 8, !tbaa !13
  br label %599

599:                                              ; preds = %597, %589
  %600 = load ptr, ptr %44, align 8, !tbaa !5
  %601 = load i64, ptr %46, align 8, !tbaa !9
  call void @_ZN14NAMESPACE_MAIN12BoosterShell12SetTermIndexEm(ptr noundef nonnull align 8 dereferenceable(112) %600, i64 noundef %601)
  br label %602

602:                                              ; preds = %599
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #13
  store i32 2, ptr %95, align 4, !tbaa !11
  %603 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %604 = icmp sle i32 2, %603
  br i1 %604, label %605, label %606

605:                                              ; preds = %602
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__21_)
  br label %606

606:                                              ; preds = %605, %602
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #13
  br label %607

607:                                              ; preds = %606
  br label %608

608:                                              ; preds = %607
  store i32 0, ptr %18, align 4
  store i32 1, ptr %43, align 4
  br label %1661

609:                                              ; preds = %584
  %610 = load ptr, ptr %47, align 8, !tbaa !5
  %611 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term22GetCountRealDimensionsEv(ptr noundef nonnull align 8 dereferenceable(776) %610) #13
  store i64 %611, ptr %93, align 8, !tbaa !9
  %612 = load ptr, ptr %47, align 8, !tbaa !5
  %613 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountDimensionsEv(ptr noundef nonnull align 8 dereferenceable(776) %612) #13
  store i64 %613, ptr %94, align 8, !tbaa !9
  %614 = load ptr, ptr %33, align 8, !tbaa !5
  %615 = icmp ne ptr null, %614
  br i1 %615, label %616, label %722

616:                                              ; preds = %609
  %617 = load i64, ptr %93, align 8, !tbaa !9
  %618 = icmp ne i64 0, %617
  br i1 %618, label %619, label %721

619:                                              ; preds = %616
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #13
  store i64 0, ptr %96, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #13
  %620 = load ptr, ptr %33, align 8, !tbaa !5
  store ptr %620, ptr %97, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #13
  %621 = load ptr, ptr %47, align 8, !tbaa !5
  %622 = call noundef ptr @_ZN14NAMESPACE_MAIN4Term15GetTermFeaturesEv(ptr noundef nonnull align 8 dereferenceable(776) %621) #13
  store ptr %622, ptr %98, align 8, !tbaa !5
  %623 = load i64, ptr %94, align 8, !tbaa !9
  %624 = icmp ule i64 1, %623
  br i1 %624, label %627, label %625

625:                                              ; preds = %619
  call void @LogAssertFailure(i64 noundef 989, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.5)
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 989, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

626:                                              ; No predecessors!
  br label %627

627:                                              ; preds = %626, %619
  %628 = phi i1 [ true, %619 ], [ false, %626 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #13
  %629 = load ptr, ptr %98, align 8, !tbaa !5
  %630 = load i64, ptr %94, align 8, !tbaa !9
  %631 = getelementptr inbounds %"struct.NAMESPACE_MAIN::TermFeature", ptr %629, i64 %630
  store ptr %631, ptr %99, align 8, !tbaa !5
  br label %632

632:                                              ; preds = %710, %627
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #13
  %633 = load ptr, ptr %98, align 8, !tbaa !5
  %634 = getelementptr inbounds %"struct.NAMESPACE_MAIN::TermFeature", ptr %633, i32 0, i32 0
  %635 = load ptr, ptr %634, align 8, !tbaa !17
  store ptr %635, ptr %100, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #13
  %636 = load ptr, ptr %100, align 8, !tbaa !5
  %637 = call noundef i64 @_ZNK14NAMESPACE_MAIN15FeatureBoosting12GetCountBinsEv(ptr noundef nonnull align 8 dereferenceable(16) %636) #13
  store i64 %637, ptr %101, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #13
  store i32 0, ptr %102, align 4, !tbaa !11
  %638 = load ptr, ptr %34, align 8, !tbaa !5
  %639 = icmp ne ptr null, %638
  br i1 %639, label %640, label %645

640:                                              ; preds = %632
  %641 = load ptr, ptr %34, align 8, !tbaa !5
  %642 = load i32, ptr %641, align 4, !tbaa !11
  store i32 %642, ptr %102, align 4, !tbaa !11
  %643 = load ptr, ptr %34, align 8, !tbaa !5
  %644 = getelementptr inbounds i32, ptr %643, i32 1
  store ptr %644, ptr %34, align 8, !tbaa !5
  br label %645

645:                                              ; preds = %640, %632
  %646 = load i64, ptr %101, align 8, !tbaa !9
  %647 = icmp ult i64 1, %646
  br i1 %647, label %648, label %703

648:                                              ; preds = %645
  %649 = load i64, ptr %85, align 8, !tbaa !9
  %650 = icmp ule i64 2, %649
  br i1 %650, label %653, label %651

651:                                              ; preds = %648
  call void @LogAssertFailure(i64 noundef 1002, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.7)
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str, i32 noundef 1002, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

652:                                              ; No predecessors!
  br label %653

653:                                              ; preds = %652, %648
  %654 = phi i1 [ true, %648 ], [ false, %652 ]
  %655 = load i64, ptr %93, align 8, !tbaa !9
  %656 = icmp ule i64 2, %655
  br i1 %656, label %662, label %657

657:                                              ; preds = %653
  %658 = load i64, ptr %86, align 8, !tbaa !9
  %659 = icmp eq i64 0, %658
  br i1 %659, label %662, label %660

660:                                              ; preds = %657
  call void @LogAssertFailure(i64 noundef 1003, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.9)
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str, i32 noundef 1003, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

661:                                              ; No predecessors!
  br label %662

662:                                              ; preds = %661, %657, %653
  %663 = phi i1 [ true, %657 ], [ true, %653 ], [ false, %661 ]
  %664 = load i64, ptr %96, align 8, !tbaa !9
  store i64 %664, ptr %92, align 8, !tbaa !9
  %665 = load i64, ptr %101, align 8, !tbaa !9
  store i64 %665, ptr %87, align 8, !tbaa !9
  %666 = load ptr, ptr %100, align 8, !tbaa !5
  %667 = call noundef zeroext i1 @_ZNK14NAMESPACE_MAIN15FeatureBoosting9IsMissingEv(ptr noundef nonnull align 8 dereferenceable(16) %666) #13
  %668 = zext i1 %667 to i8
  store i8 %668, ptr %88, align 1, !tbaa !15
  %669 = load ptr, ptr %100, align 8, !tbaa !5
  %670 = call noundef zeroext i1 @_ZNK14NAMESPACE_MAIN15FeatureBoosting8IsUnseenEv(ptr noundef nonnull align 8 dereferenceable(16) %669) #13
  %671 = zext i1 %670 to i8
  store i8 %671, ptr %89, align 1, !tbaa !15
  %672 = load ptr, ptr %100, align 8, !tbaa !5
  %673 = call noundef zeroext i1 @_ZNK14NAMESPACE_MAIN15FeatureBoosting9IsNominalEv(ptr noundef nonnull align 8 dereferenceable(16) %672) #13
  %674 = zext i1 %673 to i8
  store i8 %674, ptr %90, align 1, !tbaa !15
  %675 = load i32, ptr %102, align 4, !tbaa !11
  %676 = load i32, ptr %91, align 4, !tbaa !11
  %677 = or i32 %676, %675
  store i32 %677, ptr %91, align 4, !tbaa !11
  %678 = load ptr, ptr %97, align 8, !tbaa !5
  %679 = icmp ne ptr null, %678
  br i1 %679, label %682, label %680

680:                                              ; preds = %662
  call void @LogAssertFailure(i64 noundef 1011, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.11)
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str, i32 noundef 1011, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

681:                                              ; No predecessors!
  br label %682

682:                                              ; preds = %681, %662
  %683 = phi i1 [ true, %662 ], [ false, %681 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #13
  %684 = load ptr, ptr %97, align 8, !tbaa !5
  %685 = load i64, ptr %684, align 8, !tbaa !9
  store i64 %685, ptr %103, align 8, !tbaa !9
  %686 = load i64, ptr %103, align 8, !tbaa !9
  %687 = icmp sle i64 %686, 1
  br i1 %687, label %688, label %700

688:                                              ; preds = %682
  %689 = load i64, ptr %103, align 8, !tbaa !9
  %690 = icmp slt i64 %689, 1
  br i1 %690, label %691, label %699

691:                                              ; preds = %688
  br label %692

692:                                              ; preds = %691
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #13
  store i32 2, ptr %104, align 4, !tbaa !11
  %693 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %694 = icmp sle i32 2, %693
  br i1 %694, label %695, label %696

695:                                              ; preds = %692
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__22_)
  br label %696

696:                                              ; preds = %695, %692
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #13
  br label %697

697:                                              ; preds = %696
  br label %698

698:                                              ; preds = %697
  br label %699

699:                                              ; preds = %698, %688
  br label %702

700:                                              ; preds = %682
  %701 = load i64, ptr %103, align 8, !tbaa !9
  store i64 %701, ptr %86, align 8, !tbaa !9
  br label %702

702:                                              ; preds = %700, %699
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #13
  br label %703

703:                                              ; preds = %702, %645
  %704 = load i64, ptr %96, align 8, !tbaa !9
  %705 = add i64 %704, 1
  store i64 %705, ptr %96, align 8, !tbaa !9
  %706 = load ptr, ptr %97, align 8, !tbaa !5
  %707 = getelementptr inbounds i64, ptr %706, i32 1
  store ptr %707, ptr %97, align 8, !tbaa !5
  %708 = load ptr, ptr %98, align 8, !tbaa !5
  %709 = getelementptr inbounds %"struct.NAMESPACE_MAIN::TermFeature", ptr %708, i32 1
  store ptr %709, ptr %98, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #13
  br label %710

710:                                              ; preds = %703
  %711 = load ptr, ptr %99, align 8, !tbaa !5
  %712 = load ptr, ptr %98, align 8, !tbaa !5
  %713 = icmp ne ptr %711, %712
  br i1 %713, label %632, label %714, !llvm.loop !19

714:                                              ; preds = %710
  %715 = load i64, ptr %87, align 8, !tbaa !9
  %716 = icmp ule i64 2, %715
  br i1 %716, label %719, label %717

717:                                              ; preds = %714
  call void @LogAssertFailure(i64 noundef 1028, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.13)
  call void @__assert_fail(ptr noundef @.str.14, ptr noundef @.str, i32 noundef 1028, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

718:                                              ; No predecessors!
  br label %719

719:                                              ; preds = %718, %714
  %720 = phi i1 [ true, %714 ], [ false, %718 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #13
  br label %721

721:                                              ; preds = %719, %616
  br label %722

722:                                              ; preds = %721, %609
  br label %723

723:                                              ; preds = %722, %580
  %724 = load i64, ptr %85, align 8, !tbaa !9
  %725 = icmp ule i64 1, %724
  br i1 %725, label %728, label %726

726:                                              ; preds = %723
  call void @LogAssertFailure(i64 noundef 1033, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.15)
  call void @__assert_fail(ptr noundef @.str.16, ptr noundef @.str, i32 noundef 1033, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

727:                                              ; No predecessors!
  br label %728

728:                                              ; preds = %727, %723
  %729 = phi i1 [ true, %723 ], [ false, %727 ]
  %730 = load i64, ptr %85, align 8, !tbaa !9
  %731 = icmp ule i64 2, %730
  br i1 %731, label %737, label %732

732:                                              ; preds = %728
  %733 = load i64, ptr %86, align 8, !tbaa !9
  %734 = icmp eq i64 0, %733
  br i1 %734, label %737, label %735

735:                                              ; preds = %732
  call void @LogAssertFailure(i64 noundef 1034, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.17)
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str, i32 noundef 1034, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

736:                                              ; No predecessors!
  br label %737

737:                                              ; preds = %736, %732, %728
  %738 = phi i1 [ true, %732 ], [ true, %728 ], [ false, %736 ]
  %739 = load ptr, ptr %44, align 8, !tbaa !5
  %740 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell13GetTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %739)
  %741 = icmp ne ptr null, %740
  br i1 %741, label %744, label %742

742:                                              ; preds = %737
  call void @LogAssertFailure(i64 noundef 1036, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.19)
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str, i32 noundef 1036, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

743:                                              ; No predecessors!
  br label %744

744:                                              ; preds = %743, %737
  %745 = phi i1 [ true, %737 ], [ false, %743 ]
  %746 = load ptr, ptr %44, align 8, !tbaa !5
  %747 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell18GetInnerTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %746)
  %748 = icmp ne ptr null, %747
  br i1 %748, label %751, label %749

749:                                              ; preds = %744
  call void @LogAssertFailure(i64 noundef 1037, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.21)
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str, i32 noundef 1037, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

750:                                              ; No predecessors!
  br label %751

751:                                              ; preds = %750, %744
  %752 = phi i1 [ true, %744 ], [ false, %750 ]
  %753 = load ptr, ptr %44, align 8, !tbaa !5
  %754 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell13GetTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %753)
  %755 = load i64, ptr %94, align 8, !tbaa !9
  call void @_ZN14NAMESPACE_MAIN6Tensor18SetCountDimensionsEm(ptr noundef nonnull align 8 dereferenceable(72) %754, i64 noundef %755)
  %756 = load ptr, ptr %44, align 8, !tbaa !5
  %757 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell13GetTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %756)
  call void @_ZN14NAMESPACE_MAIN6Tensor5ResetEv(ptr noundef nonnull align 8 dereferenceable(72) %757)
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #13
  store double 0.000000e+00, ptr %105, align 8, !tbaa !13
  %758 = load ptr, ptr %45, align 8, !tbaa !5
  %759 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %758)
  %760 = call noundef i64 @_ZNK14NAMESPACE_MAIN15DataSetBoosting15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(40) %759)
  %761 = icmp ne i64 0, %760
  br i1 %761, label %762, label %1581

762:                                              ; preds = %751
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #13
  %763 = load ptr, ptr %45, align 8, !tbaa !5
  %764 = call noundef double @_ZN14NAMESPACE_MAIN11BoosterCore16GradientConstantEv(ptr noundef nonnull align 8 dereferenceable(520) %763)
  store double %764, ptr %106, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #13
  %765 = load double, ptr %106, align 8, !tbaa !13
  %766 = load i64, ptr %84, align 8, !tbaa !9
  %767 = uitofp i64 %766 to double
  %768 = fdiv double %765, %767
  store double %768, ptr %107, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #13
  %769 = load double, ptr %107, align 8, !tbaa !13
  store double %769, ptr %108, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #13
  %770 = load double, ptr %107, align 8, !tbaa !13
  store double %770, ptr %109, align 8, !tbaa !13
  %771 = load i32, ptr %22, align 4, !tbaa !11
  %772 = and i32 32, %771
  %773 = icmp ne i32 %772, 0
  br i1 %773, label %774, label %779

774:                                              ; preds = %762
  %775 = load ptr, ptr %45, align 8, !tbaa !5
  %776 = call noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore41LearningRateAdjustmentDifferentialPrivacyEv(ptr noundef nonnull align 8 dereferenceable(520) %775) #13
  %777 = load double, ptr %108, align 8, !tbaa !13
  %778 = fmul double %777, %776
  store double %778, ptr %108, align 8, !tbaa !13
  br label %798

779:                                              ; preds = %762
  %780 = load i32, ptr %22, align 4, !tbaa !11
  %781 = and i32 16, %780
  %782 = icmp ne i32 %781, 0
  br i1 %782, label %783, label %788

783:                                              ; preds = %779
  %784 = load ptr, ptr %45, align 8, !tbaa !5
  %785 = call noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore38LearningRateAdjustmentGradientBoostingEv(ptr noundef nonnull align 8 dereferenceable(520) %784) #13
  %786 = load double, ptr %108, align 8, !tbaa !13
  %787 = fmul double %786, %785
  store double %787, ptr %108, align 8, !tbaa !13
  br label %797

788:                                              ; preds = %779
  %789 = load ptr, ptr %45, align 8, !tbaa !5
  %790 = call noundef double @_ZN14NAMESPACE_MAIN11BoosterCore15HessianConstantEv(ptr noundef nonnull align 8 dereferenceable(520) %789)
  %791 = load double, ptr %108, align 8, !tbaa !13
  %792 = fdiv double %791, %790
  store double %792, ptr %108, align 8, !tbaa !13
  %793 = load ptr, ptr %45, align 8, !tbaa !5
  %794 = call noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore37LearningRateAdjustmentHessianBoostingEv(ptr noundef nonnull align 8 dereferenceable(520) %793) #13
  %795 = load double, ptr %108, align 8, !tbaa !13
  %796 = fmul double %795, %794
  store double %796, ptr %108, align 8, !tbaa !13
  br label %797

797:                                              ; preds = %788, %783
  br label %798

798:                                              ; preds = %797, %774
  %799 = load i32, ptr %22, align 4, !tbaa !11
  %800 = and i32 2, %799
  %801 = icmp ne i32 %800, 0
  br i1 %801, label %802, label %807

802:                                              ; preds = %798
  %803 = load ptr, ptr %45, align 8, !tbaa !5
  %804 = call noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore30GainAdjustmentGradientBoostingEv(ptr noundef nonnull align 8 dereferenceable(520) %803) #13
  %805 = load double, ptr %109, align 8, !tbaa !13
  %806 = fmul double %805, %804
  store double %806, ptr %109, align 8, !tbaa !13
  br label %816

807:                                              ; preds = %798
  %808 = load ptr, ptr %45, align 8, !tbaa !5
  %809 = call noundef double @_ZN14NAMESPACE_MAIN11BoosterCore15HessianConstantEv(ptr noundef nonnull align 8 dereferenceable(520) %808)
  %810 = load double, ptr %109, align 8, !tbaa !13
  %811 = fdiv double %810, %809
  store double %811, ptr %109, align 8, !tbaa !13
  %812 = load ptr, ptr %45, align 8, !tbaa !5
  %813 = call noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore29GainAdjustmentHessianBoostingEv(ptr noundef nonnull align 8 dereferenceable(520) %812) #13
  %814 = load double, ptr %109, align 8, !tbaa !13
  %815 = fmul double %814, %813
  store double %815, ptr %109, align 8, !tbaa !13
  br label %816

816:                                              ; preds = %807, %802
  %817 = load double, ptr %23, align 8, !tbaa !13
  %818 = load double, ptr %108, align 8, !tbaa !13
  %819 = fmul double %818, %817
  store double %819, ptr %108, align 8, !tbaa !13
  %820 = load double, ptr %106, align 8, !tbaa !13
  %821 = load double, ptr %109, align 8, !tbaa !13
  %822 = fmul double %821, %820
  store double %822, ptr %109, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #13
  %823 = load ptr, ptr %19, align 8, !tbaa !5
  store ptr %823, ptr %110, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %111) #13
  %824 = load ptr, ptr %110, align 8, !tbaa !5
  %825 = icmp eq ptr null, %824
  br i1 %825, label %826, label %882

826:                                              ; preds = %816
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #13
  call void @llvm.lifetime.start.p0(i64 5016, ptr %113) #13
  invoke void @_ZN14NAMESPACE_MAIN22RandomNondeterministicImEC2Ev(ptr noundef nonnull align 8 dereferenceable(5016) %113)
          to label %827 unwind label %831

827:                                              ; preds = %826
  %828 = call noundef i64 @_ZNSt14numeric_limitsImE3maxEv() #13
  %829 = invoke noundef i64 @_ZN14NAMESPACE_MAIN22RandomNondeterministicImE4NextEm(ptr noundef nonnull align 8 dereferenceable(5016) %113, i64 noundef %828)
          to label %830 unwind label %835

830:                                              ; preds = %827
  store i64 %829, ptr %112, align 8, !tbaa !9
  call void @_ZN14NAMESPACE_MAIN22RandomNondeterministicImED2Ev(ptr noundef nonnull align 8 dereferenceable(5016) %113) #13
  call void @llvm.lifetime.end.p0(i64 5016, ptr %113) #13
  br label %876

831:                                              ; preds = %826
  %832 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9bad_alloc
          catch ptr null
  %833 = extractvalue { ptr, i32 } %832, 0
  store ptr %833, ptr %114, align 8
  %834 = extractvalue { ptr, i32 } %832, 1
  store i32 %834, ptr %115, align 4
  br label %839

835:                                              ; preds = %827
  %836 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9bad_alloc
          catch ptr null
  %837 = extractvalue { ptr, i32 } %836, 0
  store ptr %837, ptr %114, align 8
  %838 = extractvalue { ptr, i32 } %836, 1
  store i32 %838, ptr %115, align 4
  call void @_ZN14NAMESPACE_MAIN22RandomNondeterministicImED2Ev(ptr noundef nonnull align 8 dereferenceable(5016) %113) #13
  br label %839

839:                                              ; preds = %835, %831
  call void @llvm.lifetime.end.p0(i64 5016, ptr %113) #13
  br label %840

840:                                              ; preds = %839
  %841 = load i32, ptr %115, align 4
  %842 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9bad_alloc) #13
  %843 = icmp eq i32 %841, %842
  br i1 %843, label %844, label %852

844:                                              ; preds = %840
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #13
  %845 = load ptr, ptr %114, align 8
  %846 = call ptr @__cxa_begin_catch(ptr %845) #13
  store ptr %846, ptr %117, align 8
  br label %847

847:                                              ; preds = %844
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #13
  store i32 2, ptr %118, align 4, !tbaa !11
  %848 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %849 = icmp sle i32 2, %848
  br i1 %849, label %850, label %872

850:                                              ; preds = %847
  invoke void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__24_)
          to label %851 unwind label %868

851:                                              ; preds = %850
  br label %872

852:                                              ; preds = %840
  %853 = load ptr, ptr %114, align 8
  %854 = call ptr @__cxa_begin_catch(ptr %853) #13
  br label %855

855:                                              ; preds = %852
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #13
  store i32 2, ptr %116, align 4, !tbaa !11
  %856 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %857 = icmp sle i32 2, %856
  br i1 %857, label %858, label %864

858:                                              ; preds = %855
  invoke void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__23_)
          to label %859 unwind label %860

859:                                              ; preds = %858
  br label %864

860:                                              ; preds = %858
  %861 = landingpad { ptr, i32 }
          cleanup
  %862 = extractvalue { ptr, i32 } %861, 0
  store ptr %862, ptr %114, align 8
  %863 = extractvalue { ptr, i32 } %861, 1
  store i32 %863, ptr %115, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #13
  invoke void @__cxa_end_catch()
          to label %867 unwind label %1671

864:                                              ; preds = %859, %855
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #13
  br label %865

865:                                              ; preds = %864
  br label %866

866:                                              ; preds = %865
  store i32 -2, ptr %18, align 4
  store i32 1, ptr %43, align 4
  call void @__cxa_end_catch()
  br label %878

867:                                              ; preds = %860
  br label %881

868:                                              ; preds = %850
  %869 = landingpad { ptr, i32 }
          cleanup
  %870 = extractvalue { ptr, i32 } %869, 0
  store ptr %870, ptr %114, align 8
  %871 = extractvalue { ptr, i32 } %869, 1
  store i32 %871, ptr %115, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #13
  invoke void @__cxa_end_catch()
          to label %875 unwind label %1671

872:                                              ; preds = %851, %847
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #13
  br label %873

873:                                              ; preds = %872
  br label %874

874:                                              ; preds = %873
  store i32 -1, ptr %18, align 4
  store i32 1, ptr %43, align 4
  call void @__cxa_end_catch()
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #13
  br label %878

875:                                              ; preds = %868
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #13
  br label %881

876:                                              ; preds = %830
  %877 = load i64, ptr %112, align 8, !tbaa !9
  call void @_ZN14NAMESPACE_MAIN19RandomDeterministic10InitializeEm(ptr noundef nonnull align 8 dereferenceable(24) %111, i64 noundef %877)
  store ptr %111, ptr %110, align 8, !tbaa !5
  store i32 0, ptr %43, align 4
  br label %878

878:                                              ; preds = %876, %874, %866
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #13
  %879 = load i32, ptr %43, align 4
  switch i32 %879, label %1578 [
    i32 0, label %880
  ]

880:                                              ; preds = %878
  br label %882

881:                                              ; preds = %875, %867
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %111) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #13
  br label %1666

882:                                              ; preds = %880, %816
  %883 = load ptr, ptr %44, align 8, !tbaa !5
  %884 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell18GetInnerTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %883)
  %885 = load i64, ptr %94, align 8, !tbaa !9
  call void @_ZN14NAMESPACE_MAIN6Tensor18SetCountDimensionsEm(ptr noundef nonnull align 8 dereferenceable(72) %884, i64 noundef %885)
  %886 = load ptr, ptr %44, align 8, !tbaa !5
  %887 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell18GetInnerTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %886)
  call void @_ZN14NAMESPACE_MAIN6Tensor5ResetEv(ptr noundef nonnull align 8 dereferenceable(72) %887)
  %888 = load i64, ptr %86, align 8, !tbaa !9
  %889 = icmp eq i64 0, %888
  br i1 %889, label %902, label %890

890:                                              ; preds = %882
  %891 = load i64, ptr %93, align 8, !tbaa !9
  %892 = icmp ne i64 1, %891
  br i1 %892, label %899, label %893

893:                                              ; preds = %890
  %894 = load i8, ptr %90, align 1, !tbaa !15, !range !21, !noundef !22
  %895 = trunc i8 %894 to i1
  br i1 %895, label %899, label %896

896:                                              ; preds = %893
  %897 = load i64, ptr %82, align 8, !tbaa !9
  %898 = icmp ne i64 1, %897
  br i1 %898, label %899, label %903

899:                                              ; preds = %896, %893, %890
  %900 = load i32, ptr %91, align 4, !tbaa !11
  %901 = icmp ne i32 0, %900
  br i1 %901, label %902, label %903

902:                                              ; preds = %899, %882
  store i64 1, ptr %85, align 8, !tbaa !9
  br label %903

903:                                              ; preds = %902, %899, %896
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #13
  %904 = load ptr, ptr %44, align 8, !tbaa !5
  %905 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell23GetBoostingFastBinsTempEv(ptr noundef nonnull align 8 dereferenceable(112) %904)
  store ptr %905, ptr %119, align 8, !tbaa !5
  %906 = load ptr, ptr %119, align 8, !tbaa !5
  %907 = icmp ne ptr null, %906
  br i1 %907, label %910, label %908

908:                                              ; preds = %903
  call void @LogAssertFailure(i64 noundef 1111, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.23)
  call void @__assert_fail(ptr noundef @.str.24, ptr noundef @.str, i32 noundef 1111, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

909:                                              ; No predecessors!
  br label %910

910:                                              ; preds = %909, %903
  %911 = phi i1 [ true, %903 ], [ false, %909 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #13
  %912 = load ptr, ptr %45, align 8, !tbaa !5
  %913 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520) %912)
  %914 = load i64, ptr %82, align 8, !tbaa !9
  %915 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIdmEEmbbbm(i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext %913, i64 noundef %914)
  store i64 %915, ptr %120, align 8, !tbaa !9
  %916 = load i64, ptr %120, align 8, !tbaa !9
  %917 = load i64, ptr %85, align 8, !tbaa !9
  %918 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %916, i64 noundef %917) #13
  br i1 %918, label %919, label %921

919:                                              ; preds = %910
  call void @LogAssertFailure(i64 noundef 1114, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.25)
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str, i32 noundef 1114, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

920:                                              ; No predecessors!
  br label %921

921:                                              ; preds = %920, %910
  %922 = phi i1 [ true, %910 ], [ false, %920 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #13
  %923 = load i64, ptr %120, align 8, !tbaa !9
  %924 = load i64, ptr %85, align 8, !tbaa !9
  %925 = mul i64 %923, %924
  store i64 %925, ptr %121, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #13
  %926 = load ptr, ptr %44, align 8, !tbaa !5
  %927 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell19GetBoostingMainBinsEv(ptr noundef nonnull align 8 dereferenceable(112) %926)
  store ptr %927, ptr %122, align 8, !tbaa !5
  %928 = load ptr, ptr %122, align 8, !tbaa !5
  %929 = icmp ne ptr null, %928
  br i1 %929, label %932, label %930

930:                                              ; preds = %921
  call void @LogAssertFailure(i64 noundef 1118, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.27)
  call void @__assert_fail(ptr noundef @.str.28, ptr noundef @.str, i32 noundef 1118, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

931:                                              ; No predecessors!
  br label %932

932:                                              ; preds = %931, %921
  %933 = phi i1 [ true, %921 ], [ false, %931 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #13
  store i64 0, ptr %123, align 8, !tbaa !9
  %934 = load ptr, ptr %47, align 8, !tbaa !5
  %935 = icmp ne ptr null, %934
  br i1 %935, label %936, label %943

936:                                              ; preds = %932
  %937 = load i32, ptr %22, align 4, !tbaa !11
  %938 = and i32 64, %937
  %939 = icmp eq i32 0, %938
  br i1 %939, label %940, label %943

940:                                              ; preds = %936
  %941 = load ptr, ptr %47, align 8, !tbaa !5
  %942 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term21GetCountAuxillaryBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %941) #13
  store i64 %942, ptr %123, align 8, !tbaa !9
  br label %943

943:                                              ; preds = %940, %936, %932
  %944 = load i64, ptr %85, align 8, !tbaa !9
  %945 = load i64, ptr %123, align 8, !tbaa !9
  %946 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef %944, i64 noundef %945) #13
  br i1 %946, label %947, label %949

947:                                              ; preds = %943
  call void @LogAssertFailure(i64 noundef 1126, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.29)
  call void @__assert_fail(ptr noundef @.str.30, ptr noundef @.str, i32 noundef 1126, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

948:                                              ; No predecessors!
  br label %949

949:                                              ; preds = %948, %943
  %950 = phi i1 [ true, %943 ], [ false, %948 ]
  %951 = load i64, ptr %120, align 8, !tbaa !9
  %952 = load i64, ptr %85, align 8, !tbaa !9
  %953 = load i64, ptr %123, align 8, !tbaa !9
  %954 = add i64 %952, %953
  %955 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %951, i64 noundef %954) #13
  br i1 %955, label %956, label %958

956:                                              ; preds = %949
  call void @LogAssertFailure(i64 noundef 1127, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.31)
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str, i32 noundef 1127, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

957:                                              ; No predecessors!
  br label %958

958:                                              ; preds = %957, %949
  %959 = phi i1 [ true, %949 ], [ false, %957 ]
  %960 = load ptr, ptr %44, align 8, !tbaa !5
  %961 = load ptr, ptr %122, align 8, !tbaa !5
  %962 = load i64, ptr %120, align 8, !tbaa !9
  %963 = load i64, ptr %85, align 8, !tbaa !9
  %964 = load i64, ptr %123, align 8, !tbaa !9
  %965 = add i64 %963, %964
  %966 = mul i64 %962, %965
  %967 = call noundef ptr @_ZN14NAMESPACE_MAINL8IndexBinEPNS_7BinBaseEm(ptr noundef %961, i64 noundef %966)
  call void @_ZN14NAMESPACE_MAIN12BoosterShell19SetDebugMainBinsEndEPKNS_7BinBaseE(ptr noundef nonnull align 8 dereferenceable(112) %960, ptr noundef %967)
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #13
  store i64 0, ptr %124, align 8, !tbaa !9
  %968 = load i64, ptr %84, align 8, !tbaa !9
  %969 = icmp ule i64 1, %968
  br i1 %969, label %972, label %970

970:                                              ; preds = %958
  call void @LogAssertFailure(i64 noundef 1132, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.33)
  call void @__assert_fail(ptr noundef @.str.34, ptr noundef @.str, i32 noundef 1132, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

971:                                              ; No predecessors!
  br label %972

972:                                              ; preds = %971, %958
  %973 = phi i1 [ true, %958 ], [ false, %971 ]
  br label %974

974:                                              ; preds = %1499, %972
  %975 = load ptr, ptr %122, align 8, !tbaa !5
  %976 = load i64, ptr %121, align 8, !tbaa !9
  call void @llvm.memset.p0.i64(ptr align 1 %975, i8 0, i64 %976, i1 false)
  %977 = load ptr, ptr %45, align 8, !tbaa !5
  %978 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %977)
  %979 = call noundef i64 @_ZNK14NAMESPACE_MAIN15DataSetBoosting15GetCountSubsetsEv(ptr noundef nonnull align 8 dereferenceable(40) %978)
  %980 = icmp ule i64 1, %979
  br i1 %980, label %983, label %981

981:                                              ; preds = %974
  call void @LogAssertFailure(i64 noundef 1136, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.35)
  call void @__assert_fail(ptr noundef @.str.36, ptr noundef @.str, i32 noundef 1136, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

982:                                              ; No predecessors!
  br label %983

983:                                              ; preds = %982, %974
  %984 = phi i1 [ true, %974 ], [ false, %982 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #13
  %985 = load ptr, ptr %45, align 8, !tbaa !5
  %986 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %985)
  %987 = call noundef ptr @_ZN14NAMESPACE_MAIN15DataSetBoosting10GetSubsetsEv(ptr noundef nonnull align 8 dereferenceable(40) %986)
  store ptr %987, ptr %125, align 8, !tbaa !5
  %988 = load ptr, ptr %125, align 8, !tbaa !5
  %989 = icmp ne ptr null, %988
  br i1 %989, label %992, label %990

990:                                              ; preds = %983
  call void @LogAssertFailure(i64 noundef 1138, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.37)
  call void @__assert_fail(ptr noundef @.str.38, ptr noundef @.str, i32 noundef 1138, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

991:                                              ; No predecessors!
  br label %992

992:                                              ; preds = %991, %983
  %993 = phi i1 [ true, %983 ], [ false, %991 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #13
  %994 = load ptr, ptr %125, align 8, !tbaa !5
  %995 = load ptr, ptr %45, align 8, !tbaa !5
  %996 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %995)
  %997 = call noundef i64 @_ZNK14NAMESPACE_MAIN15DataSetBoosting15GetCountSubsetsEv(ptr noundef nonnull align 8 dereferenceable(40) %996)
  %998 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %994, i64 %997
  store ptr %998, ptr %126, align 8, !tbaa !5
  br label %999

999:                                              ; preds = %1301, %992
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #13
  %1000 = load i64, ptr %85, align 8, !tbaa !9
  %1001 = icmp eq i64 1, %1000
  br i1 %1001, label %1002, label %1003

1002:                                             ; preds = %999
  store i32 0, ptr %127, align 4, !tbaa !11
  br label %1018

1003:                                             ; preds = %999
  %1004 = load ptr, ptr %47, align 8, !tbaa !5
  %1005 = call noundef i32 @_ZNK14NAMESPACE_MAIN4Term18GetBitsRequiredMinEv(ptr noundef nonnull align 8 dereferenceable(776) %1004) #13
  %1006 = icmp sle i32 1, %1005
  br i1 %1006, label %1009, label %1007

1007:                                             ; preds = %1003
  call void @LogAssertFailure(i64 noundef 1148, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.39)
  call void @__assert_fail(ptr noundef @.str.40, ptr noundef @.str, i32 noundef 1148, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1008:                                             ; No predecessors!
  br label %1009

1009:                                             ; preds = %1008, %1003
  %1010 = phi i1 [ true, %1003 ], [ false, %1008 ]
  %1011 = load ptr, ptr %47, align 8, !tbaa !5
  %1012 = call noundef i32 @_ZNK14NAMESPACE_MAIN4Term18GetBitsRequiredMinEv(ptr noundef nonnull align 8 dereferenceable(776) %1011) #13
  %1013 = load ptr, ptr %125, align 8, !tbaa !5
  %1014 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %1013)
  %1015 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %1014, i32 0, i32 18
  %1016 = load i64, ptr %1015, align 8, !tbaa !23
  %1017 = call noundef i32 @_ZN14NAMESPACE_MAINL22GetCountItemsBitPackedEim(i32 noundef %1012, i64 noundef %1016) #13
  store i32 %1017, ptr %127, align 4, !tbaa !11
  br label %1018

1018:                                             ; preds = %1009, %1002
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #13
  %1019 = load ptr, ptr %125, align 8, !tbaa !5
  %1020 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %1019)
  %1021 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %1020, i32 0, i32 18
  %1022 = load i64, ptr %1021, align 8, !tbaa !23
  %1023 = icmp eq i64 8, %1022
  br i1 %1023, label %1024, label %1050

1024:                                             ; preds = %1018
  %1025 = load ptr, ptr %125, align 8, !tbaa !5
  %1026 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %1025)
  %1027 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %1026, i32 0, i32 17
  %1028 = load i64, ptr %1027, align 8, !tbaa !25
  %1029 = icmp eq i64 8, %1028
  br i1 %1029, label %1030, label %1035

1030:                                             ; preds = %1024
  %1031 = load ptr, ptr %45, align 8, !tbaa !5
  %1032 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520) %1031)
  %1033 = load i64, ptr %82, align 8, !tbaa !9
  %1034 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIdmEEmbbbm(i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext %1032, i64 noundef %1033)
  store i64 %1034, ptr %128, align 8, !tbaa !9
  br label %1049

1035:                                             ; preds = %1024
  %1036 = load ptr, ptr %125, align 8, !tbaa !5
  %1037 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %1036)
  %1038 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %1037, i32 0, i32 17
  %1039 = load i64, ptr %1038, align 8, !tbaa !25
  %1040 = icmp eq i64 4, %1039
  br i1 %1040, label %1043, label %1041

1041:                                             ; preds = %1035
  call void @LogAssertFailure(i64 noundef 1158, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.41)
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str, i32 noundef 1158, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1042:                                             ; No predecessors!
  br label %1043

1043:                                             ; preds = %1042, %1035
  %1044 = phi i1 [ true, %1035 ], [ false, %1042 ]
  %1045 = load ptr, ptr %45, align 8, !tbaa !5
  %1046 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520) %1045)
  %1047 = load i64, ptr %82, align 8, !tbaa !9
  %1048 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIfmEEmbbbm(i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext %1046, i64 noundef %1047)
  store i64 %1048, ptr %128, align 8, !tbaa !9
  br label %1049

1049:                                             ; preds = %1043, %1030
  br label %1085

1050:                                             ; preds = %1018
  %1051 = load ptr, ptr %125, align 8, !tbaa !5
  %1052 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %1051)
  %1053 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %1052, i32 0, i32 18
  %1054 = load i64, ptr %1053, align 8, !tbaa !23
  %1055 = icmp eq i64 4, %1054
  br i1 %1055, label %1058, label %1056

1056:                                             ; preds = %1050
  call void @LogAssertFailure(i64 noundef 1162, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.43)
  call void @__assert_fail(ptr noundef @.str.44, ptr noundef @.str, i32 noundef 1162, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1057:                                             ; No predecessors!
  br label %1058

1058:                                             ; preds = %1057, %1050
  %1059 = phi i1 [ true, %1050 ], [ false, %1057 ]
  %1060 = load ptr, ptr %125, align 8, !tbaa !5
  %1061 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %1060)
  %1062 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %1061, i32 0, i32 17
  %1063 = load i64, ptr %1062, align 8, !tbaa !25
  %1064 = icmp eq i64 8, %1063
  br i1 %1064, label %1065, label %1070

1065:                                             ; preds = %1058
  %1066 = load ptr, ptr %45, align 8, !tbaa !5
  %1067 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520) %1066)
  %1068 = load i64, ptr %82, align 8, !tbaa !9
  %1069 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIdjEEmbbbm(i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext %1067, i64 noundef %1068)
  store i64 %1069, ptr %128, align 8, !tbaa !9
  br label %1084

1070:                                             ; preds = %1058
  %1071 = load ptr, ptr %125, align 8, !tbaa !5
  %1072 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %1071)
  %1073 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %1072, i32 0, i32 17
  %1074 = load i64, ptr %1073, align 8, !tbaa !25
  %1075 = icmp eq i64 4, %1074
  br i1 %1075, label %1078, label %1076

1076:                                             ; preds = %1070
  call void @LogAssertFailure(i64 noundef 1166, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.41)
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str, i32 noundef 1166, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1077:                                             ; No predecessors!
  br label %1078

1078:                                             ; preds = %1077, %1070
  %1079 = phi i1 [ true, %1070 ], [ false, %1077 ]
  %1080 = load ptr, ptr %45, align 8, !tbaa !5
  %1081 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520) %1080)
  %1082 = load i64, ptr %82, align 8, !tbaa !9
  %1083 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIfjEEmbbbm(i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext %1081, i64 noundef %1082)
  store i64 %1083, ptr %128, align 8, !tbaa !9
  br label %1084

1084:                                             ; preds = %1078, %1065
  br label %1085

1085:                                             ; preds = %1084, %1049
  %1086 = load i64, ptr %128, align 8, !tbaa !9
  %1087 = load i64, ptr %85, align 8, !tbaa !9
  %1088 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %1086, i64 noundef %1087) #13
  br i1 %1088, label %1089, label %1091

1089:                                             ; preds = %1085
  call void @LogAssertFailure(i64 noundef 1171, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.45)
  call void @__assert_fail(ptr noundef @.str.46, ptr noundef @.str, i32 noundef 1171, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1090:                                             ; No predecessors!
  br label %1091

1091:                                             ; preds = %1090, %1085
  %1092 = phi i1 [ true, %1085 ], [ false, %1090 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #13
  %1093 = load i64, ptr %85, align 8, !tbaa !9
  store i64 %1093, ptr %129, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %130) #13
  store i8 0, ptr %130, align 1, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #13
  %1094 = load ptr, ptr %125, align 8, !tbaa !5
  %1095 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %1094)
  %1096 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %1095, i32 0, i32 16
  %1097 = load i64, ptr %1096, align 8, !tbaa !26
  store i64 %1097, ptr %131, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %132) #13
  %1098 = load ptr, ptr %45, align 8, !tbaa !5
  %1099 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520) %1098)
  %1100 = zext i1 %1099 to i8
  store i8 %1100, ptr %132, align 1, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #13
  %1101 = load i8, ptr %132, align 1, !tbaa !15, !range !21, !noundef !22
  %1102 = trunc i8 %1101 to i1
  br i1 %1102, label %1103, label %1109

1103:                                             ; preds = %1091
  %1104 = load i64, ptr %82, align 8, !tbaa !9
  %1105 = icmp eq i64 1, %1104
  br i1 %1105, label %1106, label %1107

1106:                                             ; preds = %1103
  store i64 32768, ptr %133, align 8, !tbaa !9
  br label %1108

1107:                                             ; preds = %1103
  store i64 1024, ptr %133, align 8, !tbaa !9
  br label %1108

1108:                                             ; preds = %1107, %1106
  br label %1115

1109:                                             ; preds = %1091
  %1110 = load i64, ptr %82, align 8, !tbaa !9
  %1111 = icmp eq i64 1, %1110
  br i1 %1111, label %1112, label %1113

1112:                                             ; preds = %1109
  store i64 1024, ptr %133, align 8, !tbaa !9
  br label %1114

1113:                                             ; preds = %1109
  store i64 0, ptr %133, align 8, !tbaa !9
  br label %1114

1114:                                             ; preds = %1113, %1112
  br label %1115

1115:                                             ; preds = %1114, %1108
  %1116 = load i64, ptr %131, align 8, !tbaa !9
  %1117 = icmp ne i64 1, %1116
  br i1 %1117, label %1118, label %1135

1118:                                             ; preds = %1115
  %1119 = load i64, ptr %85, align 8, !tbaa !9
  %1120 = icmp ne i64 1, %1119
  br i1 %1120, label %1121, label %1135

1121:                                             ; preds = %1118
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #13
  %1122 = load i64, ptr %128, align 8, !tbaa !9
  %1123 = load i64, ptr %85, align 8, !tbaa !9
  %1124 = mul i64 %1122, %1123
  %1125 = load i64, ptr %131, align 8, !tbaa !9
  %1126 = mul i64 %1124, %1125
  store i64 %1126, ptr %134, align 8, !tbaa !9
  %1127 = load i64, ptr %134, align 8, !tbaa !9
  %1128 = load i64, ptr %133, align 8, !tbaa !9
  %1129 = icmp ule i64 %1127, %1128
  br i1 %1129, label %1130, label %1134

1130:                                             ; preds = %1121
  store i8 1, ptr %130, align 1, !tbaa !15
  %1131 = load i64, ptr %131, align 8, !tbaa !9
  %1132 = load i64, ptr %129, align 8, !tbaa !9
  %1133 = mul i64 %1132, %1131
  store i64 %1133, ptr %129, align 8, !tbaa !9
  br label %1134

1134:                                             ; preds = %1130, %1121
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #13
  br label %1135

1135:                                             ; preds = %1134, %1118, %1115
  %1136 = load ptr, ptr %119, align 8, !tbaa !5
  %1137 = load i64, ptr %128, align 8, !tbaa !9
  %1138 = load i64, ptr %129, align 8, !tbaa !9
  call void @_ZN14NAMESPACE_MAIN7BinBase7ZeroMemEmmm(ptr noundef nonnull align 1 dereferenceable(1) %1136, i64 noundef %1137, i64 noundef %1138, i64 noundef 0)
  call void @llvm.lifetime.start.p0(i64 80, ptr %135) #13
  %1139 = load i8, ptr %130, align 1, !tbaa !15, !range !21, !noundef !22
  %1140 = trunc i8 %1139 to i1
  %1141 = zext i1 %1140 to i64
  %1142 = select i1 %1140, i32 1, i32 0
  %1143 = getelementptr inbounds %struct.BinSumsBoostingBridge, ptr %135, i32 0, i32 0
  store i32 %1142, ptr %1143, align 8, !tbaa !27
  %1144 = load i8, ptr %132, align 1, !tbaa !15, !range !21, !noundef !22
  %1145 = trunc i8 %1144 to i1
  %1146 = zext i1 %1145 to i64
  %1147 = select i1 %1145, i32 1, i32 0
  %1148 = getelementptr inbounds %struct.BinSumsBoostingBridge, ptr %135, i32 0, i32 1
  store i32 %1147, ptr %1148, align 4, !tbaa !29
  %1149 = load i64, ptr %82, align 8, !tbaa !9
  %1150 = getelementptr inbounds %struct.BinSumsBoostingBridge, ptr %135, i32 0, i32 2
  store i64 %1149, ptr %1150, align 8, !tbaa !30
  %1151 = load i32, ptr %127, align 4, !tbaa !11
  %1152 = getelementptr inbounds %struct.BinSumsBoostingBridge, ptr %135, i32 0, i32 3
  store i32 %1151, ptr %1152, align 8, !tbaa !31
  %1153 = load ptr, ptr %125, align 8, !tbaa !5
  %1154 = call noundef i64 @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(56) %1153)
  %1155 = getelementptr inbounds %struct.BinSumsBoostingBridge, ptr %135, i32 0, i32 4
  store i64 %1154, ptr %1155, align 8, !tbaa !32
  %1156 = load i64, ptr %128, align 8, !tbaa !9
  %1157 = load i64, ptr %85, align 8, !tbaa !9
  %1158 = mul i64 %1156, %1157
  %1159 = getelementptr inbounds %struct.BinSumsBoostingBridge, ptr %135, i32 0, i32 5
  store i64 %1158, ptr %1159, align 8, !tbaa !33
  %1160 = load ptr, ptr %125, align 8, !tbaa !5
  %1161 = call noundef ptr @_ZN14NAMESPACE_MAIN18DataSubsetBoosting11GetGradHessEv(ptr noundef nonnull align 8 dereferenceable(56) %1160)
  %1162 = getelementptr inbounds %struct.BinSumsBoostingBridge, ptr %135, i32 0, i32 6
  store ptr %1161, ptr %1162, align 8, !tbaa !34
  %1163 = load ptr, ptr %125, align 8, !tbaa !5
  %1164 = load i64, ptr %124, align 8, !tbaa !9
  %1165 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting17GetSubsetInnerBagEm(ptr noundef nonnull align 8 dereferenceable(56) %1163, i64 noundef %1164)
  %1166 = call noundef ptr @_ZNK14NAMESPACE_MAIN14SubsetInnerBag10GetWeightsEv(ptr noundef nonnull align 8 dereferenceable(8) %1165)
  %1167 = getelementptr inbounds %struct.BinSumsBoostingBridge, ptr %135, i32 0, i32 7
  store ptr %1166, ptr %1167, align 8, !tbaa !35
  %1168 = load i64, ptr %46, align 8, !tbaa !9
  %1169 = icmp eq i64 -2, %1168
  br i1 %1169, label %1170, label %1171

1170:                                             ; preds = %1135
  br label %1175

1171:                                             ; preds = %1135
  %1172 = load ptr, ptr %125, align 8, !tbaa !5
  %1173 = load i64, ptr %46, align 8, !tbaa !9
  %1174 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting11GetTermDataEm(ptr noundef nonnull align 8 dereferenceable(56) %1172, i64 noundef %1173)
  br label %1175

1175:                                             ; preds = %1171, %1170
  %1176 = phi ptr [ null, %1170 ], [ %1174, %1171 ]
  %1177 = getelementptr inbounds %struct.BinSumsBoostingBridge, ptr %135, i32 0, i32 8
  store ptr %1176, ptr %1177, align 8, !tbaa !36
  %1178 = load ptr, ptr %119, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.BinSumsBoostingBridge, ptr %135, i32 0, i32 9
  store ptr %1178, ptr %1179, align 8, !tbaa !37
  %1180 = load ptr, ptr %119, align 8, !tbaa !5
  %1181 = load i64, ptr %128, align 8, !tbaa !9
  %1182 = load i64, ptr %129, align 8, !tbaa !9
  %1183 = mul i64 %1181, %1182
  %1184 = call noundef ptr @_ZN14NAMESPACE_MAINL8IndexBinEPNS_7BinBaseEm(ptr noundef %1180, i64 noundef %1183)
  %1185 = getelementptr inbounds %struct.BinSumsBoostingBridge, ptr %135, i32 0, i32 10
  store ptr %1184, ptr %1185, align 8, !tbaa !38
  %1186 = load ptr, ptr %125, align 8, !tbaa !5
  %1187 = call noundef i32 @_ZN14NAMESPACE_MAIN18DataSubsetBoosting15BinSumsBoostingEP21BinSumsBoostingBridge(ptr noundef nonnull align 8 dereferenceable(56) %1186, ptr noundef %135)
  store i32 %1187, ptr %36, align 4, !tbaa !11
  %1188 = load i32, ptr %36, align 4, !tbaa !11
  %1189 = icmp ne i32 0, %1188
  br i1 %1189, label %1190, label %1192

1190:                                             ; preds = %1175
  %1191 = load i32, ptr %36, align 4, !tbaa !11
  store i32 %1191, ptr %18, align 4
  store i32 1, ptr %43, align 4
  br label %1298

1192:                                             ; preds = %1175
  call void @llvm.lifetime.start.p0(i64 1, ptr %136) #13
  %1193 = load ptr, ptr %125, align 8, !tbaa !5
  %1194 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %1193)
  %1195 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %1194, i32 0, i32 18
  %1196 = load i64, ptr %1195, align 8, !tbaa !23
  %1197 = icmp eq i64 8, %1196
  %1198 = zext i1 %1197 to i8
  store i8 %1198, ptr %136, align 1, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %137) #13
  %1199 = load ptr, ptr %125, align 8, !tbaa !5
  %1200 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %1199)
  %1201 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %1200, i32 0, i32 17
  %1202 = load i64, ptr %1201, align 8, !tbaa !25
  %1203 = icmp eq i64 8, %1202
  %1204 = zext i1 %1203 to i8
  store i8 %1204, ptr %137, align 1, !tbaa !15
  %1205 = load ptr, ptr %125, align 8, !tbaa !5
  %1206 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %1205, i32 1
  store ptr %1206, ptr %125, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #13
  %1207 = load ptr, ptr %119, align 8, !tbaa !5
  store ptr %1207, ptr %138, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #13
  store i64 0, ptr %139, align 8, !tbaa !9
  br label %1208

1208:                                             ; preds = %1293, %1192
  %1209 = load i64, ptr %139, align 8, !tbaa !9
  %1210 = load i64, ptr %131, align 8, !tbaa !9
  %1211 = icmp ult i64 %1209, %1210
  br i1 %1211, label %1213, label %1212

1212:                                             ; preds = %1208
  store i32 64, ptr %43, align 4
  br label %1296

1213:                                             ; preds = %1208
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #13
  store ptr null, ptr %140, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #13
  store ptr null, ptr %141, align 8, !tbaa !5
  %1214 = load ptr, ptr %126, align 8, !tbaa !5
  %1215 = load ptr, ptr %125, align 8, !tbaa !5
  %1216 = icmp eq ptr %1214, %1215
  br i1 %1216, label %1217, label %1268

1217:                                             ; preds = %1213
  %1218 = load i8, ptr %130, align 1, !tbaa !15, !range !21, !noundef !22
  %1219 = trunc i8 %1218 to i1
  br i1 %1219, label %1220, label %1225

1220:                                             ; preds = %1217
  %1221 = load i64, ptr %139, align 8, !tbaa !9
  %1222 = load i64, ptr %131, align 8, !tbaa !9
  %1223 = sub i64 %1222, 1
  %1224 = icmp eq i64 %1221, %1223
  br i1 %1224, label %1225, label %1268

1225:                                             ; preds = %1220, %1217
  %1226 = load i64, ptr %85, align 8, !tbaa !9
  %1227 = icmp eq i64 1, %1226
  br i1 %1227, label %1228, label %1235

1228:                                             ; preds = %1225
  %1229 = load ptr, ptr %45, align 8, !tbaa !5
  %1230 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %1229)
  %1231 = call noundef ptr @_ZN14NAMESPACE_MAIN15DataSetBoosting18GetDataSetInnerBagEv(ptr noundef nonnull align 8 dereferenceable(40) %1230)
  %1232 = load i64, ptr %124, align 8, !tbaa !9
  %1233 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInnerBag", ptr %1231, i64 %1232
  %1234 = call noundef ptr @_ZNK14NAMESPACE_MAIN15DataSetInnerBag13GetTotalCountEv(ptr noundef nonnull align 8 dereferenceable(24) %1233)
  br label %1245

1235:                                             ; preds = %1225
  %1236 = load ptr, ptr %45, align 8, !tbaa !5
  %1237 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %1236)
  %1238 = call noundef ptr @_ZN14NAMESPACE_MAIN15DataSetBoosting18GetDataSetInnerBagEv(ptr noundef nonnull align 8 dereferenceable(40) %1237)
  %1239 = load i64, ptr %124, align 8, !tbaa !9
  %1240 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInnerBag", ptr %1238, i64 %1239
  %1241 = call noundef ptr @_ZNK14NAMESPACE_MAIN15DataSetInnerBag16GetTermInnerBagsEv(ptr noundef nonnull align 8 dereferenceable(24) %1240)
  %1242 = load i64, ptr %46, align 8, !tbaa !9
  %1243 = getelementptr inbounds %"struct.NAMESPACE_MAIN::TermInnerBag", ptr %1241, i64 %1242
  %1244 = call noundef ptr @_ZNK14NAMESPACE_MAIN12TermInnerBag9GetCountsEv(ptr noundef nonnull align 8 dereferenceable(16) %1243)
  br label %1245

1245:                                             ; preds = %1235, %1228
  %1246 = phi ptr [ %1234, %1228 ], [ %1244, %1235 ]
  store ptr %1246, ptr %140, align 8, !tbaa !5
  %1247 = load i64, ptr %85, align 8, !tbaa !9
  %1248 = icmp eq i64 1, %1247
  br i1 %1248, label %1249, label %1256

1249:                                             ; preds = %1245
  %1250 = load ptr, ptr %45, align 8, !tbaa !5
  %1251 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %1250)
  %1252 = call noundef ptr @_ZN14NAMESPACE_MAIN15DataSetBoosting18GetDataSetInnerBagEv(ptr noundef nonnull align 8 dereferenceable(40) %1251)
  %1253 = load i64, ptr %124, align 8, !tbaa !9
  %1254 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInnerBag", ptr %1252, i64 %1253
  %1255 = call noundef ptr @_ZNK14NAMESPACE_MAIN15DataSetInnerBag14GetTotalWeightEv(ptr noundef nonnull align 8 dereferenceable(24) %1254)
  br label %1266

1256:                                             ; preds = %1245
  %1257 = load ptr, ptr %45, align 8, !tbaa !5
  %1258 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %1257)
  %1259 = call noundef ptr @_ZN14NAMESPACE_MAIN15DataSetBoosting18GetDataSetInnerBagEv(ptr noundef nonnull align 8 dereferenceable(40) %1258)
  %1260 = load i64, ptr %124, align 8, !tbaa !9
  %1261 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInnerBag", ptr %1259, i64 %1260
  %1262 = call noundef ptr @_ZNK14NAMESPACE_MAIN15DataSetInnerBag16GetTermInnerBagsEv(ptr noundef nonnull align 8 dereferenceable(24) %1261)
  %1263 = load i64, ptr %46, align 8, !tbaa !9
  %1264 = getelementptr inbounds %"struct.NAMESPACE_MAIN::TermInnerBag", ptr %1262, i64 %1263
  %1265 = call noundef ptr @_ZNK14NAMESPACE_MAIN12TermInnerBag10GetWeightsEv(ptr noundef nonnull align 8 dereferenceable(16) %1264)
  br label %1266

1266:                                             ; preds = %1256, %1249
  %1267 = phi ptr [ %1255, %1249 ], [ %1265, %1256 ]
  store ptr %1267, ptr %141, align 8, !tbaa !5
  br label %1268

1268:                                             ; preds = %1266, %1220, %1213
  %1269 = load i64, ptr %82, align 8, !tbaa !9
  %1270 = load ptr, ptr %45, align 8, !tbaa !5
  %1271 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520) %1270)
  %1272 = load i64, ptr %85, align 8, !tbaa !9
  %1273 = load i8, ptr %136, align 1, !tbaa !15, !range !21, !noundef !22
  %1274 = trunc i8 %1273 to i1
  %1275 = load i8, ptr %137, align 1, !tbaa !15, !range !21, !noundef !22
  %1276 = trunc i8 %1275 to i1
  %1277 = load ptr, ptr %138, align 8, !tbaa !5
  %1278 = load ptr, ptr %140, align 8, !tbaa !5
  %1279 = load ptr, ptr %141, align 8, !tbaa !5
  %1280 = load ptr, ptr %122, align 8, !tbaa !5
  call void @_ZN14NAMESPACE_MAIN13ConvertAddBinEmbmbbbbPKvPKmPKdbbPv(i64 noundef %1269, i1 noundef zeroext %1271, i64 noundef %1272, i1 noundef zeroext %1274, i1 noundef zeroext %1276, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef %1277, ptr noundef %1278, ptr noundef %1279, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef %1280)
  %1281 = load i8, ptr %130, align 1, !tbaa !15, !range !21, !noundef !22
  %1282 = trunc i8 %1281 to i1
  br i1 %1282, label %1284, label %1283

1283:                                             ; preds = %1268
  store i32 64, ptr %43, align 4
  br label %1290

1284:                                             ; preds = %1268
  %1285 = load ptr, ptr %138, align 8, !tbaa !5
  %1286 = load i64, ptr %128, align 8, !tbaa !9
  %1287 = load i64, ptr %85, align 8, !tbaa !9
  %1288 = mul i64 %1286, %1287
  %1289 = call noundef ptr @_ZN14NAMESPACE_MAINL8IndexBinEPNS_7BinBaseEm(ptr noundef %1285, i64 noundef %1288)
  store ptr %1289, ptr %138, align 8, !tbaa !5
  store i32 0, ptr %43, align 4
  br label %1290

1290:                                             ; preds = %1284, %1283
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #13
  %1291 = load i32, ptr %43, align 4
  switch i32 %1291, label %1296 [
    i32 0, label %1292
  ]

1292:                                             ; preds = %1290
  br label %1293

1293:                                             ; preds = %1292
  %1294 = load i64, ptr %139, align 8, !tbaa !9
  %1295 = add i64 %1294, 1
  store i64 %1295, ptr %139, align 8, !tbaa !9
  br label %1208, !llvm.loop !39

1296:                                             ; preds = %1290, %1212
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #13
  br label %1297

1297:                                             ; preds = %1296
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %137) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %136) #13
  store i32 0, ptr %43, align 4
  br label %1298

1298:                                             ; preds = %1297, %1190
  call void @llvm.lifetime.end.p0(i64 80, ptr %135) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %132) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #13
  %1299 = load i32, ptr %43, align 4
  switch i32 %1299, label %1496 [
    i32 0, label %1300
  ]

1300:                                             ; preds = %1298
  br label %1301

1301:                                             ; preds = %1300
  %1302 = load ptr, ptr %126, align 8, !tbaa !5
  %1303 = load ptr, ptr %125, align 8, !tbaa !5
  %1304 = icmp ne ptr %1302, %1303
  br i1 %1304, label %999, label %1305, !llvm.loop !40

1305:                                             ; preds = %1301
  %1306 = load i64, ptr %85, align 8, !tbaa !9
  %1307 = icmp eq i64 1, %1306
  br i1 %1307, label %1308, label %1321

1308:                                             ; preds = %1305
  br label %1309

1309:                                             ; preds = %1308
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #13
  store i32 2, ptr %142, align 4, !tbaa !11
  %1310 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %1311 = icmp sle i32 2, %1310
  br i1 %1311, label %1312, label %1313

1312:                                             ; preds = %1309
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__25_)
  br label %1313

1313:                                             ; preds = %1312, %1309
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #13
  br label %1314

1314:                                             ; preds = %1313
  br label %1315

1315:                                             ; preds = %1314
  %1316 = load ptr, ptr %44, align 8, !tbaa !5
  %1317 = load i32, ptr %22, align 4, !tbaa !11
  %1318 = load double, ptr %68, align 8, !tbaa !13
  %1319 = load double, ptr %70, align 8, !tbaa !13
  %1320 = load double, ptr %72, align 8, !tbaa !13
  call void @_ZN14NAMESPACE_MAINL20BoostZeroDimensionalEPNS_12BoosterShellEiddd(ptr noundef %1316, i32 noundef %1317, double noundef %1318, double noundef %1319, double noundef %1320)
  br label %1483

1321:                                             ; preds = %1305
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #13
  %1322 = load ptr, ptr %45, align 8, !tbaa !5
  %1323 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %1322)
  %1324 = load i64, ptr %124, align 8, !tbaa !9
  %1325 = call noundef double @_ZNK14NAMESPACE_MAIN15DataSetBoosting17GetBagWeightTotalEm(ptr noundef nonnull align 8 dereferenceable(40) %1323, i64 noundef %1324)
  store double %1325, ptr %143, align 8, !tbaa !13
  %1326 = load double, ptr %143, align 8, !tbaa !13
  %1327 = fcmp olt double 0.000000e+00, %1326
  br i1 %1327, label %1330, label %1328

1328:                                             ; preds = %1321
  call void @LogAssertFailure(i64 noundef 1289, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.47)
  call void @__assert_fail(ptr noundef @.str.48, ptr noundef @.str, i32 noundef 1289, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1329:                                             ; No predecessors!
  br label %1330

1330:                                             ; preds = %1329, %1321
  %1331 = phi i1 [ true, %1321 ], [ false, %1329 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #13
  %1332 = load i32, ptr %22, align 4, !tbaa !11
  %1333 = and i32 64, %1332
  %1334 = icmp ne i32 0, %1333
  br i1 %1334, label %1335, label %1351

1335:                                             ; preds = %1330
  %1336 = load ptr, ptr %110, align 8, !tbaa !5
  %1337 = load ptr, ptr %44, align 8, !tbaa !5
  %1338 = load i64, ptr %46, align 8, !tbaa !9
  %1339 = load i32, ptr %22, align 4, !tbaa !11
  %1340 = load double, ptr %68, align 8, !tbaa !13
  %1341 = load double, ptr %70, align 8, !tbaa !13
  %1342 = load double, ptr %72, align 8, !tbaa !13
  %1343 = load ptr, ptr %33, align 8, !tbaa !5
  %1344 = load i32, ptr %91, align 4, !tbaa !11
  %1345 = call noundef i32 @_ZN14NAMESPACE_MAINL11BoostRandomEPNS_19RandomDeterministicEPNS_12BoosterShellEmidddPKliPd(ptr noundef %1336, ptr noundef %1337, i64 noundef %1338, i32 noundef %1339, double noundef %1340, double noundef %1341, double noundef %1342, ptr noundef %1343, i32 noundef %1344, ptr noundef %144)
  store i32 %1345, ptr %36, align 4, !tbaa !11
  %1346 = load i32, ptr %36, align 4, !tbaa !11
  %1347 = icmp ne i32 0, %1346
  br i1 %1347, label %1348, label %1350

1348:                                             ; preds = %1335
  %1349 = load i32, ptr %36, align 4, !tbaa !11
  store i32 %1349, ptr %18, align 4
  store i32 1, ptr %43, align 4
  br label %1480

1350:                                             ; preds = %1335
  br label %1444

1351:                                             ; preds = %1330
  %1352 = load i64, ptr %93, align 8, !tbaa !9
  %1353 = icmp eq i64 1, %1352
  br i1 %1353, label %1354, label %1428

1354:                                             ; preds = %1351
  %1355 = load ptr, ptr %33, align 8, !tbaa !5
  %1356 = icmp ne ptr null, %1355
  br i1 %1356, label %1359, label %1357

1357:                                             ; preds = %1354
  call void @LogAssertFailure(i64 noundef 1309, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.49)
  call void @__assert_fail(ptr noundef @.str.50, ptr noundef @.str, i32 noundef 1309, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1358:                                             ; No predecessors!
  br label %1359

1359:                                             ; preds = %1358, %1354
  %1360 = phi i1 [ true, %1354 ], [ false, %1358 ]
  %1361 = load i64, ptr %86, align 8, !tbaa !9
  %1362 = icmp sle i64 2, %1361
  br i1 %1362, label %1365, label %1363

1363:                                             ; preds = %1359
  call void @LogAssertFailure(i64 noundef 1310, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.51)
  call void @__assert_fail(ptr noundef @.str.52, ptr noundef @.str, i32 noundef 1310, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1364:                                             ; No predecessors!
  br label %1365

1365:                                             ; preds = %1364, %1359
  %1366 = phi i1 [ true, %1359 ], [ false, %1364 ]
  %1367 = load i64, ptr %87, align 8, !tbaa !9
  %1368 = icmp ule i64 2, %1367
  br i1 %1368, label %1371, label %1369

1369:                                             ; preds = %1365
  call void @LogAssertFailure(i64 noundef 1311, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.13)
  call void @__assert_fail(ptr noundef @.str.14, ptr noundef @.str, i32 noundef 1311, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1370:                                             ; No predecessors!
  br label %1371

1371:                                             ; preds = %1370, %1365
  %1372 = phi i1 [ true, %1365 ], [ false, %1370 ]
  %1373 = load ptr, ptr %47, align 8, !tbaa !5
  %1374 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term22GetCountRealDimensionsEv(ptr noundef nonnull align 8 dereferenceable(776) %1373) #13
  %1375 = icmp eq i64 1, %1374
  br i1 %1375, label %1378, label %1376

1376:                                             ; preds = %1371
  call void @LogAssertFailure(i64 noundef 1313, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.53)
  call void @__assert_fail(ptr noundef @.str.54, ptr noundef @.str, i32 noundef 1313, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1377:                                             ; No predecessors!
  br label %1378

1378:                                             ; preds = %1377, %1371
  %1379 = phi i1 [ true, %1371 ], [ false, %1377 ]
  %1380 = load i64, ptr %87, align 8, !tbaa !9
  %1381 = load ptr, ptr %47, align 8, !tbaa !5
  %1382 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %1381) #13
  %1383 = icmp eq i64 %1380, %1382
  br i1 %1383, label %1386, label %1384

1384:                                             ; preds = %1378
  call void @LogAssertFailure(i64 noundef 1314, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.55)
  call void @__assert_fail(ptr noundef @.str.56, ptr noundef @.str, i32 noundef 1314, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1385:                                             ; No predecessors!
  br label %1386

1386:                                             ; preds = %1385, %1378
  %1387 = phi i1 [ true, %1378 ], [ false, %1385 ]
  %1388 = load ptr, ptr %47, align 8, !tbaa !5
  %1389 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term21GetCountAuxillaryBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %1388) #13
  %1390 = icmp eq i64 0, %1389
  br i1 %1390, label %1393, label %1391

1391:                                             ; preds = %1386
  call void @LogAssertFailure(i64 noundef 1315, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.57)
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str, i32 noundef 1315, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1392:                                             ; No predecessors!
  br label %1393

1393:                                             ; preds = %1392, %1386
  %1394 = phi i1 [ true, %1386 ], [ false, %1392 ]
  %1395 = load ptr, ptr %110, align 8, !tbaa !5
  %1396 = load ptr, ptr %44, align 8, !tbaa !5
  %1397 = load i8, ptr %88, align 1, !tbaa !15, !range !21, !noundef !22
  %1398 = trunc i8 %1397 to i1
  %1399 = load i8, ptr %89, align 1, !tbaa !15, !range !21, !noundef !22
  %1400 = trunc i8 %1399 to i1
  %1401 = load i8, ptr %90, align 1, !tbaa !15, !range !21, !noundef !22
  %1402 = trunc i8 %1401 to i1
  %1403 = load i32, ptr %22, align 4, !tbaa !11
  %1404 = load i64, ptr %87, align 8, !tbaa !9
  %1405 = load ptr, ptr %45, align 8, !tbaa !5
  %1406 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %1405)
  %1407 = load i64, ptr %124, align 8, !tbaa !9
  %1408 = call noundef i64 @_ZNK14NAMESPACE_MAIN15DataSetBoosting16GetBagCountTotalEm(ptr noundef nonnull align 8 dereferenceable(40) %1406, i64 noundef %1407)
  %1409 = load double, ptr %143, align 8, !tbaa !13
  %1410 = load i64, ptr %92, align 8, !tbaa !9
  %1411 = load i64, ptr %64, align 8, !tbaa !9
  %1412 = load double, ptr %66, align 8, !tbaa !13
  %1413 = load double, ptr %68, align 8, !tbaa !13
  %1414 = load double, ptr %70, align 8, !tbaa !13
  %1415 = load double, ptr %72, align 8, !tbaa !13
  %1416 = load i64, ptr %73, align 8, !tbaa !9
  %1417 = load double, ptr %75, align 8, !tbaa !13
  %1418 = load i64, ptr %77, align 8, !tbaa !9
  %1419 = load double, ptr %79, align 8, !tbaa !13
  %1420 = load i64, ptr %86, align 8, !tbaa !9
  %1421 = load i32, ptr %91, align 4, !tbaa !11
  %1422 = call noundef i32 @_ZN14NAMESPACE_MAINL22BoostSingleDimensionalEPNS_19RandomDeterministicEPNS_12BoosterShellEbbbimmdmmddddmdmdliPd(ptr noundef %1395, ptr noundef %1396, i1 noundef zeroext %1398, i1 noundef zeroext %1400, i1 noundef zeroext %1402, i32 noundef %1403, i64 noundef %1404, i64 noundef %1408, double noundef %1409, i64 noundef %1410, i64 noundef %1411, double noundef %1412, double noundef %1413, double noundef %1414, double noundef %1415, i64 noundef %1416, double noundef %1417, i64 noundef %1418, double noundef %1419, i64 noundef %1420, i32 noundef %1421, ptr noundef %144)
  store i32 %1422, ptr %36, align 4, !tbaa !11
  %1423 = load i32, ptr %36, align 4, !tbaa !11
  %1424 = icmp ne i32 0, %1423
  br i1 %1424, label %1425, label %1427

1425:                                             ; preds = %1393
  %1426 = load i32, ptr %36, align 4, !tbaa !11
  store i32 %1426, ptr %18, align 4
  store i32 1, ptr %43, align 4
  br label %1480

1427:                                             ; preds = %1393
  br label %1443

1428:                                             ; preds = %1351
  %1429 = load ptr, ptr %44, align 8, !tbaa !5
  %1430 = load i32, ptr %22, align 4, !tbaa !11
  %1431 = load i64, ptr %46, align 8, !tbaa !9
  %1432 = load i64, ptr %64, align 8, !tbaa !9
  %1433 = load double, ptr %66, align 8, !tbaa !13
  %1434 = load double, ptr %68, align 8, !tbaa !13
  %1435 = load double, ptr %70, align 8, !tbaa !13
  %1436 = load double, ptr %72, align 8, !tbaa !13
  %1437 = call noundef i32 @_ZN14NAMESPACE_MAINL21BoostMultiDimensionalEPNS_12BoosterShellEimmddddPd(ptr noundef %1429, i32 noundef %1430, i64 noundef %1431, i64 noundef %1432, double noundef %1433, double noundef %1434, double noundef %1435, double noundef %1436, ptr noundef %144)
  store i32 %1437, ptr %36, align 4, !tbaa !11
  %1438 = load i32, ptr %36, align 4, !tbaa !11
  %1439 = icmp ne i32 0, %1438
  br i1 %1439, label %1440, label %1442

1440:                                             ; preds = %1428
  %1441 = load i32, ptr %36, align 4, !tbaa !11
  store i32 %1441, ptr %18, align 4
  store i32 1, ptr %43, align 4
  br label %1480

1442:                                             ; preds = %1428
  br label %1443

1443:                                             ; preds = %1442, %1427
  br label %1444

1444:                                             ; preds = %1443, %1350
  %1445 = load double, ptr %144, align 8, !tbaa !13
  %1446 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1445)
  br i1 %1446, label %1447, label %1449

1447:                                             ; preds = %1444
  call void @LogAssertFailure(i64 noundef 1358, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.59)
  call void @__assert_fail(ptr noundef @.str.60, ptr noundef @.str, i32 noundef 1358, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1448:                                             ; No predecessors!
  br label %1449

1449:                                             ; preds = %1448, %1444
  %1450 = phi i1 [ true, %1444 ], [ false, %1448 ]
  %1451 = load double, ptr %144, align 8, !tbaa !13
  %1452 = fcmp oeq double 0.000000e+00, %1451
  br i1 %1452, label %1458, label %1453

1453:                                             ; preds = %1449
  %1454 = load double, ptr %144, align 8, !tbaa !13
  %1455 = fcmp ole double 0x10000000000000, %1454
  br i1 %1455, label %1458, label %1456

1456:                                             ; preds = %1453
  call void @LogAssertFailure(i64 noundef 1359, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.61)
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str, i32 noundef 1359, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1457:                                             ; No predecessors!
  br label %1458

1458:                                             ; preds = %1457, %1453, %1449
  %1459 = phi i1 [ true, %1453 ], [ true, %1449 ], [ false, %1457 ]
  %1460 = load double, ptr %144, align 8, !tbaa !13
  %1461 = load double, ptr %143, align 8, !tbaa !13
  %1462 = fdiv double %1460, %1461
  %1463 = load double, ptr %109, align 8, !tbaa !13
  %1464 = fmul double %1462, %1463
  store double %1464, ptr %144, align 8, !tbaa !13
  %1465 = load double, ptr %144, align 8, !tbaa !13
  %1466 = load double, ptr %105, align 8, !tbaa !13
  %1467 = fadd double %1466, %1465
  store double %1467, ptr %105, align 8, !tbaa !13
  %1468 = load double, ptr %105, align 8, !tbaa !13
  %1469 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1468)
  br i1 %1469, label %1470, label %1472

1470:                                             ; preds = %1458
  call void @LogAssertFailure(i64 noundef 1365, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.63)
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str, i32 noundef 1365, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1471:                                             ; No predecessors!
  br label %1472

1472:                                             ; preds = %1471, %1458
  %1473 = phi i1 [ true, %1458 ], [ false, %1471 ]
  %1474 = load double, ptr %105, align 8, !tbaa !13
  %1475 = fcmp ole double 0.000000e+00, %1474
  br i1 %1475, label %1478, label %1476

1476:                                             ; preds = %1472
  call void @LogAssertFailure(i64 noundef 1366, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.65)
  call void @__assert_fail(ptr noundef @.str.66, ptr noundef @.str, i32 noundef 1366, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1477:                                             ; No predecessors!
  br label %1478

1478:                                             ; preds = %1477, %1472
  %1479 = phi i1 [ true, %1472 ], [ false, %1477 ]
  store i32 0, ptr %43, align 4
  br label %1480

1480:                                             ; preds = %1478, %1440, %1425, %1348
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #13
  %1481 = load i32, ptr %43, align 4
  switch i32 %1481, label %1496 [
    i32 0, label %1482
  ]

1482:                                             ; preds = %1480
  br label %1483

1483:                                             ; preds = %1482, %1315
  %1484 = load ptr, ptr %44, align 8, !tbaa !5
  %1485 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell13GetTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %1484)
  %1486 = load ptr, ptr %44, align 8, !tbaa !5
  %1487 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell18GetInnerTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %1486)
  %1488 = call noundef i32 @_ZN14NAMESPACE_MAIN6Tensor3AddERKS0_(ptr noundef nonnull align 8 dereferenceable(72) %1485, ptr noundef nonnull align 8 dereferenceable(72) %1487)
  store i32 %1488, ptr %36, align 4, !tbaa !11
  %1489 = load i32, ptr %36, align 4, !tbaa !11
  %1490 = icmp ne i32 0, %1489
  br i1 %1490, label %1491, label %1493

1491:                                             ; preds = %1483
  %1492 = load i32, ptr %36, align 4, !tbaa !11
  store i32 %1492, ptr %18, align 4
  store i32 1, ptr %43, align 4
  br label %1496

1493:                                             ; preds = %1483
  %1494 = load i64, ptr %124, align 8, !tbaa !9
  %1495 = add i64 %1494, 1
  store i64 %1495, ptr %124, align 8, !tbaa !9
  store i32 0, ptr %43, align 4
  br label %1496

1496:                                             ; preds = %1493, %1491, %1480, %1298
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #13
  %1497 = load i32, ptr %43, align 4
  switch i32 %1497, label %1577 [
    i32 0, label %1498
  ]

1498:                                             ; preds = %1496
  br label %1499

1499:                                             ; preds = %1498
  %1500 = load i64, ptr %84, align 8, !tbaa !9
  %1501 = load i64, ptr %124, align 8, !tbaa !9
  %1502 = icmp ne i64 %1500, %1501
  br i1 %1502, label %974, label %1503, !llvm.loop !41

1503:                                             ; preds = %1499
  %1504 = load double, ptr %105, align 8, !tbaa !13
  %1505 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1504)
  br i1 %1505, label %1506, label %1508

1506:                                             ; preds = %1503
  call void @LogAssertFailure(i64 noundef 1381, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.63)
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str, i32 noundef 1381, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1507:                                             ; No predecessors!
  br label %1508

1508:                                             ; preds = %1507, %1503
  %1509 = phi i1 [ true, %1503 ], [ false, %1507 ]
  %1510 = load double, ptr %105, align 8, !tbaa !13
  %1511 = fcmp ole double 0.000000e+00, %1510
  br i1 %1511, label %1514, label %1512

1512:                                             ; preds = %1508
  call void @LogAssertFailure(i64 noundef 1382, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.67)
  call void @__assert_fail(ptr noundef @.str.68, ptr noundef @.str, i32 noundef 1382, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1513:                                             ; No predecessors!
  br label %1514

1514:                                             ; preds = %1513, %1508
  %1515 = phi i1 [ true, %1508 ], [ false, %1513 ]
  %1516 = load double, ptr %105, align 8, !tbaa !13
  %1517 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #13
  %1518 = fcmp ole double %1516, %1517
  %1519 = xor i1 %1518, true
  %1520 = xor i1 %1519, true
  %1521 = zext i1 %1520 to i64
  %1522 = call i64 @llvm.expect.i64(i64 %1521, i64 1)
  %1523 = icmp ne i64 %1522, 0
  %1524 = xor i1 %1523, true
  %1525 = xor i1 %1524, true
  %1526 = xor i1 %1525, true
  %1527 = zext i1 %1526 to i64
  %1528 = call i64 @llvm.expect.i64(i64 %1527, i64 0)
  %1529 = icmp ne i64 %1528, 0
  br i1 %1529, label %1530, label %1531

1530:                                             ; preds = %1514
  store double 0xFFEFFFFFFFFFFFFF, ptr %105, align 8, !tbaa !13
  br label %1550

1531:                                             ; preds = %1514
  %1532 = load double, ptr %105, align 8, !tbaa !13
  %1533 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1532)
  br i1 %1533, label %1534, label %1536

1534:                                             ; preds = %1531
  call void @LogAssertFailure(i64 noundef 1398, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.63)
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str, i32 noundef 1398, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1535:                                             ; No predecessors!
  br label %1536

1536:                                             ; preds = %1535, %1531
  %1537 = phi i1 [ true, %1531 ], [ false, %1535 ]
  %1538 = load double, ptr %105, align 8, !tbaa !13
  %1539 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1538)
  br i1 %1539, label %1540, label %1542

1540:                                             ; preds = %1536
  call void @LogAssertFailure(i64 noundef 1399, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.69)
  call void @__assert_fail(ptr noundef @.str.70, ptr noundef @.str, i32 noundef 1399, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1541:                                             ; No predecessors!
  br label %1542

1542:                                             ; preds = %1541, %1536
  %1543 = phi i1 [ true, %1536 ], [ false, %1541 ]
  %1544 = load double, ptr %105, align 8, !tbaa !13
  %1545 = fcmp ole double 0.000000e+00, %1544
  br i1 %1545, label %1548, label %1546

1546:                                             ; preds = %1542
  call void @LogAssertFailure(i64 noundef 1400, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.65)
  call void @__assert_fail(ptr noundef @.str.66, ptr noundef @.str, i32 noundef 1400, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1547:                                             ; No predecessors!
  br label %1548

1548:                                             ; preds = %1547, %1542
  %1549 = phi i1 [ true, %1542 ], [ false, %1547 ]
  br label %1550

1550:                                             ; preds = %1548, %1530
  br label %1551

1551:                                             ; preds = %1550
  call void @llvm.lifetime.start.p0(i64 4, ptr %145) #13
  store i32 4, ptr %145, align 4, !tbaa !11
  %1552 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %1553 = icmp sle i32 4, %1552
  br i1 %1553, label %1554, label %1555

1554:                                             ; preds = %1551
  call void @InteralLogWithoutArguments(i32 noundef 4, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__26_)
  br label %1555

1555:                                             ; preds = %1554, %1551
  call void @llvm.lifetime.end.p0(i64 4, ptr %145) #13
  br label %1556

1556:                                             ; preds = %1555
  br label %1557

1557:                                             ; preds = %1556
  call void @llvm.lifetime.start.p0(i64 1, ptr %146) #13
  %1558 = load ptr, ptr %44, align 8, !tbaa !5
  %1559 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell13GetTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %1558)
  %1560 = load double, ptr %108, align 8, !tbaa !13
  %1561 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN6Tensor25MultiplyAndCheckForIssuesEd(ptr noundef nonnull align 8 dereferenceable(72) %1559, double noundef %1560)
  %1562 = zext i1 %1561 to i8
  store i8 %1562, ptr %146, align 1, !tbaa !15
  %1563 = load i8, ptr %146, align 1, !tbaa !15, !range !21, !noundef !22
  %1564 = trunc i8 %1563 to i1
  %1565 = xor i1 %1564, true
  %1566 = xor i1 %1565, true
  %1567 = zext i1 %1566 to i64
  %1568 = call i64 @llvm.expect.i64(i64 %1567, i64 0)
  %1569 = icmp ne i64 %1568, 0
  br i1 %1569, label %1570, label %1576

1570:                                             ; preds = %1557
  %1571 = load ptr, ptr %44, align 8, !tbaa !5
  %1572 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell13GetTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %1571)
  %1573 = load i64, ptr %94, align 8, !tbaa !9
  call void @_ZN14NAMESPACE_MAIN6Tensor18SetCountDimensionsEm(ptr noundef nonnull align 8 dereferenceable(72) %1572, i64 noundef %1573)
  %1574 = load ptr, ptr %44, align 8, !tbaa !5
  %1575 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell13GetTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %1574)
  call void @_ZN14NAMESPACE_MAIN6Tensor5ResetEv(ptr noundef nonnull align 8 dereferenceable(72) %1575)
  store double 0xFFEFFFFFFFFFFFFF, ptr %105, align 8, !tbaa !13
  br label %1576

1576:                                             ; preds = %1570, %1557
  call void @llvm.lifetime.end.p0(i64 1, ptr %146) #13
  store i32 0, ptr %43, align 4
  br label %1577

1577:                                             ; preds = %1576, %1496
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #13
  br label %1578

1578:                                             ; preds = %1577, %878
  call void @llvm.lifetime.end.p0(i64 24, ptr %111) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #13
  %1579 = load i32, ptr %43, align 4
  switch i32 %1579, label %1660 [
    i32 0, label %1580
  ]

1580:                                             ; preds = %1578
  br label %1581

1581:                                             ; preds = %1580, %751
  %1582 = load ptr, ptr %44, align 8, !tbaa !5
  %1583 = load i64, ptr %46, align 8, !tbaa !9
  call void @_ZN14NAMESPACE_MAIN12BoosterShell12SetTermIndexEm(ptr noundef nonnull align 8 dereferenceable(112) %1582, i64 noundef %1583)
  %1584 = load double, ptr %105, align 8, !tbaa !13
  %1585 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1584)
  br i1 %1585, label %1586, label %1588

1586:                                             ; preds = %1581
  call void @LogAssertFailure(i64 noundef 1423, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.63)
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str, i32 noundef 1423, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1587:                                             ; No predecessors!
  br label %1588

1588:                                             ; preds = %1587, %1581
  %1589 = phi i1 [ true, %1581 ], [ false, %1587 ]
  %1590 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #13
  %1591 = load double, ptr %105, align 8, !tbaa !13
  %1592 = fcmp une double %1590, %1591
  br i1 %1592, label %1595, label %1593

1593:                                             ; preds = %1588
  call void @LogAssertFailure(i64 noundef 1424, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.71)
  call void @__assert_fail(ptr noundef @.str.72, ptr noundef @.str, i32 noundef 1424, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1594:                                             ; No predecessors!
  br label %1595

1595:                                             ; preds = %1594, %1588
  %1596 = phi i1 [ true, %1588 ], [ false, %1594 ]
  %1597 = load double, ptr %105, align 8, !tbaa !13
  %1598 = fcmp oeq double 0xFFEFFFFFFFFFFFFF, %1597
  br i1 %1598, label %1604, label %1599

1599:                                             ; preds = %1595
  %1600 = load double, ptr %105, align 8, !tbaa !13
  %1601 = fcmp ole double 0.000000e+00, %1600
  br i1 %1601, label %1604, label %1602

1602:                                             ; preds = %1599
  call void @LogAssertFailure(i64 noundef 1425, ptr noundef @.str, ptr noundef @__func__.GenerateTermUpdate, ptr noundef @.str.73)
  call void @__assert_fail(ptr noundef @.str.74, ptr noundef @.str, i32 noundef 1425, ptr noundef @__PRETTY_FUNCTION__.GenerateTermUpdate) #14
  unreachable

1603:                                             ; No predecessors!
  br label %1604

1604:                                             ; preds = %1603, %1599, %1595
  %1605 = phi i1 [ true, %1599 ], [ true, %1595 ], [ false, %1603 ]
  %1606 = load ptr, ptr %35, align 8, !tbaa !5
  %1607 = icmp ne ptr null, %1606
  br i1 %1607, label %1608, label %1611

1608:                                             ; preds = %1604
  %1609 = load double, ptr %105, align 8, !tbaa !13
  %1610 = load ptr, ptr %35, align 8, !tbaa !5
  store double %1609, ptr %1610, align 8, !tbaa !13
  br label %1611

1611:                                             ; preds = %1608, %1604
  %1612 = load ptr, ptr %47, align 8, !tbaa !5
  %1613 = icmp eq ptr null, %1612
  br i1 %1613, label %1614, label %1623

1614:                                             ; preds = %1611
  br label %1615

1615:                                             ; preds = %1614
  call void @llvm.lifetime.start.p0(i64 4, ptr %147) #13
  store i32 3, ptr %147, align 4, !tbaa !11
  %1616 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %1617 = icmp sle i32 3, %1616
  br i1 %1617, label %1618, label %1620

1618:                                             ; preds = %1615
  %1619 = load double, ptr %105, align 8, !tbaa !13
  call void (i32, ptr, ...) @InteralLogWithArguments(i32 noundef 3, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__27_, double noundef %1619)
  br label %1620

1620:                                             ; preds = %1618, %1615
  call void @llvm.lifetime.end.p0(i64 4, ptr %147) #13
  br label %1621

1621:                                             ; preds = %1620
  br label %1622

1622:                                             ; preds = %1621
  br label %1659

1623:                                             ; preds = %1611
  br label %1624

1624:                                             ; preds = %1623
  call void @llvm.lifetime.start.p0(i64 4, ptr %148) #13
  store i32 3, ptr %148, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %149) #13
  store i32 4, ptr %149, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %150) #13
  %1625 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  store i32 %1625, ptr %150, align 4, !tbaa !11
  %1626 = load i32, ptr %150, align 4, !tbaa !11
  %1627 = icmp sle i32 3, %1626
  br i1 %1627, label %1628, label %1656

1628:                                             ; preds = %1624
  br label %1629

1629:                                             ; preds = %1628
  call void @llvm.lifetime.start.p0(i64 4, ptr %151) #13
  %1630 = load i32, ptr %150, align 4, !tbaa !11
  %1631 = icmp slt i32 %1630, 4
  br i1 %1631, label %1632, label %1647

1632:                                             ; preds = %1629
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #13
  %1633 = load ptr, ptr %47, align 8, !tbaa !5
  %1634 = call noundef ptr @_ZN14NAMESPACE_MAIN4Term48GetPointerCountLogExitGenerateTermUpdateMessagesEv(ptr noundef nonnull align 8 dereferenceable(776) %1633) #13
  store ptr %1634, ptr %152, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %153) #13
  %1635 = load ptr, ptr %152, align 8, !tbaa !5
  %1636 = load i32, ptr %1635, align 4, !tbaa !11
  %1637 = sub nsw i32 %1636, 1
  store i32 %1637, ptr %153, align 4, !tbaa !11
  %1638 = load i32, ptr %153, align 4, !tbaa !11
  %1639 = icmp slt i32 %1638, 0
  br i1 %1639, label %1640, label %1641

1640:                                             ; preds = %1632
  store i32 75, ptr %43, align 4
  br label %1644

1641:                                             ; preds = %1632
  %1642 = load i32, ptr %153, align 4, !tbaa !11
  %1643 = load ptr, ptr %152, align 8, !tbaa !5
  store i32 %1642, ptr %1643, align 4, !tbaa !11
  store i32 3, ptr %151, align 4, !tbaa !11
  store i32 0, ptr %43, align 4
  br label %1644

1644:                                             ; preds = %1641, %1640
  call void @llvm.lifetime.end.p0(i64 4, ptr %153) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #13
  %1645 = load i32, ptr %43, align 4
  switch i32 %1645, label %1651 [
    i32 0, label %1646
  ]

1646:                                             ; preds = %1644
  br label %1648

1647:                                             ; preds = %1629
  store i32 4, ptr %151, align 4, !tbaa !11
  br label %1648

1648:                                             ; preds = %1647, %1646
  %1649 = load i32, ptr %151, align 4, !tbaa !11
  %1650 = load double, ptr %105, align 8, !tbaa !13
  call void (i32, ptr, ...) @InteralLogWithArguments(i32 noundef %1649, ptr noundef @_ZZ18GenerateTermUpdateE13LOG__sMessage__28_, double noundef %1650)
  store i32 0, ptr %43, align 4
  br label %1651

1651:                                             ; preds = %1648, %1644
  call void @llvm.lifetime.end.p0(i64 4, ptr %151) #13
  %1652 = load i32, ptr %43, align 4
  switch i32 %1652, label %1674 [
    i32 0, label %1653
    i32 75, label %1655
  ]

1653:                                             ; preds = %1651
  br label %1654

1654:                                             ; preds = %1653
  br label %1655

1655:                                             ; preds = %1654, %1651
  br label %1656

1656:                                             ; preds = %1655, %1624
  call void @llvm.lifetime.end.p0(i64 4, ptr %150) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %148) #13
  br label %1657

1657:                                             ; preds = %1656
  br label %1658

1658:                                             ; preds = %1657
  br label %1659

1659:                                             ; preds = %1658, %1622
  store i32 0, ptr %18, align 4
  store i32 1, ptr %43, align 4
  br label %1660

1660:                                             ; preds = %1659, %1578
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #13
  br label %1661

1661:                                             ; preds = %1660, %608
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #13
  br label %1662

1662:                                             ; preds = %1661, %571
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #13
  br label %1663

1663:                                             ; preds = %1662, %352, %335, %259, %238
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #13
  br label %1664

1664:                                             ; preds = %1663, %215
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #13
  %1665 = load i32, ptr %18, align 4
  ret i32 %1665

1666:                                             ; preds = %881
  %1667 = load ptr, ptr %114, align 8
  %1668 = load i32, ptr %115, align 4
  %1669 = insertvalue { ptr, i32 } poison, ptr %1667, 0
  %1670 = insertvalue { ptr, i32 } %1669, i32 %1668, 1
  resume { ptr, i32 } %1670

1671:                                             ; preds = %868, %860
  %1672 = landingpad { ptr, i32 }
          catch ptr null
  %1673 = extractvalue { ptr, i32 } %1672, 0
  call void @__clang_call_terminate(ptr %1673) #14
  unreachable

1674:                                             ; preds = %1651, %300, %193
  unreachable
}

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

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

declare void @InteralLogWithArguments(i32 noundef, ptr noundef, ...) #2

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell25GetBoosterShellFromHandleEP14_BoosterHandle(ptr noundef) #4 align 2

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell14GetBoosterCoreEv(ptr noundef nonnull align 8 dereferenceable(112)) #4 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN11BoosterCore13GetCountTermsEv(ptr noundef nonnull align 8 dereferenceable(520)) #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK14NAMESPACE_MAIN11BoosterCore8GetTermsEv(ptr noundef nonnull align 8 dereferenceable(520)) #7 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef) #7

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN11BoosterCore14GetCountScoresEv(ptr noundef nonnull align 8 dereferenceable(520)) #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN11BoosterCore17GetCountInnerBagsEv(ptr noundef nonnull align 8 dereferenceable(520)) #7 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK14NAMESPACE_MAIN15FeatureBoosting9IsMissingEv(ptr noundef nonnull align 8 dereferenceable(16)) #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK14NAMESPACE_MAIN15FeatureBoosting8IsUnseenEv(ptr noundef nonnull align 8 dereferenceable(16)) #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK14NAMESPACE_MAIN15FeatureBoosting9IsNominalEv(ptr noundef nonnull align 8 dereferenceable(16)) #7 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell13GetTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell18GetInnerTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN14NAMESPACE_MAIN6Tensor18SetCountDimensionsEm(ptr noundef nonnull align 8 dereferenceable(72), i64 noundef) #9 align 2

declare void @_ZN14NAMESPACE_MAIN6Tensor5ResetEv(ptr noundef nonnull align 8 dereferenceable(72)) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520)) #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN15DataSetBoosting15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(40)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZN14NAMESPACE_MAIN11BoosterCore16GradientConstantEv(ptr noundef nonnull align 8 dereferenceable(520)) #9 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore41LearningRateAdjustmentDifferentialPrivacyEv(ptr noundef nonnull align 8 dereferenceable(520)) #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore38LearningRateAdjustmentGradientBoostingEv(ptr noundef nonnull align 8 dereferenceable(520)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZN14NAMESPACE_MAIN11BoosterCore15HessianConstantEv(ptr noundef nonnull align 8 dereferenceable(520)) #9 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore37LearningRateAdjustmentHessianBoostingEv(ptr noundef nonnull align 8 dereferenceable(520)) #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore30GainAdjustmentGradientBoostingEv(ptr noundef nonnull align 8 dereferenceable(520)) #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore29GainAdjustmentHessianBoostingEv(ptr noundef nonnull align 8 dereferenceable(520)) #7 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN14NAMESPACE_MAIN22RandomNondeterministicImEC2Ev(ptr noundef nonnull align 8 dereferenceable(5016)) unnamed_addr #4 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) #4 align 2

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

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

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) #11

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell23GetBoostingFastBinsTempEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIdmEEmbbbm(i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i64 noundef) #9

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520)) #9 align 2

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell19GetBoostingMainBinsEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN15DataSetBoosting15GetCountSubsetsEv(ptr noundef nonnull align 8 dereferenceable(40)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN15DataSetBoosting10GetSubsetsEv(ptr noundef nonnull align 8 dereferenceable(40)) #9 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIfmEEmbbbm(i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i64 noundef) #9

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN14NAMESPACE_MAIN7BinBase7ZeroMemEmmm(ptr noundef nonnull align 1 dereferenceable(1), i64 noundef, i64 noundef, i64 noundef) #7 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting17GetSubsetInnerBagEm(ptr noundef nonnull align 8 dereferenceable(56), i64 noundef) #9 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting11GetTermDataEm(ptr noundef nonnull align 8 dereferenceable(56), i64 noundef) #9 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN14NAMESPACE_MAIN18DataSubsetBoosting15BinSumsBoostingEP21BinSumsBoostingBridge(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef) #9 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN15DataSetBoosting18GetDataSetInnerBagEv(ptr noundef nonnull align 8 dereferenceable(40)) #9 align 2

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

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

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

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

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

declare void @_ZN14NAMESPACE_MAIN13ConvertAddBinEmbmbbbbPKvPKmPKdbbPv(i64 noundef, i1 noundef zeroext, i64 noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext, i1 noundef zeroext, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN14NAMESPACE_MAINL20BoostZeroDimensionalEPNS_12BoosterShellEiddd(ptr noundef, i32 noundef, double noundef, double noundef, double noundef) #0

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZNK14NAMESPACE_MAIN15DataSetBoosting17GetBagWeightTotalEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #9 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN14NAMESPACE_MAINL11BoostRandomEPNS_19RandomDeterministicEPNS_12BoosterShellEmidddPKliPd(ptr noundef, ptr noundef, i64 noundef, i32 noundef, double noundef, double noundef, double noundef, ptr noundef, i32 noundef, ptr noundef) #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN14NAMESPACE_MAINL22BoostSingleDimensionalEPNS_19RandomDeterministicEPNS_12BoosterShellEbbbimmdmmddddmdmdliPd(ptr noundef, ptr noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i32 noundef, i64 noundef, i64 noundef, double noundef, i64 noundef, i64 noundef, double noundef, double noundef, double noundef, double noundef, i64 noundef, double noundef, i64 noundef, double noundef, i64 noundef, i32 noundef, ptr noundef) #0

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN15DataSetBoosting16GetBagCountTotalEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #9 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN14NAMESPACE_MAINL21BoostMultiDimensionalEPNS_12BoosterShellEimmddddPd(ptr noundef, i32 noundef, i64 noundef, i64 noundef, double noundef, double noundef, double noundef, double noundef, ptr noundef) #0

declare noundef i32 @_ZN14NAMESPACE_MAIN6Tensor3AddERKS0_(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72)) #2

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

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

declare noundef zeroext i1 @_ZN14NAMESPACE_MAIN6Tensor25MultiplyAndCheckForIssuesEd(ptr noundef nonnull align 8 dereferenceable(72), double noundef) #2

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

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

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

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


; 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.BinSumsBoostingBridge = type { i32, i32, i64, i32, i64, i64, ptr, ptr, ptr, ptr, ptr }
%"struct.NAMESPACE_MAIN::TermFeature" = type { ptr, i64, i64 }
%"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 }

@g_traceLevel = external local_unnamed_addr global i32, align 4
@_ZN14NAMESPACE_MAINL24g_cLogGenerateTermUpdateE = external hidden local_unnamed_addr global i32, align 4
@_ZZ18GenerateTermUpdateE13LOG__sMessage = external hidden constant [328 x i8], align 16
@.str = external hidden unnamed_addr constant [92 x i8], align 1
@__func__.GenerateTermUpdate = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [27 x i8], align 1
@__PRETTY_FUNCTION__.GenerateTermUpdate = external hidden unnamed_addr constant [224 x i8], align 1
@_ZZ18GenerateTermUpdateE13LOG__sMessage_0 = external hidden constant [58 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage_1 = external hidden constant [27 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage_2 = external hidden constant [74 x i8], align 16
@.str.3 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [39 x i8], align 1
@_ZZ18GenerateTermUpdateE13LOG__sMessage_3 = external hidden constant [27 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage_4 = external hidden constant [72 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage_5 = external hidden constant [70 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage_6 = external hidden constant [70 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage_7 = external hidden constant [47 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage_8 = external hidden constant [53 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage_9 = external hidden constant [48 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__10_ = external hidden constant [52 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__11_ = external hidden constant [81 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__12_ = external hidden constant [92 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__13_ = external hidden constant [87 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__14_ = external hidden constant [88 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__15_ = external hidden constant [81 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__16_ = external hidden constant [102 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__17_ = external hidden constant [90 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__18_ = external hidden constant [98 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__19_ = external hidden constant [98 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__20_ = external hidden constant [51 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__21_ = external hidden constant [55 x i8], align 16
@.str.5 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [71 x i8], align 1
@_ZZ18GenerateTermUpdateE13LOG__sMessage__22_ = external hidden constant [81 x i8], align 16
@.str.13 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [50 x i8], align 1
@_ZTISt9bad_alloc = external constant ptr
@_ZZ18GenerateTermUpdateE13LOG__sMessage__23_ = external hidden constant [63 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__24_ = external hidden constant [63 x i8], align 16
@.str.23 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [51 x i8], align 1
@_ZZ18GenerateTermUpdateE13LOG__sMessage__25_ = external hidden constant [53 x i8], align 16
@.str.47 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZZ18GenerateTermUpdateE13LOG__sMessage__26_ = external hidden constant [42 x i8], align 16
@.str.71 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [58 x i8], align 1
@_ZZ18GenerateTermUpdateE13LOG__sMessage__27_ = external hidden constant [39 x i8], align 16
@_ZZ18GenerateTermUpdateE13LOG__sMessage__28_ = external hidden constant [39 x i8], align 16

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @GenerateTermUpdate(ptr noundef %0, ptr noundef %1, i64 noundef %2, i32 noundef %3, double noundef %4, i64 noundef %5, double noundef %6, double noundef %7, double noundef %8, double noundef %9, i64 noundef %10, double noundef %11, i64 noundef %12, double noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %18 = alloca %"class.NAMESPACE_MAIN::RandomDeterministic", align 8
  %19 = alloca %"class.NAMESPACE_MAIN::RandomNondeterministic", align 8
  %20 = alloca %struct.BinSumsBoostingBridge, align 8
  %21 = alloca double, align 8
  %22 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %23 = icmp sgt i32 %22, 2
  br i1 %23, label %24, label %.critedge

24:                                               ; preds = %17
  %25 = icmp eq i32 %22, 3
  br i1 %25, label %26, label %31

26:                                               ; preds = %24
  %27 = load i32, ptr @_ZN14NAMESPACE_MAINL24g_cLogGenerateTermUpdateE, align 4, !tbaa !5
  %28 = icmp sgt i32 %27, 0
  br i1 %28, label %29, label %.critedge

29:                                               ; preds = %26
  %30 = add nsw i32 %27, -1
  store i32 %30, ptr @_ZN14NAMESPACE_MAINL24g_cLogGenerateTermUpdateE, align 4, !tbaa !5
  br label %31

31:                                               ; preds = %29, %24
  %.1457 = phi i32 [ 3, %29 ], [ 4, %24 ]
  tail call void (i32, ptr, ...) @InteralLogWithArguments(i32 noundef %.1457, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage, ptr noundef %0, ptr noundef %1, i64 noundef %2, i32 noundef %3, double noundef %4, i64 noundef %5, double noundef %6, double noundef %7, double noundef %8, double noundef %9, i64 noundef %10, double noundef %11, i64 noundef %12, double noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16)
  br label %.critedge

.critedge:                                        ; preds = %31, %26, %17
  %.not = icmp eq ptr %16, null
  br i1 %.not, label %33, label %32, !prof !9

32:                                               ; preds = %.critedge
  store double 0xFFEFFFFFFFFFFFFF, ptr %16, align 8, !tbaa !10
  br label %33

33:                                               ; preds = %32, %.critedge
  %34 = tail call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell25GetBoosterShellFromHandleEP14_BoosterHandle(ptr noundef %1)
  %35 = icmp eq ptr %34, null
  br i1 %35, label %.critedge643, label %36

36:                                               ; preds = %33
  tail call void @_ZN14NAMESPACE_MAIN12BoosterShell12SetTermIndexEm(ptr noundef nonnull align 8 dereferenceable(112) %34, i64 noundef -1)
  %37 = tail call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell14GetBoosterCoreEv(ptr noundef nonnull align 8 dereferenceable(112) %34)
  %.not594 = icmp eq ptr %37, null
  br i1 %.not594, label %38, label %39

38:                                               ; preds = %36
  tail call void @LogAssertFailure(i64 noundef 786, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.1)
  tail call void @__assert_fail(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, i32 noundef 786, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

39:                                               ; preds = %36
  %40 = icmp slt i64 %2, 0
  br i1 %40, label %41, label %49

41:                                               ; preds = %39
  %.not597 = icmp eq i64 %2, -1
  %42 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  br i1 %.not597, label %46, label %43

43:                                               ; preds = %41
  %44 = icmp sgt i32 %42, 0
  br i1 %44, label %45, label %.critedge643

45:                                               ; preds = %43
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage_0)
  br label %.critedge643

46:                                               ; preds = %41
  %47 = icmp sgt i32 %42, 2
  br i1 %47, label %48, label %.critedge635

48:                                               ; preds = %46
  tail call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage_1)
  br label %.critedge635

49:                                               ; preds = %39
  %50 = tail call noundef i64 @_ZNK14NAMESPACE_MAIN11BoosterCore13GetCountTermsEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %.not595 = icmp sgt i64 %50, %2
  br i1 %.not595, label %55, label %51

51:                                               ; preds = %49
  %52 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %53 = icmp sgt i32 %52, 0
  br i1 %53, label %54, label %.critedge643

54:                                               ; preds = %51
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage_2)
  br label %.critedge643

55:                                               ; preds = %49
  %56 = tail call noundef ptr @_ZNK14NAMESPACE_MAIN11BoosterCore8GetTermsEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %.not596 = icmp eq ptr %56, null
  br i1 %.not596, label %57, label %58

57:                                               ; preds = %55
  tail call void @LogAssertFailure(i64 noundef 808, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.3)
  tail call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str, i32 noundef 808, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

58:                                               ; preds = %55
  %59 = tail call noundef ptr @_ZNK14NAMESPACE_MAIN11BoosterCore8GetTermsEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %60 = getelementptr inbounds ptr, ptr %59, i64 %2
  %61 = load ptr, ptr %60, align 8, !tbaa !12
  %62 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %63 = icmp sgt i32 %62, 2
  br i1 %63, label %64, label %.critedge635

64:                                               ; preds = %58
  %65 = icmp eq i32 %62, 3
  br i1 %65, label %66, label %72

66:                                               ; preds = %64
  %67 = tail call noundef ptr @_ZN14NAMESPACE_MAIN4Term49GetPointerCountLogEnterGenerateTermUpdateMessagesEv(ptr noundef nonnull align 8 dereferenceable(776) %61) #14
  %68 = load i32, ptr %67, align 4, !tbaa !5
  %69 = icmp sgt i32 %68, 0
  br i1 %69, label %70, label %.critedge635

70:                                               ; preds = %66
  %71 = add nsw i32 %68, -1
  store i32 %71, ptr %67, align 4, !tbaa !5
  br label %72

72:                                               ; preds = %70, %64
  %.1471 = phi i32 [ 3, %70 ], [ 4, %64 ]
  tail call void @InteralLogWithoutArguments(i32 noundef %.1471, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage_3)
  br label %.critedge635

.critedge635:                                     ; preds = %58, %66, %72, %46, %48
  %.0469 = phi ptr [ null, %48 ], [ null, %46 ], [ %61, %72 ], [ %61, %66 ], [ %61, %58 ]
  %.0468 = phi i64 [ -2, %48 ], [ -2, %46 ], [ %2, %72 ], [ %2, %66 ], [ %2, %58 ]
  %.not598 = icmp ugt i32 %3, 2047
  %73 = load i32, ptr @g_traceLevel, align 4
  %74 = icmp sgt i32 %73, 0
  %or.cond645 = select i1 %.not598, i1 %74, i1 false
  br i1 %or.cond645, label %75, label %76

75:                                               ; preds = %.critedge635
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage_4)
  br label %76

76:                                               ; preds = %75, %.critedge635
  %77 = and i32 %3, 128
  %.not599 = icmp eq i32 %77, 0
  %78 = and i32 %3, 768
  br i1 %.not599, label %84, label %79

79:                                               ; preds = %76
  %.not602 = icmp eq i32 %78, 0
  br i1 %.not602, label %89, label %80

80:                                               ; preds = %79
  %81 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %82 = icmp sgt i32 %81, 0
  br i1 %82, label %83, label %.critedge643

83:                                               ; preds = %80
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage_5)
  br label %.critedge643

84:                                               ; preds = %76
  %or.cond636.not = icmp eq i32 %78, 768
  br i1 %or.cond636.not, label %85, label %89

85:                                               ; preds = %84
  %86 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %87 = icmp sgt i32 %86, 0
  br i1 %87, label %88, label %.critedge643

88:                                               ; preds = %85
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage_6)
  br label %.critedge643

89:                                               ; preds = %84, %79
  %90 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %4)
  br i1 %90, label %91, label %94

91:                                               ; preds = %89
  %92 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %93 = icmp sgt i32 %92, 1
  br i1 %93, label %.sink.split, label %109

94:                                               ; preds = %89
  %95 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #14
  %96 = fcmp oeq double %95, %4
  br i1 %96, label %97, label %100

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

100:                                              ; preds = %94
  %101 = fcmp oeq double %4, 0.000000e+00
  br i1 %101, label %102, label %105

102:                                              ; preds = %100
  %103 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %104 = icmp sgt i32 %103, 1
  br i1 %104, label %.sink.split, label %109

105:                                              ; preds = %100
  %106 = fcmp olt double %4, 0.000000e+00
  %107 = load i32, ptr @g_traceLevel, align 4
  %108 = icmp sgt i32 %107, 1
  %or.cond647 = select i1 %106, i1 %108, i1 false
  br i1 %or.cond647, label %.sink.split, label %109

.sink.split:                                      ; preds = %105, %102, %97, %91
  %_ZZ18GenerateTermUpdateE13LOG__sMessage__10_.sink = phi ptr [ @_ZZ18GenerateTermUpdateE13LOG__sMessage_7, %91 ], [ @_ZZ18GenerateTermUpdateE13LOG__sMessage_8, %97 ], [ @_ZZ18GenerateTermUpdateE13LOG__sMessage_9, %102 ], [ @_ZZ18GenerateTermUpdateE13LOG__sMessage__10_, %105 ]
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull %_ZZ18GenerateTermUpdateE13LOG__sMessage__10_.sink)
  br label %109

109:                                              ; preds = %.sink.split, %102, %97, %91, %105
  %110 = icmp sgt i64 %5, 0
  br i1 %110, label %111, label %115

111:                                              ; preds = %109
  %112 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %5) #14
  br i1 %112, label %113, label %119

113:                                              ; preds = %111
  %114 = tail call noundef i64 @_ZNSt14numeric_limitsImE3maxEv() #14
  br label %119

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

118:                                              ; preds = %115
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage__11_)
  br label %119

119:                                              ; preds = %115, %118, %111, %113
  %.0472 = phi i64 [ %114, %113 ], [ %5, %111 ], [ 1, %118 ], [ 1, %115 ]
  %120 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #14
  %121 = fcmp ugt double %120, %6
  br i1 %121, label %122, label %128

122:                                              ; preds = %119
  %123 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #14
  %124 = fcmp ult double %6, 0.000000e+00
  %125 = load i32, ptr @g_traceLevel, align 4
  %126 = icmp sgt i32 %125, 1
  %or.cond649 = select i1 %124, i1 %126, i1 false
  br i1 %or.cond649, label %127, label %128

127:                                              ; preds = %122
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage__12_)
  br label %128

128:                                              ; preds = %127, %122, %119
  %.0473 = phi double [ %6, %119 ], [ %123, %122 ], [ %123, %127 ]
  %129 = fcmp ult double %7, 0.000000e+00
  br i1 %129, label %130, label %134

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

133:                                              ; preds = %130
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage__13_)
  br label %134

134:                                              ; preds = %130, %133, %128
  %.0479 = phi double [ %7, %128 ], [ 0.000000e+00, %133 ], [ 0.000000e+00, %130 ]
  %135 = fcmp ult double %8, 0.000000e+00
  br i1 %135, label %136, label %140

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

139:                                              ; preds = %136
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage__14_)
  br label %140

140:                                              ; preds = %136, %139, %134
  %.0480 = phi double [ %8, %134 ], [ 0.000000e+00, %139 ], [ 0.000000e+00, %136 ]
  %141 = fcmp ogt double %9, 0.000000e+00
  br i1 %141, label %144, label %142

142:                                              ; preds = %140
  %143 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #14
  br label %144

144:                                              ; preds = %142, %140
  %.0481 = phi double [ %9, %140 ], [ %143, %142 ]
  %145 = icmp sgt i64 %10, 0
  br i1 %145, label %146, label %150

146:                                              ; preds = %144
  %147 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %10) #14
  br i1 %147, label %148, label %154

148:                                              ; preds = %146
  %149 = tail call noundef i64 @_ZNSt14numeric_limitsImE3maxEv() #14
  br label %154

150:                                              ; preds = %144
  %151 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %152 = icmp sgt i32 %151, 1
  br i1 %152, label %153, label %154

153:                                              ; preds = %150
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage__15_)
  br label %154

154:                                              ; preds = %150, %153, %146, %148
  %.0483 = phi i64 [ %149, %148 ], [ %10, %146 ], [ 1, %153 ], [ 1, %150 ]
  %155 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #14
  %156 = fcmp ogt double %155, %11
  br i1 %156, label %157, label %163

157:                                              ; preds = %154
  %158 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #14
  %159 = fcmp olt double %11, 0.000000e+00
  %160 = load i32, ptr @g_traceLevel, align 4
  %161 = icmp sgt i32 %160, 1
  %or.cond651 = select i1 %159, i1 %161, i1 false
  br i1 %or.cond651, label %162, label %163

162:                                              ; preds = %157
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage__16_)
  br label %163

163:                                              ; preds = %162, %157, %154
  %.0484 = phi double [ %158, %157 ], [ %11, %154 ], [ %158, %162 ]
  %164 = icmp sgt i64 %12, 1
  br i1 %164, label %165, label %169

165:                                              ; preds = %163
  %166 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %12) #14
  br i1 %166, label %167, label %173

167:                                              ; preds = %165
  %168 = tail call noundef i64 @_ZNSt14numeric_limitsImE3maxEv() #14
  br label %173

169:                                              ; preds = %163
  %170 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %171 = icmp sgt i32 %170, 1
  br i1 %171, label %172, label %173

172:                                              ; preds = %169
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage__17_)
  br label %173

173:                                              ; preds = %169, %172, %165, %167
  %.0491 = phi i64 [ %168, %167 ], [ %12, %165 ], [ 2, %172 ], [ 2, %169 ]
  %174 = fcmp ugt double %13, 1.000000e+00
  br i1 %174, label %175, label %178

175:                                              ; preds = %173
  %176 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %177 = icmp sgt i32 %176, 1
  br i1 %177, label %.sink.split793, label %183

178:                                              ; preds = %173
  %179 = fcmp ult double %13, 0.000000e+00
  br i1 %179, label %180, label %183

180:                                              ; preds = %178
  %181 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %182 = icmp sgt i32 %181, 1
  br i1 %182, label %.sink.split793, label %183

.sink.split793:                                   ; preds = %180, %175
  %_ZZ18GenerateTermUpdateE13LOG__sMessage__19_.sink = phi ptr [ @_ZZ18GenerateTermUpdateE13LOG__sMessage__18_, %175 ], [ @_ZZ18GenerateTermUpdateE13LOG__sMessage__19_, %180 ]
  %.0497.ph = phi double [ 1.000000e+00, %175 ], [ 0.000000e+00, %180 ]
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull %_ZZ18GenerateTermUpdateE13LOG__sMessage__19_.sink)
  br label %183

183:                                              ; preds = %.sink.split793, %180, %175, %178
  %.0497 = phi double [ %13, %178 ], [ 1.000000e+00, %175 ], [ 0.000000e+00, %180 ], [ %.0497.ph, %.sink.split793 ]
  %184 = tail call noundef i64 @_ZNK14NAMESPACE_MAIN11BoosterCore14GetCountScoresEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %185 = icmp eq i64 %184, 0
  br i1 %185, label %186, label %192

186:                                              ; preds = %183
  br i1 %.not, label %188, label %187, !prof !9

187:                                              ; preds = %186
  store double 0.000000e+00, ptr %16, align 8, !tbaa !10
  br label %188

188:                                              ; preds = %187, %186
  tail call void @_ZN14NAMESPACE_MAIN12BoosterShell12SetTermIndexEm(ptr noundef nonnull align 8 dereferenceable(112) %34, i64 noundef %.0468)
  %189 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %190 = icmp sgt i32 %189, 1
  br i1 %190, label %191, label %.critedge643

191:                                              ; preds = %188
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage__20_)
  br label %.critedge643

192:                                              ; preds = %183
  %193 = tail call noundef i64 @_ZNK14NAMESPACE_MAIN11BoosterCore17GetCountInnerBagsEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %194 = icmp eq i64 %193, 0
  br i1 %194, label %197, label %195

195:                                              ; preds = %192
  %196 = tail call noundef i64 @_ZNK14NAMESPACE_MAIN11BoosterCore17GetCountInnerBagsEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  br label %197

197:                                              ; preds = %192, %195
  %198 = phi i64 [ %196, %195 ], [ 1, %192 ]
  %.not603 = icmp ne ptr %.0469, null
  br i1 %.not603, label %199, label %.thread

199:                                              ; preds = %197
  %200 = tail call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %.0469) #14
  %201 = icmp eq i64 %200, 0
  br i1 %201, label %202, label %208

202:                                              ; preds = %199
  br i1 %.not, label %204, label %203, !prof !9

203:                                              ; preds = %202
  store double 0.000000e+00, ptr %16, align 8, !tbaa !10
  br label %204

204:                                              ; preds = %203, %202
  tail call void @_ZN14NAMESPACE_MAIN12BoosterShell12SetTermIndexEm(ptr noundef nonnull align 8 dereferenceable(112) %34, i64 noundef %.0468)
  %205 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %206 = icmp sgt i32 %205, 1
  br i1 %206, label %207, label %.critedge643

207:                                              ; preds = %204
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage__21_)
  br label %.critedge643

208:                                              ; preds = %199
  %209 = tail call noundef i64 @_ZNK14NAMESPACE_MAIN4Term22GetCountRealDimensionsEv(ptr noundef nonnull align 8 dereferenceable(776) %.0469) #14
  %210 = tail call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountDimensionsEv(ptr noundef nonnull align 8 dereferenceable(776) %.0469) #14
  %211 = icmp ne ptr %14, null
  %212 = icmp ne i64 %209, 0
  %or.cond27 = and i1 %211, %212
  br i1 %or.cond27, label %213, label %.thread

213:                                              ; preds = %208
  %214 = tail call noundef ptr @_ZN14NAMESPACE_MAIN4Term15GetTermFeaturesEv(ptr noundef nonnull align 8 dereferenceable(776) %.0469) #14
  %.not604 = icmp eq i64 %210, 0
  br i1 %.not604, label %215, label %216

215:                                              ; preds = %213
  tail call void @LogAssertFailure(i64 noundef 989, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.5)
  tail call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, i32 noundef 989, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

216:                                              ; preds = %213
  %217 = getelementptr inbounds %"struct.NAMESPACE_MAIN::TermFeature", ptr %214, i64 %210
  %.not606 = icmp eq i64 %200, 1
  br i1 %.not606, label %.split.us, label %.split

.split.us:                                        ; preds = %216, %221
  %.0544.us = phi ptr [ %222, %221 ], [ %214, %216 ]
  %218 = load ptr, ptr %.0544.us, align 8, !tbaa !14
  %219 = tail call noundef i64 @_ZNK14NAMESPACE_MAIN15FeatureBoosting12GetCountBinsEv(ptr noundef nonnull align 8 dereferenceable(16) %218) #14
  %220 = icmp ugt i64 %219, 1
  br i1 %220, label %.split718.us, label %221

221:                                              ; preds = %.split.us
  %222 = getelementptr inbounds i8, ptr %.0544.us, i64 24
  %.not608.us = icmp eq ptr %217, %222
  br i1 %.not608.us, label %.split720.us.thread, label %.split.us, !llvm.loop !17

.split:                                           ; preds = %216
  %223 = icmp ugt i64 %209, 1
  br i1 %223, label %.split.split.us, label %.split.split

.split.split.us:                                  ; preds = %.split, %243
  %.0544.us727 = phi ptr [ %246, %243 ], [ %214, %.split ]
  %.0543.us728 = phi ptr [ %245, %243 ], [ %14, %.split ]
  %.0541.us729 = phi i64 [ %244, %243 ], [ 0, %.split ]
  %.0527.us730 = phi i64 [ %.1528.us741, %243 ], [ 0, %.split ]
  %.0520.us731 = phi i32 [ %.1521.us742, %243 ], [ 0, %.split ]
  %.0513.us732 = phi i8 [ %.1514.us743, %243 ], [ 0, %.split ]
  %.0510.us733 = phi i1 [ %.1511.us744, %243 ], [ false, %.split ]
  %.0507.us734 = phi i1 [ %.1508.us745, %243 ], [ false, %.split ]
  %.0504.us735 = phi i64 [ %.1505.us746, %243 ], [ 0, %.split ]
  %.0500.us736 = phi i64 [ %.2502.us747, %243 ], [ 0, %.split ]
  %.0452.us737 = phi ptr [ %.1453.us740, %243 ], [ %15, %.split ]
  %224 = load ptr, ptr %.0544.us727, align 8, !tbaa !14
  %225 = tail call noundef i64 @_ZNK14NAMESPACE_MAIN15FeatureBoosting12GetCountBinsEv(ptr noundef nonnull align 8 dereferenceable(16) %224) #14
  %.not605.us738 = icmp eq ptr %.0452.us737, null
  br i1 %.not605.us738, label %229, label %226

226:                                              ; preds = %.split.split.us
  %227 = load i32, ptr %.0452.us737, align 4, !tbaa !5
  %228 = getelementptr inbounds i8, ptr %.0452.us737, i64 4
  br label %229

229:                                              ; preds = %226, %.split.split.us
  %.0542.us739 = phi i32 [ %227, %226 ], [ 0, %.split.split.us ]
  %.1453.us740 = phi ptr [ %228, %226 ], [ null, %.split.split.us ]
  %230 = icmp ugt i64 %225, 1
  br i1 %230, label %231, label %243

231:                                              ; preds = %229
  %232 = tail call noundef zeroext i1 @_ZNK14NAMESPACE_MAIN15FeatureBoosting9IsMissingEv(ptr noundef nonnull align 8 dereferenceable(16) %224) #14
  %233 = tail call noundef zeroext i1 @_ZNK14NAMESPACE_MAIN15FeatureBoosting8IsUnseenEv(ptr noundef nonnull align 8 dereferenceable(16) %224) #14
  %234 = tail call noundef zeroext i1 @_ZNK14NAMESPACE_MAIN15FeatureBoosting9IsNominalEv(ptr noundef nonnull align 8 dereferenceable(16) %224) #14
  %235 = zext i1 %234 to i8
  %236 = or i32 %.0542.us739, %.0520.us731
  %237 = load i64, ptr %.0543.us728, align 8, !tbaa !19
  %238 = icmp slt i64 %237, 2
  br i1 %238, label %239, label %243

239:                                              ; preds = %231
  %.not607.us = icmp ne i64 %237, 1
  %240 = load i32, ptr @g_traceLevel, align 4
  %241 = icmp sgt i32 %240, 1
  %or.cond653.us = select i1 %.not607.us, i1 %241, i1 false
  br i1 %or.cond653.us, label %242, label %243

242:                                              ; preds = %239
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage__22_)
  br label %243

243:                                              ; preds = %242, %239, %231, %229
  %.1528.us741 = phi i64 [ %.0527.us730, %229 ], [ %.0541.us729, %231 ], [ %.0541.us729, %242 ], [ %.0541.us729, %239 ]
  %.1521.us742 = phi i32 [ %.0520.us731, %229 ], [ %236, %231 ], [ %236, %242 ], [ %236, %239 ]
  %.1514.us743 = phi i8 [ %.0513.us732, %229 ], [ %235, %231 ], [ %235, %242 ], [ %235, %239 ]
  %.1511.us744 = phi i1 [ %.0510.us733, %229 ], [ %233, %231 ], [ %233, %242 ], [ %233, %239 ]
  %.1508.us745 = phi i1 [ %.0507.us734, %229 ], [ %232, %231 ], [ %232, %242 ], [ %232, %239 ]
  %.1505.us746 = phi i64 [ %.0504.us735, %229 ], [ %225, %231 ], [ %225, %242 ], [ %225, %239 ]
  %.2502.us747 = phi i64 [ %.0500.us736, %229 ], [ %237, %231 ], [ %.0500.us736, %242 ], [ %.0500.us736, %239 ]
  %244 = add nuw nsw i64 %.0541.us729, 1
  %245 = getelementptr inbounds i8, ptr %.0543.us728, i64 8
  %246 = getelementptr inbounds i8, ptr %.0544.us727, i64 24
  %.not608.us748 = icmp eq ptr %217, %246
  br i1 %.not608.us748, label %.split720.us, label %.split.split.us, !llvm.loop !17

.split.split:                                     ; preds = %.split, %269
  %.0544 = phi ptr [ %272, %269 ], [ %214, %.split ]
  %.0543 = phi ptr [ %271, %269 ], [ %14, %.split ]
  %.0541 = phi i64 [ %270, %269 ], [ 0, %.split ]
  %.0527 = phi i64 [ %.1528, %269 ], [ 0, %.split ]
  %.0520 = phi i32 [ %.1521, %269 ], [ 0, %.split ]
  %.0513 = phi i8 [ %.1514, %269 ], [ 0, %.split ]
  %.0510 = phi i1 [ %.1511, %269 ], [ false, %.split ]
  %.0507 = phi i1 [ %.1508, %269 ], [ false, %.split ]
  %.0504 = phi i64 [ %.1505, %269 ], [ 0, %.split ]
  %.0500 = phi i64 [ %.2502, %269 ], [ 0, %.split ]
  %.0452 = phi ptr [ %.1453, %269 ], [ %15, %.split ]
  %247 = load ptr, ptr %.0544, align 8, !tbaa !14
  %248 = tail call noundef i64 @_ZNK14NAMESPACE_MAIN15FeatureBoosting12GetCountBinsEv(ptr noundef nonnull align 8 dereferenceable(16) %247) #14
  %.not605 = icmp eq ptr %.0452, null
  br i1 %.not605, label %252, label %249

249:                                              ; preds = %.split.split
  %250 = load i32, ptr %.0452, align 4, !tbaa !5
  %251 = getelementptr inbounds i8, ptr %.0452, i64 4
  br label %252

252:                                              ; preds = %249, %.split.split
  %.0542 = phi i32 [ %250, %249 ], [ 0, %.split.split ]
  %.1453 = phi ptr [ %251, %249 ], [ null, %.split.split ]
  %253 = icmp ugt i64 %248, 1
  br i1 %253, label %254, label %269

254:                                              ; preds = %252
  %255 = icmp eq i64 %.0500, 0
  br i1 %255, label %257, label %256

.split718.us:                                     ; preds = %.split.us
  tail call void @LogAssertFailure(i64 noundef 1002, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.7)
  tail call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str, i32 noundef 1002, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

256:                                              ; preds = %254
  tail call void @LogAssertFailure(i64 noundef 1003, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.9)
  tail call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, i32 noundef 1003, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

257:                                              ; preds = %254
  %258 = tail call noundef zeroext i1 @_ZNK14NAMESPACE_MAIN15FeatureBoosting9IsMissingEv(ptr noundef nonnull align 8 dereferenceable(16) %247) #14
  %259 = tail call noundef zeroext i1 @_ZNK14NAMESPACE_MAIN15FeatureBoosting8IsUnseenEv(ptr noundef nonnull align 8 dereferenceable(16) %247) #14
  %260 = tail call noundef zeroext i1 @_ZNK14NAMESPACE_MAIN15FeatureBoosting9IsNominalEv(ptr noundef nonnull align 8 dereferenceable(16) %247) #14
  %261 = zext i1 %260 to i8
  %262 = or i32 %.0542, %.0520
  %263 = load i64, ptr %.0543, align 8, !tbaa !19
  %264 = icmp slt i64 %263, 2
  br i1 %264, label %265, label %269

265:                                              ; preds = %257
  %.not607 = icmp ne i64 %263, 1
  %266 = load i32, ptr @g_traceLevel, align 4
  %267 = icmp sgt i32 %266, 1
  %or.cond653 = select i1 %.not607, i1 %267, i1 false
  br i1 %or.cond653, label %268, label %269

268:                                              ; preds = %265
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage__22_)
  br label %269

269:                                              ; preds = %265, %268, %257, %252
  %.1528 = phi i64 [ %.0527, %252 ], [ %.0541, %257 ], [ %.0541, %268 ], [ %.0541, %265 ]
  %.1521 = phi i32 [ %.0520, %252 ], [ %262, %257 ], [ %262, %268 ], [ %262, %265 ]
  %.1514 = phi i8 [ %.0513, %252 ], [ %261, %257 ], [ %261, %268 ], [ %261, %265 ]
  %.1511 = phi i1 [ %.0510, %252 ], [ %259, %257 ], [ %259, %268 ], [ %259, %265 ]
  %.1508 = phi i1 [ %.0507, %252 ], [ %258, %257 ], [ %258, %268 ], [ %258, %265 ]
  %.1505 = phi i64 [ %.0504, %252 ], [ %248, %257 ], [ %248, %268 ], [ %248, %265 ]
  %.2502 = phi i64 [ %.0500, %252 ], [ %263, %257 ], [ 0, %268 ], [ 0, %265 ]
  %270 = add nuw nsw i64 %.0541, 1
  %271 = getelementptr inbounds i8, ptr %.0543, i64 8
  %272 = getelementptr inbounds i8, ptr %.0544, i64 24
  %.not608 = icmp eq ptr %217, %272
  br i1 %.not608, label %.split720.us, label %.split.split, !llvm.loop !17

.split720.us:                                     ; preds = %269, %243
  %.us-phi = phi i64 [ %.1528.us741, %243 ], [ %.1528, %269 ]
  %.us-phi721 = phi i32 [ %.1521.us742, %243 ], [ %.1521, %269 ]
  %.us-phi722 = phi i8 [ %.1514.us743, %243 ], [ %.1514, %269 ]
  %.us-phi723 = phi i1 [ %.1511.us744, %243 ], [ %.1511, %269 ]
  %.us-phi724 = phi i1 [ %.1508.us745, %243 ], [ %.1508, %269 ]
  %.us-phi725 = phi i64 [ %.1505.us746, %243 ], [ %.1505, %269 ]
  %.us-phi726 = phi i64 [ %.2502.us747, %243 ], [ %.2502, %269 ]
  %273 = icmp ugt i64 %.us-phi725, 1
  br i1 %273, label %274, label %.split720.us.thread

.split720.us.thread:                              ; preds = %221, %.split720.us
  tail call void @LogAssertFailure(i64 noundef 1028, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.13)
  tail call void @__assert_fail(ptr noundef nonnull @.str.14, ptr noundef nonnull @.str, i32 noundef 1028, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

274:                                              ; preds = %.split720.us
  %275 = icmp eq i64 %.us-phi726, 0
  br label %.thread

.thread:                                          ; preds = %274, %197, %208
  %276 = phi i1 [ %275, %274 ], [ true, %208 ], [ true, %197 ]
  %.0498674 = phi i64 [ %200, %274 ], [ %200, %208 ], [ 1, %197 ]
  %.3503673 = phi i64 [ %.us-phi726, %274 ], [ 0, %208 ], [ 0, %197 ]
  %.2506672 = phi i64 [ %.us-phi725, %274 ], [ 0, %208 ], [ 0, %197 ]
  %.2509671 = phi i1 [ %.us-phi724, %274 ], [ false, %208 ], [ false, %197 ]
  %.2512670 = phi i1 [ %.us-phi723, %274 ], [ false, %208 ], [ false, %197 ]
  %.2515669 = phi i8 [ %.us-phi722, %274 ], [ 0, %208 ], [ 0, %197 ]
  %.2522668 = phi i32 [ %.us-phi721, %274 ], [ 0, %208 ], [ 0, %197 ]
  %.2529667 = phi i64 [ %.us-phi, %274 ], [ 0, %208 ], [ 0, %197 ]
  %.0530666 = phi i64 [ %209, %274 ], [ %209, %208 ], [ 0, %197 ]
  %.0540665 = phi i64 [ %210, %274 ], [ %210, %208 ], [ 0, %197 ]
  %277 = tail call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell13GetTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %34)
  %.not609 = icmp eq ptr %277, null
  br i1 %.not609, label %278, label %279

278:                                              ; preds = %.thread
  tail call void @LogAssertFailure(i64 noundef 1036, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.19)
  tail call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str, i32 noundef 1036, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

279:                                              ; preds = %.thread
  %280 = tail call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell18GetInnerTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %34)
  %.not610 = icmp eq ptr %280, null
  br i1 %.not610, label %281, label %282

281:                                              ; preds = %279
  tail call void @LogAssertFailure(i64 noundef 1037, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.21)
  tail call void @__assert_fail(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str, i32 noundef 1037, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

282:                                              ; preds = %279
  %283 = tail call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell13GetTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %34)
  tail call void @_ZN14NAMESPACE_MAIN6Tensor18SetCountDimensionsEm(ptr noundef nonnull align 8 dereferenceable(72) %283, i64 noundef %.0540665)
  %284 = tail call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell13GetTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %34)
  tail call void @_ZN14NAMESPACE_MAIN6Tensor5ResetEv(ptr noundef nonnull align 8 dereferenceable(72) %284)
  %285 = tail call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %286 = tail call noundef i64 @_ZNK14NAMESPACE_MAIN15DataSetBoosting15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(40) %285)
  %.not611 = icmp eq i64 %286, 0
  br i1 %.not611, label %623, label %287

287:                                              ; preds = %282
  %288 = tail call noundef double @_ZN14NAMESPACE_MAIN11BoosterCore16GradientConstantEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %289 = uitofp i64 %198 to double
  %290 = fdiv double %288, %289
  %291 = and i32 %3, 32
  %.not612 = icmp eq i32 %291, 0
  br i1 %.not612, label %295, label %292

292:                                              ; preds = %287
  %293 = tail call noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore41LearningRateAdjustmentDifferentialPrivacyEv(ptr noundef nonnull align 8 dereferenceable(520) %37) #14
  %294 = fmul double %290, %293
  br label %305

295:                                              ; preds = %287
  %296 = and i32 %3, 16
  %.not613 = icmp eq i32 %296, 0
  br i1 %.not613, label %300, label %297

297:                                              ; preds = %295
  %298 = tail call noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore38LearningRateAdjustmentGradientBoostingEv(ptr noundef nonnull align 8 dereferenceable(520) %37) #14
  %299 = fmul double %290, %298
  br label %305

300:                                              ; preds = %295
  %301 = tail call noundef double @_ZN14NAMESPACE_MAIN11BoosterCore15HessianConstantEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %302 = fdiv double %290, %301
  %303 = tail call noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore37LearningRateAdjustmentHessianBoostingEv(ptr noundef nonnull align 8 dereferenceable(520) %37) #14
  %304 = fmul double %302, %303
  br label %305

305:                                              ; preds = %297, %300, %292
  %.0526 = phi double [ %294, %292 ], [ %299, %297 ], [ %304, %300 ]
  %306 = and i32 %3, 2
  %.not614 = icmp eq i32 %306, 0
  br i1 %.not614, label %310, label %307

307:                                              ; preds = %305
  %308 = tail call noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore30GainAdjustmentGradientBoostingEv(ptr noundef nonnull align 8 dereferenceable(520) %37) #14
  %309 = fmul double %290, %308
  br label %315

310:                                              ; preds = %305
  %311 = tail call noundef double @_ZN14NAMESPACE_MAIN11BoosterCore15HessianConstantEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %312 = fdiv double %290, %311
  %313 = tail call noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore29GainAdjustmentHessianBoostingEv(ptr noundef nonnull align 8 dereferenceable(520) %37) #14
  %314 = fmul double %312, %313
  br label %315

315:                                              ; preds = %310, %307
  %.0525 = phi double [ %309, %307 ], [ %314, %310 ]
  %316 = fmul double %.0526, %4
  %317 = fmul double %288, %.0525
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #14
  %318 = icmp eq ptr %0, null
  br i1 %318, label %319, label %345

319:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 5016, ptr nonnull %19) #14
  invoke void @_ZN14NAMESPACE_MAIN22RandomNondeterministicImEC2Ev(ptr noundef nonnull align 8 dereferenceable(5016) %19)
          to label %320 unwind label %323

320:                                              ; preds = %319
  %321 = call noundef i64 @_ZNSt14numeric_limitsImE3maxEv() #14
  %322 = invoke noundef i64 @_ZN14NAMESPACE_MAIN22RandomNondeterministicImE4NextEm(ptr noundef nonnull align 8 dereferenceable(5016) %19, i64 noundef %321)
          to label %343 unwind label %325

323:                                              ; preds = %319
  %324 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9bad_alloc
          catch ptr null
  br label %327

325:                                              ; preds = %320
  %326 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9bad_alloc
          catch ptr null
  call void @_ZN14NAMESPACE_MAIN22RandomNondeterministicImED2Ev(ptr noundef nonnull align 8 dereferenceable(5016) %19) #14
  br label %327

327:                                              ; preds = %325, %323
  %.pn = phi { ptr, i32 } [ %326, %325 ], [ %324, %323 ]
  %.0516 = extractvalue { ptr, i32 } %.pn, 1
  %.0518 = extractvalue { ptr, i32 } %.pn, 0
  call void @llvm.lifetime.end.p0(i64 5016, ptr nonnull %19) #14
  %328 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9bad_alloc) #14
  %329 = icmp eq i32 %.0516, %328
  %330 = call ptr @__cxa_begin_catch(ptr %.0518) #14
  %331 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %332 = icmp sgt i32 %331, 1
  br i1 %329, label %333, label %335

333:                                              ; preds = %327
  br i1 %332, label %334, label %342

334:                                              ; preds = %333
  invoke void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage__24_)
          to label %342 unwind label %340

335:                                              ; preds = %327
  br i1 %332, label %336, label %339

336:                                              ; preds = %335
  invoke void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage__23_)
          to label %339 unwind label %337

337:                                              ; preds = %336
  %338 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %344 unwind label %651

339:                                              ; preds = %336, %335
  call void @__cxa_end_catch()
  br label %.thread676

340:                                              ; preds = %334
  %341 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %344 unwind label %651

342:                                              ; preds = %334, %333
  call void @__cxa_end_catch()
  br label %.thread676

343:                                              ; preds = %320
  call void @_ZN14NAMESPACE_MAIN22RandomNondeterministicImED2Ev(ptr noundef nonnull align 8 dereferenceable(5016) %19) #14
  call void @llvm.lifetime.end.p0(i64 5016, ptr nonnull %19) #14
  call void @_ZN14NAMESPACE_MAIN19RandomDeterministic10InitializeEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %322)
  br label %345

344:                                              ; preds = %340, %337
  %.pn616 = phi { ptr, i32 } [ %338, %337 ], [ %341, %340 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #14
  resume { ptr, i32 } %.pn616

345:                                              ; preds = %343, %315
  %.1524 = phi ptr [ %18, %343 ], [ %0, %315 ]
  %346 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell18GetInnerTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %34)
  call void @_ZN14NAMESPACE_MAIN6Tensor18SetCountDimensionsEm(ptr noundef nonnull align 8 dereferenceable(72) %346, i64 noundef %.0540665)
  %347 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell18GetInnerTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %34)
  call void @_ZN14NAMESPACE_MAIN6Tensor5ResetEv(ptr noundef nonnull align 8 dereferenceable(72) %347)
  br i1 %276, label %354, label %348

348:                                              ; preds = %345
  %.not618 = icmp eq i64 %.0530666, 1
  br i1 %.not618, label %349, label %353

349:                                              ; preds = %348
  %350 = trunc nuw i8 %.2515669 to i1
  %351 = icmp ne i64 %184, 1
  %or.cond13 = or i1 %351, %350
  %352 = icmp ne i32 %.2522668, 0
  %or.cond15 = select i1 %or.cond13, i1 %352, i1 false
  br i1 %or.cond15, label %354, label %355

353:                                              ; preds = %348
  %.old14.not = icmp eq i32 %.2522668, 0
  br i1 %.old14.not, label %355, label %354

354:                                              ; preds = %349, %353, %345
  br label %355

355:                                              ; preds = %349, %354, %353
  %.1499 = phi i64 [ 1, %354 ], [ %.0498674, %353 ], [ %.0498674, %349 ]
  %356 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell23GetBoostingFastBinsTempEv(ptr noundef nonnull align 8 dereferenceable(112) %34)
  %.not619 = icmp eq ptr %356, null
  br i1 %.not619, label %357, label %358

357:                                              ; preds = %355
  call void @LogAssertFailure(i64 noundef 1111, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.23)
  call void @__assert_fail(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str, i32 noundef 1111, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

358:                                              ; preds = %355
  %359 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %360 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIdmEEmbbbm(i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext %359, i64 noundef %184)
  %361 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %360, i64 noundef %.1499) #14
  br i1 %361, label %362, label %363

362:                                              ; preds = %358
  call void @LogAssertFailure(i64 noundef 1114, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.25)
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str, i32 noundef 1114, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

363:                                              ; preds = %358
  %364 = mul i64 %360, %.1499
  %365 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell19GetBoostingMainBinsEv(ptr noundef nonnull align 8 dereferenceable(112) %34)
  %.not620 = icmp eq ptr %365, null
  br i1 %.not620, label %366, label %367

366:                                              ; preds = %363
  call void @LogAssertFailure(i64 noundef 1118, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.27)
  call void @__assert_fail(ptr noundef nonnull @.str.28, ptr noundef nonnull @.str, i32 noundef 1118, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

367:                                              ; preds = %363
  %368 = and i32 %3, 64
  %369 = icmp eq i32 %368, 0
  %or.cond638 = and i1 %369, %.not603
  br i1 %or.cond638, label %370, label %372

370:                                              ; preds = %367
  %371 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term21GetCountAuxillaryBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %.0469) #14
  br label %372

372:                                              ; preds = %370, %367
  %.0496 = phi i64 [ %371, %370 ], [ 0, %367 ]
  %373 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef %.1499, i64 noundef %.0496) #14
  br i1 %373, label %374, label %375

374:                                              ; preds = %372
  call void @LogAssertFailure(i64 noundef 1126, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.29)
  call void @__assert_fail(ptr noundef nonnull @.str.30, ptr noundef nonnull @.str, i32 noundef 1126, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

375:                                              ; preds = %372
  %376 = add i64 %.0496, %.1499
  %377 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %360, i64 noundef %376) #14
  br i1 %377, label %378, label %379

378:                                              ; preds = %375
  call void @LogAssertFailure(i64 noundef 1127, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.31)
  call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str, i32 noundef 1127, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

379:                                              ; preds = %375
  %380 = mul i64 %376, %360
  %381 = call noundef ptr @_ZN14NAMESPACE_MAINL8IndexBinEPNS_7BinBaseEm(ptr noundef nonnull %365, i64 noundef %380)
  call void @_ZN14NAMESPACE_MAIN12BoosterShell19SetDebugMainBinsEndEPKNS_7BinBaseE(ptr noundef nonnull align 8 dereferenceable(112) %34, ptr noundef %381)
  %.not621 = icmp eq i64 %198, 0
  br i1 %.not621, label %400, label %.preheader.split

.preheader.split:                                 ; preds = %379
  %382 = icmp eq i64 %.1499, 1
  %383 = icmp ne i64 %.1499, 1
  %384 = icmp eq i64 %184, 1
  %. = select i1 %384, i64 32768, i64 1024
  %.639 = select i1 %384, i64 1024, i64 0
  %385 = getelementptr inbounds i8, ptr %20, i64 4
  %386 = getelementptr inbounds i8, ptr %20, i64 8
  %387 = getelementptr inbounds i8, ptr %20, i64 16
  %388 = getelementptr inbounds i8, ptr %20, i64 24
  %389 = getelementptr inbounds i8, ptr %20, i64 32
  %390 = getelementptr inbounds i8, ptr %20, i64 40
  %391 = getelementptr inbounds i8, ptr %20, i64 48
  %392 = icmp eq i64 %.0468, -2
  %393 = getelementptr inbounds i8, ptr %20, i64 56
  %394 = getelementptr inbounds i8, ptr %20, i64 64
  %395 = getelementptr inbounds i8, ptr %20, i64 72
  %396 = icmp eq i64 %.0530666, 1
  %.not629 = icmp eq ptr %14, null
  %397 = icmp sgt i64 %.3503673, 1
  %398 = icmp ugt i64 %.2506672, 1
  %399 = trunc nuw i8 %.2515669 to i1
  br label %401

400:                                              ; preds = %379
  call void @LogAssertFailure(i64 noundef 1132, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.33)
  call void @__assert_fail(ptr noundef nonnull @.str.34, ptr noundef nonnull @.str, i32 noundef 1132, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

401:                                              ; preds = %.preheader.split, %596
  %.0531 = phi double [ %.2533, %596 ], [ 0.000000e+00, %.preheader.split ]
  %.0494 = phi i64 [ %597, %596 ], [ 0, %.preheader.split ]
  call void @llvm.memset.p0.i64(ptr nonnull align 1 %365, i8 0, i64 %364, i1 false)
  %402 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %403 = call noundef i64 @_ZNK14NAMESPACE_MAIN15DataSetBoosting15GetCountSubsetsEv(ptr noundef nonnull align 8 dereferenceable(40) %402)
  %.not622 = icmp eq i64 %403, 0
  br i1 %.not622, label %404, label %405

404:                                              ; preds = %401
  call void @LogAssertFailure(i64 noundef 1136, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.35)
  call void @__assert_fail(ptr noundef nonnull @.str.36, ptr noundef nonnull @.str, i32 noundef 1136, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

405:                                              ; preds = %401
  %406 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %407 = call noundef ptr @_ZN14NAMESPACE_MAIN15DataSetBoosting10GetSubsetsEv(ptr noundef nonnull align 8 dereferenceable(40) %406)
  %.not623 = icmp eq ptr %407, null
  br i1 %.not623, label %408, label %.split768

408:                                              ; preds = %405
  call void @LogAssertFailure(i64 noundef 1138, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.37)
  call void @__assert_fail(ptr noundef nonnull @.str.38, ptr noundef nonnull @.str, i32 noundef 1138, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

.split768:                                        ; preds = %405
  %409 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %410 = call noundef i64 @_ZNK14NAMESPACE_MAIN15DataSetBoosting15GetCountSubsetsEv(ptr noundef nonnull align 8 dereferenceable(40) %409)
  %411 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetBoosting", ptr %407, i64 %410
  br label %412

412:                                              ; preds = %._crit_edge, %.split768
  %.0492 = phi ptr [ %407, %.split768 ], [ %503, %._crit_edge ]
  br i1 %382, label %423, label %413

413:                                              ; preds = %412
  %414 = call noundef i32 @_ZNK14NAMESPACE_MAIN4Term18GetBitsRequiredMinEv(ptr noundef nonnull align 8 dereferenceable(776) %.0469) #14
  %415 = icmp sgt i32 %414, 0
  br i1 %415, label %417, label %416

416:                                              ; preds = %413
  call void @LogAssertFailure(i64 noundef 1148, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.39)
  call void @__assert_fail(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str, i32 noundef 1148, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

417:                                              ; preds = %413
  %418 = call noundef i32 @_ZNK14NAMESPACE_MAIN4Term18GetBitsRequiredMinEv(ptr noundef nonnull align 8 dereferenceable(776) %.0469) #14
  %419 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %.0492)
  %420 = getelementptr inbounds i8, ptr %419, i64 136
  %421 = load i64, ptr %420, align 8, !tbaa !20
  %422 = call noundef i32 @_ZN14NAMESPACE_MAINL22GetCountItemsBitPackedEim(i32 noundef %418, i64 noundef %421) #14
  br label %423

423:                                              ; preds = %412, %417
  %.0490 = phi i32 [ %422, %417 ], [ 0, %412 ]
  %424 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %.0492)
  %425 = getelementptr inbounds i8, ptr %424, i64 136
  %426 = load i64, ptr %425, align 8, !tbaa !20
  %427 = icmp eq i64 %426, 8
  %428 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %.0492)
  br i1 %427, label %429, label %445

429:                                              ; preds = %423
  %430 = getelementptr inbounds i8, ptr %428, i64 128
  %431 = load i64, ptr %430, align 8, !tbaa !22
  %432 = icmp eq i64 %431, 8
  br i1 %432, label %433, label %436

433:                                              ; preds = %429
  %434 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %435 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIdmEEmbbbm(i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext %434, i64 noundef %184)
  br label %467

436:                                              ; preds = %429
  %437 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %.0492)
  %438 = getelementptr inbounds i8, ptr %437, i64 128
  %439 = load i64, ptr %438, align 8, !tbaa !22
  %440 = icmp eq i64 %439, 4
  br i1 %440, label %442, label %441

441:                                              ; preds = %436
  call void @LogAssertFailure(i64 noundef 1158, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.41)
  call void @__assert_fail(ptr noundef nonnull @.str.42, ptr noundef nonnull @.str, i32 noundef 1158, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

442:                                              ; preds = %436
  %443 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %444 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIfmEEmbbbm(i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext %443, i64 noundef %184)
  br label %467

445:                                              ; preds = %423
  %446 = getelementptr inbounds i8, ptr %428, i64 136
  %447 = load i64, ptr %446, align 8, !tbaa !20
  %448 = icmp eq i64 %447, 4
  br i1 %448, label %450, label %449

449:                                              ; preds = %445
  call void @LogAssertFailure(i64 noundef 1162, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.43)
  call void @__assert_fail(ptr noundef nonnull @.str.44, ptr noundef nonnull @.str, i32 noundef 1162, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

450:                                              ; preds = %445
  %451 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %.0492)
  %452 = getelementptr inbounds i8, ptr %451, i64 128
  %453 = load i64, ptr %452, align 8, !tbaa !22
  %454 = icmp eq i64 %453, 8
  br i1 %454, label %455, label %458

455:                                              ; preds = %450
  %456 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %457 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIdjEEmbbbm(i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext %456, i64 noundef %184)
  br label %467

458:                                              ; preds = %450
  %459 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %.0492)
  %460 = getelementptr inbounds i8, ptr %459, i64 128
  %461 = load i64, ptr %460, align 8, !tbaa !22
  %462 = icmp eq i64 %461, 4
  br i1 %462, label %464, label %463

463:                                              ; preds = %458
  call void @LogAssertFailure(i64 noundef 1166, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.41)
  call void @__assert_fail(ptr noundef nonnull @.str.42, ptr noundef nonnull @.str, i32 noundef 1166, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

464:                                              ; preds = %458
  %465 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %466 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIfjEEmbbbm(i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext %465, i64 noundef %184)
  br label %467

467:                                              ; preds = %455, %464, %433, %442
  %.0489 = phi i64 [ %435, %433 ], [ %444, %442 ], [ %457, %455 ], [ %466, %464 ]
  %468 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %.0489, i64 noundef %.1499) #14
  br i1 %468, label %469, label %470

469:                                              ; preds = %467
  call void @LogAssertFailure(i64 noundef 1171, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.45)
  call void @__assert_fail(ptr noundef nonnull @.str.46, ptr noundef nonnull @.str, i32 noundef 1171, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

470:                                              ; preds = %467
  %471 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %.0492)
  %472 = getelementptr inbounds i8, ptr %471, i64 120
  %473 = load i64, ptr %472, align 8, !tbaa !23
  %474 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %475 = icmp ne i64 %473, 1
  %or.cond18 = and i1 %383, %475
  br i1 %or.cond18, label %476, label %._crit_edge779

._crit_edge779:                                   ; preds = %470
  %.pre = mul i64 %.0489, %.1499
  br label %480

476:                                              ; preds = %470
  %.0482 = select i1 %474, i64 %., i64 %.639
  %477 = mul i64 %.0489, %.1499
  %478 = mul i64 %477, %473
  %.not624 = icmp ule i64 %478, %.0482
  %479 = select i1 %.not624, i64 %473, i64 1
  %spec.select = mul i64 %479, %.1499
  br label %480

480:                                              ; preds = %._crit_edge779, %476
  %.pre-phi = phi i64 [ %.pre, %._crit_edge779 ], [ %477, %476 ]
  %.1488 = phi i64 [ %.1499, %._crit_edge779 ], [ %spec.select, %476 ]
  %.1486 = phi i1 [ false, %._crit_edge779 ], [ %.not624, %476 ]
  %.1486.fr = freeze i1 %.1486
  call void @_ZN14NAMESPACE_MAIN7BinBase7ZeroMemEmmm(ptr noundef nonnull align 1 dereferenceable(1) %356, i64 noundef %.0489, i64 noundef %.1488, i64 noundef 0)
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %20) #14
  %481 = zext i1 %.1486.fr to i32
  store i32 %481, ptr %20, align 8, !tbaa !24
  %482 = zext i1 %474 to i32
  store i32 %482, ptr %385, align 4, !tbaa !26
  store i64 %184, ptr %386, align 8, !tbaa !27
  store i32 %.0490, ptr %387, align 8, !tbaa !28
  %483 = call noundef i64 @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(56) %.0492)
  store i64 %483, ptr %388, align 8, !tbaa !29
  store i64 %.pre-phi, ptr %389, align 8, !tbaa !30
  %484 = call noundef ptr @_ZN14NAMESPACE_MAIN18DataSubsetBoosting11GetGradHessEv(ptr noundef nonnull align 8 dereferenceable(56) %.0492)
  store ptr %484, ptr %390, align 8, !tbaa !31
  %485 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting17GetSubsetInnerBagEm(ptr noundef nonnull align 8 dereferenceable(56) %.0492, i64 noundef %.0494)
  %486 = call noundef ptr @_ZNK14NAMESPACE_MAIN14SubsetInnerBag10GetWeightsEv(ptr noundef nonnull align 8 dereferenceable(8) %485)
  store ptr %486, ptr %391, align 8, !tbaa !32
  br i1 %392, label %489, label %487

487:                                              ; preds = %480
  %488 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting11GetTermDataEm(ptr noundef nonnull align 8 dereferenceable(56) %.0492, i64 noundef %.0468)
  br label %489

489:                                              ; preds = %480, %487
  %490 = phi ptr [ %488, %487 ], [ null, %480 ]
  store ptr %490, ptr %393, align 8, !tbaa !33
  store ptr %356, ptr %394, align 8, !tbaa !34
  %491 = mul i64 %.1488, %.0489
  %492 = call noundef ptr @_ZN14NAMESPACE_MAINL8IndexBinEPNS_7BinBaseEm(ptr noundef nonnull %356, i64 noundef %491)
  store ptr %492, ptr %395, align 8, !tbaa !35
  %493 = call noundef i32 @_ZN14NAMESPACE_MAIN18DataSubsetBoosting15BinSumsBoostingEP21BinSumsBoostingBridge(ptr noundef nonnull align 8 dereferenceable(56) %.0492, ptr noundef nonnull %20)
  %.not625 = icmp eq i32 %493, 0
  br i1 %.not625, label %494, label %.thread684

.thread684:                                       ; preds = %489
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %20) #14
  br label %.thread676

494:                                              ; preds = %489
  %495 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %.0492)
  %496 = getelementptr inbounds i8, ptr %495, i64 136
  %497 = load i64, ptr %496, align 8, !tbaa !20
  %498 = icmp eq i64 %497, 8
  %499 = call noundef ptr @_ZNK14NAMESPACE_MAIN18DataSubsetBoosting19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(56) %.0492)
  %500 = getelementptr inbounds i8, ptr %499, i64 128
  %501 = load i64, ptr %500, align 8, !tbaa !22
  %502 = icmp eq i64 %501, 8
  %503 = getelementptr inbounds i8, ptr %.0492, i64 56
  %.not770 = icmp eq i64 %473, 0
  br i1 %.not770, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %494
  %504 = icmp eq ptr %411, %503
  %505 = add i64 %473, -1
  br i1 %504, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph, %529
  %.0476764.us = phi i64 [ %531, %529 ], [ 0, %.lr.ph ]
  %.0477763.us = phi ptr [ %530, %529 ], [ %356, %.lr.ph ]
  %506 = icmp ne i64 %.0476764.us, %505
  %or.cond641.not.us = select i1 %.1486.fr, i1 %506, i1 false
  br i1 %or.cond641.not.us, label %527, label %507

507:                                              ; preds = %.lr.ph.split.us
  %508 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %509 = call noundef ptr @_ZN14NAMESPACE_MAIN15DataSetBoosting18GetDataSetInnerBagEv(ptr noundef nonnull align 8 dereferenceable(40) %508)
  %510 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInnerBag", ptr %509, i64 %.0494
  br i1 %382, label %521, label %511

511:                                              ; preds = %507
  %512 = call noundef ptr @_ZNK14NAMESPACE_MAIN15DataSetInnerBag16GetTermInnerBagsEv(ptr noundef nonnull align 8 dereferenceable(24) %510)
  %513 = getelementptr inbounds %"struct.NAMESPACE_MAIN::TermInnerBag", ptr %512, i64 %.0468
  %514 = call noundef ptr @_ZNK14NAMESPACE_MAIN12TermInnerBag9GetCountsEv(ptr noundef nonnull align 8 dereferenceable(16) %513)
  %515 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %516 = call noundef ptr @_ZN14NAMESPACE_MAIN15DataSetBoosting18GetDataSetInnerBagEv(ptr noundef nonnull align 8 dereferenceable(40) %515)
  %517 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInnerBag", ptr %516, i64 %.0494
  %518 = call noundef ptr @_ZNK14NAMESPACE_MAIN15DataSetInnerBag16GetTermInnerBagsEv(ptr noundef nonnull align 8 dereferenceable(24) %517)
  %519 = getelementptr inbounds %"struct.NAMESPACE_MAIN::TermInnerBag", ptr %518, i64 %.0468
  %520 = call noundef ptr @_ZNK14NAMESPACE_MAIN12TermInnerBag10GetWeightsEv(ptr noundef nonnull align 8 dereferenceable(16) %519)
  br label %527

521:                                              ; preds = %507
  %522 = call noundef ptr @_ZNK14NAMESPACE_MAIN15DataSetInnerBag13GetTotalCountEv(ptr noundef nonnull align 8 dereferenceable(24) %510)
  %523 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %524 = call noundef ptr @_ZN14NAMESPACE_MAIN15DataSetBoosting18GetDataSetInnerBagEv(ptr noundef nonnull align 8 dereferenceable(40) %523)
  %525 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInnerBag", ptr %524, i64 %.0494
  %526 = call noundef ptr @_ZNK14NAMESPACE_MAIN15DataSetInnerBag14GetTotalWeightEv(ptr noundef nonnull align 8 dereferenceable(24) %525)
  br label %527

527:                                              ; preds = %521, %511, %.lr.ph.split.us
  %.0475.us = phi ptr [ null, %.lr.ph.split.us ], [ %514, %511 ], [ %522, %521 ]
  %.0474.us = phi ptr [ null, %.lr.ph.split.us ], [ %520, %511 ], [ %526, %521 ]
  %528 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  call void @_ZN14NAMESPACE_MAIN13ConvertAddBinEmbmbbbbPKvPKmPKdbbPv(i64 noundef %184, i1 noundef zeroext %528, i64 noundef %.1499, i1 noundef zeroext %498, i1 noundef zeroext %502, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef %.0477763.us, ptr noundef %.0475.us, ptr noundef %.0474.us, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef nonnull %365)
  br i1 %.1486.fr, label %529, label %._crit_edge

529:                                              ; preds = %527
  %530 = call noundef ptr @_ZN14NAMESPACE_MAINL8IndexBinEPNS_7BinBaseEm(ptr noundef %.0477763.us, i64 noundef %.pre-phi)
  %531 = add nuw i64 %.0476764.us, 1
  %exitcond778.not = icmp eq i64 %531, %473
  br i1 %exitcond778.not, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !36

.lr.ph.split:                                     ; preds = %.lr.ph
  br i1 %.1486.fr, label %.lr.ph.split.split.us, label %.lr.ph.split.split

.lr.ph.split.split.us:                            ; preds = %.lr.ph.split, %.lr.ph.split.split.us
  %.0476764.us766 = phi i64 [ %534, %.lr.ph.split.split.us ], [ 0, %.lr.ph.split ]
  %.0477763.us767 = phi ptr [ %533, %.lr.ph.split.split.us ], [ %356, %.lr.ph.split ]
  %532 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  call void @_ZN14NAMESPACE_MAIN13ConvertAddBinEmbmbbbbPKvPKmPKdbbPv(i64 noundef %184, i1 noundef zeroext %532, i64 noundef %.1499, i1 noundef zeroext %498, i1 noundef zeroext %502, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef %.0477763.us767, ptr noundef null, ptr noundef null, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef nonnull %365)
  %533 = call noundef ptr @_ZN14NAMESPACE_MAINL8IndexBinEPNS_7BinBaseEm(ptr noundef %.0477763.us767, i64 noundef %.pre-phi)
  %534 = add nuw i64 %.0476764.us766, 1
  %exitcond.not = icmp eq i64 %534, %473
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split.split.us, !llvm.loop !36

.lr.ph.split.split:                               ; preds = %.lr.ph.split
  %535 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  call void @_ZN14NAMESPACE_MAIN13ConvertAddBinEmbmbbbbPKvPKmPKdbbPv(i64 noundef %184, i1 noundef zeroext %535, i64 noundef %.1499, i1 noundef zeroext %498, i1 noundef zeroext %502, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef nonnull %356, ptr noundef null, ptr noundef null, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef nonnull %365)
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.split.split.us, %529, %527, %.lr.ph.split.split, %494
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %20) #14
  %.not626 = icmp eq ptr %411, %503
  br i1 %.not626, label %536, label %412, !llvm.loop !37

536:                                              ; preds = %._crit_edge
  br i1 %382, label %537, label %542

537:                                              ; preds = %536
  %538 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %539 = icmp sgt i32 %538, 1
  br i1 %539, label %540, label %541

540:                                              ; preds = %537
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage__25_)
  br label %541

541:                                              ; preds = %540, %537
  call void @_ZN14NAMESPACE_MAINL20BoostZeroDimensionalEPNS_12BoosterShellEiddd(ptr noundef nonnull %34, i32 noundef %3, double noundef %.0479, double noundef %.0480, double noundef %.0481)
  br label %592

542:                                              ; preds = %536
  %543 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %544 = call noundef double @_ZNK14NAMESPACE_MAIN15DataSetBoosting17GetBagWeightTotalEm(ptr noundef nonnull align 8 dereferenceable(40) %543, i64 noundef %.0494)
  %545 = fcmp ogt double %544, 0.000000e+00
  br i1 %545, label %547, label %546

546:                                              ; preds = %542
  call void @LogAssertFailure(i64 noundef 1289, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.47)
  call void @__assert_fail(ptr noundef nonnull @.str.48, ptr noundef nonnull @.str, i32 noundef 1289, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

547:                                              ; preds = %542
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #14
  br i1 %369, label %550, label %548

548:                                              ; preds = %547
  %549 = call noundef i32 @_ZN14NAMESPACE_MAINL11BoostRandomEPNS_19RandomDeterministicEPNS_12BoosterShellEmidddPKliPd(ptr noundef nonnull %.1524, ptr noundef nonnull %34, i64 noundef %.0468, i32 noundef %3, double noundef %.0479, double noundef %.0480, double noundef %.0481, ptr noundef %14, i32 noundef %.2522668, ptr noundef nonnull %21)
  %.not631 = icmp eq i32 %549, 0
  br i1 %.not631, label %575, label %.thread688

550:                                              ; preds = %547
  br i1 %396, label %551, label %573

551:                                              ; preds = %550
  br i1 %.not629, label %552, label %553

552:                                              ; preds = %551
  call void @LogAssertFailure(i64 noundef 1309, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.49)
  call void @__assert_fail(ptr noundef nonnull @.str.50, ptr noundef nonnull @.str, i32 noundef 1309, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

553:                                              ; preds = %551
  br i1 %397, label %555, label %554

554:                                              ; preds = %553
  call void @LogAssertFailure(i64 noundef 1310, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.51)
  call void @__assert_fail(ptr noundef nonnull @.str.52, ptr noundef nonnull @.str, i32 noundef 1310, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

555:                                              ; preds = %553
  br i1 %398, label %557, label %556

556:                                              ; preds = %555
  call void @LogAssertFailure(i64 noundef 1311, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.13)
  call void @__assert_fail(ptr noundef nonnull @.str.14, ptr noundef nonnull @.str, i32 noundef 1311, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

557:                                              ; preds = %555
  %558 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term22GetCountRealDimensionsEv(ptr noundef nonnull align 8 dereferenceable(776) %.0469) #14
  %559 = icmp eq i64 %558, 1
  br i1 %559, label %561, label %560

560:                                              ; preds = %557
  call void @LogAssertFailure(i64 noundef 1313, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.53)
  call void @__assert_fail(ptr noundef nonnull @.str.54, ptr noundef nonnull @.str, i32 noundef 1313, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

561:                                              ; preds = %557
  %562 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term18GetCountTensorBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %.0469) #14
  %563 = icmp eq i64 %.2506672, %562
  br i1 %563, label %565, label %564

564:                                              ; preds = %561
  call void @LogAssertFailure(i64 noundef 1314, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.55)
  call void @__assert_fail(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str, i32 noundef 1314, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

565:                                              ; preds = %561
  %566 = call noundef i64 @_ZNK14NAMESPACE_MAIN4Term21GetCountAuxillaryBinsEv(ptr noundef nonnull align 8 dereferenceable(776) %.0469) #14
  %567 = icmp eq i64 %566, 0
  br i1 %567, label %569, label %568

568:                                              ; preds = %565
  call void @LogAssertFailure(i64 noundef 1315, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.57)
  call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str, i32 noundef 1315, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

569:                                              ; preds = %565
  %570 = call noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520) %37)
  %571 = call noundef i64 @_ZNK14NAMESPACE_MAIN15DataSetBoosting16GetBagCountTotalEm(ptr noundef nonnull align 8 dereferenceable(40) %570, i64 noundef %.0494)
  %572 = call noundef i32 @_ZN14NAMESPACE_MAINL22BoostSingleDimensionalEPNS_19RandomDeterministicEPNS_12BoosterShellEbbbimmdmmddddmdmdliPd(ptr noundef nonnull %.1524, ptr noundef nonnull %34, i1 noundef zeroext %.2509671, i1 noundef zeroext %.2512670, i1 noundef zeroext %399, i32 noundef %3, i64 noundef %.2506672, i64 noundef %571, double noundef %544, i64 noundef %.2529667, i64 noundef %.0472, double noundef %.0473, double noundef %.0479, double noundef %.0480, double noundef %.0481, i64 noundef %.0483, double noundef %.0484, i64 noundef %.0491, double noundef %.0497, i64 noundef %.3503673, i32 noundef %.2522668, ptr noundef nonnull %21)
  %.not630 = icmp eq i32 %572, 0
  br i1 %.not630, label %575, label %.thread688

573:                                              ; preds = %550
  %574 = call noundef i32 @_ZN14NAMESPACE_MAINL21BoostMultiDimensionalEPNS_12BoosterShellEimmddddPd(ptr noundef nonnull %34, i32 noundef %3, i64 noundef %.0468, i64 noundef %.0472, double noundef %.0473, double noundef %.0479, double noundef %.0480, double noundef %.0481, ptr noundef nonnull %21)
  %.not628 = icmp eq i32 %574, 0
  br i1 %.not628, label %575, label %.thread688

575:                                              ; preds = %569, %573, %548
  %576 = load double, ptr %21, align 8, !tbaa !10
  %577 = call noundef zeroext i1 @_ZSt5isnand(double noundef %576)
  br i1 %577, label %578, label %579

578:                                              ; preds = %575
  call void @LogAssertFailure(i64 noundef 1358, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.59)
  call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str, i32 noundef 1358, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

579:                                              ; preds = %575
  %580 = load double, ptr %21, align 8
  %or.cond21 = call i1 @llvm.is.fpclass.f64(double %580, i32 864)
  br i1 %or.cond21, label %582, label %581

581:                                              ; preds = %579
  call void @LogAssertFailure(i64 noundef 1359, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.61)
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str, i32 noundef 1359, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

582:                                              ; preds = %579
  %583 = fdiv double %580, %544
  %584 = fmul double %317, %583
  store double %584, ptr %21, align 8, !tbaa !10
  %585 = fadd double %.0531, %584
  %586 = call noundef zeroext i1 @_ZSt5isnand(double noundef %585)
  br i1 %586, label %587, label %588

587:                                              ; preds = %582
  call void @LogAssertFailure(i64 noundef 1365, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.63)
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str, i32 noundef 1365, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

588:                                              ; preds = %582
  %589 = fcmp ult double %585, 0.000000e+00
  br i1 %589, label %590, label %591

590:                                              ; preds = %588
  call void @LogAssertFailure(i64 noundef 1366, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.65)
  call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str, i32 noundef 1366, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

.thread688:                                       ; preds = %548, %569, %573
  %.5.ph = phi i32 [ %574, %573 ], [ %572, %569 ], [ %549, %548 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #14
  br label %.thread676

591:                                              ; preds = %588
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #14
  br label %592

592:                                              ; preds = %591, %541
  %.2533 = phi double [ %.0531, %541 ], [ %585, %591 ]
  %593 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell13GetTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %34)
  %594 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell18GetInnerTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %34)
  %595 = call noundef i32 @_ZN14NAMESPACE_MAIN6Tensor3AddERKS0_(ptr noundef nonnull align 8 dereferenceable(72) %593, ptr noundef nonnull align 8 dereferenceable(72) %594)
  %.not632 = icmp eq i32 %595, 0
  br i1 %.not632, label %596, label %.thread676

596:                                              ; preds = %592
  %597 = add nuw i64 %.0494, 1
  %.not633 = icmp eq i64 %198, %597
  br i1 %.not633, label %598, label %401, !llvm.loop !38

598:                                              ; preds = %596
  %599 = call noundef zeroext i1 @_ZSt5isnand(double noundef %.2533)
  br i1 %599, label %600, label %601

600:                                              ; preds = %598
  call void @LogAssertFailure(i64 noundef 1381, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.63)
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str, i32 noundef 1381, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

601:                                              ; preds = %598
  %602 = fcmp ult double %.2533, 0.000000e+00
  br i1 %602, label %603, label %604

603:                                              ; preds = %601
  call void @LogAssertFailure(i64 noundef 1382, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.67)
  call void @__assert_fail(ptr noundef nonnull @.str.68, ptr noundef nonnull @.str, i32 noundef 1382, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

604:                                              ; preds = %601
  %605 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #14
  %606 = fcmp ugt double %.2533, %605
  br i1 %606, label %613, label %607, !prof !9

607:                                              ; preds = %604
  %608 = call noundef zeroext i1 @_ZSt5isnand(double noundef %.2533)
  br i1 %608, label %609, label %610

609:                                              ; preds = %607
  call void @LogAssertFailure(i64 noundef 1398, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.63)
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str, i32 noundef 1398, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

610:                                              ; preds = %607
  %611 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %.2533)
  br i1 %611, label %612, label %613

612:                                              ; preds = %610
  call void @LogAssertFailure(i64 noundef 1399, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.69)
  call void @__assert_fail(ptr noundef nonnull @.str.70, ptr noundef nonnull @.str, i32 noundef 1399, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

613:                                              ; preds = %610, %604
  %.4535 = phi double [ 0xFFEFFFFFFFFFFFFF, %604 ], [ %.2533, %610 ]
  %614 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %615 = icmp sgt i32 %614, 3
  br i1 %615, label %616, label %617

616:                                              ; preds = %613
  call void @InteralLogWithoutArguments(i32 noundef 4, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage__26_)
  br label %617

617:                                              ; preds = %616, %613
  %618 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell13GetTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %34)
  %619 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN6Tensor25MultiplyAndCheckForIssuesEd(ptr noundef nonnull align 8 dereferenceable(72) %618, double noundef %316)
  br i1 %619, label %620, label %.thread699, !prof !9

620:                                              ; preds = %617
  %621 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell13GetTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %34)
  call void @_ZN14NAMESPACE_MAIN6Tensor18SetCountDimensionsEm(ptr noundef nonnull align 8 dereferenceable(72) %621, i64 noundef %.0540665)
  %622 = call noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell13GetTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112) %34)
  call void @_ZN14NAMESPACE_MAIN6Tensor5ResetEv(ptr noundef nonnull align 8 dereferenceable(72) %622)
  br label %.thread699

.thread699:                                       ; preds = %617, %620
  %.7538.ph = phi double [ %.4535, %617 ], [ 0xFFEFFFFFFFFFFFFF, %620 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #14
  br label %623

.thread676:                                       ; preds = %592, %.thread688, %.thread684, %339, %342
  %.8 = phi i32 [ -2, %339 ], [ -1, %342 ], [ %.5.ph, %.thread688 ], [ %493, %.thread684 ], [ %595, %592 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #14
  br label %.critedge643

623:                                              ; preds = %.thread699, %282
  %.8539 = phi double [ 0.000000e+00, %282 ], [ %.7538.ph, %.thread699 ]
  call void @_ZN14NAMESPACE_MAIN12BoosterShell12SetTermIndexEm(ptr noundef nonnull align 8 dereferenceable(112) %34, i64 noundef %.0468)
  %624 = call noundef zeroext i1 @_ZSt5isnand(double noundef %.8539)
  br i1 %624, label %625, label %626

625:                                              ; preds = %623
  call void @LogAssertFailure(i64 noundef 1423, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.63)
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str, i32 noundef 1423, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

626:                                              ; preds = %623
  %627 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #14
  %628 = fcmp une double %627, %.8539
  br i1 %628, label %630, label %629

629:                                              ; preds = %626
  call void @LogAssertFailure(i64 noundef 1424, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.71)
  call void @__assert_fail(ptr noundef nonnull @.str.72, ptr noundef nonnull @.str, i32 noundef 1424, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

630:                                              ; preds = %626
  %631 = fcmp oeq double %.8539, 0xFFEFFFFFFFFFFFFF
  %632 = fcmp oge double %.8539, 0.000000e+00
  %or.cond24 = or i1 %631, %632
  br i1 %or.cond24, label %634, label %633

633:                                              ; preds = %630
  call void @LogAssertFailure(i64 noundef 1425, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.GenerateTermUpdate, ptr noundef nonnull @.str.73)
  call void @__assert_fail(ptr noundef nonnull @.str.74, ptr noundef nonnull @.str, i32 noundef 1425, ptr noundef nonnull @__PRETTY_FUNCTION__.GenerateTermUpdate) #13
  unreachable

634:                                              ; preds = %630
  br i1 %.not, label %636, label %635

635:                                              ; preds = %634
  store double %.8539, ptr %16, align 8, !tbaa !10
  br label %636

636:                                              ; preds = %635, %634
  %637 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %638 = icmp sgt i32 %637, 2
  br i1 %.not603, label %641, label %639

639:                                              ; preds = %636
  br i1 %638, label %640, label %.critedge643

640:                                              ; preds = %639
  call void (i32, ptr, ...) @InteralLogWithArguments(i32 noundef 3, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage__27_, double noundef %.8539)
  br label %.critedge643

641:                                              ; preds = %636
  br i1 %638, label %642, label %.critedge643

642:                                              ; preds = %641
  %643 = icmp eq i32 %637, 3
  br i1 %643, label %644, label %650

644:                                              ; preds = %642
  %645 = call noundef ptr @_ZN14NAMESPACE_MAIN4Term48GetPointerCountLogExitGenerateTermUpdateMessagesEv(ptr noundef nonnull align 8 dereferenceable(776) %.0469) #14
  %646 = load i32, ptr %645, align 4, !tbaa !5
  %647 = icmp sgt i32 %646, 0
  br i1 %647, label %648, label %.critedge643

648:                                              ; preds = %644
  %649 = add nsw i32 %646, -1
  store i32 %649, ptr %645, align 4, !tbaa !5
  br label %650

650:                                              ; preds = %648, %642
  %.1455 = phi i32 [ 3, %648 ], [ 4, %642 ]
  call void (i32, ptr, ...) @InteralLogWithArguments(i32 noundef %.1455, ptr noundef nonnull @_ZZ18GenerateTermUpdateE13LOG__sMessage__28_, double noundef %.8539)
  br label %.critedge643

.critedge643:                                     ; preds = %.thread676, %45, %43, %54, %51, %83, %80, %88, %85, %207, %204, %640, %639, %650, %644, %641, %188, %191, %33
  %.13 = phi i32 [ -3, %33 ], [ -3, %45 ], [ -3, %43 ], [ -3, %54 ], [ -3, %51 ], [ -3, %83 ], [ -3, %80 ], [ -3, %88 ], [ -3, %85 ], [ 0, %191 ], [ 0, %188 ], [ 0, %207 ], [ 0, %204 ], [ %.8, %.thread676 ], [ 0, %641 ], [ 0, %644 ], [ 0, %650 ], [ 0, %639 ], [ 0, %640 ]
  ret i32 %.13

651:                                              ; preds = %340, %337
  %652 = landingpad { ptr, i32 }
          catch ptr null
  %653 = extractvalue { ptr, i32 } %652, 0
  call void @__clang_call_terminate(ptr %653) #13
  unreachable
}

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

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

declare void @InteralLogWithArguments(i32 noundef, ptr noundef, ...) local_unnamed_addr #2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell25GetBoosterShellFromHandleEP14_BoosterHandle(ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN14NAMESPACE_MAIN12BoosterShell12SetTermIndexEm(ptr noundef nonnull align 8 dereferenceable(112), i64 noundef) local_unnamed_addr #4 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell14GetBoosterCoreEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN11BoosterCore13GetCountTermsEv(ptr noundef nonnull align 8 dereferenceable(520)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK14NAMESPACE_MAIN11BoosterCore8GetTermsEv(ptr noundef nonnull align 8 dereferenceable(520)) local_unnamed_addr #6 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef) local_unnamed_addr #6

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN11BoosterCore14GetCountScoresEv(ptr noundef nonnull align 8 dereferenceable(520)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN11BoosterCore17GetCountInnerBagsEv(ptr noundef nonnull align 8 dereferenceable(520)) local_unnamed_addr #6 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK14NAMESPACE_MAIN15FeatureBoosting9IsMissingEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK14NAMESPACE_MAIN15FeatureBoosting8IsUnseenEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK14NAMESPACE_MAIN15FeatureBoosting9IsNominalEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #6 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell13GetTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #4 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell18GetInnerTermUpdateEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN14NAMESPACE_MAIN6Tensor18SetCountDimensionsEm(ptr noundef nonnull align 8 dereferenceable(72), i64 noundef) local_unnamed_addr #8 align 2

declare void @_ZN14NAMESPACE_MAIN6Tensor5ResetEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN11BoosterCore14GetTrainingSetEv(ptr noundef nonnull align 8 dereferenceable(520)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN15DataSetBoosting15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZN14NAMESPACE_MAIN11BoosterCore16GradientConstantEv(ptr noundef nonnull align 8 dereferenceable(520)) local_unnamed_addr #8 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore41LearningRateAdjustmentDifferentialPrivacyEv(ptr noundef nonnull align 8 dereferenceable(520)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore38LearningRateAdjustmentGradientBoostingEv(ptr noundef nonnull align 8 dereferenceable(520)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZN14NAMESPACE_MAIN11BoosterCore15HessianConstantEv(ptr noundef nonnull align 8 dereferenceable(520)) local_unnamed_addr #8 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore37LearningRateAdjustmentHessianBoostingEv(ptr noundef nonnull align 8 dereferenceable(520)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore30GainAdjustmentGradientBoostingEv(ptr noundef nonnull align 8 dereferenceable(520)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14NAMESPACE_MAIN11BoosterCore29GainAdjustmentHessianBoostingEv(ptr noundef nonnull align 8 dereferenceable(520)) local_unnamed_addr #6 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN14NAMESPACE_MAIN22RandomNondeterministicImEC2Ev(ptr noundef nonnull align 8 dereferenceable(5016)) unnamed_addr #3 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 #3 align 2

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

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

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 #10

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell23GetBoostingFastBinsTempEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIdmEEmbbbm(i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i64 noundef) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN14NAMESPACE_MAIN11BoosterCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(520)) local_unnamed_addr #8 align 2

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN12BoosterShell19GetBoostingMainBinsEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #4 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN15DataSetBoosting15GetCountSubsetsEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #6 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIfmEEmbbbm(i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i64 noundef) local_unnamed_addr #8

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN14NAMESPACE_MAIN7BinBase7ZeroMemEmmm(ptr noundef nonnull align 1 dereferenceable(1), i64 noundef, i64 noundef, i64 noundef) local_unnamed_addr #6 align 2

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN14NAMESPACE_MAIN13ConvertAddBinEmbmbbbbPKvPKmPKdbbPv(i64 noundef, i1 noundef zeroext, i64 noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext, i1 noundef zeroext, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN14NAMESPACE_MAINL20BoostZeroDimensionalEPNS_12BoosterShellEiddd(ptr noundef, i32 noundef, double noundef, double noundef, double noundef) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZNK14NAMESPACE_MAIN15DataSetBoosting17GetBagWeightTotalEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #8 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN14NAMESPACE_MAINL11BoostRandomEPNS_19RandomDeterministicEPNS_12BoosterShellEmidddPKliPd(ptr noundef, ptr noundef, i64 noundef, i32 noundef, double noundef, double noundef, double noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN14NAMESPACE_MAINL22BoostSingleDimensionalEPNS_19RandomDeterministicEPNS_12BoosterShellEbbbimmdmmddddmdmdliPd(ptr noundef, ptr noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i32 noundef, i64 noundef, i64 noundef, double noundef, i64 noundef, i64 noundef, double noundef, double noundef, double noundef, double noundef, i64 noundef, double noundef, i64 noundef, double noundef, i64 noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN14NAMESPACE_MAINL21BoostMultiDimensionalEPNS_12BoosterShellEimmddddPd(ptr noundef, i32 noundef, i64 noundef, i64 noundef, double noundef, double noundef, double noundef, double noundef, ptr noundef) local_unnamed_addr #0

declare noundef i32 @_ZN14NAMESPACE_MAIN6Tensor3AddERKS0_(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #2

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

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

declare noundef zeroext i1 @_ZN14NAMESPACE_MAIN6Tensor25MultiplyAndCheckForIssuesEd(ptr noundef nonnull align 8 dereferenceable(72), double noundef) local_unnamed_addr #2

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i1 @llvm.is.fpclass.f64(double, i32 immarg) #12

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!"branch_weights", !"expected", i32 1, i32 2000}
!10 = !{!11, !11, i64 0}
!11 = !{!"double", !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"any pointer", !7, i64 0}
!14 = !{!15, !13, i64 0}
!15 = !{!"_ZTSN14NAMESPACE_MAIN11TermFeatureE", !13, i64 0, !16, i64 8, !16, i64 16}
!16 = !{!"long", !7, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!16, !16, i64 0}
!20 = !{!21, !16, i64 136}
!21 = !{!"_ZTS16ObjectiveWrapper", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !6, i64 32, !6, i64 36, !6, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !6, i64 112, !16, i64 120, !16, i64 128, !16, i64 136, !6, i64 144, !13, i64 152}
!22 = !{!21, !16, i64 128}
!23 = !{!21, !16, i64 120}
!24 = !{!25, !6, i64 0}
!25 = !{!"_ZTS21BinSumsBoostingBridge", !6, i64 0, !6, i64 4, !16, i64 8, !6, i64 16, !16, i64 24, !16, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !13, i64 72}
!26 = !{!25, !6, i64 4}
!27 = !{!25, !16, i64 8}
!28 = !{!25, !6, i64 16}
!29 = !{!25, !16, i64 24}
!30 = !{!25, !16, i64 32}
!31 = !{!25, !13, i64 40}
!32 = !{!25, !13, i64 48}
!33 = !{!25, !13, i64 56}
!34 = !{!25, !13, i64 64}
!35 = !{!25, !13, i64 72}
!36 = distinct !{!36, !18}
!37 = distinct !{!37, !18}
!38 = distinct !{!38, !18}


; Effective O3 passes: AggressiveInstCombinePass,BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LowerExpectIntrinsicPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass