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

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

%struct.BinSumsInteractionBridge = type { i32, i64, i64, ptr, ptr, i64, [30 x i64], [30 x i32], [30 x ptr], ptr, ptr }
%"class.NAMESPACE_MAIN::FeatureInteraction" = type { i64, i8, i8, i8, i32 }
%"struct.NAMESPACE_MAIN::DataSubsetInteraction" = type { i64, 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 }

@g_traceLevel = external global i32, align 4
@_ZN14NAMESPACE_MAINL29g_cLogCalcInteractionStrengthE = external hidden global i32, align 4
@_ZZ23CalcInteractionStrengthE13LOG__sMessage = external hidden constant [231 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_0 = external hidden constant [32 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_1 = external hidden constant [77 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_2 = external hidden constant [82 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_3 = external hidden constant [85 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_4 = external hidden constant [97 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_5 = external hidden constant [92 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_6 = external hidden constant [93 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_7 = external hidden constant [48 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_8 = external hidden constant [63 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_9 = external hidden constant [86 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__10_ = external hidden constant [98 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__11_ = external hidden constant [79 x i8], align 16
@.str = external hidden unnamed_addr constant [97 x i8], align 1
@__func__.CalcInteractionStrength = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [23 x i8], align 1
@__PRETTY_FUNCTION__.CalcInteractionStrength = external hidden unnamed_addr constant [172 x i8], align 1
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__12_ = external hidden constant [42 x i8], align 16
@.str.3 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [20 x i8], align 1
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__13_ = external hidden constant [70 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__14_ = external hidden constant [92 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__15_ = external hidden constant [75 x i8], align 16
@.str.5 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [62 x i8], align 1
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__16_ = external hidden constant [65 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__17_ = external hidden constant [59 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__18_ = external hidden constant [72 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__19_ = external hidden constant [78 x i8], align 16
@.str.9 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [69 x i8], align 1
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__20_ = external hidden constant [75 x i8], align 16
@.str.15 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [39 x i8], align 1
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__21_ = external hidden constant [48 x i8], align 16
@.str.17 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__22_ = external hidden constant [45 x i8], align 16
@.str.21 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [107 x i8], align 1
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__23_ = external hidden constant [45 x i8], align 16

; Function Attrs: mustprogress uwtable
define dso_local i32 @CalcInteractionStrength(ptr noundef %0, i64 noundef %1, ptr noundef %2, i32 noundef %3, i64 noundef %4, i64 noundef %5, double noundef %6, double noundef %7, double noundef %8, double noundef %9, ptr noundef %10) #0 {
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i64, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca ptr, align 8
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i64, align 8
  %41 = alloca i32, align 4
  %42 = alloca i64, align 8
  %43 = alloca i32, align 4
  %44 = alloca double, align 8
  %45 = alloca i32, align 4
  %46 = alloca double, align 8
  %47 = alloca i32, align 4
  %48 = alloca double, align 8
  %49 = alloca i32, align 4
  %50 = alloca double, align 8
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i64, align 8
  %56 = alloca ptr, align 8
  %57 = alloca i64, align 8
  %58 = alloca i32, align 4
  %59 = alloca ptr, align 8
  %60 = alloca i32, align 4
  %61 = alloca %struct.BinSumsInteractionBridge, align 8
  %62 = alloca ptr, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i64, align 8
  %71 = alloca ptr, align 8
  %72 = alloca i64, align 8
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i64, align 8
  %77 = alloca i32, align 4
  %78 = alloca i64, align 8
  %79 = alloca i64, align 8
  %80 = alloca i32, align 4
  %81 = alloca ptr, align 8
  %82 = alloca ptr, align 8
  %83 = alloca i8, align 1
  %84 = alloca ptr, align 8
  %85 = alloca ptr, align 8
  %86 = alloca i64, align 8
  %87 = alloca i32, align 4
  %88 = alloca ptr, align 8
  %89 = alloca i64, align 8
  %90 = alloca i64, align 8
  %91 = alloca i64, align 8
  %92 = alloca ptr, align 8
  %93 = alloca ptr, align 8
  %94 = alloca ptr, align 8
  %95 = alloca i32, align 4
  %96 = alloca double, align 8
  %97 = alloca i64, align 8
  %98 = alloca i64, align 8
  %99 = alloca ptr, align 8
  %100 = alloca ptr, align 8
  %101 = alloca i64, align 8
  %102 = alloca i64, align 8
  %103 = alloca i64, align 8
  %104 = alloca i64, align 8
  %105 = alloca i64, align 8
  %106 = alloca ptr, align 8
  %107 = alloca ptr, align 8
  %108 = alloca ptr, align 8
  %109 = alloca ptr, align 8
  %110 = alloca ptr, align 8
  %111 = alloca i64, align 8
  %112 = alloca i8, align 1
  %113 = alloca ptr, align 8
  %114 = alloca i32, align 4
  %115 = alloca double, align 8
  %116 = alloca double, align 8
  %117 = alloca i32, align 4
  %118 = alloca i32, align 4
  %119 = alloca i32, align 4
  %120 = alloca i32, align 4
  %121 = alloca ptr, align 8
  %122 = alloca i32, align 4
  store ptr %0, ptr %13, align 8, !tbaa !5
  store i64 %1, ptr %14, align 8, !tbaa !9
  store ptr %2, ptr %15, align 8, !tbaa !5
  store i32 %3, ptr %16, align 4, !tbaa !11
  store i64 %4, ptr %17, align 8, !tbaa !9
  store i64 %5, ptr %18, align 8, !tbaa !9
  store double %6, ptr %19, align 8, !tbaa !13
  store double %7, ptr %20, align 8, !tbaa !13
  store double %8, ptr %21, align 8, !tbaa !13
  store double %9, ptr %22, align 8, !tbaa !13
  store ptr %10, ptr %23, align 8, !tbaa !5
  br label %123

123:                                              ; preds = %11
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #13
  store i32 3, ptr %24, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #13
  store i32 4, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #13
  %124 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  store i32 %124, ptr %26, align 4, !tbaa !11
  %125 = load i32, ptr %26, align 4, !tbaa !11
  %126 = icmp sle i32 3, %125
  br i1 %126, label %127, label %161

127:                                              ; preds = %123
  br label %128

128:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #13
  %129 = load i32, ptr %26, align 4, !tbaa !11
  %130 = icmp slt i32 %129, 4
  br i1 %130, label %131, label %142

131:                                              ; preds = %128
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #13
  store ptr @_ZN14NAMESPACE_MAINL29g_cLogCalcInteractionStrengthE, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #13
  %132 = load i32, ptr @_ZN14NAMESPACE_MAINL29g_cLogCalcInteractionStrengthE, align 4, !tbaa !11
  %133 = sub nsw i32 %132, 1
  store i32 %133, ptr %29, align 4, !tbaa !11
  %134 = load i32, ptr %29, align 4, !tbaa !11
  %135 = icmp slt i32 %134, 0
  br i1 %135, label %136, label %137

136:                                              ; preds = %131
  store i32 4, ptr %30, align 4
  br label %139

137:                                              ; preds = %131
  %138 = load i32, ptr %29, align 4, !tbaa !11
  store i32 %138, ptr @_ZN14NAMESPACE_MAINL29g_cLogCalcInteractionStrengthE, align 4, !tbaa !11
  store i32 3, ptr %27, align 4, !tbaa !11
  store i32 0, ptr %30, align 4
  br label %139

139:                                              ; preds = %137, %136
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #13
  %140 = load i32, ptr %30, align 4
  switch i32 %140, label %156 [
    i32 0, label %141
  ]

141:                                              ; preds = %139
  br label %143

142:                                              ; preds = %128
  store i32 4, ptr %27, align 4, !tbaa !11
  br label %143

143:                                              ; preds = %142, %141
  %144 = load i32, ptr %27, align 4, !tbaa !11
  %145 = load ptr, ptr %13, align 8, !tbaa !5
  %146 = load i64, ptr %14, align 8, !tbaa !9
  %147 = load ptr, ptr %15, align 8, !tbaa !5
  %148 = load i32, ptr %16, align 4, !tbaa !11
  %149 = load i64, ptr %17, align 8, !tbaa !9
  %150 = load i64, ptr %18, align 8, !tbaa !9
  %151 = load double, ptr %19, align 8, !tbaa !13
  %152 = load double, ptr %20, align 8, !tbaa !13
  %153 = load double, ptr %21, align 8, !tbaa !13
  %154 = load double, ptr %22, align 8, !tbaa !13
  %155 = load ptr, ptr %23, align 8, !tbaa !5
  call void (i32, ptr, ...) @InteralLogWithArguments(i32 noundef %144, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage, ptr noundef %145, i64 noundef %146, ptr noundef %147, i32 noundef %148, i64 noundef %149, i64 noundef %150, double noundef %151, double noundef %152, double noundef %153, double noundef %154, ptr noundef %155)
  store i32 0, ptr %30, align 4
  br label %156

156:                                              ; preds = %143, %139
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #13
  %157 = load i32, ptr %30, align 4
  switch i32 %157, label %1339 [
    i32 0, label %158
    i32 4, label %160
  ]

158:                                              ; preds = %156
  br label %159

159:                                              ; preds = %158
  br label %160

160:                                              ; preds = %159, %156
  br label %161

161:                                              ; preds = %160, %123
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #13
  br label %162

162:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #13
  %163 = load ptr, ptr %23, align 8, !tbaa !5
  %164 = icmp ne ptr null, %163
  %165 = xor i1 %164, true
  %166 = xor i1 %165, true
  %167 = zext i1 %166 to i64
  %168 = call i64 @llvm.expect.i64(i64 %167, i64 1)
  %169 = icmp ne i64 %168, 0
  br i1 %169, label %170, label %172

170:                                              ; preds = %162
  %171 = load ptr, ptr %23, align 8, !tbaa !5
  store double 0xFFEFFFFFFFFFFFFF, ptr %171, align 8, !tbaa !13
  br label %172

172:                                              ; preds = %170, %162
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #13
  %173 = load ptr, ptr %13, align 8, !tbaa !5
  %174 = call noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell29GetInteractionShellFromHandleEP18_InteractionHandle(ptr noundef %173)
  store ptr %174, ptr %32, align 8, !tbaa !5
  %175 = load ptr, ptr %32, align 8, !tbaa !5
  %176 = icmp eq ptr null, %175
  br i1 %176, label %177, label %178

177:                                              ; preds = %172
  store i32 -3, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1337

178:                                              ; preds = %172
  br label %179

179:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #13
  store i32 3, ptr %33, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #13
  store i32 4, ptr %34, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #13
  %180 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  store i32 %180, ptr %35, align 4, !tbaa !11
  %181 = load i32, ptr %35, align 4, !tbaa !11
  %182 = icmp sle i32 3, %181
  br i1 %182, label %183, label %210

183:                                              ; preds = %179
  br label %184

184:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #13
  %185 = load i32, ptr %35, align 4, !tbaa !11
  %186 = icmp slt i32 %185, 4
  br i1 %186, label %187, label %202

187:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #13
  %188 = load ptr, ptr %32, align 8, !tbaa !5
  %189 = call noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell31GetPointerCountLogEnterMessagesEv(ptr noundef nonnull align 8 dereferenceable(56) %188)
  store ptr %189, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #13
  %190 = load ptr, ptr %37, align 8, !tbaa !5
  %191 = load i32, ptr %190, align 4, !tbaa !11
  %192 = sub nsw i32 %191, 1
  store i32 %192, ptr %38, align 4, !tbaa !11
  %193 = load i32, ptr %38, align 4, !tbaa !11
  %194 = icmp slt i32 %193, 0
  br i1 %194, label %195, label %196

195:                                              ; preds = %187
  store i32 8, ptr %30, align 4
  br label %199

196:                                              ; preds = %187
  %197 = load i32, ptr %38, align 4, !tbaa !11
  %198 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 %197, ptr %198, align 4, !tbaa !11
  store i32 3, ptr %36, align 4, !tbaa !11
  store i32 0, ptr %30, align 4
  br label %199

199:                                              ; preds = %196, %195
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #13
  %200 = load i32, ptr %30, align 4
  switch i32 %200, label %205 [
    i32 0, label %201
  ]

201:                                              ; preds = %199
  br label %203

202:                                              ; preds = %184
  store i32 4, ptr %36, align 4, !tbaa !11
  br label %203

203:                                              ; preds = %202, %201
  %204 = load i32, ptr %36, align 4, !tbaa !11
  call void @InteralLogWithoutArguments(i32 noundef %204, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage_0)
  store i32 0, ptr %30, align 4
  br label %205

205:                                              ; preds = %203, %199
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #13
  %206 = load i32, ptr %30, align 4
  switch i32 %206, label %1339 [
    i32 0, label %207
    i32 8, label %209
  ]

207:                                              ; preds = %205
  br label %208

208:                                              ; preds = %207
  br label %209

209:                                              ; preds = %208, %205
  br label %210

210:                                              ; preds = %209, %179
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #13
  br label %211

211:                                              ; preds = %210
  br label %212

212:                                              ; preds = %211
  %213 = load i32, ptr %16, align 4, !tbaa !11
  %214 = and i32 %213, -4
  %215 = icmp ne i32 %214, 0
  br i1 %215, label %216, label %224

216:                                              ; preds = %212
  br label %217

217:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #13
  store i32 1, ptr %39, align 4, !tbaa !11
  %218 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %219 = icmp sle i32 1, %218
  br i1 %219, label %220, label %221

220:                                              ; preds = %217
  call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage_1)
  br label %221

221:                                              ; preds = %220, %217
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #13
  br label %222

222:                                              ; preds = %221
  br label %223

223:                                              ; preds = %222
  br label %224

224:                                              ; preds = %223, %212
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #13
  %225 = call noundef i64 @_ZNSt14numeric_limitsImE3maxEv() #13
  store i64 %225, ptr %40, align 8, !tbaa !9
  %226 = load i64, ptr %17, align 8, !tbaa !9
  %227 = icmp sle i64 0, %226
  br i1 %227, label %228, label %238

228:                                              ; preds = %224
  %229 = load i64, ptr %17, align 8, !tbaa !9
  %230 = icmp ne i64 0, %229
  br i1 %230, label %231, label %237

231:                                              ; preds = %228
  %232 = load i64, ptr %17, align 8, !tbaa !9
  %233 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %232) #13
  br i1 %233, label %236, label %234

234:                                              ; preds = %231
  %235 = load i64, ptr %17, align 8, !tbaa !9
  store i64 %235, ptr %40, align 8, !tbaa !9
  br label %236

236:                                              ; preds = %234, %231
  br label %237

237:                                              ; preds = %236, %228
  br label %246

238:                                              ; preds = %224
  br label %239

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

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

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

244:                                              ; preds = %243
  br label %245

245:                                              ; preds = %244
  br label %246

246:                                              ; preds = %245, %237
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #13
  store i64 1, ptr %42, align 8, !tbaa !9
  %247 = load i64, ptr %18, align 8, !tbaa !9
  %248 = icmp sle i64 1, %247
  br i1 %248, label %249, label %256

249:                                              ; preds = %246
  %250 = load i64, ptr %18, align 8, !tbaa !9
  store i64 %250, ptr %42, align 8, !tbaa !9
  %251 = load i64, ptr %18, align 8, !tbaa !9
  %252 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %251) #13
  br i1 %252, label %253, label %255

253:                                              ; preds = %249
  %254 = call noundef i64 @_ZNSt14numeric_limitsImE3maxEv() #13
  store i64 %254, ptr %42, align 8, !tbaa !9
  br label %255

255:                                              ; preds = %253, %249
  br label %264

256:                                              ; preds = %246
  br label %257

257:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #13
  store i32 2, ptr %43, align 4, !tbaa !11
  %258 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %259 = icmp sle i32 2, %258
  br i1 %259, label %260, label %261

260:                                              ; preds = %257
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage_3)
  br label %261

261:                                              ; preds = %260, %257
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #13
  br label %262

262:                                              ; preds = %261
  br label %263

263:                                              ; preds = %262
  br label %264

264:                                              ; preds = %263, %255
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #13
  %265 = load double, ptr %19, align 8, !tbaa !13
  store double %265, ptr %44, align 8, !tbaa !13
  %266 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #13
  %267 = load double, ptr %44, align 8, !tbaa !13
  %268 = fcmp ole double %266, %267
  br i1 %268, label %282, label %269

269:                                              ; preds = %264
  %270 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #13
  store double %270, ptr %44, align 8, !tbaa !13
  %271 = load double, ptr %19, align 8, !tbaa !13
  %272 = fcmp ole double 0.000000e+00, %271
  br i1 %272, label %281, label %273

273:                                              ; preds = %269
  br label %274

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

277:                                              ; preds = %274
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage_4)
  br label %278

278:                                              ; preds = %277, %274
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #13
  br label %279

279:                                              ; preds = %278
  br label %280

280:                                              ; preds = %279
  br label %281

281:                                              ; preds = %280, %269
  br label %282

282:                                              ; preds = %281, %264
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #13
  %283 = load double, ptr %20, align 8, !tbaa !13
  store double %283, ptr %46, align 8, !tbaa !13
  %284 = load double, ptr %46, align 8, !tbaa !13
  %285 = fcmp ole double 0.000000e+00, %284
  br i1 %285, label %294, label %286

286:                                              ; preds = %282
  store double 0.000000e+00, ptr %46, align 8, !tbaa !13
  br label %287

287:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #13
  store i32 2, ptr %47, align 4, !tbaa !11
  %288 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %289 = icmp sle i32 2, %288
  br i1 %289, label %290, label %291

290:                                              ; preds = %287
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage_5)
  br label %291

291:                                              ; preds = %290, %287
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #13
  br label %292

292:                                              ; preds = %291
  br label %293

293:                                              ; preds = %292
  br label %294

294:                                              ; preds = %293, %282
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #13
  %295 = load double, ptr %21, align 8, !tbaa !13
  store double %295, ptr %48, align 8, !tbaa !13
  %296 = load double, ptr %48, align 8, !tbaa !13
  %297 = fcmp ole double 0.000000e+00, %296
  br i1 %297, label %306, label %298

298:                                              ; preds = %294
  store double 0.000000e+00, ptr %48, align 8, !tbaa !13
  br label %299

299:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #13
  store i32 2, ptr %49, align 4, !tbaa !11
  %300 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %301 = icmp sle i32 2, %300
  br i1 %301, label %302, label %303

302:                                              ; preds = %299
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage_6)
  br label %303

303:                                              ; preds = %302, %299
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #13
  br label %304

304:                                              ; preds = %303
  br label %305

305:                                              ; preds = %304
  br label %306

306:                                              ; preds = %305, %294
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #13
  %307 = load double, ptr %22, align 8, !tbaa !13
  store double %307, ptr %50, align 8, !tbaa !13
  %308 = load double, ptr %22, align 8, !tbaa !13
  %309 = fcmp olt double 0.000000e+00, %308
  br i1 %309, label %312, label %310

310:                                              ; preds = %306
  %311 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #13
  store double %311, ptr %50, align 8, !tbaa !13
  br label %312

312:                                              ; preds = %310, %306
  %313 = load i64, ptr %14, align 8, !tbaa !9
  %314 = icmp sle i64 %313, 0
  br i1 %314, label %315, label %344

315:                                              ; preds = %312
  %316 = load i64, ptr %14, align 8, !tbaa !9
  %317 = icmp eq i64 0, %316
  br i1 %317, label %318, label %336

318:                                              ; preds = %315
  br label %319

319:                                              ; preds = %318
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #13
  store i32 3, ptr %51, align 4, !tbaa !11
  %320 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %321 = icmp sle i32 3, %320
  br i1 %321, label %322, label %323

322:                                              ; preds = %319
  call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage_7)
  br label %323

323:                                              ; preds = %322, %319
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #13
  br label %324

324:                                              ; preds = %323
  br label %325

325:                                              ; preds = %324
  %326 = load ptr, ptr %23, align 8, !tbaa !5
  %327 = icmp ne ptr null, %326
  %328 = xor i1 %327, true
  %329 = xor i1 %328, true
  %330 = zext i1 %329 to i64
  %331 = call i64 @llvm.expect.i64(i64 %330, i64 1)
  %332 = icmp ne i64 %331, 0
  br i1 %332, label %333, label %335

333:                                              ; preds = %325
  %334 = load ptr, ptr %23, align 8, !tbaa !5
  store double 0.000000e+00, ptr %334, align 8, !tbaa !13
  br label %335

335:                                              ; preds = %333, %325
  store i32 0, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1336

336:                                              ; preds = %315
  br label %337

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

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

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

342:                                              ; preds = %341
  br label %343

343:                                              ; preds = %342
  store i32 -3, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1336

344:                                              ; preds = %312
  %345 = load ptr, ptr %15, align 8, !tbaa !5
  %346 = icmp eq ptr null, %345
  br i1 %346, label %347, label %355

347:                                              ; preds = %344
  br label %348

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

351:                                              ; preds = %348
  call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage_9)
  br label %352

352:                                              ; preds = %351, %348
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #13
  br label %353

353:                                              ; preds = %352
  br label %354

354:                                              ; preds = %353
  store i32 -3, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1336

355:                                              ; preds = %344
  %356 = load i64, ptr %14, align 8, !tbaa !9
  %357 = icmp slt i64 30, %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 %54) #13
  store i32 2, ptr %54, 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 @_ZZ23CalcInteractionStrengthE13LOG__sMessage__10_)
  br label %363

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

364:                                              ; preds = %363
  br label %365

365:                                              ; preds = %364
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1336

366:                                              ; preds = %355
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #13
  %367 = load i64, ptr %14, align 8, !tbaa !9
  store i64 %367, ptr %55, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #13
  %368 = load ptr, ptr %32, align 8, !tbaa !5
  %369 = call noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell18GetInteractionCoreEv(ptr noundef nonnull align 8 dereferenceable(56) %368)
  store ptr %369, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #13
  %370 = load ptr, ptr %56, align 8, !tbaa !5
  %371 = call noundef i64 @_ZNK14NAMESPACE_MAIN15InteractionCore14GetCountScoresEv(ptr noundef nonnull align 8 dereferenceable(392) %370)
  store i64 %371, ptr %57, align 8, !tbaa !9
  %372 = load i64, ptr %57, align 8, !tbaa !9
  %373 = icmp eq i64 0, %372
  br i1 %373, label %374, label %387

374:                                              ; preds = %366
  br label %375

375:                                              ; preds = %374
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #13
  store i32 3, ptr %58, align 4, !tbaa !11
  %376 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %377 = icmp sle i32 3, %376
  br i1 %377, label %378, label %379

378:                                              ; preds = %375
  call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage__11_)
  br label %379

379:                                              ; preds = %378, %375
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #13
  br label %380

380:                                              ; preds = %379
  br label %381

381:                                              ; preds = %380
  %382 = load ptr, ptr %23, align 8, !tbaa !5
  %383 = icmp ne ptr null, %382
  br i1 %383, label %384, label %386

384:                                              ; preds = %381
  %385 = load ptr, ptr %23, align 8, !tbaa !5
  store double 0.000000e+00, ptr %385, align 8, !tbaa !13
  br label %386

386:                                              ; preds = %384, %381
  store i32 0, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1335

387:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #13
  %388 = load ptr, ptr %56, align 8, !tbaa !5
  %389 = call noundef ptr @_ZN14NAMESPACE_MAIN15InteractionCore21GetDataSetInteractionEv(ptr noundef nonnull align 8 dereferenceable(392) %388)
  store ptr %389, ptr %59, align 8, !tbaa !5
  %390 = load ptr, ptr %59, align 8, !tbaa !5
  %391 = icmp ne ptr null, %390
  br i1 %391, label %394, label %392

392:                                              ; preds = %387
  call void @LogAssertFailure(i64 noundef 266, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.1)
  call void @__assert_fail(ptr noundef @.str.2, ptr noundef @.str, i32 noundef 266, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

393:                                              ; No predecessors!
  br label %394

394:                                              ; preds = %393, %387
  %395 = phi i1 [ true, %387 ], [ false, %393 ]
  %396 = load ptr, ptr %59, align 8, !tbaa !5
  %397 = call noundef i64 @_ZNK14NAMESPACE_MAIN18DataSetInteraction15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(32) %396)
  %398 = icmp eq i64 0, %397
  br i1 %398, label %399, label %412

399:                                              ; preds = %394
  br label %400

400:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #13
  store i32 3, ptr %60, align 4, !tbaa !11
  %401 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %402 = icmp sle i32 3, %401
  br i1 %402, label %403, label %404

403:                                              ; preds = %400
  call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage__12_)
  br label %404

404:                                              ; preds = %403, %400
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #13
  br label %405

405:                                              ; preds = %404
  br label %406

406:                                              ; preds = %405
  %407 = load ptr, ptr %23, align 8, !tbaa !5
  %408 = icmp ne ptr null, %407
  br i1 %408, label %409, label %411

409:                                              ; preds = %406
  %410 = load ptr, ptr %23, align 8, !tbaa !5
  store double 0.000000e+00, ptr %410, align 8, !tbaa !13
  br label %411

411:                                              ; preds = %409, %406
  store i32 0, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1334

412:                                              ; preds = %394
  call void @llvm.lifetime.start.p0(i64 664, ptr %61) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #13
  %413 = load ptr, ptr %56, align 8, !tbaa !5
  %414 = call noundef ptr @_ZNK14NAMESPACE_MAIN15InteractionCore11GetFeaturesEv(ptr noundef nonnull align 8 dereferenceable(392) %413)
  store ptr %414, ptr %62, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #13
  %415 = load ptr, ptr %56, align 8, !tbaa !5
  %416 = call noundef i64 @_ZNK14NAMESPACE_MAIN15InteractionCore16GetCountFeaturesEv(ptr noundef nonnull align 8 dereferenceable(392) %415)
  store i64 %416, ptr %63, align 8, !tbaa !9
  %417 = load i64, ptr %55, align 8, !tbaa !9
  %418 = icmp ule i64 1, %417
  br i1 %418, label %421, label %419

419:                                              ; preds = %412
  call void @LogAssertFailure(i64 noundef 284, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.3)
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str, i32 noundef 284, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

420:                                              ; No predecessors!
  br label %421

421:                                              ; preds = %420, %412
  %422 = phi i1 [ true, %412 ], [ false, %420 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #13
  store i64 0, ptr %64, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #13
  store i64 0, ptr %65, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #13
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %423

423:                                              ; preds = %538, %421
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #13
  %424 = load ptr, ptr %15, align 8, !tbaa !5
  %425 = load i64, ptr %64, align 8, !tbaa !9
  %426 = getelementptr inbounds i64, ptr %424, i64 %425
  %427 = load i64, ptr %426, align 8, !tbaa !9
  store i64 %427, ptr %67, align 8, !tbaa !9
  %428 = load i64, ptr %67, align 8, !tbaa !9
  %429 = icmp slt i64 %428, 0
  br i1 %429, label %430, label %438

430:                                              ; preds = %423
  br label %431

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

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

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

436:                                              ; preds = %435
  br label %437

437:                                              ; preds = %436
  store i32 -3, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %535

438:                                              ; preds = %423
  %439 = load i64, ptr %63, align 8, !tbaa !9
  %440 = load i64, ptr %67, align 8, !tbaa !9
  %441 = icmp sle i64 %439, %440
  br i1 %441, label %442, label %450

442:                                              ; preds = %438
  br label %443

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

446:                                              ; preds = %443
  call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage__14_)
  br label %447

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

448:                                              ; preds = %447
  br label %449

449:                                              ; preds = %448
  store i32 -3, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %535

450:                                              ; preds = %438
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #13
  %451 = load i64, ptr %67, align 8, !tbaa !9
  store i64 %451, ptr %70, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #13
  %452 = load ptr, ptr %62, align 8, !tbaa !5
  %453 = load i64, ptr %70, align 8, !tbaa !9
  %454 = getelementptr inbounds %"class.NAMESPACE_MAIN::FeatureInteraction", ptr %452, i64 %453
  store ptr %454, ptr %71, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #13
  %455 = load ptr, ptr %71, align 8, !tbaa !5
  %456 = call noundef i64 @_ZNK14NAMESPACE_MAIN18FeatureInteraction12GetCountBinsEv(ptr noundef nonnull align 8 dereferenceable(16) %455) #13
  store i64 %456, ptr %72, align 8, !tbaa !9
  %457 = load i64, ptr %72, align 8, !tbaa !9
  %458 = icmp ule i64 %457, 1
  %459 = xor i1 %458, true
  %460 = xor i1 %459, true
  %461 = zext i1 %460 to i64
  %462 = call i64 @llvm.expect.i64(i64 %461, i64 0)
  %463 = icmp ne i64 %462, 0
  br i1 %463, label %464, label %477

464:                                              ; preds = %450
  br label %465

465:                                              ; preds = %464
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #13
  store i32 3, ptr %73, align 4, !tbaa !11
  %466 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %467 = icmp sle i32 3, %466
  br i1 %467, label %468, label %469

468:                                              ; preds = %465
  call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage__15_)
  br label %469

469:                                              ; preds = %468, %465
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #13
  br label %470

470:                                              ; preds = %469
  br label %471

471:                                              ; preds = %470
  %472 = load ptr, ptr %23, align 8, !tbaa !5
  %473 = icmp ne ptr null, %472
  br i1 %473, label %474, label %476

474:                                              ; preds = %471
  %475 = load ptr, ptr %23, align 8, !tbaa !5
  store double 0.000000e+00, ptr %475, align 8, !tbaa !13
  br label %476

476:                                              ; preds = %474, %471
  store i32 0, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %534

477:                                              ; preds = %450
  %478 = load i64, ptr %72, align 8, !tbaa !9
  %479 = getelementptr inbounds %struct.BinSumsInteractionBridge, ptr %61, i32 0, i32 6
  %480 = load i64, ptr %64, align 8, !tbaa !9
  %481 = getelementptr inbounds [30 x i64], ptr %479, i64 0, i64 %480
  store i64 %478, ptr %481, align 8, !tbaa !9
  %482 = load i64, ptr %66, align 8, !tbaa !9
  %483 = icmp eq i64 0, %482
  br i1 %483, label %490, label %484

484:                                              ; preds = %477
  %485 = load i64, ptr %65, align 8, !tbaa !9
  %486 = load i64, ptr %66, align 8, !tbaa !9
  %487 = icmp ult i64 %485, %486
  br i1 %487, label %490, label %488

488:                                              ; preds = %484
  call void @LogAssertFailure(i64 noundef 317, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.5)
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 317, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

489:                                              ; No predecessors!
  br label %490

490:                                              ; preds = %489, %484, %477
  %491 = phi i1 [ true, %484 ], [ true, %477 ], [ false, %489 ]
  %492 = load i64, ptr %65, align 8, !tbaa !9
  %493 = load i64, ptr %66, align 8, !tbaa !9
  %494 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef %492, i64 noundef %493) #13
  br i1 %494, label %495, label %497

495:                                              ; preds = %490
  call void @LogAssertFailure(i64 noundef 320, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.7)
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str, i32 noundef 320, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

496:                                              ; No predecessors!
  br label %497

497:                                              ; preds = %496, %490
  %498 = phi i1 [ true, %490 ], [ false, %496 ]
  %499 = load i64, ptr %66, align 8, !tbaa !9
  %500 = load i64, ptr %65, align 8, !tbaa !9
  %501 = add i64 %500, %499
  store i64 %501, ptr %65, align 8, !tbaa !9
  %502 = load i64, ptr %66, align 8, !tbaa !9
  %503 = load i64, ptr %72, align 8, !tbaa !9
  %504 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %502, i64 noundef %503) #13
  br i1 %504, label %505, label %518

505:                                              ; preds = %497
  br label %506

506:                                              ; preds = %505
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #13
  store i32 3, ptr %74, align 4, !tbaa !11
  %507 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %508 = icmp sle i32 3, %507
  br i1 %508, label %509, label %510

509:                                              ; preds = %506
  call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage__16_)
  br label %510

