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

; 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.ObjectiveWrapper = type { ptr, ptr, ptr, ptr, i32, i32, i32, double, double, double, double, double, double, double, double, i32, i64, i64, i64, i32, ptr }
%"struct.NAMESPACE_MAIN::DataSetInteraction" = type { i64, i64, ptr, double }
%"struct.NAMESPACE_MAIN::DataSubsetInteraction" = type { i64, ptr, ptr, ptr, ptr }

@g_traceLevel = external global i32, align 4
@.str = external hidden unnamed_addr constant [92 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [23 x i8], align 1
@_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage = external hidden constant [51 x i8], align 16
@__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm = external hidden unnamed_addr constant [23 x i8], align 1
@__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm = external hidden unnamed_addr constant [275 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [155 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [158 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_0 = external hidden constant [108 x i8], align 16
@_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_1 = external hidden constant [70 x i8], align 16
@.str.105 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [47 x i8], align 1
@_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_2 = external hidden constant [94 x i8], align 16
@_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_3 = external hidden constant [69 x i8], align 16
@.str.113 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [34 x i8], align 1
@_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_4 = external hidden constant [50 x i8], align 16

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN14NAMESPACE_MAIN18DataSetInteraction12InitGradHessEbm(ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i64 noundef, ptr noundef, i64 noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN14NAMESPACE_MAIN18DataSetInteraction11InitWeightsEPKhPKa(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef) #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm(ptr noundef nonnull align 8 dereferenceable(32) %0, i1 noundef zeroext %1, i64 noundef %2, i64 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, i64 noundef %7, ptr noundef %8, i64 noundef %9, i64 noundef %10, i64 noundef %11) #3 align 2 {
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca i8, align 1
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i64, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i32, align 4
  %41 = alloca ptr, align 8
  %42 = alloca i32, align 4
  %43 = alloca ptr, align 8
  %44 = alloca i32, align 4
  store ptr %0, ptr %14, align 8, !tbaa !5
  %45 = zext i1 %1 to i8
  store i8 %45, ptr %15, align 1, !tbaa !9
  store i64 %2, ptr %16, align 8, !tbaa !11
  store i64 %3, ptr %17, align 8, !tbaa !11
  store ptr %4, ptr %18, align 8, !tbaa !5
  store ptr %5, ptr %19, align 8, !tbaa !5
  store ptr %6, ptr %20, align 8, !tbaa !5
  store i64 %7, ptr %21, align 8, !tbaa !11
  store ptr %8, ptr %22, align 8, !tbaa !5
  store i64 %9, ptr %23, align 8, !tbaa !11
  store i64 %10, ptr %24, align 8, !tbaa !11
  store i64 %11, ptr %25, align 8, !tbaa !11
  %46 = load ptr, ptr %14, align 8
  br label %47

47:                                               ; preds = %12
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  store i32 3, ptr %26, align 4, !tbaa !13
  %48 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %49 = icmp sle i32 3, %48
  br i1 %49, label %50, label %51

50:                                               ; preds = %47
  call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef @_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage)
  br label %51

51:                                               ; preds = %50, %47
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  br label %52

52:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  %53 = load i64, ptr %16, align 8, !tbaa !11
  %54 = icmp ule i64 1, %53
  br i1 %54, label %57, label %55

55:                                               ; preds = %52
  call void @LogAssertFailure(i64 noundef 393, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.3)
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str, i32 noundef 393, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

56:                                               ; No predecessors!
  br label %57

57:                                               ; preds = %56, %52
  %58 = phi i1 [ true, %52 ], [ false, %56 ]
  %59 = load i64, ptr %17, align 8, !tbaa !11
  %60 = icmp ule i64 1, %59
  br i1 %60, label %63, label %61

61:                                               ; preds = %57
  call void @LogAssertFailure(i64 noundef 394, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.81)
  call void @__assert_fail(ptr noundef @.str.82, ptr noundef @.str, i32 noundef 394, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

62:                                               ; No predecessors!
  br label %63

63:                                               ; preds = %62, %57
  %64 = phi i1 [ true, %57 ], [ false, %62 ]
  %65 = load ptr, ptr %18, align 8, !tbaa !5
  %66 = icmp ne ptr null, %65
  br i1 %66, label %69, label %67

67:                                               ; preds = %63
  call void @LogAssertFailure(i64 noundef 395, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.83)
  call void @__assert_fail(ptr noundef @.str.84, ptr noundef @.str, i32 noundef 395, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

68:                                               ; No predecessors!
  br label %69

69:                                               ; preds = %68, %63
  %70 = phi i1 [ true, %63 ], [ false, %68 ]
  %71 = load ptr, ptr %18, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %71, i32 0, i32 3
  %73 = load ptr, ptr %72, align 8, !tbaa !15
  %74 = icmp ne ptr null, %73
  br i1 %74, label %77, label %75

75:                                               ; preds = %69
  call void @LogAssertFailure(i64 noundef 396, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.85)
  call void @__assert_fail(ptr noundef @.str.86, ptr noundef @.str, i32 noundef 396, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

76:                                               ; No predecessors!
  br label %77

77:                                               ; preds = %76, %69
  %78 = phi i1 [ true, %69 ], [ false, %76 ]
  %79 = load ptr, ptr %19, align 8, !tbaa !5
  %80 = icmp ne ptr null, %79
  br i1 %80, label %83, label %81

81:                                               ; preds = %77
  call void @LogAssertFailure(i64 noundef 397, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.87)
  call void @__assert_fail(ptr noundef @.str.88, ptr noundef @.str, i32 noundef 397, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

82:                                               ; No predecessors!
  br label %83

83:                                               ; preds = %82, %77
  %84 = phi i1 [ true, %77 ], [ false, %82 ]
  %85 = load ptr, ptr %20, align 8, !tbaa !5
  %86 = icmp ne ptr null, %85
  br i1 %86, label %89, label %87

87:                                               ; preds = %83
  call void @LogAssertFailure(i64 noundef 398, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.9)
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str, i32 noundef 398, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

88:                                               ; No predecessors!
  br label %89

89:                                               ; preds = %88, %83
  %90 = phi i1 [ true, %83 ], [ false, %88 ]
  %91 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInteraction", ptr %46, i32 0, i32 0
  %92 = load i64, ptr %91, align 8, !tbaa !18
  %93 = icmp eq i64 0, %92
  br i1 %93, label %96, label %94

94:                                               ; preds = %89
  call void @LogAssertFailure(i64 noundef 400, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.89)
  call void @__assert_fail(ptr noundef @.str.90, ptr noundef @.str, i32 noundef 400, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

95:                                               ; No predecessors!
  br label %96

96:                                               ; preds = %95, %89
  %97 = phi i1 [ true, %89 ], [ false, %95 ]
  %98 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInteraction", ptr %46, i32 0, i32 1
  %99 = load i64, ptr %98, align 8, !tbaa !20
  %100 = icmp eq i64 0, %99
  br i1 %100, label %103, label %101

101:                                              ; preds = %96
  call void @LogAssertFailure(i64 noundef 401, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.91)
  call void @__assert_fail(ptr noundef @.str.92, ptr noundef @.str, i32 noundef 401, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

102:                                              ; No predecessors!
  br label %103

103:                                              ; preds = %102, %96
  %104 = phi i1 [ true, %96 ], [ false, %102 ]
  %105 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInteraction", ptr %46, i32 0, i32 2
  %106 = load ptr, ptr %105, align 8, !tbaa !21
  %107 = icmp eq ptr null, %106
  br i1 %107, label %110, label %108

108:                                              ; preds = %103
  call void @LogAssertFailure(i64 noundef 402, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.93)
  call void @__assert_fail(ptr noundef @.str.94, ptr noundef @.str, i32 noundef 402, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

109:                                              ; No predecessors!
  br label %110

110:                                              ; preds = %109, %103
  %111 = phi i1 [ true, %103 ], [ false, %109 ]
  %112 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInteraction", ptr %46, i32 0, i32 3
  %113 = load double, ptr %112, align 8, !tbaa !22
  %114 = fcmp oeq double 0.000000e+00, %113
  br i1 %114, label %117, label %115

115:                                              ; preds = %110
  call void @LogAssertFailure(i64 noundef 403, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.95)
  call void @__assert_fail(ptr noundef @.str.96, ptr noundef @.str, i32 noundef 403, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

116:                                              ; No predecessors!
  br label %117

117:                                              ; preds = %116, %110
  %118 = phi i1 [ true, %110 ], [ false, %116 ]
  %119 = load i64, ptr %23, align 8, !tbaa !11
  %120 = icmp ne i64 0, %119
  br i1 %120, label %121, label %431

121:                                              ; preds = %117
  %122 = load i64, ptr %21, align 8, !tbaa !11
  %123 = icmp ule i64 1, %122
  br i1 %123, label %126, label %124

124:                                              ; preds = %121
  call void @LogAssertFailure(i64 noundef 406, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.11)
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str, i32 noundef 406, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

125:                                              ; No predecessors!
  br label %126

126:                                              ; preds = %125, %121
  %127 = phi i1 [ true, %121 ], [ false, %125 ]
  %128 = load i64, ptr %23, align 8, !tbaa !11
  %129 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInteraction", ptr %46, i32 0, i32 0
  store i64 %128, ptr %129, align 8, !tbaa !18
  %130 = load ptr, ptr %18, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %130, i32 0, i32 16
  %132 = load i64, ptr %131, align 8, !tbaa !23
  %133 = icmp eq i64 1, %132
  br i1 %133, label %136, label %134

134:                                              ; preds = %126
  call void @LogAssertFailure(i64 noundef 410, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.97)
  call void @__assert_fail(ptr noundef @.str.98, ptr noundef @.str, i32 noundef 410, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

135:                                              ; No predecessors!
  br label %136

136:                                              ; preds = %135, %126
  %137 = phi i1 [ true, %126 ], [ false, %135 ]
  %138 = load ptr, ptr %19, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %138, i32 0, i32 3
  %140 = load ptr, ptr %139, align 8, !tbaa !15
  %141 = icmp eq ptr null, %140
  br i1 %141, label %142, label %147

142:                                              ; preds = %136
  %143 = load ptr, ptr %19, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %143, i32 0, i32 16
  %145 = load i64, ptr %144, align 8, !tbaa !23
  %146 = icmp eq i64 0, %145
  br i1 %146, label %159, label %147

147:                                              ; preds = %142, %136
  %148 = load ptr, ptr %19, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %148, i32 0, i32 3
  %150 = load ptr, ptr %149, align 8, !tbaa !15
  %151 = icmp ne ptr null, %150
  br i1 %151, label %152, label %157

152:                                              ; preds = %147
  %153 = load ptr, ptr %19, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %153, i32 0, i32 16
  %155 = load i64, ptr %154, align 8, !tbaa !23
  %156 = icmp ule i64 2, %155
  br i1 %156, label %159, label %157

157:                                              ; preds = %152, %147
  call void @LogAssertFailure(i64 noundef 412, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.99)
  call void @__assert_fail(ptr noundef @.str.100, ptr noundef @.str, i32 noundef 412, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

158:                                              ; No predecessors!
  br label %159

159:                                              ; preds = %158, %152, %142
  %160 = phi i1 [ true, %152 ], [ true, %142 ], [ false, %158 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #6
  %161 = load ptr, ptr %19, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %161, i32 0, i32 16
  %163 = load i64, ptr %162, align 8, !tbaa !23
  store i64 %163, ptr %28, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #6
  store i64 0, ptr %29, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  %164 = load i64, ptr %23, align 8, !tbaa !11
  store i64 %164, ptr %30, align 8, !tbaa !11
  br label %165

165:                                              ; preds = %201, %159
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  %166 = load i64, ptr %30, align 8, !tbaa !11
  %167 = load i64, ptr %17, align 8, !tbaa !11
  %168 = call noundef i64 @_ZN14NAMESPACE_MAINL6EbmMinImEET_S1_S1_(i64 noundef %166, i64 noundef %167) #6
  store i64 %168, ptr %31, align 8, !tbaa !11
  %169 = load i64, ptr %28, align 8, !tbaa !11
  %170 = icmp eq i64 0, %169
  br i1 %170, label %175, label %171

171:                                              ; preds = %165
  %172 = load i64, ptr %31, align 8, !tbaa !11
  %173 = load i64, ptr %28, align 8, !tbaa !11
  %174 = icmp ult i64 %172, %173
  br i1 %174, label %175, label %176

175:                                              ; preds = %171, %165
  br label %182

176:                                              ; preds = %171
  %177 = load i64, ptr %31, align 8, !tbaa !11
  %178 = load i64, ptr %31, align 8, !tbaa !11
  %179 = load i64, ptr %28, align 8, !tbaa !11
  %180 = urem i64 %178, %179
  %181 = sub i64 %177, %180
  store i64 %181, ptr %31, align 8, !tbaa !11
  br label %182

182:                                              ; preds = %176, %175
  %183 = load i64, ptr %29, align 8, !tbaa !11
  %184 = add i64 %183, 1
  store i64 %184, ptr %29, align 8, !tbaa !11
  %185 = load i64, ptr %31, align 8, !tbaa !11
  %186 = icmp ule i64 1, %185
  br i1 %186, label %189, label %187

187:                                              ; preds = %182
  call void @LogAssertFailure(i64 noundef 427, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.5)
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 427, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

188:                                              ; No predecessors!
  br label %189

189:                                              ; preds = %188, %182
  %190 = phi i1 [ true, %182 ], [ false, %188 ]
  %191 = load i64, ptr %31, align 8, !tbaa !11
  %192 = load i64, ptr %30, align 8, !tbaa !11
  %193 = icmp ule i64 %191, %192
  br i1 %193, label %196, label %194

194:                                              ; preds = %189
  call void @LogAssertFailure(i64 noundef 428, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.101)
  call void @__assert_fail(ptr noundef @.str.102, ptr noundef @.str, i32 noundef 428, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

195:                                              ; No predecessors!
  br label %196

196:                                              ; preds = %195, %189
  %197 = phi i1 [ true, %189 ], [ false, %195 ]
  %198 = load i64, ptr %31, align 8, !tbaa !11
  %199 = load i64, ptr %30, align 8, !tbaa !11
  %200 = sub i64 %199, %198
  store i64 %200, ptr %30, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  br label %201

201:                                              ; preds = %196
  %202 = load i64, ptr %30, align 8, !tbaa !11
  %203 = icmp ne i64 0, %202
  br i1 %203, label %165, label %204, !llvm.loop !24

204:                                              ; preds = %201
  %205 = load i64, ptr %29, align 8, !tbaa !11
  %206 = icmp ule i64 1, %205
  br i1 %206, label %209, label %207

207:                                              ; preds = %204
  call void @LogAssertFailure(i64 noundef 431, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.103)
  call void @__assert_fail(ptr noundef @.str.104, ptr noundef @.str, i32 noundef 431, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

208:                                              ; No predecessors!
  br label %209

209:                                              ; preds = %208, %204
  %210 = phi i1 [ true, %204 ], [ false, %208 ]
  %211 = load i64, ptr %29, align 8, !tbaa !11
  %212 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef 40, i64 noundef %211) #6
  br i1 %212, label %213, label %221

213:                                              ; preds = %209
  br label %214

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

217:                                              ; preds = %214
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_0)
  br label %218

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

219:                                              ; preds = %218
  br label %220

220:                                              ; preds = %219
  store i32 -1, ptr %13, align 4
  store i32 1, ptr %33, align 4
  br label %428

221:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  %222 = load i64, ptr %29, align 8, !tbaa !11
  %223 = mul i64 40, %222
  %224 = call noalias ptr @malloc(i64 noundef %223) #8
  store ptr %224, ptr %34, align 8, !tbaa !5
  %225 = load ptr, ptr %34, align 8, !tbaa !5
  %226 = icmp eq ptr null, %225
  br i1 %226, label %227, label %235

227:                                              ; preds = %221
  br label %228

228:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  store i32 2, ptr %35, align 4, !tbaa !13
  %229 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %230 = icmp sle i32 2, %229
  br i1 %230, label %231, label %232

231:                                              ; preds = %228
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_1)
  br label %232

232:                                              ; preds = %231, %228
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  br label %233

233:                                              ; preds = %232
  br label %234

234:                                              ; preds = %233
  store i32 -1, ptr %13, align 4
  store i32 1, ptr %33, align 4
  br label %427

235:                                              ; preds = %221
  %236 = load ptr, ptr %34, align 8, !tbaa !5
  %237 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInteraction", ptr %46, i32 0, i32 2
  store ptr %236, ptr %237, align 8, !tbaa !21
  %238 = load i64, ptr %29, align 8, !tbaa !11
  %239 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInteraction", ptr %46, i32 0, i32 1
  store i64 %238, ptr %239, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #6
  %240 = load ptr, ptr %34, align 8, !tbaa !5
  %241 = load i64, ptr %29, align 8, !tbaa !11
  %242 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %240, i64 %241
  store ptr %242, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  %243 = load ptr, ptr %34, align 8, !tbaa !5
  store ptr %243, ptr %37, align 8, !tbaa !5
  br label %244

244:                                              ; preds = %248, %235
  %245 = load ptr, ptr %37, align 8, !tbaa !5
  call void @_ZN14NAMESPACE_MAIN21DataSubsetInteraction29SafeInitDataSubsetInteractionEv(ptr noundef nonnull align 8 dereferenceable(40) %245)
  %246 = load ptr, ptr %37, align 8, !tbaa !5
  %247 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %246, i32 1
  store ptr %247, ptr %37, align 8, !tbaa !5
  br label %248

248:                                              ; preds = %244
  %249 = load ptr, ptr %36, align 8, !tbaa !5
  %250 = load ptr, ptr %37, align 8, !tbaa !5
  %251 = icmp ne ptr %249, %250
  br i1 %251, label %244, label %252, !llvm.loop !26

252:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  %253 = load i64, ptr %23, align 8, !tbaa !11
  store i64 %253, ptr %38, align 8, !tbaa !11
  br label %254

254:                                              ; preds = %377, %252
  %255 = load i64, ptr %38, align 8, !tbaa !11
  %256 = icmp ule i64 1, %255
  br i1 %256, label %259, label %257

257:                                              ; preds = %254
  call void @LogAssertFailure(i64 noundef 458, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.105)
  call void @__assert_fail(ptr noundef @.str.106, ptr noundef @.str, i32 noundef 458, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

258:                                              ; No predecessors!
  br label %259

259:                                              ; preds = %258, %254
  %260 = phi i1 [ true, %254 ], [ false, %258 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #6
  %261 = load i64, ptr %38, align 8, !tbaa !11
  %262 = load i64, ptr %17, align 8, !tbaa !11
  %263 = call noundef i64 @_ZN14NAMESPACE_MAINL6EbmMinImEET_S1_S1_(i64 noundef %261, i64 noundef %262) #6
  store i64 %263, ptr %39, align 8, !tbaa !11
  %264 = load i64, ptr %28, align 8, !tbaa !11
  %265 = icmp eq i64 0, %264
  br i1 %265, label %270, label %266

266:                                              ; preds = %259
  %267 = load i64, ptr %39, align 8, !tbaa !11
  %268 = load i64, ptr %28, align 8, !tbaa !11
  %269 = icmp ult i64 %267, %268
  br i1 %269, label %270, label %274

270:                                              ; preds = %266, %259
  %271 = load ptr, ptr %18, align 8, !tbaa !5
  %272 = load ptr, ptr %34, align 8, !tbaa !5
  %273 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %272, i32 0, i32 1
  store ptr %271, ptr %273, align 8, !tbaa !27
  br label %283

274:                                              ; preds = %266
  %275 = load i64, ptr %39, align 8, !tbaa !11
  %276 = load i64, ptr %39, align 8, !tbaa !11
  %277 = load i64, ptr %28, align 8, !tbaa !11
  %278 = urem i64 %276, %277
  %279 = sub i64 %275, %278
  store i64 %279, ptr %39, align 8, !tbaa !11
  %280 = load ptr, ptr %19, align 8, !tbaa !5
  %281 = load ptr, ptr %34, align 8, !tbaa !5
  %282 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %281, i32 0, i32 1
  store ptr %280, ptr %282, align 8, !tbaa !27
  br label %283

283:                                              ; preds = %274, %270
  %284 = load ptr, ptr %34, align 8, !tbaa !5
  %285 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %284, i32 0, i32 1
  %286 = load ptr, ptr %285, align 8, !tbaa !27
  %287 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %286, i32 0, i32 3
  %288 = load ptr, ptr %287, align 8, !tbaa !15
  %289 = icmp ne ptr null, %288
  br i1 %289, label %292, label %290

290:                                              ; preds = %283
  call void @LogAssertFailure(i64 noundef 470, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.107)
  call void @__assert_fail(ptr noundef @.str.108, ptr noundef @.str, i32 noundef 470, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

291:                                              ; No predecessors!
  br label %292

292:                                              ; preds = %291, %283
  %293 = phi i1 [ true, %283 ], [ false, %291 ]
  %294 = load i64, ptr %39, align 8, !tbaa !11
  %295 = icmp ule i64 1, %294
  br i1 %295, label %298, label %296

296:                                              ; preds = %292
  call void @LogAssertFailure(i64 noundef 471, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.5)
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 471, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

297:                                              ; No predecessors!
  br label %298

298:                                              ; preds = %297, %292
  %299 = phi i1 [ true, %292 ], [ false, %297 ]
  %300 = load i64, ptr %39, align 8, !tbaa !11
  %301 = load ptr, ptr %34, align 8, !tbaa !5
  %302 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %301, i32 0, i32 1
  %303 = load ptr, ptr %302, align 8, !tbaa !27
  %304 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %303, i32 0, i32 16
  %305 = load i64, ptr %304, align 8, !tbaa !23
  %306 = urem i64 %300, %305
  %307 = icmp eq i64 0, %306
  br i1 %307, label %310, label %308

308:                                              ; preds = %298
  call void @LogAssertFailure(i64 noundef 472, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.109)
  call void @__assert_fail(ptr noundef @.str.110, ptr noundef @.str, i32 noundef 472, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

309:                                              ; No predecessors!
  br label %310

310:                                              ; preds = %309, %298
  %311 = phi i1 [ true, %298 ], [ false, %309 ]
  %312 = load i64, ptr %39, align 8, !tbaa !11
  %313 = load i64, ptr %38, align 8, !tbaa !11
  %314 = icmp ule i64 %312, %313
  br i1 %314, label %317, label %315

315:                                              ; preds = %310
  call void @LogAssertFailure(i64 noundef 473, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.111)
  call void @__assert_fail(ptr noundef @.str.112, ptr noundef @.str, i32 noundef 473, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

316:                                              ; No predecessors!
  br label %317

317:                                              ; preds = %316, %310
  %318 = phi i1 [ true, %310 ], [ false, %316 ]
  %319 = load i64, ptr %39, align 8, !tbaa !11
  %320 = load i64, ptr %38, align 8, !tbaa !11
  %321 = sub i64 %320, %319
  store i64 %321, ptr %38, align 8, !tbaa !11
  %322 = load i64, ptr %39, align 8, !tbaa !11
  %323 = load ptr, ptr %34, align 8, !tbaa !5
  %324 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %323, i32 0, i32 0
  store i64 %322, ptr %324, align 8, !tbaa !29
  %325 = load i64, ptr %25, align 8, !tbaa !11
  %326 = icmp ne i64 0, %325
  br i1 %326, label %327, label %371

327:                                              ; preds = %317
  %328 = load i64, ptr %25, align 8, !tbaa !11
  %329 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef 8, i64 noundef %328) #6
  br i1 %329, label %330, label %338

330:                                              ; preds = %327
  br label %331

331:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #6
  store i32 2, ptr %40, align 4, !tbaa !13
  %332 = load i32, ptr @g_traceLevel, align 4, !tbaa !13
  %333 = icmp sle i32 2, %332
  br i1 %333, label %334, label %335

334:                                              ; preds = %331
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_2)
  br label %335

335:                                              ; preds = %334, %331
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  br label %336

336:                                              ; preds = %335
  br label %337

337:                                              ; preds = %336
  store i32 -1, ptr %13, align 4
  store i32 1, ptr %33, align 4
  br label %374

338:                                              ; preds = %327
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #6
  %339 = load i64, ptr %25, align 8, !tbaa !11
  %340 = mul i64 8, %339
  %341 = call noalias ptr @malloc(i64 noundef %340) #8
  store ptr %341, ptr %41, align 8, !tbaa !5
  %342 = load ptr, ptr %41, align 8, !tbaa !5
  %343 = icmp eq ptr null, %342
  br i1 %343, label %344, label %352

344:                                              ; preds = %338
  br label %345

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

348:                                              ; preds = %345
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_3)
  br label %349

349:                                              ; preds = %348, %345
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  br label %350

350:                                              ; preds = %349
  br label %351

351:                                              ; preds = %350
  store i32 -1, ptr %13, align 4
  store i32 1, ptr %33, align 4
  br label %368

352:                                              ; preds = %338
  %353 = load ptr, ptr %41, align 8, !tbaa !5
  %354 = load ptr, ptr %34, align 8, !tbaa !5
  %355 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %354, i32 0, i32 3
  store ptr %353, ptr %355, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #6
  %356 = load ptr, ptr %41, align 8, !tbaa !5
  %357 = load i64, ptr %25, align 8, !tbaa !11
  %358 = getelementptr inbounds ptr, ptr %356, i64 %357
  store ptr %358, ptr %43, align 8, !tbaa !5
  br label %359

359:                                              ; preds = %363, %352
  %360 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr null, ptr %360, align 8, !tbaa !5
  %361 = load ptr, ptr %41, align 8, !tbaa !5
  %362 = getelementptr inbounds ptr, ptr %361, i32 1
  store ptr %362, ptr %41, align 8, !tbaa !5
  br label %363

363:                                              ; preds = %359
  %364 = load ptr, ptr %43, align 8, !tbaa !5
  %365 = load ptr, ptr %41, align 8, !tbaa !5
  %366 = icmp ne ptr %364, %365
  br i1 %366, label %359, label %367, !llvm.loop !31

367:                                              ; preds = %363
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  store i32 0, ptr %33, align 4
  br label %368

368:                                              ; preds = %367, %351
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #6
  %369 = load i32, ptr %33, align 4
  switch i32 %369, label %374 [
    i32 0, label %370
  ]

370:                                              ; preds = %368
  br label %371

371:                                              ; preds = %370, %317
  %372 = load ptr, ptr %34, align 8, !tbaa !5
  %373 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %372, i32 1
  store ptr %373, ptr %34, align 8, !tbaa !5
  store i32 0, ptr %33, align 4
  br label %374

374:                                              ; preds = %371, %368, %337
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #6
  %375 = load i32, ptr %33, align 4
  switch i32 %375, label %426 [
    i32 0, label %376
  ]

376:                                              ; preds = %374
  br label %377

377:                                              ; preds = %376
  %378 = load ptr, ptr %36, align 8, !tbaa !5
  %379 = load ptr, ptr %34, align 8, !tbaa !5
  %380 = icmp ne ptr %378, %379
  br i1 %380, label %254, label %381, !llvm.loop !32

381:                                              ; preds = %377
  %382 = load i64, ptr %38, align 8, !tbaa !11
  %383 = icmp eq i64 0, %382
  br i1 %383, label %386, label %384

384:                                              ; preds = %381
  call void @LogAssertFailure(i64 noundef 500, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef @.str.113)
  call void @__assert_fail(ptr noundef @.str.114, ptr noundef @.str, i32 noundef 500, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #7
  unreachable

385:                                              ; No predecessors!
  br label %386

386:                                              ; preds = %385, %381
  %387 = phi i1 [ true, %381 ], [ false, %385 ]
  %388 = load i8, ptr %15, align 1, !tbaa !9, !range !33, !noundef !34
  %389 = trunc i8 %388 to i1
  %390 = load i64, ptr %16, align 8, !tbaa !11
  %391 = call noundef i32 @_ZN14NAMESPACE_MAIN18DataSetInteraction12InitGradHessEbm(ptr noundef nonnull align 8 dereferenceable(32) %46, i1 noundef zeroext %389, i64 noundef %390)
  store i32 %391, ptr %27, align 4, !tbaa !13
  %392 = load i32, ptr %27, align 4, !tbaa !13
  %393 = icmp ne i32 0, %392
  br i1 %393, label %394, label %396

394:                                              ; preds = %386
  %395 = load i32, ptr %27, align 4, !tbaa !13
  store i32 %395, ptr %13, align 4
  store i32 1, ptr %33, align 4
  br label %426

396:                                              ; preds = %386
  %397 = load i64, ptr %25, align 8, !tbaa !11
  %398 = icmp ne i64 0, %397
  br i1 %398, label %399, label %410

399:                                              ; preds = %396
  %400 = load ptr, ptr %20, align 8, !tbaa !5
  %401 = load i64, ptr %21, align 8, !tbaa !11
  %402 = load ptr, ptr %22, align 8, !tbaa !5
  %403 = load i64, ptr %25, align 8, !tbaa !11
  %404 = call noundef i32 @_ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef %400, i64 noundef %401, ptr noundef %402, i64 noundef %403)
  store i32 %404, ptr %27, align 4, !tbaa !13
  %405 = load i32, ptr %27, align 4, !tbaa !13
  %406 = icmp ne i32 0, %405
  br i1 %406, label %407, label %409

407:                                              ; preds = %399
  %408 = load i32, ptr %27, align 4, !tbaa !13
  store i32 %408, ptr %13, align 4
  store i32 1, ptr %33, align 4
  br label %426

409:                                              ; preds = %399
  br label %410

410:                                              ; preds = %409, %396
  %411 = load i64, ptr %23, align 8, !tbaa !11
  %412 = uitofp i64 %411 to double
  %413 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInteraction", ptr %46, i32 0, i32 3
  store double %412, ptr %413, align 8, !tbaa !22
  %414 = load i64, ptr %24, align 8, !tbaa !11
  %415 = icmp ne i64 0, %414
  br i1 %415, label %416, label %425

416:                                              ; preds = %410
  %417 = load ptr, ptr %20, align 8, !tbaa !5
  %418 = load ptr, ptr %22, align 8, !tbaa !5
  %419 = call noundef i32 @_ZN14NAMESPACE_MAIN18DataSetInteraction11InitWeightsEPKhPKa(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef %417, ptr noundef %418)
  store i32 %419, ptr %27, align 4, !tbaa !13
  %420 = load i32, ptr %27, align 4, !tbaa !13
  %421 = icmp ne i32 0, %420
  br i1 %421, label %422, label %424

422:                                              ; preds = %416
  %423 = load i32, ptr %27, align 4, !tbaa !13
  store i32 %423, ptr %13, align 4
  store i32 1, ptr %33, align 4
  br label %426

424:                                              ; preds = %416
  br label %425

425:                                              ; preds = %424, %410
  store i32 0, ptr %33, align 4
  br label %426

426:                                              ; preds = %425, %422, %407, %394, %374
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  br label %427

427:                                              ; preds = %426, %234
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  br label %428

428:                                              ; preds = %427, %220
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  %429 = load i32, ptr %33, align 4
  switch i32 %429, label %439 [
    i32 0, label %430
  ]

430:                                              ; preds = %428
  br label %431

431:                                              ; preds = %430, %117
  br label %432

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

435:                                              ; preds = %432
  call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef @_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_4)
  br label %436

436:                                              ; preds = %435, %432
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  br label %437

437:                                              ; preds = %436
  br label %438

438:                                              ; preds = %437
  store i32 0, ptr %13, align 4
  store i32 1, ptr %33, align 4
  br label %439

439:                                              ; preds = %438, %428
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  %440 = load i32, ptr %13, align 4
  ret i32 %440
}

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

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

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

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

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

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


; 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.NAMESPACE_MAIN::DataSubsetInteraction" = type { i64, ptr, ptr, ptr, ptr }

@g_traceLevel = external local_unnamed_addr global i32, align 4
@.str = external hidden unnamed_addr constant [92 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [23 x i8], align 1
@_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage = external hidden constant [51 x i8], align 16
@__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm = external hidden unnamed_addr constant [23 x i8], align 1
@__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm = external hidden unnamed_addr constant [275 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [155 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [158 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_0 = external hidden constant [108 x i8], align 16
@_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_1 = external hidden constant [70 x i8], align 16
@.str.105 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [47 x i8], align 1
@_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_2 = external hidden constant [94 x i8], align 16
@_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_3 = external hidden constant [69 x i8], align 16
@.str.113 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [34 x i8], align 1
@_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_4 = external hidden constant [50 x i8], align 16

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN14NAMESPACE_MAIN18DataSetInteraction12InitGradHessEbm(ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i64 noundef, ptr noundef, i64 noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm(ptr noundef nonnull align 8 dereferenceable(32) %0, i1 noundef zeroext %1, i64 noundef %2, i64 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, i64 noundef %7, ptr noundef %8, i64 noundef %9, i64 noundef %10, i64 noundef %11) local_unnamed_addr #2 align 2 {
  %13 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %14 = icmp sgt i32 %13, 2
  br i1 %14, label %15, label %16

15:                                               ; preds = %12
  tail call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage)
  br label %16

16:                                               ; preds = %15, %12
  %.not = icmp eq i64 %2, 0
  br i1 %.not, label %17, label %18

17:                                               ; preds = %16
  tail call void @LogAssertFailure(i64 noundef 393, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.3)
  tail call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str, i32 noundef 393, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

18:                                               ; preds = %16
  %.not143 = icmp eq i64 %3, 0
  br i1 %.not143, label %19, label %20

19:                                               ; preds = %18
  tail call void @LogAssertFailure(i64 noundef 394, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.81)
  tail call void @__assert_fail(ptr noundef nonnull @.str.82, ptr noundef nonnull @.str, i32 noundef 394, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

20:                                               ; preds = %18
  %.not144 = icmp eq ptr %4, null
  br i1 %.not144, label %21, label %22

21:                                               ; preds = %20
  tail call void @LogAssertFailure(i64 noundef 395, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.83)
  tail call void @__assert_fail(ptr noundef nonnull @.str.84, ptr noundef nonnull @.str, i32 noundef 395, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

22:                                               ; preds = %20
  %23 = getelementptr inbounds i8, ptr %4, i64 24
  %24 = load ptr, ptr %23, align 8, !tbaa !9
  %.not145 = icmp eq ptr %24, null
  br i1 %.not145, label %25, label %26

25:                                               ; preds = %22
  tail call void @LogAssertFailure(i64 noundef 396, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.85)
  tail call void @__assert_fail(ptr noundef nonnull @.str.86, ptr noundef nonnull @.str, i32 noundef 396, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

26:                                               ; preds = %22
  %.not146 = icmp eq ptr %5, null
  br i1 %.not146, label %27, label %28

27:                                               ; preds = %26
  tail call void @LogAssertFailure(i64 noundef 397, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.87)
  tail call void @__assert_fail(ptr noundef nonnull @.str.88, ptr noundef nonnull @.str, i32 noundef 397, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

28:                                               ; preds = %26
  %.not147 = icmp eq ptr %6, null
  br i1 %.not147, label %29, label %30

29:                                               ; preds = %28
  tail call void @LogAssertFailure(i64 noundef 398, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.9)
  tail call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, i32 noundef 398, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

30:                                               ; preds = %28
  %31 = load i64, ptr %0, align 8, !tbaa !14
  %32 = icmp eq i64 %31, 0
  br i1 %32, label %34, label %33

33:                                               ; preds = %30
  tail call void @LogAssertFailure(i64 noundef 400, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.89)
  tail call void @__assert_fail(ptr noundef nonnull @.str.90, ptr noundef nonnull @.str, i32 noundef 400, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

34:                                               ; preds = %30
  %35 = getelementptr inbounds i8, ptr %0, i64 8
  %36 = load i64, ptr %35, align 8, !tbaa !16
  %37 = icmp eq i64 %36, 0
  br i1 %37, label %39, label %38

38:                                               ; preds = %34
  tail call void @LogAssertFailure(i64 noundef 401, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.91)
  tail call void @__assert_fail(ptr noundef nonnull @.str.92, ptr noundef nonnull @.str, i32 noundef 401, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

39:                                               ; preds = %34
  %40 = getelementptr inbounds i8, ptr %0, i64 16
  %41 = load ptr, ptr %40, align 8, !tbaa !17
  %42 = icmp eq ptr %41, null
  br i1 %42, label %44, label %43

43:                                               ; preds = %39
  tail call void @LogAssertFailure(i64 noundef 402, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.93)
  tail call void @__assert_fail(ptr noundef nonnull @.str.94, ptr noundef nonnull @.str, i32 noundef 402, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

44:                                               ; preds = %39
  %45 = getelementptr inbounds i8, ptr %0, i64 24
  %46 = load double, ptr %45, align 8, !tbaa !18
  %47 = fcmp oeq double %46, 0.000000e+00
  br i1 %47, label %49, label %48

48:                                               ; preds = %44
  tail call void @LogAssertFailure(i64 noundef 403, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.95)
  tail call void @__assert_fail(ptr noundef nonnull @.str.96, ptr noundef nonnull @.str, i32 noundef 403, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

49:                                               ; preds = %44
  %.not148 = icmp eq i64 %9, 0
  br i1 %.not148, label %164, label %50

50:                                               ; preds = %49
  %.not149 = icmp eq i64 %7, 0
  br i1 %.not149, label %51, label %52

51:                                               ; preds = %50
  tail call void @LogAssertFailure(i64 noundef 406, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.11)
  tail call void @__assert_fail(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str, i32 noundef 406, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

52:                                               ; preds = %50
  store i64 %9, ptr %0, align 8, !tbaa !14
  %53 = getelementptr inbounds i8, ptr %4, i64 120
  %54 = load i64, ptr %53, align 8, !tbaa !19
  %55 = icmp eq i64 %54, 1
  br i1 %55, label %57, label %56

56:                                               ; preds = %52
  tail call void @LogAssertFailure(i64 noundef 410, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.97)
  tail call void @__assert_fail(ptr noundef nonnull @.str.98, ptr noundef nonnull @.str, i32 noundef 410, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

57:                                               ; preds = %52
  %58 = getelementptr inbounds i8, ptr %5, i64 24
  %59 = load ptr, ptr %58, align 8, !tbaa !9
  %60 = icmp eq ptr %59, null
  %61 = getelementptr inbounds i8, ptr %5, i64 120
  %62 = load i64, ptr %61, align 8, !tbaa !19
  br i1 %60, label %63, label %65

63:                                               ; preds = %57
  %64 = icmp eq i64 %62, 0
  br i1 %64, label %67, label %.thread

65:                                               ; preds = %57
  %66 = icmp ugt i64 %62, 1
  br i1 %66, label %67, label %.thread

.thread:                                          ; preds = %63, %65
  tail call void @LogAssertFailure(i64 noundef 412, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.99)
  tail call void @__assert_fail(ptr noundef nonnull @.str.100, ptr noundef nonnull @.str, i32 noundef 412, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

67:                                               ; preds = %65, %63
  %68 = phi i64 [ %62, %65 ], [ 0, %63 ]
  %69 = add i64 %68, -1
  br label %70

70:                                               ; preds = %80, %67
  %.0109 = phi i64 [ %9, %67 ], [ %81, %80 ]
  %.0107 = phi i64 [ 0, %67 ], [ %76, %80 ]
  %71 = tail call noundef i64 @_ZN14NAMESPACE_MAINL6EbmMinImEET_S1_S1_(i64 noundef %.0109, i64 noundef %3) #7
  %or.cond.not = icmp ult i64 %69, %71
  br i1 %or.cond.not, label %72, label %75

72:                                               ; preds = %70
  %73 = urem i64 %71, %68
  %74 = sub nuw i64 %71, %73
  br label %75

75:                                               ; preds = %70, %72
  %.0113 = phi i64 [ %71, %70 ], [ %74, %72 ]
  %76 = add i64 %.0107, 1
  %.not151 = icmp eq i64 %.0113, 0
  br i1 %.not151, label %77, label %78

77:                                               ; preds = %75
  tail call void @LogAssertFailure(i64 noundef 427, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.5)
  tail call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, i32 noundef 427, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

78:                                               ; preds = %75
  %.not152 = icmp ugt i64 %.0113, %.0109
  br i1 %.not152, label %79, label %80

79:                                               ; preds = %78
  tail call void @LogAssertFailure(i64 noundef 428, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.101)
  tail call void @__assert_fail(ptr noundef nonnull @.str.102, ptr noundef nonnull @.str, i32 noundef 428, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

80:                                               ; preds = %78
  %81 = sub i64 %.0109, %.0113
  %.not153 = icmp eq i64 %81, 0
  br i1 %.not153, label %82, label %70, !llvm.loop !20

82:                                               ; preds = %80
  %.not154 = icmp eq i64 %76, 0
  br i1 %.not154, label %83, label %84

83:                                               ; preds = %82
  tail call void @LogAssertFailure(i64 noundef 431, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.103)
  tail call void @__assert_fail(ptr noundef nonnull @.str.104, ptr noundef nonnull @.str, i32 noundef 431, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

84:                                               ; preds = %82
  %85 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef 40, i64 noundef %76) #7
  br i1 %85, label %86, label %90

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

89:                                               ; preds = %86
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_0)
  br label %.thread175

90:                                               ; preds = %84
  %91 = mul i64 %76, 40
  %92 = tail call noalias ptr @malloc(i64 noundef %91) #8
  %93 = icmp eq ptr %92, null
  br i1 %93, label %94, label %98

94:                                               ; preds = %90
  %95 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %96 = icmp sgt i32 %95, 1
  br i1 %96, label %97, label %.thread175

97:                                               ; preds = %94
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_1)
  br label %.thread175

98:                                               ; preds = %90
  store ptr %92, ptr %40, align 8, !tbaa !17
  store i64 %76, ptr %35, align 8, !tbaa !16
  %99 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %92, i64 %76
  br label %100

100:                                              ; preds = %100, %98
  %.0112 = phi ptr [ %92, %98 ], [ %101, %100 ]
  tail call void @_ZN14NAMESPACE_MAIN21DataSubsetInteraction29SafeInitDataSubsetInteractionEv(ptr noundef nonnull align 8 dereferenceable(40) %.0112)
  %101 = getelementptr inbounds i8, ptr %.0112, i64 40
  %.not155 = icmp eq ptr %99, %101
  br i1 %.not155, label %.preheader.split, label %100, !llvm.loop !22

.preheader.split:                                 ; preds = %100
  %.not160 = icmp eq i64 %11, 0
  %102 = shl i64 %11, 3
  br i1 %.not160, label %.preheader.split.split.us, label %.preheader.split.split

.preheader.split.split.us:                        ; preds = %.preheader.split, %119
  %.0119.us = phi ptr [ %121, %119 ], [ %92, %.preheader.split ]
  %.0111.us = phi i64 [ %120, %119 ], [ %9, %.preheader.split ]
  %.not156.us = icmp eq i64 %.0111.us, 0
  br i1 %.not156.us, label %.split.us, label %103

103:                                              ; preds = %.preheader.split.split.us
  %104 = tail call noundef i64 @_ZN14NAMESPACE_MAINL6EbmMinImEET_S1_S1_(i64 noundef %.0111.us, i64 noundef %3) #7
  %or.cond168.not.us = icmp ult i64 %69, %104
  br i1 %or.cond168.not.us, label %105, label %108

105:                                              ; preds = %103
  %106 = urem i64 %104, %68
  %107 = sub nuw i64 %104, %106
  br label %108

108:                                              ; preds = %103, %105
  %.sink = phi ptr [ %5, %105 ], [ %4, %103 ]
  %.0110.us = phi i64 [ %107, %105 ], [ %104, %103 ]
  %109 = getelementptr inbounds i8, ptr %.0119.us, i64 8
  store ptr %.sink, ptr %109, align 8
  %110 = getelementptr inbounds i8, ptr %.sink, i64 24
  %111 = load ptr, ptr %110, align 8, !tbaa !9
  %.not157.us = icmp eq ptr %111, null
  br i1 %.not157.us, label %.split187.us, label %112

112:                                              ; preds = %108
  %.not158.us = icmp eq i64 %.0110.us, 0
  br i1 %.not158.us, label %.split189.us, label %113

113:                                              ; preds = %112
  %114 = getelementptr inbounds i8, ptr %.sink, i64 120
  %115 = load i64, ptr %114, align 8, !tbaa !19
  %116 = urem i64 %.0110.us, %115
  %117 = icmp eq i64 %116, 0
  br i1 %117, label %118, label %.split191.us

118:                                              ; preds = %113
  %.not159.us = icmp ugt i64 %.0110.us, %.0111.us
  br i1 %.not159.us, label %.split193.us, label %119

119:                                              ; preds = %118
  %120 = sub i64 %.0111.us, %.0110.us
  store i64 %.0110.us, ptr %.0119.us, align 8, !tbaa !23
  %121 = getelementptr inbounds i8, ptr %.0119.us, i64 40
  %.not163.us = icmp eq ptr %99, %121
  br i1 %.not163.us, label %.split195.us, label %.preheader.split.split.us, !llvm.loop !25

.preheader.split.split:                           ; preds = %.preheader.split, %150
  %.0119 = phi ptr [ %152, %150 ], [ %92, %.preheader.split ]
  %.0111 = phi i64 [ %139, %150 ], [ %9, %.preheader.split ]
  %.not156 = icmp eq i64 %.0111, 0
  br i1 %.not156, label %.split.us, label %122

.split.us:                                        ; preds = %.preheader.split.split, %.preheader.split.split.us
  tail call void @LogAssertFailure(i64 noundef 458, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.105)
  tail call void @__assert_fail(ptr noundef nonnull @.str.106, ptr noundef nonnull @.str, i32 noundef 458, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

122:                                              ; preds = %.preheader.split.split
  %123 = tail call noundef i64 @_ZN14NAMESPACE_MAINL6EbmMinImEET_S1_S1_(i64 noundef %.0111, i64 noundef %3) #7
  %or.cond168.not = icmp ult i64 %69, %123
  br i1 %or.cond168.not, label %124, label %127

124:                                              ; preds = %122
  %125 = urem i64 %123, %68
  %126 = sub nuw i64 %123, %125
  br label %127

127:                                              ; preds = %122, %124
  %.sink209 = phi ptr [ %5, %124 ], [ %4, %122 ]
  %.0110 = phi i64 [ %126, %124 ], [ %123, %122 ]
  %128 = getelementptr inbounds i8, ptr %.0119, i64 8
  store ptr %.sink209, ptr %128, align 8
  %129 = getelementptr inbounds i8, ptr %.sink209, i64 24
  %130 = load ptr, ptr %129, align 8, !tbaa !9
  %.not157 = icmp eq ptr %130, null
  br i1 %.not157, label %.split187.us, label %131

.split187.us:                                     ; preds = %127, %108
  tail call void @LogAssertFailure(i64 noundef 470, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.107)
  tail call void @__assert_fail(ptr noundef nonnull @.str.108, ptr noundef nonnull @.str, i32 noundef 470, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

131:                                              ; preds = %127
  %.not158 = icmp eq i64 %.0110, 0
  br i1 %.not158, label %.split189.us, label %132

.split189.us:                                     ; preds = %131, %112
  tail call void @LogAssertFailure(i64 noundef 471, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.5)
  tail call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, i32 noundef 471, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

132:                                              ; preds = %131
  %133 = getelementptr inbounds i8, ptr %.sink209, i64 120
  %134 = load i64, ptr %133, align 8, !tbaa !19
  %135 = urem i64 %.0110, %134
  %136 = icmp eq i64 %135, 0
  br i1 %136, label %137, label %.split191.us

.split191.us:                                     ; preds = %132, %113
  tail call void @LogAssertFailure(i64 noundef 472, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.109)
  tail call void @__assert_fail(ptr noundef nonnull @.str.110, ptr noundef nonnull @.str, i32 noundef 472, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

137:                                              ; preds = %132
  %.not159 = icmp ugt i64 %.0110, %.0111
  br i1 %.not159, label %.split193.us, label %138

.split193.us:                                     ; preds = %137, %118
  tail call void @LogAssertFailure(i64 noundef 473, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.111)
  tail call void @__assert_fail(ptr noundef nonnull @.str.112, ptr noundef nonnull @.str, i32 noundef 473, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

138:                                              ; preds = %137
  %139 = sub i64 %.0111, %.0110
  store i64 %.0110, ptr %.0119, align 8, !tbaa !23
  %140 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef 8, i64 noundef %11) #7
  br i1 %140, label %141, label %145

141:                                              ; preds = %138
  %142 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %143 = icmp sgt i32 %142, 1
  br i1 %143, label %144, label %.thread175

144:                                              ; preds = %141
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_2)
  br label %.thread175

145:                                              ; preds = %138
  %calloc = tail call ptr @calloc(i64 1, i64 %102)
  %.not162 = icmp eq ptr %calloc, null
  br i1 %.not162, label %146, label %150

146:                                              ; preds = %145
  %147 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %148 = icmp sgt i32 %147, 1
  br i1 %148, label %149, label %.thread175

149:                                              ; preds = %146
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_3)
  br label %.thread175

150:                                              ; preds = %145
  %151 = getelementptr inbounds i8, ptr %.0119, i64 24
  store ptr %calloc, ptr %151, align 8, !tbaa !26
  %152 = getelementptr inbounds i8, ptr %.0119, i64 40
  %.not163 = icmp eq ptr %99, %152
  br i1 %.not163, label %.split195.us, label %.preheader.split.split, !llvm.loop !25

.split195.us:                                     ; preds = %150, %119
  %.us-phi = phi i64 [ %120, %119 ], [ %139, %150 ]
  %153 = icmp eq i64 %.us-phi, 0
  br i1 %153, label %155, label %154

154:                                              ; preds = %.split195.us
  tail call void @LogAssertFailure(i64 noundef 500, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm, ptr noundef nonnull @.str.113)
  tail call void @__assert_fail(ptr noundef nonnull @.str.114, ptr noundef nonnull @.str, i32 noundef 500, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammm) #6
  unreachable

155:                                              ; preds = %.split195.us
  %156 = tail call noundef i32 @_ZN14NAMESPACE_MAIN18DataSetInteraction12InitGradHessEbm(ptr noundef nonnull align 8 dereferenceable(32) %0, i1 noundef zeroext %1, i64 noundef %2)
  %.not164 = icmp eq i32 %156, 0
  br i1 %.not164, label %157, label %.thread175

157:                                              ; preds = %155
  br i1 %.not160, label %160, label %158

158:                                              ; preds = %157
  %159 = tail call noundef i32 @_ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %6, i64 noundef %7, ptr noundef %8, i64 noundef %11)
  %.not165 = icmp eq i32 %159, 0
  br i1 %.not165, label %160, label %.thread175

160:                                              ; preds = %158, %157
  %161 = uitofp i64 %9 to double
  store double %161, ptr %45, align 8, !tbaa !18
  %.not166 = icmp eq i64 %10, 0
  br i1 %.not166, label %164, label %162

162:                                              ; preds = %160
  %163 = tail call noundef i32 @_ZN14NAMESPACE_MAIN18DataSetInteraction11InitWeightsEPKhPKa(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %6, ptr noundef %8)
  %.not167 = icmp eq i32 %163, 0
  br i1 %.not167, label %164, label %.thread175

164:                                              ; preds = %162, %160, %49
  %165 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %166 = icmp sgt i32 %165, 2
  br i1 %166, label %167, label %.thread175

167:                                              ; preds = %164
  tail call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN18DataSetInteraction22InitDataSetInteractionEbmmPK16ObjectiveWrapperS3_PKhmPKammmE13LOG__sMessage_4)
  br label %.thread175

.thread175:                                       ; preds = %149, %146, %141, %144, %162, %158, %155, %94, %97, %86, %89, %164, %167
  %.7 = phi i32 [ 0, %167 ], [ 0, %164 ], [ %163, %162 ], [ %159, %158 ], [ %156, %155 ], [ -1, %94 ], [ -1, %97 ], [ -1, %86 ], [ -1, %89 ], [ -1, %144 ], [ -1, %141 ], [ -1, %146 ], [ -1, %149 ]
  ret i32 %.7
}

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

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

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

; Function Attrs: nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #5

attributes #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 = { 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 #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { 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 #5 = { nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" }
attributes #6 = { noreturn nounwind }
attributes #7 = { nounwind }
attributes #8 = { nounwind allocsize(0) }

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

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


; Effective O3 passes: BDCEPass,ConstraintEliminationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MergedLoadStoreMotionPass,SROAPass,SimplifyCFGPass,TailCallElimPass