510:                                              ; preds = %509, %506
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #13
  br label %511

511:                                              ; preds = %510
  br label %512

512:                                              ; preds = %511
  %513 = load ptr, ptr %23, align 8, !tbaa !5
  %514 = icmp ne ptr null, %513
  br i1 %514, label %515, label %517

515:                                              ; preds = %512
  %516 = load ptr, ptr %23, align 8, !tbaa !5
  store double 0.000000e+00, ptr %516, align 8, !tbaa !13
  br label %517

517:                                              ; preds = %515, %512
  store i32 0, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %534

518:                                              ; preds = %497
  %519 = load i64, ptr %72, align 8, !tbaa !9
  %520 = load i64, ptr %66, align 8, !tbaa !9
  %521 = mul i64 %520, %519
  store i64 %521, ptr %66, align 8, !tbaa !9
  %522 = load i64, ptr %66, align 8, !tbaa !9
  %523 = icmp eq i64 0, %522
  br i1 %523, label %530, label %524

524:                                              ; preds = %518
  %525 = load i64, ptr %65, align 8, !tbaa !9
  %526 = load i64, ptr %66, align 8, !tbaa !9
  %527 = icmp ult i64 %525, %526
  br i1 %527, label %530, label %528

528:                                              ; preds = %524
  call void @LogAssertFailure(i64 noundef 338, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.5)
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 338, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

529:                                              ; No predecessors!
  br label %530

530:                                              ; preds = %529, %524, %518
  %531 = phi i1 [ true, %524 ], [ true, %518 ], [ false, %529 ]
  %532 = load i64, ptr %64, align 8, !tbaa !9
  %533 = add i64 %532, 1
  store i64 %533, ptr %64, align 8, !tbaa !9
  store i32 0, ptr %30, align 4
  br label %534

534:                                              ; preds = %530, %517, %476
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #13
  br label %535

535:                                              ; preds = %534, %449, %437
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #13
  %536 = load i32, ptr %30, align 4
  switch i32 %536, label %1333 [
    i32 0, label %537
  ]

537:                                              ; preds = %535
  br label %538

538:                                              ; preds = %537
  %539 = load i64, ptr %55, align 8, !tbaa !9
  %540 = load i64, ptr %64, align 8, !tbaa !9
  %541 = icmp ne i64 %539, %540
  br i1 %541, label %423, label %542, !llvm.loop !15

542:                                              ; preds = %538
  %543 = load i64, ptr %40, align 8, !tbaa !9
  %544 = load i64, ptr %66, align 8, !tbaa !9
  %545 = icmp ult i64 %543, %544
  br i1 %545, label %546, label %559

546:                                              ; preds = %542
  br label %547

547:                                              ; preds = %546
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #13
  store i32 3, ptr %75, align 4, !tbaa !11
  %548 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %549 = icmp sle i32 3, %548
  br i1 %549, label %550, label %551

550:                                              ; preds = %547
  call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage__17_)
  br label %551

551:                                              ; preds = %550, %547
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #13
  br label %552

552:                                              ; preds = %551
  br label %553

553:                                              ; preds = %552
  %554 = load ptr, ptr %23, align 8, !tbaa !5
  %555 = icmp ne ptr null, %554
  br i1 %555, label %556, label %558

556:                                              ; preds = %553
  %557 = load ptr, ptr %23, align 8, !tbaa !5
  store double 0.000000e+00, ptr %557, align 8, !tbaa !13
  br label %558

558:                                              ; preds = %556, %553
  store i32 0, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1333

559:                                              ; preds = %542
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #13
  %560 = load i64, ptr %65, align 8, !tbaa !9
  %561 = call noundef i64 @_ZN14NAMESPACE_MAINL6EbmMaxImEET_S1_S1_(i64 noundef %560, i64 noundef 4) #13
  store i64 %561, ptr %76, align 8, !tbaa !9
  %562 = load i64, ptr %66, align 8, !tbaa !9
  %563 = load i64, ptr %76, align 8, !tbaa !9
  %564 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef %562, i64 noundef %563) #13
  br i1 %564, label %565, label %573

565:                                              ; preds = %559
  br label %566

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

569:                                              ; preds = %566
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage__18_)
  br label %570

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

571:                                              ; preds = %570
  br label %572

572:                                              ; preds = %571
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1332

573:                                              ; preds = %559
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #13
  %574 = load i64, ptr %66, align 8, !tbaa !9
  %575 = load i64, ptr %76, align 8, !tbaa !9
  %576 = add i64 %574, %575
  store i64 %576, ptr %78, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #13
  %577 = load ptr, ptr %56, align 8, !tbaa !5
  %578 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN15InteractionCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(392) %577)
  %579 = load i64, ptr %57, align 8, !tbaa !9
  %580 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIdmEEmbbbm(i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext %578, i64 noundef %579)
  store i64 %580, ptr %79, align 8, !tbaa !9
  %581 = load i64, ptr %79, align 8, !tbaa !9
  %582 = load i64, ptr %78, align 8, !tbaa !9
  %583 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %581, i64 noundef %582) #13
  br i1 %583, label %584, label %592

584:                                              ; preds = %573
  br label %585

585:                                              ; preds = %584
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #13
  store i32 2, ptr %80, align 4, !tbaa !11
  %586 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %587 = icmp sle i32 2, %586
  br i1 %587, label %588, label %589

588:                                              ; preds = %585
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage__19_)
  br label %589

589:                                              ; preds = %588, %585
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #13
  br label %590

590:                                              ; preds = %589
  br label %591

591:                                              ; preds = %590
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1331

592:                                              ; preds = %573
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #13
  %593 = load ptr, ptr %32, align 8, !tbaa !5
  %594 = load i64, ptr %79, align 8, !tbaa !9
  %595 = load i64, ptr %78, align 8, !tbaa !9
  %596 = call noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell22GetInteractionMainBinsEmm(ptr noundef nonnull align 8 dereferenceable(56) %593, i64 noundef %594, i64 noundef %595)
  store ptr %596, ptr %81, align 8, !tbaa !5
  %597 = load ptr, ptr %81, align 8, !tbaa !5
  %598 = icmp eq ptr null, %597
  %599 = xor i1 %598, true
  %600 = xor i1 %599, true
  %601 = zext i1 %600 to i64
  %602 = call i64 @llvm.expect.i64(i64 %601, i64 0)
  %603 = icmp ne i64 %602, 0
  br i1 %603, label %604, label %605

604:                                              ; preds = %592
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1330

605:                                              ; preds = %592
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #13
  %606 = load ptr, ptr %81, align 8, !tbaa !5
  %607 = load i64, ptr %79, align 8, !tbaa !9
  %608 = load i64, ptr %78, align 8, !tbaa !9
  %609 = mul i64 %607, %608
  %610 = call noundef ptr @_ZN14NAMESPACE_MAINL8IndexBinEPNS_7BinBaseEm(ptr noundef %606, i64 noundef %609)
  store ptr %610, ptr %82, align 8, !tbaa !5
  %611 = load ptr, ptr %81, align 8, !tbaa !5
  %612 = load i64, ptr %79, align 8, !tbaa !9
  %613 = load i64, ptr %66, align 8, !tbaa !9
  %614 = mul i64 %612, %613
  call void @llvm.memset.p0.i64(ptr align 1 %611, i8 0, i64 %614, i1 false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #13
  %615 = load ptr, ptr %56, align 8, !tbaa !5
  %616 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN15InteractionCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(392) %615)
  %617 = zext i1 %616 to i8
  store i8 %617, ptr %83, align 1, !tbaa !17
  %618 = load ptr, ptr %56, align 8, !tbaa !5
  %619 = call noundef ptr @_ZN14NAMESPACE_MAIN15InteractionCore21GetDataSetInteractionEv(ptr noundef nonnull align 8 dereferenceable(392) %618)
  %620 = call noundef i64 @_ZNK14NAMESPACE_MAIN18DataSetInteraction15GetCountSubsetsEv(ptr noundef nonnull align 8 dereferenceable(32) %619)
  %621 = icmp ule i64 1, %620
  br i1 %621, label %624, label %622

622:                                              ; preds = %605
  call void @LogAssertFailure(i64 noundef 380, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.9)
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str, i32 noundef 380, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

623:                                              ; No predecessors!
  br label %624

624:                                              ; preds = %623, %605
  %625 = phi i1 [ true, %605 ], [ false, %623 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #13
  %626 = load ptr, ptr %56, align 8, !tbaa !5
  %627 = call noundef ptr @_ZN14NAMESPACE_MAIN15InteractionCore21GetDataSetInteractionEv(ptr noundef nonnull align 8 dereferenceable(392) %626)
  %628 = call noundef ptr @_ZN14NAMESPACE_MAIN18DataSetInteraction10GetSubsetsEv(ptr noundef nonnull align 8 dereferenceable(32) %627)
  store ptr %628, ptr %84, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #13
  %629 = load ptr, ptr %84, align 8, !tbaa !5
  %630 = load ptr, ptr %56, align 8, !tbaa !5
  %631 = call noundef ptr @_ZN14NAMESPACE_MAIN15InteractionCore21GetDataSetInteractionEv(ptr noundef nonnull align 8 dereferenceable(392) %630)
  %632 = call noundef i64 @_ZNK14NAMESPACE_MAIN18DataSetInteraction15GetCountSubsetsEv(ptr noundef nonnull align 8 dereferenceable(32) %631)
  %633 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %629, i64 %632
  store ptr %633, ptr %85, align 8, !tbaa !5
  br label %634

634:                                              ; preds = %826, %624
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #13
  %635 = load ptr, ptr %84, align 8, !tbaa !5
  %636 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %635)
  %637 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %636, i32 0, i32 18
  %638 = load i64, ptr %637, align 8, !tbaa !19
  %639 = icmp eq i64 8, %638
  br i1 %639, label %640, label %666

640:                                              ; preds = %634
  %641 = load ptr, ptr %84, align 8, !tbaa !5
  %642 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %641)
  %643 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %642, i32 0, i32 17
  %644 = load i64, ptr %643, align 8, !tbaa !21
  %645 = icmp eq i64 8, %644
  br i1 %645, label %646, label %651

646:                                              ; preds = %640
  %647 = load i8, ptr %83, align 1, !tbaa !17, !range !22, !noundef !23
  %648 = trunc i8 %647 to i1
  %649 = load i64, ptr %57, align 8, !tbaa !9
  %650 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIdmEEmbbbm(i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext %648, i64 noundef %649)
  store i64 %650, ptr %86, align 8, !tbaa !9
  br label %665

651:                                              ; preds = %640
  %652 = load ptr, ptr %84, align 8, !tbaa !5
  %653 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %652)
  %654 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %653, i32 0, i32 17
  %655 = load i64, ptr %654, align 8, !tbaa !21
  %656 = icmp eq i64 4, %655
  br i1 %656, label %659, label %657

657:                                              ; preds = %651
  call void @LogAssertFailure(i64 noundef 390, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.11)
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str, i32 noundef 390, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

658:                                              ; No predecessors!
  br label %659

659:                                              ; preds = %658, %651
  %660 = phi i1 [ true, %651 ], [ false, %658 ]
  %661 = load i8, ptr %83, align 1, !tbaa !17, !range !22, !noundef !23
  %662 = trunc i8 %661 to i1
  %663 = load i64, ptr %57, align 8, !tbaa !9
  %664 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIfmEEmbbbm(i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext %662, i64 noundef %663)
  store i64 %664, ptr %86, align 8, !tbaa !9
  br label %665

665:                                              ; preds = %659, %646
  br label %701

666:                                              ; preds = %634
  %667 = load ptr, ptr %84, align 8, !tbaa !5
  %668 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %667)
  %669 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %668, i32 0, i32 18
  %670 = load i64, ptr %669, align 8, !tbaa !19
  %671 = icmp eq i64 4, %670
  br i1 %671, label %674, label %672

672:                                              ; preds = %666
  call void @LogAssertFailure(i64 noundef 394, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.13)
  call void @__assert_fail(ptr noundef @.str.14, ptr noundef @.str, i32 noundef 394, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

673:                                              ; No predecessors!
  br label %674

674:                                              ; preds = %673, %666
  %675 = phi i1 [ true, %666 ], [ false, %673 ]
  %676 = load ptr, ptr %84, align 8, !tbaa !5
  %677 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %676)
  %678 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %677, i32 0, i32 17
  %679 = load i64, ptr %678, align 8, !tbaa !21
  %680 = icmp eq i64 8, %679
  br i1 %680, label %681, label %686

681:                                              ; preds = %674
  %682 = load i8, ptr %83, align 1, !tbaa !17, !range !22, !noundef !23
  %683 = trunc i8 %682 to i1
  %684 = load i64, ptr %57, align 8, !tbaa !9
  %685 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIdjEEmbbbm(i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext %683, i64 noundef %684)
  store i64 %685, ptr %86, align 8, !tbaa !9
  br label %700

686:                                              ; preds = %674
  %687 = load ptr, ptr %84, align 8, !tbaa !5
  %688 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %687)
  %689 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %688, i32 0, i32 17
  %690 = load i64, ptr %689, align 8, !tbaa !21
  %691 = icmp eq i64 4, %690
  br i1 %691, label %694, label %692

692:                                              ; preds = %686
  call void @LogAssertFailure(i64 noundef 398, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.11)
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str, i32 noundef 398, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

693:                                              ; No predecessors!
  br label %694

694:                                              ; preds = %693, %686
  %695 = phi i1 [ true, %686 ], [ false, %693 ]
  %696 = load i8, ptr %83, align 1, !tbaa !17, !range !22, !noundef !23
  %697 = trunc i8 %696 to i1
  %698 = load i64, ptr %57, align 8, !tbaa !9
  %699 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIfjEEmbbbm(i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext %697, i64 noundef %698)
  store i64 %699, ptr %86, align 8, !tbaa !9
  br label %700

700:                                              ; preds = %694, %681
  br label %701

701:                                              ; preds = %700, %665
  %702 = load i64, ptr %86, align 8, !tbaa !9
  %703 = load i64, ptr %66, align 8, !tbaa !9
  %704 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %702, i64 noundef %703) #13
  br i1 %704, label %705, label %713

705:                                              ; preds = %701
  br label %706

706:                                              ; preds = %705
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #13
  store i32 2, ptr %87, align 4, !tbaa !11
  %707 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %708 = icmp sle i32 2, %707
  br i1 %708, label %709, label %710

709:                                              ; preds = %706
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage__20_)
  br label %710

710:                                              ; preds = %709, %706
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #13
  br label %711

711:                                              ; preds = %710
  br label %712

712:                                              ; preds = %711
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %823

713:                                              ; preds = %701
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #13
  %714 = load ptr, ptr %32, align 8, !tbaa !5
  %715 = load i64, ptr %86, align 8, !tbaa !9
  %716 = load i64, ptr %66, align 8, !tbaa !9
  %717 = mul i64 %715, %716
  %718 = call noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell26GetInteractionFastBinsTempEm(ptr noundef nonnull align 8 dereferenceable(56) %714, i64 noundef %717)
  store ptr %718, ptr %88, align 8, !tbaa !5
  %719 = load ptr, ptr %88, align 8, !tbaa !5
  %720 = icmp eq ptr null, %719
  %721 = xor i1 %720, true
  %722 = xor i1 %721, true
  %723 = zext i1 %722 to i64
  %724 = call i64 @llvm.expect.i64(i64 %723, i64 0)
  %725 = icmp ne i64 %724, 0
  br i1 %725, label %726, label %727

726:                                              ; preds = %713
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %822

727:                                              ; preds = %713
  %728 = load ptr, ptr %88, align 8, !tbaa !5
  %729 = load i64, ptr %86, align 8, !tbaa !9
  %730 = load i64, ptr %66, align 8, !tbaa !9
  call void @_ZN14NAMESPACE_MAIN7BinBase7ZeroMemEmmm(ptr noundef nonnull align 1 dereferenceable(1) %728, i64 noundef %729, i64 noundef %730, i64 noundef 0)
  %731 = load ptr, ptr %88, align 8, !tbaa !5
  %732 = load i64, ptr %86, align 8, !tbaa !9
  %733 = load i64, ptr %66, align 8, !tbaa !9
  %734 = mul i64 %732, %733
  %735 = call noundef ptr @_ZN14NAMESPACE_MAINL8IndexBinEPNS_7BinBaseEm(ptr noundef %731, i64 noundef %734)
  %736 = getelementptr inbounds %struct.BinSumsInteractionBridge, ptr %61, i32 0, i32 10
  store ptr %735, ptr %736, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #13
  store i64 0, ptr %89, align 8, !tbaa !9
  br label %737

737:                                              ; preds = %771, %727
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #13
  %738 = load ptr, ptr %15, align 8, !tbaa !5
  %739 = load i64, ptr %89, align 8, !tbaa !9
  %740 = getelementptr inbounds i64, ptr %738, i64 %739
  %741 = load i64, ptr %740, align 8, !tbaa !9
  store i64 %741, ptr %90, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #13
  %742 = load i64, ptr %90, align 8, !tbaa !9
  store i64 %742, ptr %91, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #13
  %743 = load ptr, ptr %62, align 8, !tbaa !5
  %744 = load i64, ptr %91, align 8, !tbaa !9
  %745 = getelementptr inbounds %"class.NAMESPACE_MAIN::FeatureInteraction", ptr %743, i64 %744
  store ptr %745, ptr %92, align 8, !tbaa !5
  %746 = load ptr, ptr %84, align 8, !tbaa !5
  %747 = load i64, ptr %91, align 8, !tbaa !9
  %748 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction14GetFeatureDataEm(ptr noundef nonnull align 8 dereferenceable(40) %746, i64 noundef %747)
  %749 = getelementptr inbounds %struct.BinSumsInteractionBridge, ptr %61, i32 0, i32 8
  %750 = load i64, ptr %89, align 8, !tbaa !9
  %751 = getelementptr inbounds [30 x ptr], ptr %749, i64 0, i64 %750
  store ptr %748, ptr %751, align 8, !tbaa !5
  %752 = load ptr, ptr %92, align 8, !tbaa !5
  %753 = call noundef i32 @_ZNK14NAMESPACE_MAIN18FeatureInteraction18GetBitsRequiredMinEv(ptr noundef nonnull align 8 dereferenceable(16) %752) #13
  %754 = icmp sle i32 1, %753
  br i1 %754, label %757, label %755

755:                                              ; preds = %737
  call void @LogAssertFailure(i64 noundef 428, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.15)
  call void @__assert_fail(ptr noundef @.str.16, ptr noundef @.str, i32 noundef 428, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

756:                                              ; No predecessors!
  br label %757

757:                                              ; preds = %756, %737
  %758 = phi i1 [ true, %737 ], [ false, %756 ]
  %759 = load ptr, ptr %92, align 8, !tbaa !5
  %760 = call noundef i32 @_ZNK14NAMESPACE_MAIN18FeatureInteraction18GetBitsRequiredMinEv(ptr noundef nonnull align 8 dereferenceable(16) %759) #13
  %761 = load ptr, ptr %84, align 8, !tbaa !5
  %762 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %761)
  %763 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %762, i32 0, i32 18
  %764 = load i64, ptr %763, align 8, !tbaa !19
  %765 = call noundef i32 @_ZN14NAMESPACE_MAINL22GetCountItemsBitPackedEim(i32 noundef %760, i64 noundef %764) #13
  %766 = getelementptr inbounds %struct.BinSumsInteractionBridge, ptr %61, i32 0, i32 7
  %767 = load i64, ptr %89, align 8, !tbaa !9
  %768 = getelementptr inbounds [30 x i32], ptr %766, i64 0, i64 %767
  store i32 %765, ptr %768, align 4, !tbaa !11
  %769 = load i64, ptr %89, align 8, !tbaa !9
  %770 = add i64 %769, 1
  store i64 %770, ptr %89, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #13
  br label %771

771:                                              ; preds = %757
  %772 = load i64, ptr %55, align 8, !tbaa !9
  %773 = load i64, ptr %89, align 8, !tbaa !9
  %774 = icmp ne i64 %772, %773
  br i1 %774, label %737, label %775, !llvm.loop !26

775:                                              ; preds = %771
  %776 = load i64, ptr %55, align 8, !tbaa !9
  %777 = getelementptr inbounds %struct.BinSumsInteractionBridge, ptr %61, i32 0, i32 5
  store i64 %776, ptr %777, align 8, !tbaa !27
  %778 = load ptr, ptr %56, align 8, !tbaa !5
  %779 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN15InteractionCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(392) %778)
  %780 = zext i1 %779 to i64
  %781 = select i1 %779, i32 1, i32 0
  %782 = getelementptr inbounds %struct.BinSumsInteractionBridge, ptr %61, i32 0, i32 0
  store i32 %781, ptr %782, align 8, !tbaa !28
  %783 = load i64, ptr %57, align 8, !tbaa !9
  %784 = getelementptr inbounds %struct.BinSumsInteractionBridge, ptr %61, i32 0, i32 1
  store i64 %783, ptr %784, align 8, !tbaa !29
  %785 = load ptr, ptr %84, align 8, !tbaa !5
  %786 = call noundef i64 @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(40) %785)
  %787 = getelementptr inbounds %struct.BinSumsInteractionBridge, ptr %61, i32 0, i32 2
  store i64 %786, ptr %787, align 8, !tbaa !30
  %788 = load ptr, ptr %84, align 8, !tbaa !5
  %789 = call noundef ptr @_ZN14NAMESPACE_MAIN21DataSubsetInteraction11GetGradHessEv(ptr noundef nonnull align 8 dereferenceable(40) %788)
  %790 = getelementptr inbounds %struct.BinSumsInteractionBridge, ptr %61, i32 0, i32 3
  store ptr %789, ptr %790, align 8, !tbaa !31
  %791 = load ptr, ptr %84, align 8, !tbaa !5
  %792 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction10GetWeightsEv(ptr noundef nonnull align 8 dereferenceable(40) %791)
  %793 = getelementptr inbounds %struct.BinSumsInteractionBridge, ptr %61, i32 0, i32 4
  store ptr %792, ptr %793, align 8, !tbaa !32
  %794 = load ptr, ptr %88, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.BinSumsInteractionBridge, ptr %61, i32 0, i32 9
  store ptr %794, ptr %795, align 8, !tbaa !33
  %796 = load ptr, ptr %84, align 8, !tbaa !5
  %797 = call noundef i32 @_ZN14NAMESPACE_MAIN21DataSubsetInteraction18BinSumsInteractionEP24BinSumsInteractionBridge(ptr noundef nonnull align 8 dereferenceable(40) %796, ptr noundef %61)
  store i32 %797, ptr %31, align 4, !tbaa !11
  %798 = load i32, ptr %31, align 4, !tbaa !11
  %799 = icmp ne i32 0, %798
  br i1 %799, label %800, label %802

800:                                              ; preds = %775
  %801 = load i32, ptr %31, align 4, !tbaa !11
  store i32 %801, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %821

802:                                              ; preds = %775
  %803 = load i64, ptr %57, align 8, !tbaa !9
  %804 = load ptr, ptr %56, align 8, !tbaa !5
  %805 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN15InteractionCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(392) %804)
  %806 = load i64, ptr %66, align 8, !tbaa !9
  %807 = load ptr, ptr %84, align 8, !tbaa !5
  %808 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %807)
  %809 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %808, i32 0, i32 18
  %810 = load i64, ptr %809, align 8, !tbaa !19
  %811 = icmp eq i64 8, %810
  %812 = load ptr, ptr %84, align 8, !tbaa !5
  %813 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %812)
  %814 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %813, i32 0, i32 17
  %815 = load i64, ptr %814, align 8, !tbaa !21
  %816 = icmp eq i64 8, %815
  %817 = load ptr, ptr %88, align 8, !tbaa !5
  %818 = load ptr, ptr %81, align 8, !tbaa !5
  call void @_ZN14NAMESPACE_MAIN13ConvertAddBinEmbmbbbbPKvPKmPKdbbPv(i64 noundef %803, i1 noundef zeroext %805, i64 noundef %806, i1 noundef zeroext %811, i1 noundef zeroext %816, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef %817, ptr noundef null, ptr noundef null, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef %818)
  %819 = load ptr, ptr %84, align 8, !tbaa !5
  %820 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %819, i32 1
  store ptr %820, ptr %84, align 8, !tbaa !5
  store i32 0, ptr %30, align 4
  br label %821

821:                                              ; preds = %802, %800
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #13
  br label %822

822:                                              ; preds = %821, %726
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #13
  br label %823

823:                                              ; preds = %822, %712
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #13
  %824 = load i32, ptr %30, align 4
  switch i32 %824, label %1329 [
    i32 0, label %825
  ]

825:                                              ; preds = %823
  br label %826

826:                                              ; preds = %825
  %827 = load ptr, ptr %85, align 8, !tbaa !5
  %828 = load ptr, ptr %84, align 8, !tbaa !5
  %829 = icmp ne ptr %827, %828
  br i1 %829, label %634, label %830, !llvm.loop !34

830:                                              ; preds = %826
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #13
  store ptr null, ptr %93, align 8, !tbaa !5
  %831 = load i64, ptr %79, align 8, !tbaa !9
  %832 = load i64, ptr %66, align 8, !tbaa !9
  %833 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %831, i64 noundef %832) #13
  br i1 %833, label %862, label %834

834:                                              ; preds = %830
  br label %835

835:                                              ; preds = %834
  %836 = load i64, ptr %79, align 8, !tbaa !9
  %837 = icmp ne i64 0, %836
  br i1 %837, label %839, label %838

838:                                              ; preds = %835
  call void @_ZL17StopClangAnalysisv() #13
  br label %839

839:                                              ; preds = %838, %835
  br label %840

840:                                              ; preds = %839
  br label %841

841:                                              ; preds = %840
  br label %842

842:                                              ; preds = %841
  %843 = load i64, ptr %66, align 8, !tbaa !9
  %844 = icmp ule i64 1, %843
  br i1 %844, label %846, label %845

845:                                              ; preds = %842
  call void @_ZL17StopClangAnalysisv() #13
  br label %846

846:                                              ; preds = %845, %842
  br label %847

847:                                              ; preds = %846
  br label %848

848:                                              ; preds = %847
  %849 = load i64, ptr %79, align 8, !tbaa !9
  %850 = load i64, ptr %66, align 8, !tbaa !9
  %851 = mul i64 %849, %850
  %852 = call noalias ptr @malloc(i64 noundef %851) #15
  store ptr %852, ptr %93, align 8, !tbaa !5
  %853 = load ptr, ptr %93, align 8, !tbaa !5
  %854 = icmp ne ptr null, %853
  br i1 %854, label %855, label %861

855:                                              ; preds = %848
  %856 = load ptr, ptr %93, align 8, !tbaa !5
  %857 = load ptr, ptr %81, align 8, !tbaa !5
  %858 = load i64, ptr %66, align 8, !tbaa !9
  %859 = load i64, ptr %79, align 8, !tbaa !9
  %860 = mul i64 %858, %859
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %856, ptr align 1 %857, i64 %860, i1 false)
  br label %861

861:                                              ; preds = %855, %848
  br label %862

862:                                              ; preds = %861, %830
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #13
  %863 = load ptr, ptr %81, align 8, !tbaa !5
  %864 = load i64, ptr %79, align 8, !tbaa !9
  %865 = load i64, ptr %66, align 8, !tbaa !9
  %866 = mul i64 %864, %865
  %867 = call noundef ptr @_ZN14NAMESPACE_MAINL8IndexBinEPNS_7BinBaseEm(ptr noundef %863, i64 noundef %866)
  store ptr %867, ptr %94, align 8, !tbaa !5
  %868 = load ptr, ptr %94, align 8, !tbaa !5
  %869 = load i64, ptr %79, align 8, !tbaa !9
  %870 = load i64, ptr %76, align 8, !tbaa !9
  call void @_ZN14NAMESPACE_MAIN7BinBase7ZeroMemEmmm(ptr noundef nonnull align 1 dereferenceable(1) %868, i64 noundef %869, i64 noundef %870, i64 noundef 0)
  br label %871

871:                                              ; preds = %862
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #13
  store i32 4, ptr %95, align 4, !tbaa !11
  %872 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %873 = icmp sle i32 4, %872
  br i1 %873, label %874, label %875

874:                                              ; preds = %871
  call void @InteralLogWithoutArguments(i32 noundef 4, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage__21_)
  br label %875

875:                                              ; preds = %874, %871
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #13
  br label %876

876:                                              ; preds = %875
  br label %877

877:                                              ; preds = %876
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #13
  %878 = load i32, ptr %16, align 4, !tbaa !11
  %879 = and i32 4, %878
  %880 = icmp ne i32 0, %879
  br i1 %880, label %881, label %891

881:                                              ; preds = %877
  %882 = load ptr, ptr %56, align 8, !tbaa !5
  %883 = load i64, ptr %66, align 8, !tbaa !9
  %884 = load i32, ptr %16, align 4, !tbaa !11
  %885 = load double, ptr %20, align 8, !tbaa !13
  %886 = load double, ptr %21, align 8, !tbaa !13
  %887 = load double, ptr %50, align 8, !tbaa !13
  %888 = load ptr, ptr %94, align 8, !tbaa !5
  %889 = load ptr, ptr %81, align 8, !tbaa !5
  %890 = call noundef double @_ZN14NAMESPACE_MAIN29PartitionMultiDimensionalFullEPNS_15InteractionCoreEmidddPNS_7BinBaseES3_(ptr noundef %882, i64 noundef %883, i32 noundef %884, double noundef %885, double noundef %886, double noundef %887, ptr noundef %888, ptr noundef %889)
  store double %890, ptr %96, align 8, !tbaa !13
  br label %1175

891:                                              ; preds = %877
  %892 = load ptr, ptr %56, align 8, !tbaa !5
  %893 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN15InteractionCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(392) %892)
  %894 = load i64, ptr %57, align 8, !tbaa !9
  %895 = load i64, ptr %55, align 8, !tbaa !9
  %896 = getelementptr inbounds %struct.BinSumsInteractionBridge, ptr %61, i32 0, i32 6
  %897 = getelementptr inbounds [30 x i64], ptr %896, i64 0, i64 0
  %898 = load ptr, ptr %94, align 8, !tbaa !5
  %899 = load ptr, ptr %81, align 8, !tbaa !5
  %900 = load ptr, ptr %93, align 8, !tbaa !5
  %901 = load ptr, ptr %82, align 8, !tbaa !5
  call void @_ZN14NAMESPACE_MAIN17TensorTotalsBuildEbmmPKmPNS_7BinBaseES3_S3_PKS2_(i1 noundef zeroext %893, i64 noundef %894, i64 noundef %895, ptr noundef %897, ptr noundef %898, ptr noundef %899, ptr noundef %900, ptr noundef %901)
  %902 = load i64, ptr %55, align 8, !tbaa !9
  %903 = icmp eq i64 2, %902
  br i1 %903, label %904, label %920

904:                                              ; preds = %891
  %905 = load ptr, ptr %56, align 8, !tbaa !5
  %906 = load i64, ptr %55, align 8, !tbaa !9
  %907 = getelementptr inbounds %struct.BinSumsInteractionBridge, ptr %61, i32 0, i32 6
  %908 = getelementptr inbounds [30 x i64], ptr %907, i64 0, i64 0
  %909 = load i32, ptr %16, align 4, !tbaa !11
  %910 = load i64, ptr %42, align 8, !tbaa !9
  %911 = load double, ptr %44, align 8, !tbaa !13
  %912 = load double, ptr %46, align 8, !tbaa !13
  %913 = load double, ptr %48, align 8, !tbaa !13
  %914 = load double, ptr %50, align 8, !tbaa !13
  %915 = load ptr, ptr %94, align 8, !tbaa !5
  %916 = load ptr, ptr %81, align 8, !tbaa !5
  %917 = load ptr, ptr %93, align 8, !tbaa !5
  %918 = load ptr, ptr %82, align 8, !tbaa !5
  %919 = call noundef double @_ZN14NAMESPACE_MAIN33PartitionMultiDimensionalStraightEPNS_15InteractionCoreEmPKmimddddPNS_7BinBaseES5_PKS4_S7_(ptr noundef %905, i64 noundef %906, ptr noundef %908, i32 noundef %909, i64 noundef %910, double noundef %911, double noundef %912, double noundef %913, double noundef %914, ptr noundef %915, ptr noundef %916, ptr noundef %917, ptr noundef %918)
  store double %919, ptr %96, align 8, !tbaa !13
  br label %1174

920:                                              ; preds = %891
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #13
  %921 = load i8, ptr %83, align 1, !tbaa !17, !range !22, !noundef !23
  %922 = trunc i8 %921 to i1
  %923 = load i64, ptr %57, align 8, !tbaa !9
  %924 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL17IsOverflowBinSizeIdmEEbbbbm(i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext %922, i64 noundef %923)
  br i1 %924, label %925, label %926

925:                                              ; preds = %920
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1171

926:                                              ; preds = %920
  %927 = load i8, ptr %83, align 1, !tbaa !17, !range !22, !noundef !23
  %928 = trunc i8 %927 to i1
  %929 = load i64, ptr %57, align 8, !tbaa !9
  %930 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL27IsOverflowTreeNodeMultiSizeEbm(i1 noundef zeroext %928, i64 noundef %929)
  br i1 %930, label %931, label %932

931:                                              ; preds = %926
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1171

932:                                              ; preds = %926
  store i64 0, ptr %97, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #13
  store i64 1, ptr %98, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #13
  %933 = getelementptr inbounds %struct.BinSumsInteractionBridge, ptr %61, i32 0, i32 6
  %934 = getelementptr inbounds [30 x i64], ptr %933, i64 0, i64 0
  store ptr %934, ptr %99, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #13
  %935 = getelementptr inbounds %struct.BinSumsInteractionBridge, ptr %61, i32 0, i32 6
  %936 = getelementptr inbounds [30 x i64], ptr %935, i64 0, i64 0
  %937 = load i64, ptr %55, align 8, !tbaa !9
  %938 = getelementptr inbounds i64, ptr %936, i64 %937
  store ptr %938, ptr %100, align 8, !tbaa !5
  br label %939

939:                                              ; preds = %971, %932
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #13
  %940 = load ptr, ptr %99, align 8, !tbaa !5
  %941 = load i64, ptr %940, align 8, !tbaa !9
  store i64 %941, ptr %101, align 8, !tbaa !9
  %942 = load i64, ptr %101, align 8, !tbaa !9
  %943 = icmp ule i64 2, %942
  br i1 %943, label %946, label %944

944:                                              ; preds = %939
  call void @LogAssertFailure(i64 noundef 546, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.17)
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str, i32 noundef 546, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

945:                                              ; No predecessors!
  br label %946

946:                                              ; preds = %945, %939
  %947 = phi i1 [ true, %939 ], [ false, %945 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #13
  %948 = load i64, ptr %101, align 8, !tbaa !9
  %949 = sub i64 %948, 1
  store i64 %949, ptr %102, align 8, !tbaa !9
  %950 = load i64, ptr %97, align 8, !tbaa !9
  %951 = load i64, ptr %102, align 8, !tbaa !9
  %952 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef %950, i64 noundef %951) #13
  br i1 %952, label %953, label %954

953:                                              ; preds = %946
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %968

954:                                              ; preds = %946
  %955 = load i64, ptr %102, align 8, !tbaa !9
  %956 = load i64, ptr %97, align 8, !tbaa !9
  %957 = add i64 %956, %955
  store i64 %957, ptr %97, align 8, !tbaa !9
  %958 = load i64, ptr %101, align 8, !tbaa !9
  %959 = load i64, ptr %98, align 8, !tbaa !9
  %960 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %958, i64 noundef %959) #13
  br i1 %960, label %961, label %962

961:                                              ; preds = %954
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %968

962:                                              ; preds = %954
  %963 = load i64, ptr %101, align 8, !tbaa !9
  %964 = load i64, ptr %98, align 8, !tbaa !9
  %965 = mul i64 %964, %963
  store i64 %965, ptr %98, align 8, !tbaa !9
  %966 = load ptr, ptr %99, align 8, !tbaa !5
  %967 = getelementptr inbounds i64, ptr %966, i32 1
  store ptr %967, ptr %99, align 8, !tbaa !5
  store i32 0, ptr %30, align 4
  br label %968

968:                                              ; preds = %962, %961, %953
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #13
  %969 = load i32, ptr %30, align 4
  switch i32 %969, label %1170 [
    i32 0, label %970
  ]

970:                                              ; preds = %968
  br label %971

971:                                              ; preds = %970
  %972 = load ptr, ptr %100, align 8, !tbaa !5
  %973 = load ptr, ptr %99, align 8, !tbaa !5
  %974 = icmp ne ptr %972, %973
  br i1 %974, label %939, label %975, !llvm.loop !35

975:                                              ; preds = %971
  %976 = load i64, ptr %98, align 8, !tbaa !9
  %977 = load i64, ptr %98, align 8, !tbaa !9
  %978 = sub i64 %977, 1
  %979 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef %976, i64 noundef %978) #13
  br i1 %979, label %980, label %981

980:                                              ; preds = %975
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1170

981:                                              ; preds = %975
  %982 = load i64, ptr %98, align 8, !tbaa !9
  %983 = load i64, ptr %98, align 8, !tbaa !9
  %984 = add i64 %982, %983
  %985 = sub i64 %984, 1
  store i64 %985, ptr %98, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #13
  %986 = load i8, ptr %83, align 1, !tbaa !17, !range !22, !noundef !23
  %987 = trunc i8 %986 to i1
  %988 = load i64, ptr %57, align 8, !tbaa !9
  %989 = call noundef i64 @_ZN14NAMESPACE_MAINL20GetTreeNodeMultiSizeEbm(i1 noundef zeroext %987, i64 noundef %988)
  store i64 %989, ptr %103, align 8, !tbaa !9
  %990 = load i64, ptr %103, align 8, !tbaa !9
  %991 = load i64, ptr %98, align 8, !tbaa !9
  %992 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %990, i64 noundef %991) #13
  br i1 %992, label %993, label %994

993:                                              ; preds = %981
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1169

994:                                              ; preds = %981
  %995 = load i64, ptr %103, align 8, !tbaa !9
  %996 = load i64, ptr %98, align 8, !tbaa !9
  %997 = mul i64 %996, %995
  store i64 %997, ptr %98, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #13
  %998 = load i64, ptr %103, align 8, !tbaa !9
  %999 = load i64, ptr %55, align 8, !tbaa !9
  %1000 = shl i64 %999, 1
  %1001 = add i64 1, %1000
  %1002 = mul i64 %998, %1001
  store i64 %1002, ptr %104, align 8, !tbaa !9
  %1003 = load i64, ptr %104, align 8, !tbaa !9
  %1004 = load i64, ptr %98, align 8, !tbaa !9
  %1005 = icmp ule i64 %1003, %1004
  br i1 %1005, label %1008, label %1006

1006:                                             ; preds = %994
  call void @LogAssertFailure(i64 noundef 578, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.19)
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str, i32 noundef 578, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

1007:                                             ; No predecessors!
  br label %1008

1008:                                             ; preds = %1007, %994
  %1009 = phi i1 [ true, %994 ], [ false, %1007 ]
  %1010 = load i64, ptr %104, align 8, !tbaa !9
  %1011 = load i64, ptr %104, align 8, !tbaa !9
  %1012 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef %1010, i64 noundef %1011) #13
  br i1 %1012, label %1013, label %1014

1013:                                             ; preds = %1008
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1168

1014:                                             ; preds = %1008
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #13
  %1015 = load i64, ptr %104, align 8, !tbaa !9
  %1016 = load i64, ptr %104, align 8, !tbaa !9
  %1017 = add i64 %1015, %1016
  store i64 %1017, ptr %105, align 8, !tbaa !9
  %1018 = load i64, ptr %98, align 8, !tbaa !9
  %1019 = load i64, ptr %105, align 8, !tbaa !9
  %1020 = call noundef i64 @_ZN14NAMESPACE_MAINL6EbmMaxImEET_S1_S1_(i64 noundef %1018, i64 noundef %1019) #13
  store i64 %1020, ptr %98, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #13
  store ptr null, ptr %106, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #13
  store ptr null, ptr %107, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #13
  store ptr null, ptr %108, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #13
  store ptr null, ptr %109, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #13
  store ptr null, ptr %110, align 8, !tbaa !5
  %1021 = load i32, ptr %16, align 4, !tbaa !11
  %1022 = and i32 1, %1021
  %1023 = icmp ne i32 0, %1022
  br i1 %1023, label %1024, label %1082

1024:                                             ; preds = %1014
  %1025 = load i64, ptr %57, align 8, !tbaa !9
  %1026 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef 1, i64 noundef %1025) #13
  br i1 %1026, label %1027, label %1028

1027:                                             ; preds = %1024
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1167

1028:                                             ; preds = %1024
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #13
  %1029 = load i64, ptr %57, align 8, !tbaa !9
  %1030 = add i64 1, %1029
  store i64 %1030, ptr %111, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %112) #13
  %1031 = load i8, ptr %83, align 1, !tbaa !17, !range !22, !noundef !23
  %1032 = trunc i8 %1031 to i1
  br i1 %1032, label %1033, label %1038

1033:                                             ; preds = %1028
  %1034 = load i32, ptr %16, align 4, !tbaa !11
  %1035 = and i32 2, %1034
  %1036 = icmp ne i32 %1035, 0
  %1037 = xor i1 %1036, true
  br label %1038

1038:                                             ; preds = %1033, %1028
  %1039 = phi i1 [ false, %1028 ], [ %1037, %1033 ]
  %1040 = zext i1 %1039 to i8
  store i8 %1040, ptr %112, align 1, !tbaa !17
  %1041 = load i8, ptr %112, align 1, !tbaa !17, !range !22, !noundef !23
  %1042 = trunc i8 %1041 to i1
  br i1 %1042, label %1043, label %1052

1043:                                             ; preds = %1038
  %1044 = load i64, ptr %57, align 8, !tbaa !9
  %1045 = load i64, ptr %111, align 8, !tbaa !9
  %1046 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef %1044, i64 noundef %1045) #13
  br i1 %1046, label %1047, label %1048

1047:                                             ; preds = %1043
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1079

1048:                                             ; preds = %1043
  %1049 = load i64, ptr %57, align 8, !tbaa !9
  %1050 = load i64, ptr %111, align 8, !tbaa !9
  %1051 = add i64 %1050, %1049
  store i64 %1051, ptr %111, align 8, !tbaa !9
  br label %1052

1052:                                             ; preds = %1048, %1038
  %1053 = load i64, ptr %111, align 8, !tbaa !9
  %1054 = load i64, ptr %66, align 8, !tbaa !9
  %1055 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImJmEEEbT_S1_DpKT0_(i64 noundef 8, i64 noundef %1053, i64 noundef %1054) #13
  br i1 %1055, label %1056, label %1057

1056:                                             ; preds = %1052
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1079

1057:                                             ; preds = %1052
  %1058 = load i64, ptr %111, align 8, !tbaa !9
  %1059 = mul i64 8, %1058
  %1060 = load i64, ptr %66, align 8, !tbaa !9
  %1061 = mul i64 %1059, %1060
  %1062 = call noalias ptr @malloc(i64 noundef %1061) #15
  store ptr %1062, ptr %106, align 8, !tbaa !5
  %1063 = load ptr, ptr %106, align 8, !tbaa !5
  %1064 = icmp eq ptr null, %1063
  br i1 %1064, label %1065, label %1066

1065:                                             ; preds = %1057
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1079

1066:                                             ; preds = %1057
  %1067 = load ptr, ptr %106, align 8, !tbaa !5
  %1068 = load i64, ptr %66, align 8, !tbaa !9
  %1069 = getelementptr inbounds double, ptr %1067, i64 %1068
  store ptr %1069, ptr %107, align 8, !tbaa !5
  %1070 = load i8, ptr %112, align 1, !tbaa !17, !range !22, !noundef !23
  %1071 = trunc i8 %1070 to i1
  br i1 %1071, label %1072, label %1078

1072:                                             ; preds = %1066
  %1073 = load ptr, ptr %107, align 8, !tbaa !5
  %1074 = load i64, ptr %66, align 8, !tbaa !9
  %1075 = load i64, ptr %57, align 8, !tbaa !9
  %1076 = mul i64 %1074, %1075
  %1077 = getelementptr inbounds double, ptr %1073, i64 %1076
  store ptr %1077, ptr %108, align 8, !tbaa !5
  br label %1078

1078:                                             ; preds = %1072, %1066
  store i32 0, ptr %30, align 4
  br label %1079

1079:                                             ; preds = %1078, %1065, %1056, %1047
  call void @llvm.lifetime.end.p0(i64 1, ptr %112) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #13
  %1080 = load i32, ptr %30, align 4
  switch i32 %1080, label %1167 [
    i32 0, label %1081
  ]

1081:                                             ; preds = %1079
  br label %1082

1082:                                             ; preds = %1081, %1014
  %1083 = load i64, ptr %98, align 8, !tbaa !9
  %1084 = call noalias ptr @malloc(i64 noundef %1083) #15
  store ptr %1084, ptr %109, align 8, !tbaa !5
  %1085 = load ptr, ptr %109, align 8, !tbaa !5
  %1086 = icmp eq ptr null, %1085
  br i1 %1086, label %1087, label %1089

1087:                                             ; preds = %1082
  %1088 = load ptr, ptr %106, align 8, !tbaa !5
  call void @free(ptr noundef %1088) #13
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1167

1089:                                             ; preds = %1082
  %1090 = load i64, ptr %97, align 8, !tbaa !9
  %1091 = mul i64 %1090, 1
  %1092 = call noalias ptr @malloc(i64 noundef %1091) #15
  store ptr %1092, ptr %110, align 8, !tbaa !5
  %1093 = load ptr, ptr %110, align 8, !tbaa !5
  %1094 = icmp eq ptr null, %1093
  br i1 %1094, label %1095, label %1098

1095:                                             ; preds = %1089
  %1096 = load ptr, ptr %109, align 8, !tbaa !5
  call void @free(ptr noundef %1096) #13
  %1097 = load ptr, ptr %106, align 8, !tbaa !5
  call void @free(ptr noundef %1097) #13
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1167

1098:                                             ; preds = %1089
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #13
  %1099 = load i64, ptr %57, align 8, !tbaa !9
  %1100 = call noundef ptr @_ZN14NAMESPACE_MAIN6Tensor8AllocateEmm(i64 noundef 30, i64 noundef %1099)
  store ptr %1100, ptr %113, align 8, !tbaa !5
  %1101 = load ptr, ptr %113, align 8, !tbaa !5
  %1102 = icmp eq ptr null, %1101
  br i1 %1102, label %1103, label %1107

1103:                                             ; preds = %1098
  %1104 = load ptr, ptr %110, align 8, !tbaa !5
  call void @free(ptr noundef %1104) #13
  %1105 = load ptr, ptr %109, align 8, !tbaa !5
  call void @free(ptr noundef %1105) #13
  %1106 = load ptr, ptr %106, align 8, !tbaa !5
  call void @free(ptr noundef %1106) #13
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1166

1107:                                             ; preds = %1098
  %1108 = load i8, ptr %83, align 1, !tbaa !17, !range !22, !noundef !23
  %1109 = trunc i8 %1108 to i1
  %1110 = load i64, ptr %57, align 8, !tbaa !9
  %1111 = load i64, ptr %55, align 8, !tbaa !9
  %1112 = load i64, ptr %55, align 8, !tbaa !9
  %1113 = load i32, ptr %16, align 4, !tbaa !11
  %1114 = load i64, ptr %42, align 8, !tbaa !9
  %1115 = load double, ptr %44, align 8, !tbaa !13
  %1116 = load double, ptr %20, align 8, !tbaa !13
  %1117 = load double, ptr %21, align 8, !tbaa !13
  %1118 = load double, ptr %50, align 8, !tbaa !13
  %1119 = load ptr, ptr %81, align 8, !tbaa !5
  %1120 = load ptr, ptr %94, align 8, !tbaa !5
  %1121 = load ptr, ptr %113, align 8, !tbaa !5
  %1122 = load ptr, ptr %109, align 8, !tbaa !5
  %1123 = getelementptr inbounds %struct.BinSumsInteractionBridge, ptr %61, i32 0, i32 6
  %1124 = getelementptr inbounds [30 x i64], ptr %1123, i64 0, i64 0
  %1125 = load ptr, ptr %106, align 8, !tbaa !5
  %1126 = load ptr, ptr %107, align 8, !tbaa !5
  %1127 = load ptr, ptr %108, align 8, !tbaa !5
  %1128 = load i64, ptr %97, align 8, !tbaa !9
  %1129 = load ptr, ptr %110, align 8, !tbaa !5
  %1130 = load ptr, ptr %93, align 8, !tbaa !5
  %1131 = load ptr, ptr %82, align 8, !tbaa !5
  %1132 = call noundef i32 @_ZN14NAMESPACE_MAIN29PartitionMultiDimensionalTreeEbmmmimddddPKNS_7BinBaseEPS0_PNS_6TensorEPvPKmPdS9_S9_S9_mS6_S2_S2_(i1 noundef zeroext %1109, i64 noundef %1110, i64 noundef %1111, i64 noundef %1112, i32 noundef %1113, i64 noundef %1114, double noundef %1115, double noundef %1116, double noundef %1117, double noundef %1118, ptr noundef %1119, ptr noundef %1120, ptr noundef %1121, ptr noundef %1122, ptr noundef %1124, ptr noundef %1125, ptr noundef %1126, ptr noundef %1127, ptr noundef %96, i64 noundef %1128, ptr noundef %1129, ptr noundef %1130, ptr noundef %1131)
  store i32 %1132, ptr %31, align 4, !tbaa !11
  %1133 = load ptr, ptr %113, align 8, !tbaa !5
  call void @_ZN14NAMESPACE_MAIN6Tensor4FreeEPS0_(ptr noundef %1133)
  %1134 = load ptr, ptr %110, align 8, !tbaa !5
  call void @free(ptr noundef %1134) #13
  %1135 = load ptr, ptr %109, align 8, !tbaa !5
  call void @free(ptr noundef %1135) #13
  %1136 = load ptr, ptr %106, align 8, !tbaa !5
  call void @free(ptr noundef %1136) #13
  %1137 = load i32, ptr %31, align 4, !tbaa !11
  %1138 = icmp ne i32 0, %1137
  br i1 %1138, label %1139, label %1149

1139:                                             ; preds = %1107
  %1140 = load ptr, ptr %93, align 8, !tbaa !5
  call void @free(ptr noundef %1140) #13
  br label %1141

1141:                                             ; preds = %1139
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #13
  store i32 4, ptr %114, align 4, !tbaa !11
  %1142 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %1143 = icmp sle i32 4, %1142
  br i1 %1143, label %1144, label %1145

1144:                                             ; preds = %1141
  call void @InteralLogWithoutArguments(i32 noundef 4, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage__22_)
  br label %1145

1145:                                             ; preds = %1144, %1141
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #13
  br label %1146

1146:                                             ; preds = %1145
  br label %1147

1147:                                             ; preds = %1146
  %1148 = load i32, ptr %31, align 4, !tbaa !11
  store i32 %1148, ptr %12, align 4
  store i32 1, ptr %30, align 4
  br label %1166

1149:                                             ; preds = %1107
  %1150 = load double, ptr %96, align 8, !tbaa !13
  %1151 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1150)
  br i1 %1151, label %1152, label %1154

1152:                                             ; preds = %1149
  call void @LogAssertFailure(i64 noundef 686, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.21)
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str, i32 noundef 686, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

1153:                                             ; No predecessors!
  br label %1154

1154:                                             ; preds = %1153, %1149
  %1155 = phi i1 [ true, %1149 ], [ false, %1153 ]
  %1156 = load double, ptr %96, align 8, !tbaa !13
  %1157 = fcmp oeq double 0.000000e+00, %1156
  br i1 %1157, label %1164, label %1158

1158:                                             ; preds = %1154
  %1159 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #13
  %1160 = load double, ptr %96, align 8, !tbaa !13
  %1161 = fcmp ole double %1159, %1160
  br i1 %1161, label %1164, label %1162

1162:                                             ; preds = %1158
  call void @LogAssertFailure(i64 noundef 687, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.23)
  call void @__assert_fail(ptr noundef @.str.24, ptr noundef @.str, i32 noundef 687, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

1163:                                             ; No predecessors!
  br label %1164

1164:                                             ; preds = %1163, %1158, %1154
  %1165 = phi i1 [ true, %1158 ], [ true, %1154 ], [ false, %1163 ]
  store i32 0, ptr %30, align 4
  br label %1166

1166:                                             ; preds = %1164, %1147, %1103
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #13
  br label %1167

1167:                                             ; preds = %1166, %1095, %1087, %1079, %1027
  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
  br label %1168

1168:                                             ; preds = %1167, %1013
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #13
  br label %1169

1169:                                             ; preds = %1168, %993
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #13
  br label %1170

1170:                                             ; preds = %1169, %980, %968
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #13
  br label %1171

1171:                                             ; preds = %1170, %931, %925
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #13
  %1172 = load i32, ptr %30, align 4
  switch i32 %1172, label %1328 [
    i32 0, label %1173
  ]

1173:                                             ; preds = %1171
  br label %1174

1174:                                             ; preds = %1173, %904
  br label %1175

1175:                                             ; preds = %1174, %881
  %1176 = load ptr, ptr %93, align 8, !tbaa !5
  call void @free(ptr noundef %1176) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #13
  %1177 = load ptr, ptr %59, align 8, !tbaa !5
  %1178 = call noundef double @_ZNK14NAMESPACE_MAIN18DataSetInteraction14GetWeightTotalEv(ptr noundef nonnull align 8 dereferenceable(32) %1177)
  store double %1178, ptr %115, align 8, !tbaa !13
  %1179 = load double, ptr %115, align 8, !tbaa !13
  %1180 = fcmp olt double 0.000000e+00, %1179
  br i1 %1180, label %1183, label %1181

1181:                                             ; preds = %1175
  call void @LogAssertFailure(i64 noundef 697, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.25)
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str, i32 noundef 697, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

1182:                                             ; No predecessors!
  br label %1183

1183:                                             ; preds = %1182, %1175
  %1184 = phi i1 [ true, %1175 ], [ false, %1182 ]
  %1185 = load double, ptr %115, align 8, !tbaa !13
  %1186 = load double, ptr %96, align 8, !tbaa !13
  %1187 = fdiv double %1186, %1185
  store double %1187, ptr %96, align 8, !tbaa !13
  %1188 = load i32, ptr %16, align 4, !tbaa !11
  %1189 = and i32 2, %1188
  %1190 = icmp ne i32 %1189, 0
  br i1 %1190, label %1191, label %1196

1191:                                             ; preds = %1183
  %1192 = load ptr, ptr %56, align 8, !tbaa !5
  %1193 = call noundef double @_ZNK14NAMESPACE_MAIN15InteractionCore30GainAdjustmentGradientBoostingEv(ptr noundef nonnull align 8 dereferenceable(392) %1192) #13
  %1194 = load double, ptr %96, align 8, !tbaa !13
  %1195 = fmul double %1194, %1193
  store double %1195, ptr %96, align 8, !tbaa !13
  br label %1205

1196:                                             ; preds = %1183
  %1197 = load ptr, ptr %56, align 8, !tbaa !5
  %1198 = call noundef double @_ZN14NAMESPACE_MAIN15InteractionCore15HessianConstantEv(ptr noundef nonnull align 8 dereferenceable(392) %1197)
  %1199 = load double, ptr %96, align 8, !tbaa !13
  %1200 = fdiv double %1199, %1198
  store double %1200, ptr %96, align 8, !tbaa !13
  %1201 = load ptr, ptr %56, align 8, !tbaa !5
  %1202 = call noundef double @_ZNK14NAMESPACE_MAIN15InteractionCore29GainAdjustmentHessianBoostingEv(ptr noundef nonnull align 8 dereferenceable(392) %1201) #13
  %1203 = load double, ptr %96, align 8, !tbaa !13
  %1204 = fmul double %1203, %1202
  store double %1204, ptr %96, align 8, !tbaa !13
  br label %1205

1205:                                             ; preds = %1196, %1191
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #13
  %1206 = load ptr, ptr %56, align 8, !tbaa !5
  %1207 = call noundef double @_ZN14NAMESPACE_MAIN15InteractionCore16GradientConstantEv(ptr noundef nonnull align 8 dereferenceable(392) %1206)
  store double %1207, ptr %116, align 8, !tbaa !13
  %1208 = load double, ptr %116, align 8, !tbaa !13
  %1209 = load double, ptr %96, align 8, !tbaa !13
  %1210 = fmul double %1209, %1208
  store double %1210, ptr %96, align 8, !tbaa !13
  %1211 = load double, ptr %116, align 8, !tbaa !13
  %1212 = load double, ptr %96, align 8, !tbaa !13
  %1213 = fmul double %1212, %1211
  store double %1213, ptr %96, align 8, !tbaa !13
  %1214 = load double, ptr %96, align 8, !tbaa !13
  %1215 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #13
  %1216 = fcmp ole double %1214, %1215
  %1217 = xor i1 %1216, true
  %1218 = xor i1 %1217, true
  %1219 = zext i1 %1218 to i64
  %1220 = call i64 @llvm.expect.i64(i64 %1219, i64 1)
  %1221 = icmp ne i64 %1220, 0
  %1222 = xor i1 %1221, true
  %1223 = xor i1 %1222, true
  %1224 = xor i1 %1223, true
  %1225 = zext i1 %1224 to i64
  %1226 = call i64 @llvm.expect.i64(i64 %1225, i64 0)
  %1227 = icmp ne i64 %1226, 0
  br i1 %1227, label %1228, label %1239

1228:                                             ; preds = %1205
  %1229 = load double, ptr %96, align 8, !tbaa !13
  %1230 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1229)
  br i1 %1230, label %1237, label %1231

1231:                                             ; preds = %1228
  %1232 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #13
  %1233 = load double, ptr %96, align 8, !tbaa !13
  %1234 = fcmp oeq double %1232, %1233
  br i1 %1234, label %1237, label %1235

1235:                                             ; preds = %1231
  call void @LogAssertFailure(i64 noundef 712, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.27)
  call void @__assert_fail(ptr noundef @.str.28, ptr noundef @.str, i32 noundef 712, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

1236:                                             ; No predecessors!
  br label %1237

1237:                                             ; preds = %1236, %1231, %1228
  %1238 = phi i1 [ true, %1231 ], [ true, %1228 ], [ false, %1236 ]
  store double 0xFFEFFFFFFFFFFFFF, ptr %96, align 8, !tbaa !13
  br label %1261

1239:                                             ; preds = %1205
  %1240 = load double, ptr %96, align 8, !tbaa !13
  %1241 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #13
  %1242 = fcmp olt double %1240, %1241
  %1243 = xor i1 %1242, true
  %1244 = xor i1 %1243, true
  %1245 = zext i1 %1244 to i64
  %1246 = call i64 @llvm.expect.i64(i64 %1245, i64 0)
  %1247 = icmp ne i64 %1246, 0
  br i1 %1247, label %1248, label %1260

1248:                                             ; preds = %1239
  %1249 = load double, ptr %96, align 8, !tbaa !13
  %1250 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1249)
  br i1 %1250, label %1251, label %1253

1251:                                             ; preds = %1248
  call void @LogAssertFailure(i64 noundef 724, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.21)
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str, i32 noundef 724, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

1252:                                             ; No predecessors!
  br label %1253

1253:                                             ; preds = %1252, %1248
  %1254 = phi i1 [ true, %1248 ], [ false, %1252 ]
  %1255 = call noundef double @_ZNSt14numeric_limitsIdE6lowestEv() #13
  %1256 = load double, ptr %96, align 8, !tbaa !13
  %1257 = fcmp ole double %1255, %1256
  %1258 = zext i1 %1257 to i64
  %1259 = select i1 %1257, double 0.000000e+00, double 0xFFEFFFFFFFFFFFFF
  store double %1259, ptr %96, align 8, !tbaa !13
  br label %1260

1260:                                             ; preds = %1253, %1239
  br label %1261

1261:                                             ; preds = %1260, %1237
  %1262 = load double, ptr %96, align 8, !tbaa !13
  %1263 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1262)
  br i1 %1263, label %1264, label %1266

1264:                                             ; preds = %1261
  call void @LogAssertFailure(i64 noundef 729, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.21)
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str, i32 noundef 729, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

1265:                                             ; No predecessors!
  br label %1266

1266:                                             ; preds = %1265, %1261
  %1267 = phi i1 [ true, %1261 ], [ false, %1265 ]
  %1268 = load double, ptr %96, align 8, !tbaa !13
  %1269 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1268)
  br i1 %1269, label %1270, label %1272

1270:                                             ; preds = %1266
  call void @LogAssertFailure(i64 noundef 730, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.29)
  call void @__assert_fail(ptr noundef @.str.30, ptr noundef @.str, i32 noundef 730, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

1271:                                             ; No predecessors!
  br label %1272

1272:                                             ; preds = %1271, %1266
  %1273 = phi i1 [ true, %1266 ], [ false, %1271 ]
  %1274 = load double, ptr %96, align 8, !tbaa !13
  %1275 = fcmp oeq double 0xFFEFFFFFFFFFFFFF, %1274
  br i1 %1275, label %1285, label %1276

1276:                                             ; preds = %1272
  %1277 = load double, ptr %96, align 8, !tbaa !13
  %1278 = fcmp oeq double 0.000000e+00, %1277
  br i1 %1278, label %1285, label %1279

1279:                                             ; preds = %1276
  %1280 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #13
  %1281 = load double, ptr %96, align 8, !tbaa !13
  %1282 = fcmp ole double %1280, %1281
  br i1 %1282, label %1285, label %1283

1283:                                             ; preds = %1279
  call void @LogAssertFailure(i64 noundef 731, ptr noundef @.str, ptr noundef @__func__.CalcInteractionStrength, ptr noundef @.str.31)
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str, i32 noundef 731, ptr noundef @__PRETTY_FUNCTION__.CalcInteractionStrength) #14
  unreachable

1284:                                             ; No predecessors!
  br label %1285

1285:                                             ; preds = %1284, %1279, %1276, %1272
  %1286 = phi i1 [ true, %1279 ], [ true, %1276 ], [ true, %1272 ], [ false, %1284 ]
  %1287 = load ptr, ptr %23, align 8, !tbaa !5
  %1288 = icmp ne ptr null, %1287
  br i1 %1288, label %1289, label %1292

1289:                                             ; preds = %1285
  %1290 = load double, ptr %96, align 8, !tbaa !13
  %1291 = load ptr, ptr %23, align 8, !tbaa !5
  store double %1290, ptr %1291, align 8, !tbaa !13
  br label %1292

1292:                                             ; preds = %1289, %1285
  br label %1293

1293:                                             ; preds = %1292
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #13
  store i32 3, ptr %117, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #13
  store i32 4, ptr %118, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #13
  %1294 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  store i32 %1294, ptr %119, align 4, !tbaa !11
  %1295 = load i32, ptr %119, align 4, !tbaa !11
  %1296 = icmp sle i32 3, %1295
  br i1 %1296, label %1297, label %1325

1297:                                             ; preds = %1293
  br label %1298

1298:                                             ; preds = %1297
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #13
  %1299 = load i32, ptr %119, align 4, !tbaa !11
  %1300 = icmp slt i32 %1299, 4
  br i1 %1300, label %1301, label %1316

1301:                                             ; preds = %1298
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #13
  %1302 = load ptr, ptr %32, align 8, !tbaa !5
  %1303 = call noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell30GetPointerCountLogExitMessagesEv(ptr noundef nonnull align 8 dereferenceable(56) %1302)
  store ptr %1303, ptr %121, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #13
  %1304 = load ptr, ptr %121, align 8, !tbaa !5
  %1305 = load i32, ptr %1304, align 4, !tbaa !11
  %1306 = sub nsw i32 %1305, 1
  store i32 %1306, ptr %122, align 4, !tbaa !11
  %1307 = load i32, ptr %122, align 4, !tbaa !11
  %1308 = icmp slt i32 %1307, 0
  br i1 %1308, label %1309, label %1310

1309:                                             ; preds = %1301
  store i32 68, ptr %30, align 4
  br label %1313

1310:                                             ; preds = %1301
  %1311 = load i32, ptr %122, align 4, !tbaa !11
  %1312 = load ptr, ptr %121, align 8, !tbaa !5
  store i32 %1311, ptr %1312, align 4, !tbaa !11
  store i32 3, ptr %120, align 4, !tbaa !11
  store i32 0, ptr %30, align 4
  br label %1313

1313:                                             ; preds = %1310, %1309
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #13
  %1314 = load i32, ptr %30, align 4
  switch i32 %1314, label %1320 [
    i32 0, label %1315
  ]

1315:                                             ; preds = %1313
  br label %1317

1316:                                             ; preds = %1298
  store i32 4, ptr %120, align 4, !tbaa !11
  br label %1317

1317:                                             ; preds = %1316, %1315
  %1318 = load i32, ptr %120, align 4, !tbaa !11
  %1319 = load double, ptr %96, align 8, !tbaa !13
  call void (i32, ptr, ...) @InteralLogWithArguments(i32 noundef %1318, ptr noundef @_ZZ23CalcInteractionStrengthE13LOG__sMessage__23_, double noundef %1319)
  store i32 0, ptr %30, align 4
  br label %1320

1320:                                             ; preds = %1317, %1313
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #13
  %1321 = load i32, ptr %30, align 4
  switch i32 %1321, label %1339 [
    i32 0, label %1322
    i32 68, label %1324
  ]

1322:                                             ; preds = %1320
  br label %1323

1323:                                             ; preds = %1322
  br label %1324

1324:                                             ; preds = %1323, %1320
  br label %1325

1325:                                             ; preds = %1324, %1293
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #13
  br label %1326

1326:                                             ; preds = %1325
  br label %1327

1327:                                             ; preds = %1326
  store i32 0, ptr %12, align 4
  store i32 1, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #13
  br label %1328

1328:                                             ; preds = %1327, %1171
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #13
  br label %1329

1329:                                             ; preds = %1328, %823
  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 1, ptr %83) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #13
  br label %1330

1330:                                             ; preds = %1329, %604
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #13
  br label %1331

1331:                                             ; preds = %1330, %591
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #13
  br label %1332

1332:                                             ; preds = %1331, %572
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #13
  br label %1333

1333:                                             ; preds = %1332, %558, %535
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #13
  call void @llvm.lifetime.end.p0(i64 664, ptr %61) #13
  br label %1334

1334:                                             ; preds = %1333, %411
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #13
  br label %1335

1335:                                             ; preds = %1334, %386
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #13
  br label %1336

1336:                                             ; preds = %1335, %365, %354, %343, %335
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #13
  br label %1337

1337:                                             ; preds = %1336, %177
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #13
  %1338 = load i32, ptr %12, align 4
  ret i32 %1338

1339:                                             ; preds = %1320, %205, %156
  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: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell29GetInteractionShellFromHandleEP18_InteractionHandle(ptr noundef) #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNSt14numeric_limitsImE3maxEv() #6 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) #5

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN15InteractionCore14GetCountScoresEv(ptr noundef nonnull align 8 dereferenceable(392)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN15InteractionCore21GetDataSetInteractionEv(ptr noundef nonnull align 8 dereferenceable(392)) #5 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) #7

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN18DataSetInteraction15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(32)) #5 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN15InteractionCore16GetCountFeaturesEv(ptr noundef nonnull align 8 dereferenceable(392)) #5 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN14NAMESPACE_MAIN15InteractionCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(392)) #4 align 2

declare noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell22GetInteractionMainBinsEmm(ptr noundef nonnull align 8 dereferenceable(56), i64 noundef, i64 noundef) #2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK14NAMESPACE_MAIN18DataSetInteraction15GetCountSubsetsEv(ptr noundef nonnull align 8 dereferenceable(32)) #5 align 2

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

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

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

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

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

declare noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell26GetInteractionFastBinsTempEm(ptr noundef nonnull align 8 dereferenceable(56), i64 noundef) #2

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN14NAMESPACE_MAIN21DataSubsetInteraction18BinSumsInteractionEP24BinSumsInteractionBridge(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) #4 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: alwaysinline mustprogress nounwind uwtable
declare hidden void @_ZL17StopClangAnalysisv() #9

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #11

declare noundef double @_ZN14NAMESPACE_MAIN29PartitionMultiDimensionalFullEPNS_15InteractionCoreEmidddPNS_7BinBaseES3_(ptr noundef, i64 noundef, i32 noundef, double noundef, double noundef, double noundef, ptr noundef, ptr noundef) #2

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

declare noundef double @_ZN14NAMESPACE_MAIN33PartitionMultiDimensionalStraightEPNS_15InteractionCoreEmPKmimddddPNS_7BinBaseES5_PKS4_S7_(ptr noundef, i64 noundef, ptr noundef, i32 noundef, i64 noundef, double noundef, double noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

declare noundef ptr @_ZN14NAMESPACE_MAIN6Tensor8AllocateEmm(i64 noundef, i64 noundef) #2

declare noundef i32 @_ZN14NAMESPACE_MAIN29PartitionMultiDimensionalTreeEbmmmimddddPKNS_7BinBaseEPS0_PNS_6TensorEPvPKmPdS9_S9_S9_mS6_S2_S2_(i1 noundef zeroext, i64 noundef, i64 noundef, i64 noundef, i32 noundef, i64 noundef, double noundef, double noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @_ZN14NAMESPACE_MAIN6Tensor4FreeEPS0_(ptr noundef) #2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14NAMESPACE_MAIN18DataSetInteraction14GetWeightTotalEv(ptr noundef nonnull align 8 dereferenceable(32)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14NAMESPACE_MAIN15InteractionCore30GainAdjustmentGradientBoostingEv(ptr noundef nonnull align 8 dereferenceable(392)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZN14NAMESPACE_MAIN15InteractionCore15HessianConstantEv(ptr noundef nonnull align 8 dereferenceable(392)) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14NAMESPACE_MAIN15InteractionCore29GainAdjustmentHessianBoostingEv(ptr noundef nonnull align 8 dereferenceable(392)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZN14NAMESPACE_MAIN15InteractionCore16GradientConstantEv(ptr noundef nonnull align 8 dereferenceable(392)) #4 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell30GetPointerCountLogExitMessagesEv(ptr noundef nonnull align 8 dereferenceable(56)) #5 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 = { 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 #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress 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 = { 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 #8 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { 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 #10 = { nounwind allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #11 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #12 = { 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 #13 = { nounwind }
attributes #14 = { noreturn nounwind }
attributes #15 = { nounwind allocsize(0) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"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 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = !{!18, !18, i64 0}
!18 = !{!"bool", !7, i64 0}
!19 = !{!20, !10, i64 136}
!20 = !{!"_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}
!21 = !{!20, !10, i64 128}
!22 = !{i8 0, i8 2}
!23 = !{}
!24 = !{!25, !6, i64 656}
!25 = !{!"_ZTS24BinSumsInteractionBridge", !12, i64 0, !10, i64 8, !10, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !7, i64 48, !7, i64 288, !7, i64 408, !6, i64 648, !6, i64 656}
!26 = distinct !{!26, !16}
!27 = !{!25, !10, i64 40}
!28 = !{!25, !12, i64 0}
!29 = !{!25, !10, i64 8}
!30 = !{!25, !10, i64 16}
!31 = !{!25, !6, i64 24}
!32 = !{!25, !6, i64 32}
!33 = !{!25, !6, i64 648}
!34 = distinct !{!34, !16}
!35 = distinct !{!35, !16}


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

%struct.BinSumsInteractionBridge = type { i32, i64, i64, ptr, ptr, i64, [30 x i64], [30 x i32], [30 x ptr], ptr, ptr }
%"class.NAMESPACE_MAIN::FeatureInteraction" = type { i64, i8, i8, i8, i32 }
%"struct.NAMESPACE_MAIN::DataSubsetInteraction" = type { i64, ptr, ptr, ptr, ptr }

@g_traceLevel = external local_unnamed_addr global i32, align 4
@_ZN14NAMESPACE_MAINL29g_cLogCalcInteractionStrengthE = external hidden local_unnamed_addr global i32, align 4
@_ZZ23CalcInteractionStrengthE13LOG__sMessage = external hidden constant [231 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_0 = external hidden constant [32 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_1 = external hidden constant [77 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_2 = external hidden constant [82 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_3 = external hidden constant [85 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_4 = external hidden constant [97 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_5 = external hidden constant [92 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_6 = external hidden constant [93 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_7 = external hidden constant [48 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_8 = external hidden constant [63 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage_9 = external hidden constant [86 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__10_ = external hidden constant [98 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__11_ = external hidden constant [79 x i8], align 16
@.str = external hidden unnamed_addr constant [97 x i8], align 1
@__func__.CalcInteractionStrength = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [23 x i8], align 1
@__PRETTY_FUNCTION__.CalcInteractionStrength = external hidden unnamed_addr constant [172 x i8], align 1
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__12_ = external hidden constant [42 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__13_ = external hidden constant [70 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__14_ = external hidden constant [92 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__15_ = external hidden constant [75 x i8], align 16
@.str.5 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [62 x i8], align 1
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__16_ = external hidden constant [65 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__17_ = external hidden constant [59 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__18_ = external hidden constant [72 x i8], align 16
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__19_ = external hidden constant [78 x i8], align 16
@.str.9 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [69 x i8], align 1
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__20_ = external hidden constant [75 x i8], align 16
@.str.15 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [39 x i8], align 1
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__21_ = external hidden constant [48 x i8], align 16
@.str.17 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__22_ = external hidden constant [45 x i8], align 16
@.str.21 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [107 x i8], align 1
@_ZZ23CalcInteractionStrengthE13LOG__sMessage__23_ = external hidden constant [45 x i8], align 16

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @CalcInteractionStrength(ptr noundef %0, i64 noundef %1, ptr noundef %2, i32 noundef %3, i64 noundef %4, i64 noundef %5, double noundef %6, double noundef %7, double noundef %8, double noundef %9, ptr noundef %10) local_unnamed_addr #0 {
  %12 = alloca %struct.BinSumsInteractionBridge, align 8
  %13 = alloca double, align 8
  %14 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %15 = icmp sgt i32 %14, 2
  br i1 %15, label %16, label %.critedge

16:                                               ; preds = %11
  %17 = icmp eq i32 %14, 3
  br i1 %17, label %18, label %23

18:                                               ; preds = %16
  %19 = load i32, ptr @_ZN14NAMESPACE_MAINL29g_cLogCalcInteractionStrengthE, align 4, !tbaa !5
  %20 = icmp sgt i32 %19, 0
  br i1 %20, label %21, label %.critedge

21:                                               ; preds = %18
  %22 = add nsw i32 %19, -1
  store i32 %22, ptr @_ZN14NAMESPACE_MAINL29g_cLogCalcInteractionStrengthE, align 4, !tbaa !5
  br label %23

23:                                               ; preds = %21, %16
  %.1371 = phi i32 [ 3, %21 ], [ 4, %16 ]
  tail call void (i32, ptr, ...) @InteralLogWithArguments(i32 noundef %.1371, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage, ptr noundef %0, i64 noundef %1, ptr noundef %2, i32 noundef %3, i64 noundef %4, i64 noundef %5, double noundef %6, double noundef %7, double noundef %8, double noundef %9, ptr noundef %10)
  br label %.critedge

.critedge:                                        ; preds = %23, %18, %11
  %.not = icmp eq ptr %10, null
  br i1 %.not, label %25, label %24, !prof !9

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

25:                                               ; preds = %24, %.critedge
  %26 = tail call noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell29GetInteractionShellFromHandleEP18_InteractionHandle(ptr noundef %0)
  %27 = icmp eq ptr %26, null
  br i1 %27, label %513, label %28

28:                                               ; preds = %25
  %29 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %30 = icmp sgt i32 %29, 2
  br i1 %30, label %31, label %.critedge494

31:                                               ; preds = %28
  %32 = icmp eq i32 %29, 3
  br i1 %32, label %33, label %39

33:                                               ; preds = %31
  %34 = tail call noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell31GetPointerCountLogEnterMessagesEv(ptr noundef nonnull align 8 dereferenceable(56) %26)
  %35 = load i32, ptr %34, align 4, !tbaa !5
  %36 = icmp sgt i32 %35, 0
  br i1 %36, label %37, label %.critedge494

37:                                               ; preds = %33
  %38 = add nsw i32 %35, -1
  store i32 %38, ptr %34, align 4, !tbaa !5
  br label %39

39:                                               ; preds = %37, %31
  %.1391 = phi i32 [ 3, %37 ], [ 4, %31 ]
  tail call void @InteralLogWithoutArguments(i32 noundef %.1391, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage_0)
  br label %.critedge494

.critedge494:                                     ; preds = %39, %33, %28
  %.not474 = icmp ugt i32 %3, 3
  %40 = load i32, ptr @g_traceLevel, align 4
  %41 = icmp sgt i32 %40, 0
  %or.cond500 = select i1 %.not474, i1 %41, i1 false
  br i1 %or.cond500, label %42, label %43

42:                                               ; preds = %.critedge494
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage_1)
  br label %43

43:                                               ; preds = %42, %.critedge494
  %44 = tail call noundef i64 @_ZNSt14numeric_limitsImE3maxEv() #12
  %45 = icmp sgt i64 %4, -1
  br i1 %45, label %46, label %49

46:                                               ; preds = %43
  %.not475 = icmp eq i64 %4, 0
  br i1 %.not475, label %53, label %47

47:                                               ; preds = %46
  %48 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %4) #12
  %spec.select = select i1 %48, i64 %44, i64 %4
  br label %53

49:                                               ; preds = %43
  %50 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %51 = icmp sgt i32 %50, 1
  br i1 %51, label %52, label %53

52:                                               ; preds = %49
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage_2)
  br label %53

53:                                               ; preds = %47, %49, %52, %46
  %.0392 = phi i64 [ %44, %46 ], [ %spec.select, %47 ], [ %44, %52 ], [ %44, %49 ]
  %54 = icmp sgt i64 %5, 0
  br i1 %54, label %55, label %59

55:                                               ; preds = %53
  %56 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %5) #12
  br i1 %56, label %57, label %63

57:                                               ; preds = %55
  %58 = tail call noundef i64 @_ZNSt14numeric_limitsImE3maxEv() #12
  br label %63

59:                                               ; preds = %53
  %60 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %61 = icmp sgt i32 %60, 1
  br i1 %61, label %62, label %63

62:                                               ; preds = %59
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage_3)
  br label %63

63:                                               ; preds = %59, %62, %55, %57
  %.0393 = phi i64 [ %58, %57 ], [ %5, %55 ], [ 1, %62 ], [ 1, %59 ]
  %64 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #12
  %65 = fcmp ugt double %64, %6
  br i1 %65, label %66, label %72

66:                                               ; preds = %63
  %67 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #12
  %68 = fcmp ult double %6, 0.000000e+00
  %69 = load i32, ptr @g_traceLevel, align 4
  %70 = icmp sgt i32 %69, 1
  %or.cond502 = select i1 %68, i1 %70, i1 false
  br i1 %or.cond502, label %71, label %72

71:                                               ; preds = %66
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage_4)
  br label %72

72:                                               ; preds = %71, %66, %63
  %.0394 = phi double [ %6, %63 ], [ %67, %66 ], [ %67, %71 ]
  %73 = fcmp ult double %7, 0.000000e+00
  br i1 %73, label %74, label %78

74:                                               ; preds = %72
  %75 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %76 = icmp sgt i32 %75, 1
  br i1 %76, label %77, label %78

77:                                               ; preds = %74
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage_5)
  br label %78

78:                                               ; preds = %74, %77, %72
  %.0395 = phi double [ %7, %72 ], [ 0.000000e+00, %77 ], [ 0.000000e+00, %74 ]
  %79 = fcmp ult double %8, 0.000000e+00
  br i1 %79, label %80, label %84

80:                                               ; preds = %78
  %81 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %82 = icmp sgt i32 %81, 1
  br i1 %82, label %83, label %84

83:                                               ; preds = %80
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage_6)
  br label %84

84:                                               ; preds = %80, %83, %78
  %.0396 = phi double [ %8, %78 ], [ 0.000000e+00, %83 ], [ 0.000000e+00, %80 ]
  %85 = fcmp ogt double %9, 0.000000e+00
  br i1 %85, label %88, label %86

86:                                               ; preds = %84
  %87 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #12
  br label %88

88:                                               ; preds = %86, %84
  %.0405 = phi double [ %9, %84 ], [ %87, %86 ]
  %89 = icmp slt i64 %1, 1
  br i1 %89, label %90, label %101

90:                                               ; preds = %88
  %91 = icmp eq i64 %1, 0
  %92 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  br i1 %91, label %93, label %98

93:                                               ; preds = %90
  %94 = icmp sgt i32 %92, 2
  br i1 %94, label %95, label %96

95:                                               ; preds = %93
  tail call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage_7)
  br label %96

96:                                               ; preds = %95, %93
  br i1 %.not, label %513, label %97, !prof !9

97:                                               ; preds = %96
  store double 0.000000e+00, ptr %10, align 8, !tbaa !10
  br label %513

98:                                               ; preds = %90
  %99 = icmp sgt i32 %92, 0
  br i1 %99, label %100, label %513

100:                                              ; preds = %98
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage_8)
  br label %513

101:                                              ; preds = %88
  %102 = icmp eq ptr %2, null
  br i1 %102, label %103, label %107

103:                                              ; preds = %101
  %104 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %105 = icmp sgt i32 %104, 0
  br i1 %105, label %106, label %513

106:                                              ; preds = %103
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage_9)
  br label %513

107:                                              ; preds = %101
  %108 = icmp ugt i64 %1, 30
  br i1 %108, label %109, label %113

109:                                              ; preds = %107
  %110 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %111 = icmp sgt i32 %110, 1
  br i1 %111, label %112, label %513

112:                                              ; preds = %109
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage__10_)
  br label %513

113:                                              ; preds = %107
  %114 = tail call noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell18GetInteractionCoreEv(ptr noundef nonnull align 8 dereferenceable(56) %26)
  %115 = tail call noundef i64 @_ZNK14NAMESPACE_MAIN15InteractionCore14GetCountScoresEv(ptr noundef nonnull align 8 dereferenceable(392) %114)
  %116 = icmp eq i64 %115, 0
  br i1 %116, label %117, label %123

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

120:                                              ; preds = %117
  tail call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage__11_)
  br label %121

121:                                              ; preds = %120, %117
  br i1 %.not, label %513, label %122

122:                                              ; preds = %121
  store double 0.000000e+00, ptr %10, align 8, !tbaa !10
  br label %513

123:                                              ; preds = %113
  %124 = tail call noundef ptr @_ZN14NAMESPACE_MAIN15InteractionCore21GetDataSetInteractionEv(ptr noundef nonnull align 8 dereferenceable(392) %114)
  %.not476 = icmp eq ptr %124, null
  br i1 %.not476, label %125, label %126

125:                                              ; preds = %123
  tail call void @LogAssertFailure(i64 noundef 266, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.1)
  tail call void @__assert_fail(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, i32 noundef 266, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

126:                                              ; preds = %123
  %127 = tail call noundef i64 @_ZNK14NAMESPACE_MAIN18DataSetInteraction15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(32) %124)
  %128 = icmp eq i64 %127, 0
  br i1 %128, label %129, label %135

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

132:                                              ; preds = %129
  tail call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage__12_)
  br label %133

133:                                              ; preds = %132, %129
  br i1 %.not, label %513, label %134

134:                                              ; preds = %133
  store double 0.000000e+00, ptr %10, align 8, !tbaa !10
  br label %513

135:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 664, ptr nonnull %12) #12
  %136 = tail call noundef ptr @_ZNK14NAMESPACE_MAIN15InteractionCore11GetFeaturesEv(ptr noundef nonnull align 8 dereferenceable(392) %114)
  %137 = tail call noundef i64 @_ZNK14NAMESPACE_MAIN15InteractionCore16GetCountFeaturesEv(ptr noundef nonnull align 8 dereferenceable(392) %114)
  %138 = getelementptr inbounds i8, ptr %12, i64 48
  br label %139

139:                                              ; preds = %182, %135
  %.0412 = phi i64 [ 1, %135 ], [ %179, %182 ]
  %.0409 = phi i64 [ 0, %135 ], [ %170, %182 ]
  %.0406 = phi i64 [ 0, %135 ], [ %183, %182 ]
  %140 = getelementptr inbounds i64, ptr %2, i64 %.0406
  %141 = load i64, ptr %140, align 8, !tbaa !12
  %142 = icmp slt i64 %141, 0
  br i1 %142, label %143, label %147

143:                                              ; preds = %139
  %144 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %145 = icmp sgt i32 %144, 0
  br i1 %145, label %146, label %.thread

146:                                              ; preds = %143
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage__13_)
  br label %.thread

147:                                              ; preds = %139
  %.not477 = icmp sgt i64 %137, %141
  br i1 %.not477, label %152, label %148

148:                                              ; preds = %147
  %149 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %150 = icmp sgt i32 %149, 0
  br i1 %150, label %151, label %.thread

151:                                              ; preds = %148
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage__14_)
  br label %.thread

152:                                              ; preds = %147
  %153 = getelementptr inbounds %"class.NAMESPACE_MAIN::FeatureInteraction", ptr %136, i64 %141
  %154 = tail call noundef i64 @_ZNK14NAMESPACE_MAIN18FeatureInteraction12GetCountBinsEv(ptr noundef nonnull align 8 dereferenceable(16) %153) #12
  %155 = icmp ult i64 %154, 2
  br i1 %155, label %156, label %162, !prof !9

156:                                              ; preds = %152
  %157 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %158 = icmp sgt i32 %157, 2
  br i1 %158, label %159, label %160

159:                                              ; preds = %156
  tail call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage__15_)
  br label %160

160:                                              ; preds = %159, %156
  br i1 %.not, label %.thread, label %161

161:                                              ; preds = %160
  store double 0.000000e+00, ptr %10, align 8, !tbaa !10
  br label %.thread

162:                                              ; preds = %152
  %163 = getelementptr inbounds [30 x i64], ptr %138, i64 0, i64 %.0406
  store i64 %154, ptr %163, align 8, !tbaa !12
  %164 = add i64 %.0412, -1
  %or.cond495.not = icmp ult i64 %164, %.0409
  br i1 %or.cond495.not, label %165, label %166

165:                                              ; preds = %162
  tail call void @LogAssertFailure(i64 noundef 317, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.5)
  tail call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, i32 noundef 317, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

166:                                              ; preds = %162
  %167 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef %.0409, i64 noundef %.0412) #12
  br i1 %167, label %168, label %169

168:                                              ; preds = %166
  tail call void @LogAssertFailure(i64 noundef 320, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.7)
  tail call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str, i32 noundef 320, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

169:                                              ; preds = %166
  %170 = add i64 %.0409, %.0412
  %171 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %.0412, i64 noundef %154) #12
  br i1 %171, label %172, label %178

172:                                              ; preds = %169
  %173 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %174 = icmp sgt i32 %173, 2
  br i1 %174, label %175, label %176

175:                                              ; preds = %172
  tail call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage__16_)
  br label %176

176:                                              ; preds = %175, %172
  br i1 %.not, label %.thread, label %177

177:                                              ; preds = %176
  store double 0.000000e+00, ptr %10, align 8, !tbaa !10
  br label %.thread

178:                                              ; preds = %169
  %179 = mul i64 %154, %.0412
  %180 = add i64 %179, -1
  %or.cond496.not = icmp ult i64 %180, %170
  br i1 %or.cond496.not, label %181, label %182

181:                                              ; preds = %178
  tail call void @LogAssertFailure(i64 noundef 338, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.5)
  tail call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, i32 noundef 338, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

182:                                              ; preds = %178
  %183 = add nuw nsw i64 %.0406, 1
  %.not478 = icmp eq i64 %183, %1
  br i1 %.not478, label %184, label %139, !llvm.loop !14

184:                                              ; preds = %182
  %185 = icmp ult i64 %.0392, %179
  br i1 %185, label %186, label %192

186:                                              ; preds = %184
  %187 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %188 = icmp sgt i32 %187, 2
  br i1 %188, label %189, label %190

189:                                              ; preds = %186
  tail call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage__17_)
  br label %190

190:                                              ; preds = %189, %186
  br i1 %.not, label %.thread, label %191

191:                                              ; preds = %190
  store double 0.000000e+00, ptr %10, align 8, !tbaa !10
  br label %.thread

192:                                              ; preds = %184
  %193 = tail call noundef i64 @_ZN14NAMESPACE_MAINL6EbmMaxImEET_S1_S1_(i64 noundef %170, i64 noundef 4) #12
  %194 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef %179, i64 noundef %193) #12
  br i1 %194, label %195, label %199

195:                                              ; preds = %192
  %196 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %197 = icmp sgt i32 %196, 1
  br i1 %197, label %198, label %.thread

198:                                              ; preds = %195
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage__18_)
  br label %.thread

199:                                              ; preds = %192
  %200 = add i64 %193, %179
  %201 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAIN15InteractionCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(392) %114)
  %202 = tail call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIdmEEmbbbm(i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext %201, i64 noundef %115)
  %203 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %202, i64 noundef %200) #12
  br i1 %203, label %204, label %208

204:                                              ; preds = %199
  %205 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %206 = icmp sgt i32 %205, 1
  br i1 %206, label %207, label %.thread

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

208:                                              ; preds = %199
  %209 = tail call noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell22GetInteractionMainBinsEmm(ptr noundef nonnull align 8 dereferenceable(56) %26, i64 noundef %202, i64 noundef %200)
  %210 = icmp eq ptr %209, null
  br i1 %210, label %.thread, label %211, !prof !9

211:                                              ; preds = %208
  %212 = mul i64 %202, %200
  %213 = tail call noundef ptr @_ZN14NAMESPACE_MAINL8IndexBinEPNS_7BinBaseEm(ptr noundef nonnull %209, i64 noundef %212)
  %214 = mul i64 %202, %179
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %209, i8 0, i64 %214, i1 false)
  %215 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAIN15InteractionCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(392) %114)
  %216 = tail call noundef ptr @_ZN14NAMESPACE_MAIN15InteractionCore21GetDataSetInteractionEv(ptr noundef nonnull align 8 dereferenceable(392) %114)
  %217 = tail call noundef i64 @_ZNK14NAMESPACE_MAIN18DataSetInteraction15GetCountSubsetsEv(ptr noundef nonnull align 8 dereferenceable(32) %216)
  %.not479 = icmp eq i64 %217, 0
  br i1 %.not479, label %218, label %219

218:                                              ; preds = %211
  tail call void @LogAssertFailure(i64 noundef 380, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.9)
  tail call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, i32 noundef 380, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

219:                                              ; preds = %211
  %220 = tail call noundef ptr @_ZN14NAMESPACE_MAIN15InteractionCore21GetDataSetInteractionEv(ptr noundef nonnull align 8 dereferenceable(392) %114)
  %221 = tail call noundef ptr @_ZN14NAMESPACE_MAIN18DataSetInteraction10GetSubsetsEv(ptr noundef nonnull align 8 dereferenceable(32) %220)
  %222 = tail call noundef ptr @_ZN14NAMESPACE_MAIN15InteractionCore21GetDataSetInteractionEv(ptr noundef nonnull align 8 dereferenceable(392) %114)
  %223 = tail call noundef i64 @_ZNK14NAMESPACE_MAIN18DataSetInteraction15GetCountSubsetsEv(ptr noundef nonnull align 8 dereferenceable(32) %222)
  %224 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %221, i64 %223
  %225 = getelementptr inbounds i8, ptr %12, i64 656
  %226 = getelementptr inbounds i8, ptr %12, i64 408
  %227 = getelementptr inbounds i8, ptr %12, i64 288
  %228 = getelementptr inbounds i8, ptr %12, i64 40
  %229 = getelementptr inbounds i8, ptr %12, i64 8
  %230 = getelementptr inbounds i8, ptr %12, i64 16
  %231 = getelementptr inbounds i8, ptr %12, i64 24
  %232 = getelementptr inbounds i8, ptr %12, i64 32
  %233 = getelementptr inbounds i8, ptr %12, i64 648
  br label %234

234:                                              ; preds = %310, %219
  %.0415 = phi ptr [ %221, %219 ], [ %320, %310 ]
  %235 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %.0415)
  %236 = getelementptr inbounds i8, ptr %235, i64 136
  %237 = load i64, ptr %236, align 8, !tbaa !16
  %238 = icmp eq i64 %237, 8
  %239 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %.0415)
  br i1 %238, label %240, label %254

240:                                              ; preds = %234
  %241 = getelementptr inbounds i8, ptr %239, i64 128
  %242 = load i64, ptr %241, align 8, !tbaa !19
  %243 = icmp eq i64 %242, 8
  br i1 %243, label %244, label %246

244:                                              ; preds = %240
  %245 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIdmEEmbbbm(i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext %215, i64 noundef %115)
  br label %274

246:                                              ; preds = %240
  %247 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %.0415)
  %248 = getelementptr inbounds i8, ptr %247, i64 128
  %249 = load i64, ptr %248, align 8, !tbaa !19
  %250 = icmp eq i64 %249, 4
  br i1 %250, label %252, label %251

251:                                              ; preds = %246
  call void @LogAssertFailure(i64 noundef 390, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.11)
  call void @__assert_fail(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str, i32 noundef 390, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

252:                                              ; preds = %246
  %253 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIfmEEmbbbm(i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext %215, i64 noundef %115)
  br label %274

254:                                              ; preds = %234
  %255 = getelementptr inbounds i8, ptr %239, i64 136
  %256 = load i64, ptr %255, align 8, !tbaa !16
  %257 = icmp eq i64 %256, 4
  br i1 %257, label %259, label %258

258:                                              ; preds = %254
  call void @LogAssertFailure(i64 noundef 394, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.13)
  call void @__assert_fail(ptr noundef nonnull @.str.14, ptr noundef nonnull @.str, i32 noundef 394, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

259:                                              ; preds = %254
  %260 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %.0415)
  %261 = getelementptr inbounds i8, ptr %260, i64 128
  %262 = load i64, ptr %261, align 8, !tbaa !19
  %263 = icmp eq i64 %262, 8
  br i1 %263, label %264, label %266

264:                                              ; preds = %259
  %265 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIdjEEmbbbm(i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext %215, i64 noundef %115)
  br label %274

266:                                              ; preds = %259
  %267 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %.0415)
  %268 = getelementptr inbounds i8, ptr %267, i64 128
  %269 = load i64, ptr %268, align 8, !tbaa !19
  %270 = icmp eq i64 %269, 4
  br i1 %270, label %272, label %271

271:                                              ; preds = %266
  call void @LogAssertFailure(i64 noundef 398, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.11)
  call void @__assert_fail(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str, i32 noundef 398, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

272:                                              ; preds = %266
  %273 = call noundef i64 @_ZN14NAMESPACE_MAINL10GetBinSizeIfjEEmbbbm(i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext %215, i64 noundef %115)
  br label %274

274:                                              ; preds = %264, %272, %244, %252
  %.0419 = phi i64 [ %245, %244 ], [ %253, %252 ], [ %265, %264 ], [ %273, %272 ]
  %275 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %.0419, i64 noundef %179) #12
  br i1 %275, label %276, label %280

276:                                              ; preds = %274
  %277 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %278 = icmp sgt i32 %277, 1
  br i1 %278, label %279, label %.thread

279:                                              ; preds = %276
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage__20_)
  br label %.thread

280:                                              ; preds = %274
  %281 = mul i64 %.0419, %179
  %282 = call noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell26GetInteractionFastBinsTempEm(ptr noundef nonnull align 8 dereferenceable(56) %26, i64 noundef %281)
  %283 = icmp eq ptr %282, null
  br i1 %283, label %.thread, label %284, !prof !9

284:                                              ; preds = %280
  call void @_ZN14NAMESPACE_MAIN7BinBase7ZeroMemEmmm(ptr noundef nonnull align 1 dereferenceable(1) %282, i64 noundef %.0419, i64 noundef %179, i64 noundef 0)
  %285 = call noundef ptr @_ZN14NAMESPACE_MAINL8IndexBinEPNS_7BinBaseEm(ptr noundef nonnull %282, i64 noundef %281)
  store ptr %285, ptr %225, align 8, !tbaa !20
  br label %286

286:                                              ; preds = %295, %284
  %.0426 = phi i64 [ 0, %284 ], [ %302, %295 ]
  %287 = getelementptr inbounds i64, ptr %2, i64 %.0426
  %288 = load i64, ptr %287, align 8, !tbaa !12
  %289 = getelementptr inbounds %"class.NAMESPACE_MAIN::FeatureInteraction", ptr %136, i64 %288
  %290 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction14GetFeatureDataEm(ptr noundef nonnull align 8 dereferenceable(40) %.0415, i64 noundef %288)
  %291 = getelementptr inbounds [30 x ptr], ptr %226, i64 0, i64 %.0426
  store ptr %290, ptr %291, align 8, !tbaa !22
  %292 = call noundef i32 @_ZNK14NAMESPACE_MAIN18FeatureInteraction18GetBitsRequiredMinEv(ptr noundef nonnull align 8 dereferenceable(16) %289) #12
  %293 = icmp sgt i32 %292, 0
  br i1 %293, label %295, label %294

294:                                              ; preds = %286
  call void @LogAssertFailure(i64 noundef 428, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.15)
  call void @__assert_fail(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str, i32 noundef 428, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

295:                                              ; preds = %286
  %296 = call noundef i32 @_ZNK14NAMESPACE_MAIN18FeatureInteraction18GetBitsRequiredMinEv(ptr noundef nonnull align 8 dereferenceable(16) %289) #12
  %297 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %.0415)
  %298 = getelementptr inbounds i8, ptr %297, i64 136
  %299 = load i64, ptr %298, align 8, !tbaa !16
  %300 = call noundef i32 @_ZN14NAMESPACE_MAINL22GetCountItemsBitPackedEim(i32 noundef %296, i64 noundef %299) #12
  %301 = getelementptr inbounds [30 x i32], ptr %227, i64 0, i64 %.0426
  store i32 %300, ptr %301, align 4, !tbaa !5
  %302 = add nuw nsw i64 %.0426, 1
  %.not480 = icmp eq i64 %302, %1
  br i1 %.not480, label %303, label %286, !llvm.loop !23

303:                                              ; preds = %295
  store i64 %1, ptr %228, align 8, !tbaa !24
  %304 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN15InteractionCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(392) %114)
  %305 = zext i1 %304 to i32
  store i32 %305, ptr %12, align 8, !tbaa !25
  store i64 %115, ptr %229, align 8, !tbaa !26
  %306 = call noundef i64 @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(40) %.0415)
  store i64 %306, ptr %230, align 8, !tbaa !27
  %307 = call noundef ptr @_ZN14NAMESPACE_MAIN21DataSubsetInteraction11GetGradHessEv(ptr noundef nonnull align 8 dereferenceable(40) %.0415)
  store ptr %307, ptr %231, align 8, !tbaa !28
  %308 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction10GetWeightsEv(ptr noundef nonnull align 8 dereferenceable(40) %.0415)
  store ptr %308, ptr %232, align 8, !tbaa !29
  store ptr %282, ptr %233, align 8, !tbaa !30
  %309 = call noundef i32 @_ZN14NAMESPACE_MAIN21DataSubsetInteraction18BinSumsInteractionEP24BinSumsInteractionBridge(ptr noundef nonnull align 8 dereferenceable(40) %.0415, ptr noundef nonnull %12)
  %.not481 = icmp eq i32 %309, 0
  br i1 %.not481, label %310, label %.thread

310:                                              ; preds = %303
  %311 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN15InteractionCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(392) %114)
  %312 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %.0415)
  %313 = getelementptr inbounds i8, ptr %312, i64 136
  %314 = load i64, ptr %313, align 8, !tbaa !16
  %315 = icmp eq i64 %314, 8
  %316 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %.0415)
  %317 = getelementptr inbounds i8, ptr %316, i64 128
  %318 = load i64, ptr %317, align 8, !tbaa !19
  %319 = icmp eq i64 %318, 8
  call void @_ZN14NAMESPACE_MAIN13ConvertAddBinEmbmbbbbPKvPKmPKdbbPv(i64 noundef %115, i1 noundef zeroext %311, i64 noundef %179, i1 noundef zeroext %315, i1 noundef zeroext %319, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef nonnull %282, ptr noundef null, ptr noundef null, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef nonnull %209)
  %320 = getelementptr inbounds i8, ptr %.0415, i64 40
  %.not482 = icmp eq ptr %224, %320
  br i1 %.not482, label %321, label %234, !llvm.loop !31

321:                                              ; preds = %310
  %322 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %202, i64 noundef %179) #12
  br i1 %322, label %330, label %323

323:                                              ; preds = %321
  %.not483 = icmp eq i64 %202, 0
  br i1 %.not483, label %324, label %325

324:                                              ; preds = %323
  call void @_ZL17StopClangAnalysisv() #12
  br label %325

325:                                              ; preds = %323, %324
  %.not484 = icmp eq i64 %179, 0
  br i1 %.not484, label %326, label %327

326:                                              ; preds = %325
  call void @_ZL17StopClangAnalysisv() #12
  br label %327

327:                                              ; preds = %326, %325
  %328 = call noalias ptr @malloc(i64 noundef %214) #14
  %.not485 = icmp eq ptr %328, null
  br i1 %.not485, label %330, label %329

329:                                              ; preds = %327
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %328, ptr nonnull align 1 %209, i64 %214, i1 false)
  br label %330

330:                                              ; preds = %327, %329, %321
  %.0427 = phi ptr [ null, %321 ], [ %328, %329 ], [ null, %327 ]
  %331 = call noundef ptr @_ZN14NAMESPACE_MAINL8IndexBinEPNS_7BinBaseEm(ptr noundef nonnull %209, i64 noundef %214)
  call void @_ZN14NAMESPACE_MAIN7BinBase7ZeroMemEmmm(ptr noundef nonnull align 1 dereferenceable(1) %331, i64 noundef %202, i64 noundef %193, i64 noundef 0)
  %332 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %333 = icmp sgt i32 %332, 3
  br i1 %333, label %334, label %335

334:                                              ; preds = %330
  call void @InteralLogWithoutArguments(i32 noundef 4, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage__21_)
  br label %335

335:                                              ; preds = %334, %330
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #12
  %336 = and i32 %3, 4
  %.not486 = icmp eq i32 %336, 0
  br i1 %.not486, label %339, label %337

337:                                              ; preds = %335
  %338 = call noundef double @_ZN14NAMESPACE_MAIN29PartitionMultiDimensionalFullEPNS_15InteractionCoreEmidddPNS_7BinBaseES3_(ptr noundef nonnull %114, i64 noundef %179, i32 noundef %3, double noundef %7, double noundef %8, double noundef %.0405, ptr noundef nonnull %331, ptr noundef nonnull %209)
  store double %338, ptr %13, align 8, !tbaa !10
  br label %434

339:                                              ; preds = %335
  %340 = call noundef zeroext i1 @_ZN14NAMESPACE_MAIN15InteractionCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(392) %114)
  call void @_ZN14NAMESPACE_MAIN17TensorTotalsBuildEbmmPKmPNS_7BinBaseES3_S3_PKS2_(i1 noundef zeroext %340, i64 noundef %115, i64 noundef %1, ptr noundef nonnull %138, ptr noundef nonnull %331, ptr noundef nonnull %209, ptr noundef %.0427, ptr noundef %213)
  %341 = icmp eq i64 %1, 2
  br i1 %341, label %342, label %344

342:                                              ; preds = %339
  %343 = call noundef double @_ZN14NAMESPACE_MAIN33PartitionMultiDimensionalStraightEPNS_15InteractionCoreEmPKmimddddPNS_7BinBaseES5_PKS4_S7_(ptr noundef nonnull %114, i64 noundef 2, ptr noundef nonnull %138, i32 noundef %3, i64 noundef %.0393, double noundef %.0394, double noundef %.0395, double noundef %.0396, double noundef %.0405, ptr noundef nonnull %331, ptr noundef nonnull %209, ptr noundef %.0427, ptr noundef %213)
  store double %343, ptr %13, align 8, !tbaa !10
  br label %434

344:                                              ; preds = %339
  %345 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL17IsOverflowBinSizeIdmEEbbbbm(i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext %215, i64 noundef %115)
  br i1 %345, label %.critedge498, label %346

346:                                              ; preds = %344
  %347 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL27IsOverflowTreeNodeMultiSizeEbm(i1 noundef zeroext %215, i64 noundef %115)
  br i1 %347, label %.critedge498, label %348

348:                                              ; preds = %346
  %349 = getelementptr inbounds i64, ptr %138, i64 %1
  br label %350

350:                                              ; preds = %359, %348
  %.0424 = phi i64 [ 0, %348 ], [ %360, %359 ]
  %.0422 = phi i64 [ 1, %348 ], [ %361, %359 ]
  %.0420 = phi ptr [ %138, %348 ], [ %362, %359 ]
  %351 = load i64, ptr %.0420, align 8, !tbaa !12
  %352 = icmp ugt i64 %351, 1
  br i1 %352, label %354, label %353

353:                                              ; preds = %350
  call void @LogAssertFailure(i64 noundef 546, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.17)
  call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str, i32 noundef 546, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

354:                                              ; preds = %350
  %355 = add i64 %351, -1
  %356 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef %.0424, i64 noundef %355) #12
  br i1 %356, label %.critedge498, label %357

357:                                              ; preds = %354
  %358 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %351, i64 noundef %.0422) #12
  br i1 %358, label %.critedge498, label %359

359:                                              ; preds = %357
  %360 = add i64 %355, %.0424
  %361 = mul i64 %351, %.0422
  %362 = getelementptr inbounds i8, ptr %.0420, i64 8
  %.not487 = icmp eq ptr %349, %362
  br i1 %.not487, label %363, label %350, !llvm.loop !32

363:                                              ; preds = %359
  %364 = add i64 %361, -1
  %365 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef %361, i64 noundef %364) #12
  br i1 %365, label %.critedge498, label %366

366:                                              ; preds = %363
  %367 = shl i64 %361, 1
  %368 = add i64 %367, -1
  %369 = call noundef i64 @_ZN14NAMESPACE_MAINL20GetTreeNodeMultiSizeEbm(i1 noundef zeroext %215, i64 noundef %115)
  %370 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %369, i64 noundef %368) #12
  br i1 %370, label %.critedge498, label %371

371:                                              ; preds = %366
  %372 = mul i64 %369, %368
  %373 = shl nuw nsw i64 %1, 1
  %374 = or disjoint i64 %373, 1
  %375 = mul i64 %369, %374
  %.not488 = icmp ugt i64 %375, %372
  br i1 %.not488, label %376, label %377

376:                                              ; preds = %371
  call void @LogAssertFailure(i64 noundef 578, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.19)
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str, i32 noundef 578, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

377:                                              ; preds = %371
  %378 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef %375, i64 noundef %375) #12
  br i1 %378, label %.critedge498, label %379

379:                                              ; preds = %377
  %380 = shl i64 %375, 1
  %381 = call noundef i64 @_ZN14NAMESPACE_MAINL6EbmMaxImEET_S1_S1_(i64 noundef %372, i64 noundef %380) #12
  %382 = and i32 %3, 1
  %.not489 = icmp eq i32 %382, 0
  br i1 %.not489, label %404, label %383

383:                                              ; preds = %379
  %384 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef 1, i64 noundef %115) #12
  br i1 %384, label %.critedge498, label %385

385:                                              ; preds = %383
  %386 = add i64 %115, 1
  %387 = and i32 %3, 2
  %.not490 = icmp eq i32 %387, 0
  %388 = and i1 %.not490, %215
  br i1 %388, label %389, label %393

389:                                              ; preds = %385
  %390 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef %115, i64 noundef %386) #12
  br i1 %390, label %.critedge498, label %391

391:                                              ; preds = %389
  %392 = add i64 %386, %115
  br label %393

393:                                              ; preds = %391, %385
  %.0397 = phi i64 [ %392, %391 ], [ %386, %385 ]
  %394 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImJmEEEbT_S1_DpKT0_(i64 noundef 8, i64 noundef %.0397, i64 noundef %179) #12
  br i1 %394, label %.critedge498, label %395

395:                                              ; preds = %393
  %396 = shl i64 %179, 3
  %397 = mul i64 %396, %.0397
  %398 = call noalias ptr @malloc(i64 noundef %397) #14
  %399 = icmp eq ptr %398, null
  br i1 %399, label %.critedge498, label %400

400:                                              ; preds = %395
  %401 = getelementptr inbounds double, ptr %398, i64 %179
  %402 = mul i64 %179, %115
  %403 = getelementptr inbounds double, ptr %401, i64 %402
  %.0398 = select i1 %388, ptr %403, ptr null
  br label %404

404:                                              ; preds = %400, %379
  %.1404 = phi ptr [ %398, %400 ], [ null, %379 ]
  %.1402 = phi ptr [ %401, %400 ], [ null, %379 ]
  %.2400 = phi ptr [ %.0398, %400 ], [ null, %379 ]
  %405 = call noalias ptr @malloc(i64 noundef %381) #14
  %406 = icmp eq ptr %405, null
  br i1 %406, label %407, label %408

407:                                              ; preds = %404
  call void @free(ptr noundef %.1404) #12
  br label %.critedge498

408:                                              ; preds = %404
  %409 = call noalias ptr @malloc(i64 noundef %360) #14
  %410 = icmp eq ptr %409, null
  br i1 %410, label %411, label %412

411:                                              ; preds = %408
  call void @free(ptr noundef nonnull %405) #12
  call void @free(ptr noundef %.1404) #12
  br label %.critedge498

412:                                              ; preds = %408
  %413 = call noundef ptr @_ZN14NAMESPACE_MAIN6Tensor8AllocateEmm(i64 noundef 30, i64 noundef %115)
  %414 = icmp eq ptr %413, null
  br i1 %414, label %415, label %416

415:                                              ; preds = %412
  call void @free(ptr noundef nonnull %409) #12
  call void @free(ptr noundef nonnull %405) #12
  call void @free(ptr noundef %.1404) #12
  br label %.critedge498

416:                                              ; preds = %412
  %417 = call noundef i32 @_ZN14NAMESPACE_MAIN29PartitionMultiDimensionalTreeEbmmmimddddPKNS_7BinBaseEPS0_PNS_6TensorEPvPKmPdS9_S9_S9_mS6_S2_S2_(i1 noundef zeroext %215, i64 noundef %115, i64 noundef %1, i64 noundef %1, i32 noundef %3, i64 noundef %.0393, double noundef %.0394, double noundef %7, double noundef %8, double noundef %.0405, ptr noundef nonnull %209, ptr noundef nonnull %331, ptr noundef nonnull %413, ptr noundef nonnull %405, ptr noundef nonnull %138, ptr noundef %.1404, ptr noundef %.1402, ptr noundef %.2400, ptr noundef nonnull %13, i64 noundef %360, ptr noundef nonnull %409, ptr noundef %.0427, ptr noundef %213)
  call void @_ZN14NAMESPACE_MAIN6Tensor4FreeEPS0_(ptr noundef nonnull %413)
  call void @free(ptr noundef nonnull %409) #12
  call void @free(ptr noundef nonnull %405) #12
  call void @free(ptr noundef %.1404) #12
  %.not491 = icmp eq i32 %417, 0
  br i1 %.not491, label %422, label %418

418:                                              ; preds = %416
  call void @free(ptr noundef %.0427) #12
  %419 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %420 = icmp sgt i32 %419, 3
  br i1 %420, label %421, label %.critedge498

421:                                              ; preds = %418
  call void @InteralLogWithoutArguments(i32 noundef 4, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage__22_)
  br label %.critedge498

422:                                              ; preds = %416
  %423 = load double, ptr %13, align 8, !tbaa !10
  %424 = call noundef zeroext i1 @_ZSt5isnand(double noundef %423)
  br i1 %424, label %425, label %426

425:                                              ; preds = %422
  call void @LogAssertFailure(i64 noundef 686, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.21)
  call void @__assert_fail(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str, i32 noundef 686, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

426:                                              ; preds = %422
  %427 = load double, ptr %13, align 8, !tbaa !10
  %428 = fcmp oeq double %427, 0.000000e+00
  br i1 %428, label %434, label %429

429:                                              ; preds = %426
  %430 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #12
  %431 = load double, ptr %13, align 8, !tbaa !10
  %432 = fcmp ugt double %430, %431
  br i1 %432, label %433, label %434

433:                                              ; preds = %429
  call void @LogAssertFailure(i64 noundef 687, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.23)
  call void @__assert_fail(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str, i32 noundef 687, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

434:                                              ; preds = %426, %429, %342, %337
  call void @free(ptr noundef %.0427) #12
  %435 = call noundef double @_ZNK14NAMESPACE_MAIN18DataSetInteraction14GetWeightTotalEv(ptr noundef nonnull align 8 dereferenceable(32) %124)
  %436 = fcmp ogt double %435, 0.000000e+00
  br i1 %436, label %438, label %437

437:                                              ; preds = %434
  call void @LogAssertFailure(i64 noundef 697, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.25)
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str, i32 noundef 697, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

438:                                              ; preds = %434
  %439 = load double, ptr %13, align 8, !tbaa !10
  %440 = fdiv double %439, %435
  store double %440, ptr %13, align 8, !tbaa !10
  %441 = and i32 %3, 2
  %.not492 = icmp eq i32 %441, 0
  br i1 %.not492, label %446, label %442

442:                                              ; preds = %438
  %443 = call noundef double @_ZNK14NAMESPACE_MAIN15InteractionCore30GainAdjustmentGradientBoostingEv(ptr noundef nonnull align 8 dereferenceable(392) %114) #12
  %444 = load double, ptr %13, align 8, !tbaa !10
  %445 = fmul double %443, %444
  br label %453

446:                                              ; preds = %438
  %447 = call noundef double @_ZN14NAMESPACE_MAIN15InteractionCore15HessianConstantEv(ptr noundef nonnull align 8 dereferenceable(392) %114)
  %448 = load double, ptr %13, align 8, !tbaa !10
  %449 = fdiv double %448, %447
  store double %449, ptr %13, align 8, !tbaa !10
  %450 = call noundef double @_ZNK14NAMESPACE_MAIN15InteractionCore29GainAdjustmentHessianBoostingEv(ptr noundef nonnull align 8 dereferenceable(392) %114) #12
  %451 = load double, ptr %13, align 8, !tbaa !10
  %452 = fmul double %450, %451
  br label %453

453:                                              ; preds = %446, %442
  %storemerge = phi double [ %452, %446 ], [ %445, %442 ]
  store double %storemerge, ptr %13, align 8, !tbaa !10
  %454 = call noundef double @_ZN14NAMESPACE_MAIN15InteractionCore16GradientConstantEv(ptr noundef nonnull align 8 dereferenceable(392) %114)
  %455 = load double, ptr %13, align 8, !tbaa !10
  %456 = fmul double %454, %455
  %457 = fmul double %454, %456
  store double %457, ptr %13, align 8, !tbaa !10
  %458 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #12
  %459 = fcmp ugt double %457, %458
  %460 = load double, ptr %13, align 8, !tbaa !10
  br i1 %459, label %461, label %469, !prof !9

461:                                              ; preds = %453
  %462 = call noundef zeroext i1 @_ZSt5isnand(double noundef %460)
  br i1 %462, label %468, label %463

463:                                              ; preds = %461
  %464 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #12
  %465 = load double, ptr %13, align 8, !tbaa !10
  %466 = fcmp oeq double %464, %465
  br i1 %466, label %468, label %467

467:                                              ; preds = %463
  call void @LogAssertFailure(i64 noundef 712, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.27)
  call void @__assert_fail(ptr noundef nonnull @.str.28, ptr noundef nonnull @.str, i32 noundef 712, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

468:                                              ; preds = %463, %461
  store double 0xFFEFFFFFFFFFFFFF, ptr %13, align 8, !tbaa !10
  br label %480

469:                                              ; preds = %453
  %470 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #12
  %471 = fcmp olt double %460, %470
  %.pre = load double, ptr %13, align 8, !tbaa !10
  br i1 %471, label %472, label %480, !prof !9

472:                                              ; preds = %469
  %473 = call noundef zeroext i1 @_ZSt5isnand(double noundef %.pre)
  br i1 %473, label %474, label %475

474:                                              ; preds = %472
  call void @LogAssertFailure(i64 noundef 724, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.21)
  call void @__assert_fail(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str, i32 noundef 724, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

475:                                              ; preds = %472
  %476 = call noundef double @_ZNSt14numeric_limitsIdE6lowestEv() #12
  %477 = load double, ptr %13, align 8, !tbaa !10
  %478 = fcmp ole double %476, %477
  %479 = select i1 %478, double 0.000000e+00, double 0xFFEFFFFFFFFFFFFF
  store double %479, ptr %13, align 8, !tbaa !10
  br label %480

480:                                              ; preds = %469, %475, %468
  %481 = phi double [ %.pre, %469 ], [ %479, %475 ], [ 0xFFEFFFFFFFFFFFFF, %468 ]
  %482 = call noundef zeroext i1 @_ZSt5isnand(double noundef %481)
  br i1 %482, label %483, label %484

483:                                              ; preds = %480
  call void @LogAssertFailure(i64 noundef 729, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.21)
  call void @__assert_fail(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str, i32 noundef 729, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

484:                                              ; preds = %480
  %485 = load double, ptr %13, align 8, !tbaa !10
  %486 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %485)
  br i1 %486, label %487, label %488

487:                                              ; preds = %484
  call void @LogAssertFailure(i64 noundef 730, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.29)
  call void @__assert_fail(ptr noundef nonnull @.str.30, ptr noundef nonnull @.str, i32 noundef 730, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

488:                                              ; preds = %484
  %489 = load double, ptr %13, align 8
  %490 = fcmp oeq double %489, 0xFFEFFFFFFFFFFFFF
  %491 = fcmp oeq double %489, 0.000000e+00
  %or.cond = or i1 %490, %491
  br i1 %or.cond, label %497, label %492

492:                                              ; preds = %488
  %493 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #12
  %494 = load double, ptr %13, align 8, !tbaa !10
  %495 = fcmp ugt double %493, %494
  br i1 %495, label %496, label %497

496:                                              ; preds = %492
  call void @LogAssertFailure(i64 noundef 731, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CalcInteractionStrength, ptr noundef nonnull @.str.31)
  call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str, i32 noundef 731, ptr noundef nonnull @__PRETTY_FUNCTION__.CalcInteractionStrength) #13
  unreachable

497:                                              ; preds = %492, %488
  %498 = phi double [ %494, %492 ], [ %489, %488 ]
  br i1 %.not, label %500, label %499

499:                                              ; preds = %497
  store double %498, ptr %10, align 8, !tbaa !10
  br label %500

500:                                              ; preds = %497, %499
  %501 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %502 = icmp sgt i32 %501, 2
  br i1 %502, label %503, label %.critedge498

503:                                              ; preds = %500
  %504 = icmp eq i32 %501, 3
  br i1 %504, label %505, label %511

505:                                              ; preds = %503
  %506 = call noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell30GetPointerCountLogExitMessagesEv(ptr noundef nonnull align 8 dereferenceable(56) %26)
  %507 = load i32, ptr %506, align 4, !tbaa !5
  %508 = icmp sgt i32 %507, 0
  br i1 %508, label %509, label %.critedge498

509:                                              ; preds = %505
  %510 = add nsw i32 %507, -1
  store i32 %510, ptr %506, align 4, !tbaa !5
  %.pre546 = load double, ptr %13, align 8, !tbaa !10
  br label %511

511:                                              ; preds = %509, %503
  %512 = phi double [ %.pre546, %509 ], [ %498, %503 ]
  %.1373 = phi i32 [ 3, %509 ], [ 4, %503 ]
  call void (i32, ptr, ...) @InteralLogWithArguments(i32 noundef %.1373, ptr noundef nonnull @_ZZ23CalcInteractionStrengthE13LOG__sMessage__23_, double noundef %512)
  br label %.critedge498

.critedge498:                                     ; preds = %357, %354, %395, %393, %389, %418, %421, %415, %383, %411, %407, %377, %366, %363, %346, %344, %500, %505, %511
  %.17 = phi i32 [ 0, %511 ], [ 0, %505 ], [ 0, %500 ], [ %417, %418 ], [ %417, %421 ], [ -1, %415 ], [ -1, %383 ], [ -1, %411 ], [ -1, %407 ], [ -1, %377 ], [ -1, %366 ], [ -1, %363 ], [ -1, %346 ], [ -1, %344 ], [ -1, %389 ], [ -1, %393 ], [ -1, %395 ], [ -1, %354 ], [ -1, %357 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #12
  br label %.thread

.thread:                                          ; preds = %303, %280, %276, %279, %176, %177, %160, %161, %148, %151, %143, %146, %198, %195, %208, %.critedge498, %204, %207, %190, %191
  %.22 = phi i32 [ 0, %191 ], [ 0, %190 ], [ -1, %198 ], [ -1, %195 ], [ -1, %207 ], [ -1, %204 ], [ -1, %208 ], [ %.17, %.critedge498 ], [ 0, %176 ], [ 0, %177 ], [ 0, %160 ], [ 0, %161 ], [ -3, %148 ], [ -3, %151 ], [ -3, %143 ], [ -3, %146 ], [ -1, %276 ], [ -1, %279 ], [ -1, %280 ], [ %309, %303 ]
  call void @llvm.lifetime.end.p0(i64 664, ptr nonnull %12) #12
  br label %513

513:                                              ; preds = %97, %96, %100, %98, %106, %103, %112, %109, %.thread, %134, %133, %121, %122, %25
  %.26 = phi i32 [ -3, %25 ], [ 0, %97 ], [ 0, %96 ], [ -3, %100 ], [ -3, %98 ], [ -3, %106 ], [ -3, %103 ], [ -1, %112 ], [ -1, %109 ], [ 0, %122 ], [ 0, %121 ], [ %.22, %.thread ], [ 0, %134 ], [ 0, %133 ]
  ret i32 %.26
}

; 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: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell29GetInteractionShellFromHandleEP18_InteractionHandle(ptr noundef) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNSt14numeric_limitsImE3maxEv() local_unnamed_addr #5 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 #4

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN14NAMESPACE_MAIN15InteractionCore9IsHessianEv(ptr noundef nonnull align 8 dereferenceable(392)) local_unnamed_addr #3 align 2

declare noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell22GetInteractionMainBinsEmm(ptr noundef nonnull align 8 dereferenceable(56), i64 noundef, i64 noundef) local_unnamed_addr #2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 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 #3

; 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 #4

; 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 #4

declare noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell26GetInteractionFastBinsTempEm(ptr noundef nonnull align 8 dereferenceable(56), i64 noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN14NAMESPACE_MAIN21DataSubsetInteraction18BinSumsInteractionEP24BinSumsInteractionBridge(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) local_unnamed_addr #3 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: alwaysinline mustprogress nounwind uwtable
declare hidden void @_ZL17StopClangAnalysisv() local_unnamed_addr #8

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #10

declare noundef double @_ZN14NAMESPACE_MAIN29PartitionMultiDimensionalFullEPNS_15InteractionCoreEmidddPNS_7BinBaseES3_(ptr noundef, i64 noundef, i32 noundef, double noundef, double noundef, double noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare noundef double @_ZN14NAMESPACE_MAIN33PartitionMultiDimensionalStraightEPNS_15InteractionCoreEmPKmimddddPNS_7BinBaseES5_PKS4_S7_(ptr noundef, i64 noundef, ptr noundef, i32 noundef, i64 noundef, double noundef, double noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN14NAMESPACE_MAINL27IsOverflowTreeNodeMultiSizeEbm(i1 noundef zeroext, i64 noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i64 @_ZN14NAMESPACE_MAINL20GetTreeNodeMultiSizeEbm(i1 noundef zeroext, i64 noundef) local_unnamed_addr #3

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

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

declare noundef ptr @_ZN14NAMESPACE_MAIN6Tensor8AllocateEmm(i64 noundef, i64 noundef) local_unnamed_addr #2

declare noundef i32 @_ZN14NAMESPACE_MAIN29PartitionMultiDimensionalTreeEbmmmimddddPKNS_7BinBaseEPS0_PNS_6TensorEPvPKmPdS9_S9_S9_mS6_S2_S2_(i1 noundef zeroext, i64 noundef, i64 noundef, i64 noundef, i32 noundef, i64 noundef, double noundef, double noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN14NAMESPACE_MAIN6Tensor4FreeEPS0_(ptr noundef) local_unnamed_addr #2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZN14NAMESPACE_MAIN15InteractionCore15HessianConstantEv(ptr noundef nonnull align 8 dereferenceable(392)) local_unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZN14NAMESPACE_MAIN15InteractionCore16GradientConstantEv(ptr noundef nonnull align 8 dereferenceable(392)) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN14NAMESPACE_MAIN16InteractionShell30GetPointerCountLogExitMessagesEv(ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #4 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 = { 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 = { 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 #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { 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 #9 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #11 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #12 = { nounwind }
attributes #13 = { noreturn nounwind }
attributes #14 = { nounwind allocsize(0) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!"branch_weights", !"expected", i32 1, i32 2000}
!10 = !{!11, !11, i64 0}
!11 = !{!"double", !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!17, !13, i64 136}
!17 = !{!"_ZTS16ObjectiveWrapper", !18, i64 0, !18, i64 8, !18, i64 16, !18, 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, !13, i64 120, !13, i64 128, !13, i64 136, !6, i64 144, !18, i64 152}
!18 = !{!"any pointer", !7, i64 0}
!19 = !{!17, !13, i64 128}
!20 = !{!21, !18, i64 656}
!21 = !{!"_ZTS24BinSumsInteractionBridge", !6, i64 0, !13, i64 8, !13, i64 16, !18, i64 24, !18, i64 32, !13, i64 40, !7, i64 48, !7, i64 288, !7, i64 408, !18, i64 648, !18, i64 656}
!22 = !{!18, !18, i64 0}
!23 = distinct !{!23, !15}
!24 = !{!21, !13, i64 40}
!25 = !{!21, !6, i64 0}
!26 = !{!21, !13, i64 8}
!27 = !{!21, !13, i64 16}
!28 = !{!21, !18, i64 24}
!29 = !{!21, !18, i64 32}
!30 = !{!21, !18, i64 648}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !15}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopSimplifyPass,LoopUnrollPass,LowerExpectIntrinsicPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass