; 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.NAMESPACE_MAIN::DataSetInteraction" = type { i64, i64, ptr, double }
%"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
@.str = external hidden unnamed_addr constant [92 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [18 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
@_ZZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKamE13LOG__sMessage = external hidden constant [44 x i8], align 16
@__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam = external hidden unnamed_addr constant [16 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
@__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam = external hidden unnamed_addr constant [138 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
@.str.13 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [25 x i8], align 1
@_ZZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKamE13LOG__sMessage_0 = external hidden constant [120 x i8], align 16
@_ZZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKamE13LOG__sMessage_1 = external hidden constant [70 x i8], align 16
@.str.47 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [20 x i8], align 1
@_ZZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKamE13LOG__sMessage_2 = external hidden constant [43 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: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef, i64 noundef) #3

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

declare ptr @AlignedAlloc(i64 noundef) #1

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

56:                                               ; preds = %5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  store i32 3, ptr %12, align 4, !tbaa !11
  %57 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %58 = icmp sle i32 3, %57
  br i1 %58, label %59, label %60

59:                                               ; preds = %56
  call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef @_ZZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKamE13LOG__sMessage)
  br label %60

60:                                               ; preds = %59, %56
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  br label %61

61:                                               ; preds = %60
  %62 = load ptr, ptr %8, align 8, !tbaa !5
  %63 = icmp ne ptr null, %62
  br i1 %63, label %66, label %64

64:                                               ; preds = %61
  call void @LogAssertFailure(i64 noundef 95, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.9)
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str, i32 noundef 95, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

65:                                               ; No predecessors!
  br label %66

66:                                               ; preds = %65, %61
  %67 = phi i1 [ true, %61 ], [ false, %65 ]
  %68 = load i64, ptr %9, align 8, !tbaa !9
  %69 = icmp ule i64 1, %68
  br i1 %69, label %72, label %70

70:                                               ; preds = %66
  call void @LogAssertFailure(i64 noundef 96, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.11)
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str, i32 noundef 96, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

71:                                               ; No predecessors!
  br label %72

72:                                               ; preds = %71, %66
  %73 = phi i1 [ true, %66 ], [ false, %71 ]
  %74 = load i64, ptr %11, align 8, !tbaa !9
  %75 = icmp ule i64 1, %74
  br i1 %75, label %78, label %76

76:                                               ; preds = %72
  call void @LogAssertFailure(i64 noundef 97, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.1)
  call void @__assert_fail(ptr noundef @.str.2, ptr noundef @.str, i32 noundef 97, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

77:                                               ; No predecessors!
  br label %78

78:                                               ; preds = %77, %72
  %79 = phi i1 [ true, %72 ], [ false, %77 ]
  %80 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInteraction", ptr %55, i32 0, i32 2
  %81 = load ptr, ptr %80, align 8, !tbaa !13
  %82 = icmp ne ptr null, %81
  br i1 %82, label %85, label %83

83:                                               ; preds = %78
  call void @LogAssertFailure(i64 noundef 99, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.13)
  call void @__assert_fail(ptr noundef @.str.14, ptr noundef @.str, i32 noundef 99, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

84:                                               ; No predecessors!
  br label %85

85:                                               ; preds = %84, %78
  %86 = phi i1 [ true, %78 ], [ false, %84 ]
  %87 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInteraction", ptr %55, i32 0, i32 1
  %88 = load i64, ptr %87, align 8, !tbaa !16
  %89 = icmp ule i64 1, %88
  br i1 %89, label %92, label %90

90:                                               ; preds = %85
  call void @LogAssertFailure(i64 noundef 100, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.15)
  call void @__assert_fail(ptr noundef @.str.16, ptr noundef @.str, i32 noundef 100, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

91:                                               ; No predecessors!
  br label %92

92:                                               ; preds = %91, %85
  %93 = phi i1 [ true, %85 ], [ false, %91 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  %94 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInteraction", ptr %55, i32 0, i32 2
  %95 = load ptr, ptr %94, align 8, !tbaa !13
  %96 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInteraction", ptr %55, i32 0, i32 1
  %97 = load i64, ptr %96, align 8, !tbaa !16
  %98 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %95, i64 %97
  store ptr %98, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  store i64 0, ptr %14, align 8, !tbaa !9
  br label %99

99:                                               ; preds = %539, %92
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %100 = load ptr, ptr %8, align 8, !tbaa !5
  %101 = load i64, ptr %14, align 8, !tbaa !9
  %102 = call noundef ptr @_ZN14NAMESPACE_MAIN23GetDataSetSharedFeatureEPKhmPbS2_S2_S2_PmS3_S3_(ptr noundef %100, i64 noundef %101, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21)
  store ptr %102, ptr %22, align 8, !tbaa !5
  %103 = load ptr, ptr %22, align 8, !tbaa !5
  %104 = icmp ne ptr null, %103
  br i1 %104, label %107, label %105

105:                                              ; preds = %99
  call void @LogAssertFailure(i64 noundef 121, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.17)
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str, i32 noundef 121, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

106:                                              ; No predecessors!
  br label %107

107:                                              ; preds = %106, %99
  %108 = phi i1 [ true, %99 ], [ false, %106 ]
  %109 = load i8, ptr %18, align 1, !tbaa !17, !range !19, !noundef !20
  %110 = trunc i8 %109 to i1
  br i1 %110, label %111, label %113

111:                                              ; preds = %107
  call void @LogAssertFailure(i64 noundef 122, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.19)
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str, i32 noundef 122, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

112:                                              ; No predecessors!
  br label %113

113:                                              ; preds = %112, %107
  %114 = phi i1 [ true, %107 ], [ false, %112 ]
  %115 = load i64, ptr %19, align 8, !tbaa !9
  %116 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImmEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuentsr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %115) #8
  br i1 %116, label %117, label %119

117:                                              ; preds = %113
  call void @LogAssertFailure(i64 noundef 124, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.21)
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str, i32 noundef 124, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

118:                                              ; No predecessors!
  br label %119

119:                                              ; preds = %118, %113
  %120 = phi i1 [ true, %113 ], [ false, %118 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %121 = load i64, ptr %19, align 8, !tbaa !9
  store i64 %121, ptr %23, align 8, !tbaa !9
  %122 = load i64, ptr %23, align 8, !tbaa !9
  %123 = icmp ult i64 1, %122
  br i1 %123, label %124, label %533

124:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  %125 = load i64, ptr %23, align 8, !tbaa !9
  %126 = sub i64 %125, 1
  %127 = call noundef i32 @_ZN14NAMESPACE_MAINL17CountBitsRequiredImEEiT_(i64 noundef %126) #8
  store i32 %127, ptr %24, align 4, !tbaa !11
  %128 = load i32, ptr %24, align 4, !tbaa !11
  %129 = icmp sle i32 1, %128
  br i1 %129, label %132, label %130

130:                                              ; preds = %124
  call void @LogAssertFailure(i64 noundef 132, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.23)
  call void @__assert_fail(ptr noundef @.str.24, ptr noundef @.str, i32 noundef 132, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

131:                                              ; No predecessors!
  br label %132

132:                                              ; preds = %131, %124
  %133 = phi i1 [ true, %124 ], [ false, %131 ]
  %134 = load i32, ptr %24, align 4, !tbaa !11
  %135 = icmp sle i32 %134, 64
  br i1 %135, label %138, label %136

136:                                              ; preds = %132
  call void @LogAssertFailure(i64 noundef 133, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.25)
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str, i32 noundef 133, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

137:                                              ; No predecessors!
  br label %138

138:                                              ; preds = %137, %132
  %139 = phi i1 [ true, %132 ], [ false, %137 ]
  %140 = load i32, ptr %24, align 4, !tbaa !11
  %141 = icmp sle i32 %140, 64
  br i1 %141, label %144, label %142

142:                                              ; preds = %138
  call void @LogAssertFailure(i64 noundef 135, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.27)
  call void @__assert_fail(ptr noundef @.str.28, ptr noundef @.str, i32 noundef 135, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

143:                                              ; No predecessors!
  br label %144

144:                                              ; preds = %143, %138
  %145 = phi i1 [ true, %138 ], [ false, %143 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  %146 = load i32, ptr %24, align 4, !tbaa !11
  %147 = call noundef i32 @_ZN14NAMESPACE_MAINL22GetCountItemsBitPackedImEEii(i32 noundef %146) #8
  store i32 %147, ptr %25, align 4, !tbaa !11
  %148 = load i32, ptr %25, align 4, !tbaa !11
  %149 = icmp sle i32 1, %148
  br i1 %149, label %152, label %150

150:                                              ; preds = %144
  call void @LogAssertFailure(i64 noundef 138, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.29)
  call void @__assert_fail(ptr noundef @.str.30, ptr noundef @.str, i32 noundef 138, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

151:                                              ; No predecessors!
  br label %152

152:                                              ; preds = %151, %144
  %153 = phi i1 [ true, %144 ], [ false, %151 ]
  %154 = load i32, ptr %25, align 4, !tbaa !11
  %155 = icmp sle i32 %154, 64
  br i1 %155, label %158, label %156

156:                                              ; preds = %152
  call void @LogAssertFailure(i64 noundef 139, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.31)
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str, i32 noundef 139, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

157:                                              ; No predecessors!
  br label %158

158:                                              ; preds = %157, %152
  %159 = phi i1 [ true, %152 ], [ false, %157 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  %160 = load i32, ptr %25, align 4, !tbaa !11
  %161 = call noundef i32 @_ZN14NAMESPACE_MAINL12GetCountBitsImEEii(i32 noundef %160) #8
  store i32 %161, ptr %26, align 4, !tbaa !11
  %162 = load i32, ptr %26, align 4, !tbaa !11
  %163 = icmp sle i32 1, %162
  br i1 %163, label %166, label %164

164:                                              ; preds = %158
  call void @LogAssertFailure(i64 noundef 142, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.33)
  call void @__assert_fail(ptr noundef @.str.34, ptr noundef @.str, i32 noundef 142, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

165:                                              ; No predecessors!
  br label %166

166:                                              ; preds = %165, %158
  %167 = phi i1 [ true, %158 ], [ false, %165 ]
  %168 = load i32, ptr %26, align 4, !tbaa !11
  %169 = icmp sle i32 %168, 64
  br i1 %169, label %172, label %170

170:                                              ; preds = %166
  call void @LogAssertFailure(i64 noundef 143, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.35)
  call void @__assert_fail(ptr noundef @.str.36, ptr noundef @.str, i32 noundef 143, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

171:                                              ; No predecessors!
  br label %172

172:                                              ; preds = %171, %166
  %173 = phi i1 [ true, %166 ], [ false, %171 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  %174 = load i32, ptr %26, align 4, !tbaa !11
  %175 = call noundef i64 @_ZN14NAMESPACE_MAINL11MakeLowMaskImEET_i(i32 noundef %174) #8
  store i64 %175, ptr %27, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  %176 = load i64, ptr %9, align 8, !tbaa !9
  %177 = sub i64 %176, 1
  %178 = load i32, ptr %25, align 4, !tbaa !11
  %179 = sext i32 %178 to i64
  %180 = urem i64 %177, %179
  %181 = trunc i64 %180 to i32
  store i32 %181, ptr %28, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %182 = load ptr, ptr %22, align 8, !tbaa !5
  store ptr %182, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %183 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %183, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #8
  store i8 0, ptr %31, align 1, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %184 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSetInteraction", ptr %55, i32 0, i32 2
  %185 = load ptr, ptr %184, align 8, !tbaa !13
  store ptr %185, ptr %33, align 8, !tbaa !5
  br label %186

186:                                              ; preds = %518, %172
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  %187 = load i32, ptr %24, align 4, !tbaa !11
  %188 = load ptr, ptr %33, align 8, !tbaa !5
  %189 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %188)
  %190 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %189, i32 0, i32 18
  %191 = load i64, ptr %190, align 8, !tbaa !22
  %192 = call noundef i32 @_ZN14NAMESPACE_MAINL22GetCountItemsBitPackedEim(i32 noundef %187, i64 noundef %191) #8
  store i32 %192, ptr %34, align 4, !tbaa !11
  %193 = load i32, ptr %34, align 4, !tbaa !11
  %194 = icmp sle i32 1, %193
  br i1 %194, label %197, label %195

195:                                              ; preds = %186
  call void @LogAssertFailure(i64 noundef 163, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.37)
  call void @__assert_fail(ptr noundef @.str.38, ptr noundef @.str, i32 noundef 163, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

196:                                              ; No predecessors!
  br label %197

197:                                              ; preds = %196, %186
  %198 = phi i1 [ true, %186 ], [ false, %196 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  %199 = load i32, ptr %34, align 4, !tbaa !11
  %200 = load ptr, ptr %33, align 8, !tbaa !5
  %201 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %200)
  %202 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %201, i32 0, i32 18
  %203 = load i64, ptr %202, align 8, !tbaa !22
  %204 = call noundef i32 @_ZN14NAMESPACE_MAINL12GetCountBitsEim(i32 noundef %199, i64 noundef %203) #8
  store i32 %204, ptr %35, align 4, !tbaa !11
  %205 = load i32, ptr %35, align 4, !tbaa !11
  %206 = icmp sle i32 1, %205
  br i1 %206, label %209, label %207

207:                                              ; preds = %197
  call void @LogAssertFailure(i64 noundef 167, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.39)
  call void @__assert_fail(ptr noundef @.str.40, ptr noundef @.str, i32 noundef 167, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

208:                                              ; No predecessors!
  br label %209

209:                                              ; preds = %208, %197
  %210 = phi i1 [ true, %197 ], [ false, %208 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  %211 = load ptr, ptr %33, align 8, !tbaa !5
  %212 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %211)
  %213 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %212, i32 0, i32 16
  %214 = load i64, ptr %213, align 8, !tbaa !24
  store i64 %214, ptr %36, align 8, !tbaa !9
  %215 = load i64, ptr %36, align 8, !tbaa !9
  %216 = icmp ule i64 1, %215
  br i1 %216, label %219, label %217

217:                                              ; preds = %209
  call void @LogAssertFailure(i64 noundef 170, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.41)
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str, i32 noundef 170, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

218:                                              ; No predecessors!
  br label %219

219:                                              ; preds = %218, %209
  %220 = phi i1 [ true, %209 ], [ false, %218 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %221 = load ptr, ptr %33, align 8, !tbaa !5
  %222 = call noundef i64 @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(40) %221)
  store i64 %222, ptr %37, align 8, !tbaa !9
  %223 = load i64, ptr %37, align 8, !tbaa !9
  %224 = icmp ule i64 1, %223
  br i1 %224, label %227, label %225

225:                                              ; preds = %219
  call void @LogAssertFailure(i64 noundef 173, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.5)
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 173, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

226:                                              ; No predecessors!
  br label %227

227:                                              ; preds = %226, %219
  %228 = phi i1 [ true, %219 ], [ false, %226 ]
  %229 = load i64, ptr %37, align 8, !tbaa !9
  %230 = load i64, ptr %36, align 8, !tbaa !9
  %231 = urem i64 %229, %230
  %232 = icmp eq i64 0, %231
  br i1 %232, label %235, label %233

233:                                              ; preds = %227
  call void @LogAssertFailure(i64 noundef 174, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.43)
  call void @__assert_fail(ptr noundef @.str.44, ptr noundef @.str, i32 noundef 174, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

234:                                              ; No predecessors!
  br label %235

235:                                              ; preds = %234, %227
  %236 = phi i1 [ true, %227 ], [ false, %234 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  %237 = load i64, ptr %37, align 8, !tbaa !9
  %238 = load i64, ptr %36, align 8, !tbaa !9
  %239 = udiv i64 %237, %238
  store i64 %239, ptr %38, align 8, !tbaa !9
  %240 = load i64, ptr %38, align 8, !tbaa !9
  %241 = icmp ule i64 1, %240
  br i1 %241, label %244, label %242

242:                                              ; preds = %235
  call void @LogAssertFailure(i64 noundef 177, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.45)
  call void @__assert_fail(ptr noundef @.str.46, ptr noundef @.str, i32 noundef 177, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

243:                                              ; No predecessors!
  br label %244

244:                                              ; preds = %243, %235
  %245 = phi i1 [ true, %235 ], [ false, %243 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %246 = load i64, ptr %38, align 8, !tbaa !9
  %247 = sub i64 %246, 1
  %248 = load i32, ptr %34, align 4, !tbaa !11
  %249 = sext i32 %248 to i64
  %250 = udiv i64 %247, %249
  %251 = add i64 %250, 1
  store i64 %251, ptr %39, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %252 = load i64, ptr %39, align 8, !tbaa !9
  %253 = load i64, ptr %36, align 8, !tbaa !9
  %254 = mul i64 %252, %253
  store i64 %254, ptr %40, align 8, !tbaa !9
  %255 = load ptr, ptr %33, align 8, !tbaa !5
  %256 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %255)
  %257 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %256, i32 0, i32 18
  %258 = load i64, ptr %257, align 8, !tbaa !22
  %259 = load i64, ptr %40, align 8, !tbaa !9
  %260 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %258, i64 noundef %259) #8
  br i1 %260, label %261, label %269

261:                                              ; preds = %244
  br label %262

262:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #8
  store i32 2, ptr %41, align 4, !tbaa !11
  %263 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %264 = icmp sle i32 2, %263
  br i1 %264, label %265, label %266

265:                                              ; preds = %262
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKamE13LOG__sMessage_0)
  br label %266

266:                                              ; preds = %265, %262
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  br label %267

267:                                              ; preds = %266
  br label %268

268:                                              ; preds = %267
  store i32 -1, ptr %6, align 4
  store i32 1, ptr %42, align 4
  br label %515

269:                                              ; preds = %244
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %270 = load ptr, ptr %33, align 8, !tbaa !5
  %271 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %270)
  %272 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %271, i32 0, i32 18
  %273 = load i64, ptr %272, align 8, !tbaa !22
  %274 = load i64, ptr %40, align 8, !tbaa !9
  %275 = mul i64 %273, %274
  store i64 %275, ptr %43, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %276 = load i64, ptr %43, align 8, !tbaa !9
  %277 = call ptr @AlignedAlloc(i64 noundef %276)
  store ptr %277, ptr %44, align 8, !tbaa !5
  %278 = load ptr, ptr %44, align 8, !tbaa !5
  %279 = icmp eq ptr null, %278
  br i1 %279, label %280, label %288

280:                                              ; preds = %269
  br label %281

281:                                              ; preds = %280
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  store i32 2, ptr %45, align 4, !tbaa !11
  %282 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %283 = icmp sle i32 2, %282
  br i1 %283, label %284, label %285

284:                                              ; preds = %281
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKamE13LOG__sMessage_1)
  br label %285

285:                                              ; preds = %284, %281
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  br label %286

286:                                              ; preds = %285
  br label %287

287:                                              ; preds = %286
  store i32 -1, ptr %6, align 4
  store i32 1, ptr %42, align 4
  br label %514

288:                                              ; preds = %269
  %289 = load ptr, ptr %44, align 8, !tbaa !5
  %290 = load ptr, ptr %33, align 8, !tbaa !5
  %291 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %290, i32 0, i32 3
  %292 = load ptr, ptr %291, align 8, !tbaa !25
  %293 = load i64, ptr %14, align 8, !tbaa !9
  %294 = getelementptr inbounds ptr, ptr %292, i64 %293
  store ptr %289, ptr %294, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %295 = load ptr, ptr %44, align 8, !tbaa !5
  %296 = load i64, ptr %43, align 8, !tbaa !9
  %297 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef %295, i64 noundef %296) #8
  store ptr %297, ptr %46, align 8, !tbaa !5
  %298 = load ptr, ptr %44, align 8, !tbaa !5
  %299 = load i64, ptr %43, align 8, !tbaa !9
  call void @llvm.memset.p0.i64(ptr align 1 %298, i8 0, i64 %299, i1 false)
  br label %300

300:                                              ; preds = %288
  %301 = load i32, ptr %34, align 4, !tbaa !11
  %302 = icmp ne i32 0, %301
  br i1 %302, label %304, label %303

303:                                              ; preds = %300
  call void @_ZL17StopClangAnalysisv() #8
  br label %304

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

305:                                              ; preds = %304
  br label %306

306:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #8
  %307 = load i64, ptr %38, align 8, !tbaa !9
  %308 = sub i64 %307, 1
  %309 = load i32, ptr %34, align 4, !tbaa !11
  %310 = sext i32 %309 to i64
  %311 = urem i64 %308, %310
  %312 = trunc i64 %311 to i32
  %313 = load i32, ptr %35, align 4, !tbaa !11
  %314 = mul nsw i32 %312, %313
  store i32 %314, ptr %47, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #8
  %315 = load i32, ptr %34, align 4, !tbaa !11
  %316 = sub nsw i32 %315, 1
  %317 = load i32, ptr %35, align 4, !tbaa !11
  %318 = mul nsw i32 %316, %317
  store i32 %318, ptr %48, align 4, !tbaa !11
  br label %319

319:                                              ; preds = %507, %306
  br label %320

320:                                              ; preds = %493, %319
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %321

321:                                              ; preds = %485, %320
  %322 = load i8, ptr %31, align 1, !tbaa !21
  %323 = sext i8 %322 to i32
  %324 = icmp eq i32 0, %323
  br i1 %324, label %325, label %430

325:                                              ; preds = %321
  store i8 1, ptr %31, align 1, !tbaa !21
  %326 = load ptr, ptr %30, align 8, !tbaa !5
  %327 = icmp ne ptr null, %326
  br i1 %327, label %328, label %375

328:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %329 = load ptr, ptr %30, align 8, !tbaa !5
  store ptr %329, ptr %50, align 8, !tbaa !5
  br label %330

330:                                              ; preds = %335, %328
  %331 = load ptr, ptr %30, align 8, !tbaa !5
  %332 = load i8, ptr %331, align 1, !tbaa !21
  store i8 %332, ptr %31, align 1, !tbaa !21
  %333 = load ptr, ptr %30, align 8, !tbaa !5
  %334 = getelementptr inbounds i8, ptr %333, i32 1
  store ptr %334, ptr %30, align 8, !tbaa !5
  br label %335

335:                                              ; preds = %330
  %336 = load i8, ptr %31, align 1, !tbaa !21
  %337 = sext i8 %336 to i32
  %338 = icmp sle i32 %337, 0
  br i1 %338, label %330, label %339, !llvm.loop !27

339:                                              ; preds = %335
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %340 = load ptr, ptr %30, align 8, !tbaa !5
  %341 = load ptr, ptr %50, align 8, !tbaa !5
  %342 = ptrtoint ptr %340 to i64
  %343 = ptrtoint ptr %341 to i64
  %344 = sub i64 %342, %343
  %345 = sub nsw i64 %344, 1
  store i64 %345, ptr %51, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  %346 = load i64, ptr %51, align 8, !tbaa !9
  %347 = load i32, ptr %25, align 4, !tbaa !11
  %348 = sext i32 %347 to i64
  %349 = udiv i64 %346, %348
  store i64 %349, ptr %52, align 8, !tbaa !9
  %350 = load i64, ptr %51, align 8, !tbaa !9
  %351 = load i32, ptr %25, align 4, !tbaa !11
  %352 = sext i32 %351 to i64
  %353 = urem i64 %350, %352
  %354 = trunc i64 %353 to i32
  %355 = load i32, ptr %28, align 4, !tbaa !11
  %356 = sub nsw i32 %355, %354
  store i32 %356, ptr %28, align 4, !tbaa !11
  %357 = load i32, ptr %28, align 4, !tbaa !11
  %358 = icmp slt i32 %357, 0
  br i1 %358, label %359, label %371

359:                                              ; preds = %339
  %360 = load i32, ptr %25, align 4, !tbaa !11
  %361 = load i32, ptr %28, align 4, !tbaa !11
  %362 = add nsw i32 %361, %360
  store i32 %362, ptr %28, align 4, !tbaa !11
  %363 = load i32, ptr %28, align 4, !tbaa !11
  %364 = icmp sle i32 0, %363
  br i1 %364, label %367, label %365

365:                                              ; preds = %359
  call void @LogAssertFailure(i64 noundef 223, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.47)
  call void @__assert_fail(ptr noundef @.str.48, ptr noundef @.str, i32 noundef 223, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

366:                                              ; No predecessors!
  br label %367

367:                                              ; preds = %366, %359
  %368 = phi i1 [ true, %359 ], [ false, %366 ]
  %369 = load i64, ptr %52, align 8, !tbaa !9
  %370 = add i64 %369, 1
  store i64 %370, ptr %52, align 8, !tbaa !9
  br label %371

371:                                              ; preds = %367, %339
  %372 = load i64, ptr %52, align 8, !tbaa !9
  %373 = load ptr, ptr %29, align 8, !tbaa !5
  %374 = getelementptr inbounds i64, ptr %373, i64 %372
  store ptr %374, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %375

375:                                              ; preds = %371, %325
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %376 = load ptr, ptr %29, align 8, !tbaa !5
  %377 = load i64, ptr %376, align 8, !tbaa !9
  store i64 %377, ptr %53, align 8, !tbaa !9
  %378 = load i32, ptr %28, align 4, !tbaa !11
  %379 = icmp sle i32 0, %378
  br i1 %379, label %382, label %380

380:                                              ; preds = %375
  call void @LogAssertFailure(i64 noundef 231, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.47)
  call void @__assert_fail(ptr noundef @.str.48, ptr noundef @.str, i32 noundef 231, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

381:                                              ; No predecessors!
  br label %382

382:                                              ; preds = %381, %375
  %383 = phi i1 [ true, %375 ], [ false, %381 ]
  %384 = load i32, ptr %28, align 4, !tbaa !11
  %385 = load i32, ptr %26, align 4, !tbaa !11
  %386 = mul nsw i32 %384, %385
  %387 = icmp slt i32 %386, 64
  br i1 %387, label %390, label %388

388:                                              ; preds = %382
  call void @LogAssertFailure(i64 noundef 232, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.49)
  call void @__assert_fail(ptr noundef @.str.50, ptr noundef @.str, i32 noundef 232, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

389:                                              ; No predecessors!
  br label %390

390:                                              ; preds = %389, %382
  %391 = phi i1 [ true, %382 ], [ false, %389 ]
  %392 = load i64, ptr %53, align 8, !tbaa !9
  %393 = load i32, ptr %28, align 4, !tbaa !11
  %394 = load i32, ptr %26, align 4, !tbaa !11
  %395 = mul nsw i32 %393, %394
  %396 = zext i32 %395 to i64
  %397 = lshr i64 %392, %396
  %398 = load i64, ptr %27, align 8, !tbaa !9
  %399 = and i64 %397, %398
  store i64 %399, ptr %32, align 8, !tbaa !9
  %400 = load i64, ptr %32, align 8, !tbaa !9
  %401 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImmEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuentsr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %400) #8
  br i1 %401, label %402, label %404

402:                                              ; preds = %390
  call void @LogAssertFailure(i64 noundef 235, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.51)
  call void @__assert_fail(ptr noundef @.str.52, ptr noundef @.str, i32 noundef 235, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

403:                                              ; No predecessors!
  br label %404

404:                                              ; preds = %403, %390
  %405 = phi i1 [ true, %390 ], [ false, %403 ]
  %406 = load i64, ptr %32, align 8, !tbaa !9
  %407 = load i64, ptr %23, align 8, !tbaa !9
  %408 = icmp ult i64 %406, %407
  br i1 %408, label %411, label %409

409:                                              ; preds = %404
  call void @LogAssertFailure(i64 noundef 236, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.53)
  call void @__assert_fail(ptr noundef @.str.54, ptr noundef @.str, i32 noundef 236, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

410:                                              ; No predecessors!
  br label %411

411:                                              ; preds = %410, %404
  %412 = phi i1 [ true, %404 ], [ false, %410 ]
  %413 = load i32, ptr %28, align 4, !tbaa !11
  %414 = add nsw i32 %413, -1
  store i32 %414, ptr %28, align 4, !tbaa !11
  %415 = load i32, ptr %28, align 4, !tbaa !11
  %416 = icmp slt i32 %415, 0
  br i1 %416, label %417, label %429

417:                                              ; preds = %411
  %418 = load i32, ptr %28, align 4, !tbaa !11
  %419 = icmp eq i32 -1, %418
  br i1 %419, label %422, label %420

420:                                              ; preds = %417
  call void @LogAssertFailure(i64 noundef 240, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.55)
  call void @__assert_fail(ptr noundef @.str.56, ptr noundef @.str, i32 noundef 240, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

421:                                              ; No predecessors!
  br label %422

422:                                              ; preds = %421, %417
  %423 = phi i1 [ true, %417 ], [ false, %421 ]
  %424 = load i32, ptr %25, align 4, !tbaa !11
  %425 = load i32, ptr %28, align 4, !tbaa !11
  %426 = add nsw i32 %425, %424
  store i32 %426, ptr %28, align 4, !tbaa !11
  %427 = load ptr, ptr %29, align 8, !tbaa !5
  %428 = getelementptr inbounds i64, ptr %427, i32 1
  store ptr %428, ptr %29, align 8, !tbaa !5
  br label %429

429:                                              ; preds = %422, %411
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  br label %430

430:                                              ; preds = %429, %321
  %431 = load i8, ptr %31, align 1, !tbaa !21
  %432 = sext i8 %431 to i32
  %433 = icmp sle i32 1, %432
  br i1 %433, label %436, label %434

434:                                              ; preds = %430
  call void @LogAssertFailure(i64 noundef 246, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.57)
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str, i32 noundef 246, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

435:                                              ; No predecessors!
  br label %436

436:                                              ; preds = %435, %430
  %437 = phi i1 [ true, %430 ], [ false, %435 ]
  %438 = load i8, ptr %31, align 1, !tbaa !21
  %439 = add i8 %438, -1
  store i8 %439, ptr %31, align 1, !tbaa !21
  %440 = load i32, ptr %47, align 4, !tbaa !11
  %441 = icmp sle i32 0, %440
  br i1 %441, label %444, label %442

442:                                              ; preds = %436
  call void @LogAssertFailure(i64 noundef 249, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.59)
  call void @__assert_fail(ptr noundef @.str.60, ptr noundef @.str, i32 noundef 249, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

443:                                              ; No predecessors!
  br label %444

444:                                              ; preds = %443, %436
  %445 = phi i1 [ true, %436 ], [ false, %443 ]
  %446 = load ptr, ptr %33, align 8, !tbaa !5
  %447 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %446, i32 0, i32 1
  %448 = load ptr, ptr %447, align 8, !tbaa !29
  %449 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %448, i32 0, i32 18
  %450 = load i64, ptr %449, align 8, !tbaa !22
  %451 = icmp eq i64 8, %450
  br i1 %451, label %452, label %462

452:                                              ; preds = %444
  %453 = load i64, ptr %32, align 8, !tbaa !9
  %454 = load i32, ptr %47, align 4, !tbaa !11
  %455 = zext i32 %454 to i64
  %456 = shl i64 %453, %455
  %457 = load ptr, ptr %44, align 8, !tbaa !5
  %458 = load i64, ptr %49, align 8, !tbaa !9
  %459 = getelementptr inbounds i64, ptr %457, i64 %458
  %460 = load i64, ptr %459, align 8, !tbaa !9
  %461 = or i64 %460, %456
  store i64 %461, ptr %459, align 8, !tbaa !9
  br label %482

462:                                              ; preds = %444
  %463 = load ptr, ptr %33, align 8, !tbaa !5
  %464 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %463, i32 0, i32 1
  %465 = load ptr, ptr %464, align 8, !tbaa !29
  %466 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %465, i32 0, i32 18
  %467 = load i64, ptr %466, align 8, !tbaa !22
  %468 = icmp eq i64 4, %467
  br i1 %468, label %471, label %469

469:                                              ; preds = %462
  call void @LogAssertFailure(i64 noundef 254, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.61)
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str, i32 noundef 254, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

470:                                              ; No predecessors!
  br label %471

471:                                              ; preds = %470, %462
  %472 = phi i1 [ true, %462 ], [ false, %470 ]
  %473 = load i64, ptr %32, align 8, !tbaa !9
  %474 = trunc i64 %473 to i32
  %475 = load i32, ptr %47, align 4, !tbaa !11
  %476 = shl i32 %474, %475
  %477 = load ptr, ptr %44, align 8, !tbaa !5
  %478 = load i64, ptr %49, align 8, !tbaa !9
  %479 = getelementptr inbounds i32, ptr %477, i64 %478
  %480 = load i32, ptr %479, align 4, !tbaa !11
  %481 = or i32 %480, %476
  store i32 %481, ptr %479, align 4, !tbaa !11
  br label %482

482:                                              ; preds = %471, %452
  %483 = load i64, ptr %49, align 8, !tbaa !9
  %484 = add i64 %483, 1
  store i64 %484, ptr %49, align 8, !tbaa !9
  br label %485

485:                                              ; preds = %482
  %486 = load i64, ptr %36, align 8, !tbaa !9
  %487 = load i64, ptr %49, align 8, !tbaa !9
  %488 = icmp ne i64 %486, %487
  br i1 %488, label %321, label %489, !llvm.loop !30

489:                                              ; preds = %485
  %490 = load i32, ptr %35, align 4, !tbaa !11
  %491 = load i32, ptr %47, align 4, !tbaa !11
  %492 = sub nsw i32 %491, %490
  store i32 %492, ptr %47, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  br label %493

493:                                              ; preds = %489
  %494 = load i32, ptr %47, align 4, !tbaa !11
  %495 = icmp sle i32 0, %494
  br i1 %495, label %320, label %496, !llvm.loop !31

496:                                              ; preds = %493
  %497 = load i32, ptr %48, align 4, !tbaa !11
  store i32 %497, ptr %47, align 4, !tbaa !11
  %498 = load ptr, ptr %44, align 8, !tbaa !5
  %499 = load ptr, ptr %33, align 8, !tbaa !5
  %500 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %499, i32 0, i32 1
  %501 = load ptr, ptr %500, align 8, !tbaa !29
  %502 = getelementptr inbounds %struct.ObjectiveWrapper, ptr %501, i32 0, i32 18
  %503 = load i64, ptr %502, align 8, !tbaa !22
  %504 = load i64, ptr %36, align 8, !tbaa !9
  %505 = mul i64 %503, %504
  %506 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef %498, i64 noundef %505) #8
  store ptr %506, ptr %44, align 8, !tbaa !5
  br label %507

507:                                              ; preds = %496
  %508 = load ptr, ptr %46, align 8, !tbaa !5
  %509 = load ptr, ptr %44, align 8, !tbaa !5
  %510 = icmp ne ptr %508, %509
  br i1 %510, label %319, label %511, !llvm.loop !32

511:                                              ; preds = %507
  %512 = load ptr, ptr %33, align 8, !tbaa !5
  %513 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %512, i32 1
  store ptr %513, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  store i32 0, ptr %42, align 4
  br label %514

514:                                              ; preds = %511, %287
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  br label %515

515:                                              ; preds = %514, %268
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  %516 = load i32, ptr %42, align 4
  switch i32 %516, label %530 [
    i32 0, label %517
  ]

517:                                              ; preds = %515
  br label %518

518:                                              ; preds = %517
  %519 = load ptr, ptr %13, align 8, !tbaa !5
  %520 = load ptr, ptr %33, align 8, !tbaa !5
  %521 = icmp ne ptr %519, %520
  br i1 %521, label %186, label %522, !llvm.loop !33

522:                                              ; preds = %518
  %523 = load i8, ptr %31, align 1, !tbaa !21
  %524 = sext i8 %523 to i32
  %525 = icmp eq i32 0, %524
  br i1 %525, label %528, label %526

526:                                              ; preds = %522
  call void @LogAssertFailure(i64 noundef 270, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef @.str.63)
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str, i32 noundef 270, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #9
  unreachable

527:                                              ; No predecessors!
  br label %528

528:                                              ; preds = %527, %522
  %529 = phi i1 [ true, %522 ], [ false, %527 ]
  store i32 0, ptr %42, align 4
  br label %530

530:                                              ; preds = %528, %515
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  %531 = load i32, ptr %42, align 4
  switch i32 %531, label %536 [
    i32 0, label %532
  ]

532:                                              ; preds = %530
  br label %533

533:                                              ; preds = %532, %119
  %534 = load i64, ptr %14, align 8, !tbaa !9
  %535 = add i64 %534, 1
  store i64 %535, ptr %14, align 8, !tbaa !9
  store i32 0, ptr %42, align 4
  br label %536

536:                                              ; preds = %533, %530
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #8
  %537 = load i32, ptr %42, align 4
  switch i32 %537, label %551 [
    i32 0, label %538
  ]

538:                                              ; preds = %536
  br label %539

539:                                              ; preds = %538
  %540 = load i64, ptr %11, align 8, !tbaa !9
  %541 = load i64, ptr %14, align 8, !tbaa !9
  %542 = icmp ne i64 %540, %541
  br i1 %542, label %99, label %543, !llvm.loop !34

543:                                              ; preds = %539
  br label %544

544:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #8
  store i32 3, ptr %54, align 4, !tbaa !11
  %545 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %546 = icmp sle i32 3, %545
  br i1 %546, label %547, label %548

547:                                              ; preds = %544
  call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef @_ZZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKamE13LOG__sMessage_2)
  br label %548

548:                                              ; preds = %547, %544
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #8
  br label %549

549:                                              ; preds = %548
  br label %550

550:                                              ; preds = %549
  store i32 0, ptr %6, align 4
  store i32 1, ptr %42, align 4
  br label %551

551:                                              ; preds = %550, %536
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  %552 = load i32, ptr %6, align 4
  ret i32 %552
}

declare noundef ptr @_ZN14NAMESPACE_MAIN23GetDataSetSharedFeatureEPKhmPbS2_S2_S2_PmS3_S3_(ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

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

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

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

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

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

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

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

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

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

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

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

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 = { 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 = { alwaysinline mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { nounwind }
attributes #9 = { noreturn nounwind }

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

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


; 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.1 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [18 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
@_ZZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKamE13LOG__sMessage = external hidden constant [44 x i8], align 16
@__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam = external hidden unnamed_addr constant [16 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
@__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam = external hidden unnamed_addr constant [138 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
@.str.13 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [25 x i8], align 1
@_ZZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKamE13LOG__sMessage_0 = external hidden constant [120 x i8], align 16
@_ZZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKamE13LOG__sMessage_1 = external hidden constant [70 x i8], align 16
@.str.47 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [20 x i8], align 1
@_ZZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKamE13LOG__sMessage_2 = external hidden constant [43 x i8], align 16

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

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

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

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

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

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

declare ptr @AlignedAlloc(i64 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam(ptr nocapture noundef nonnull readonly align 8 dereferenceable(32) %0, ptr noundef %1, i64 noundef %2, ptr noundef %3, i64 noundef %4) local_unnamed_addr #4 align 2 {
  %6 = alloca i8, align 1
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca i8, align 1
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %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 = %5
  tail call void @InteralLogWithoutArguments(i32 noundef 3, ptr noundef nonnull @_ZZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKamE13LOG__sMessage)
  br label %16

16:                                               ; preds = %15, %5
  %.not = icmp eq ptr %1, null
  br i1 %.not, label %17, label %18

17:                                               ; preds = %16
  tail call void @LogAssertFailure(i64 noundef 95, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.9)
  tail call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, i32 noundef 95, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

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

19:                                               ; preds = %18
  tail call void @LogAssertFailure(i64 noundef 96, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.11)
  tail call void @__assert_fail(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str, i32 noundef 96, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

20:                                               ; preds = %18
  %.not220 = icmp eq i64 %4, 0
  br i1 %.not220, label %21, label %22

21:                                               ; preds = %20
  tail call void @LogAssertFailure(i64 noundef 97, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.1)
  tail call void @__assert_fail(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, i32 noundef 97, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

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

25:                                               ; preds = %22
  tail call void @LogAssertFailure(i64 noundef 99, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.13)
  tail call void @__assert_fail(ptr noundef nonnull @.str.14, ptr noundef nonnull @.str, i32 noundef 99, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

26:                                               ; preds = %22
  %27 = getelementptr inbounds i8, ptr %0, i64 8
  %28 = load i64, ptr %27, align 8, !tbaa !14
  %.not222 = icmp eq i64 %28, 0
  br i1 %.not222, label %29, label %30

29:                                               ; preds = %26
  tail call void @LogAssertFailure(i64 noundef 100, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.15)
  tail call void @__assert_fail(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str, i32 noundef 100, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

30:                                               ; preds = %26
  %31 = getelementptr inbounds %"struct.NAMESPACE_MAIN::DataSubsetInteraction", ptr %24, i64 %28
  %32 = add i64 %2, -1
  br label %33

33:                                               ; preds = %213, %30
  %.0174 = phi i64 [ undef, %30 ], [ %.8182, %213 ]
  %.0135 = phi i64 [ 0, %30 ], [ %214, %213 ]
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  %34 = call noundef ptr @_ZN14NAMESPACE_MAIN23GetDataSetSharedFeatureEPKhmPbS2_S2_S2_PmS3_S3_(ptr noundef nonnull %1, i64 noundef %.0135, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12)
  %.not223 = icmp eq ptr %34, null
  br i1 %.not223, label %35, label %36

35:                                               ; preds = %33
  call void @LogAssertFailure(i64 noundef 121, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.17)
  call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str, i32 noundef 121, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

36:                                               ; preds = %33
  %37 = load i8, ptr %9, align 1, !tbaa !15, !range !17, !noundef !18
  %38 = trunc nuw i8 %37 to i1
  br i1 %38, label %39, label %40

39:                                               ; preds = %36
  call void @LogAssertFailure(i64 noundef 122, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.19)
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str, i32 noundef 122, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

40:                                               ; preds = %36
  %41 = load i64, ptr %10, align 8, !tbaa !19
  %42 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImmEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuentsr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %41) #8
  br i1 %42, label %43, label %44

43:                                               ; preds = %40
  call void @LogAssertFailure(i64 noundef 124, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.21)
  call void @__assert_fail(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str, i32 noundef 124, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

44:                                               ; preds = %40
  %45 = load i64, ptr %10, align 8, !tbaa !19
  %46 = icmp ugt i64 %45, 1
  br i1 %46, label %47, label %213

47:                                               ; preds = %44
  %48 = add i64 %45, -1
  %49 = call noundef i32 @_ZN14NAMESPACE_MAINL17CountBitsRequiredImEEiT_(i64 noundef %48) #8
  %50 = icmp sgt i32 %49, 0
  br i1 %50, label %52, label %51

51:                                               ; preds = %47
  call void @LogAssertFailure(i64 noundef 132, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.23)
  call void @__assert_fail(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str, i32 noundef 132, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

52:                                               ; preds = %47
  %53 = icmp ult i32 %49, 65
  br i1 %53, label %55, label %54

54:                                               ; preds = %52
  call void @LogAssertFailure(i64 noundef 133, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.25)
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str, i32 noundef 133, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

55:                                               ; preds = %52
  %56 = call noundef i32 @_ZN14NAMESPACE_MAINL22GetCountItemsBitPackedImEEii(i32 noundef %49) #8
  %57 = icmp sgt i32 %56, 0
  br i1 %57, label %59, label %58

58:                                               ; preds = %55
  call void @LogAssertFailure(i64 noundef 138, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.29)
  call void @__assert_fail(ptr noundef nonnull @.str.30, ptr noundef nonnull @.str, i32 noundef 138, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

59:                                               ; preds = %55
  %60 = icmp ult i32 %56, 65
  br i1 %60, label %62, label %61

61:                                               ; preds = %59
  call void @LogAssertFailure(i64 noundef 139, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.31)
  call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str, i32 noundef 139, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

62:                                               ; preds = %59
  %63 = call noundef i32 @_ZN14NAMESPACE_MAINL12GetCountBitsImEEii(i32 noundef %56) #8
  %64 = icmp sgt i32 %63, 0
  br i1 %64, label %66, label %65

65:                                               ; preds = %62
  call void @LogAssertFailure(i64 noundef 142, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.33)
  call void @__assert_fail(ptr noundef nonnull @.str.34, ptr noundef nonnull @.str, i32 noundef 142, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

66:                                               ; preds = %62
  %67 = icmp ult i32 %63, 65
  br i1 %67, label %69, label %68

68:                                               ; preds = %66
  call void @LogAssertFailure(i64 noundef 143, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.35)
  call void @__assert_fail(ptr noundef nonnull @.str.36, ptr noundef nonnull @.str, i32 noundef 143, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

69:                                               ; preds = %66
  %70 = call noundef i64 @_ZN14NAMESPACE_MAINL11MakeLowMaskImEET_i(i32 noundef %63) #8
  %71 = zext nneg i32 %56 to i64
  %72 = urem i64 %32, %71
  %73 = trunc nuw nsw i64 %72 to i32
  %74 = load ptr, ptr %23, align 8, !tbaa !9
  br label %75

75:                                               ; preds = %208, %69
  %.0185 = phi ptr [ %74, %69 ], [ %209, %208 ]
  %.1175 = phi i64 [ %.0174, %69 ], [ %.5179237, %208 ]
  %.0166 = phi i8 [ 0, %69 ], [ %182, %208 ]
  %.0155 = phi ptr [ %3, %69 ], [ %.6161239, %208 ]
  %.0145 = phi ptr [ %34, %69 ], [ %.6151240, %208 ]
  %.0138 = phi i32 [ %73, %69 ], [ %.7241, %208 ]
  %76 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %.0185)
  %77 = getelementptr inbounds i8, ptr %76, i64 136
  %78 = load i64, ptr %77, align 8, !tbaa !20
  %79 = call noundef i32 @_ZN14NAMESPACE_MAINL22GetCountItemsBitPackedEim(i32 noundef %49, i64 noundef %78) #8
  %80 = icmp sgt i32 %79, 0
  br i1 %80, label %82, label %81

81:                                               ; preds = %75
  call void @LogAssertFailure(i64 noundef 163, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.37)
  call void @__assert_fail(ptr noundef nonnull @.str.38, ptr noundef nonnull @.str, i32 noundef 163, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

82:                                               ; preds = %75
  %83 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %.0185)
  %84 = getelementptr inbounds i8, ptr %83, i64 136
  %85 = load i64, ptr %84, align 8, !tbaa !20
  %86 = call noundef i32 @_ZN14NAMESPACE_MAINL12GetCountBitsEim(i32 noundef %79, i64 noundef %85) #8
  %87 = icmp sgt i32 %86, 0
  br i1 %87, label %89, label %88

88:                                               ; preds = %82
  call void @LogAssertFailure(i64 noundef 167, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.39)
  call void @__assert_fail(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str, i32 noundef 167, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

89:                                               ; preds = %82
  %90 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %.0185)
  %91 = getelementptr inbounds i8, ptr %90, i64 120
  %92 = load i64, ptr %91, align 8, !tbaa !22
  %.not224 = icmp eq i64 %92, 0
  br i1 %.not224, label %93, label %94

93:                                               ; preds = %89
  call void @LogAssertFailure(i64 noundef 170, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.41)
  call void @__assert_fail(ptr noundef nonnull @.str.42, ptr noundef nonnull @.str, i32 noundef 170, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

94:                                               ; preds = %89
  %95 = call noundef i64 @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction15GetCountSamplesEv(ptr noundef nonnull align 8 dereferenceable(40) %.0185)
  %.not225 = icmp eq i64 %95, 0
  br i1 %.not225, label %96, label %97

96:                                               ; preds = %94
  call void @LogAssertFailure(i64 noundef 173, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.5)
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, i32 noundef 173, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

97:                                               ; preds = %94
  %98 = urem i64 %95, %92
  %99 = udiv i64 %95, %92
  %100 = icmp eq i64 %98, 0
  br i1 %100, label %102, label %101

101:                                              ; preds = %97
  call void @LogAssertFailure(i64 noundef 174, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.43)
  call void @__assert_fail(ptr noundef nonnull @.str.44, ptr noundef nonnull @.str, i32 noundef 174, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

102:                                              ; preds = %97
  %.not226 = icmp ugt i64 %92, %95
  br i1 %.not226, label %103, label %104

103:                                              ; preds = %102
  call void @LogAssertFailure(i64 noundef 177, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.45)
  call void @__assert_fail(ptr noundef nonnull @.str.46, ptr noundef nonnull @.str, i32 noundef 177, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

104:                                              ; preds = %102
  %105 = add i64 %99, -1
  %106 = zext nneg i32 %79 to i64
  %107 = udiv i64 %105, %106
  %108 = urem i64 %105, %106
  %109 = add nuw i64 %107, 1
  %110 = mul i64 %109, %92
  %111 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %.0185)
  %112 = getelementptr inbounds i8, ptr %111, i64 136
  %113 = load i64, ptr %112, align 8, !tbaa !20
  %114 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef %113, i64 noundef %110) #8
  br i1 %114, label %115, label %118

115:                                              ; preds = %104
  %116 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %117 = icmp sgt i32 %116, 1
  br i1 %117, label %.critedge.sink.split, label %.critedge

118:                                              ; preds = %104
  %119 = call noundef ptr @_ZNK14NAMESPACE_MAIN21DataSubsetInteraction19GetObjectiveWrapperEv(ptr noundef nonnull align 8 dereferenceable(40) %.0185)
  %120 = getelementptr inbounds i8, ptr %119, i64 136
  %121 = load i64, ptr %120, align 8, !tbaa !20
  %122 = mul i64 %121, %110
  %123 = call ptr @AlignedAlloc(i64 noundef %122)
  %124 = icmp eq ptr %123, null
  br i1 %124, label %125, label %128

125:                                              ; preds = %118
  %126 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %127 = icmp sgt i32 %126, 1
  br i1 %127, label %.critedge.sink.split, label %.critedge

128:                                              ; preds = %118
  %129 = getelementptr inbounds i8, ptr %.0185, i64 24
  %130 = load ptr, ptr %129, align 8, !tbaa !23
  %131 = getelementptr inbounds ptr, ptr %130, i64 %.0135
  store ptr %123, ptr %131, align 8, !tbaa !25
  %132 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef nonnull %123, i64 noundef %122) #8
  call void @llvm.memset.p0.i64(ptr nonnull align 1 %123, i8 0, i64 %122, i1 false)
  %133 = trunc nuw nsw i64 %108 to i32
  %134 = add nsw i32 %79, -1
  %135 = getelementptr inbounds i8, ptr %.0185, i64 8
  br label %136

136:                                              ; preds = %203, %128
  %.0184 = phi ptr [ %123, %128 ], [ %207, %203 ]
  %.2176 = phi i64 [ %.1175, %128 ], [ %.5179237, %203 ]
  %.1167 = phi i8 [ %.0166, %128 ], [ %182, %203 ]
  %.pn = phi i32 [ %133, %128 ], [ %134, %203 ]
  %.1156 = phi ptr [ %.0155, %128 ], [ %.6161239, %203 ]
  %.1146 = phi ptr [ %.0145, %128 ], [ %.6151240, %203 ]
  %.1139 = phi i32 [ %.0138, %128 ], [ %.7241, %203 ]
  %.0164 = mul nsw i32 %86, %.pn
  br label %137

137:                                              ; preds = %200, %136
  %.3177 = phi i64 [ %.2176, %136 ], [ %.5179237, %200 ]
  %.2168 = phi i8 [ %.1167, %136 ], [ %182, %200 ]
  %.1165 = phi i32 [ %.0164, %136 ], [ %201, %200 ]
  %.2157 = phi ptr [ %.1156, %136 ], [ %.6161239, %200 ]
  %.2147 = phi ptr [ %.1146, %136 ], [ %.6151240, %200 ]
  %.2140 = phi i32 [ %.1139, %136 ], [ %.7241, %200 ]
  %138 = zext nneg i32 %.1165 to i64
  br label %139

139:                                              ; preds = %198, %137
  %.4178 = phi i64 [ %.3177, %137 ], [ %.5179237, %198 ]
  %.3169 = phi i8 [ %.2168, %137 ], [ %182, %198 ]
  %.3158 = phi ptr [ %.2157, %137 ], [ %.6161239, %198 ]
  %.0154 = phi i64 [ 0, %137 ], [ %199, %198 ]
  %.3148 = phi ptr [ %.2147, %137 ], [ %.6151240, %198 ]
  %.3141 = phi i32 [ %.2140, %137 ], [ %.7241, %198 ]
  %140 = icmp eq i8 %.3169, 0
  br i1 %140, label %141, label %178

141:                                              ; preds = %139
  %.not227 = icmp eq ptr %.3158, null
  br i1 %.not227, label %163, label %.preheader

.preheader:                                       ; preds = %141, %.preheader
  %.4159 = phi ptr [ %143, %.preheader ], [ %.3158, %141 ]
  %142 = load i8, ptr %.4159, align 1, !tbaa !26
  %143 = getelementptr inbounds i8, ptr %.4159, i64 1
  %144 = icmp slt i8 %142, 1
  br i1 %144, label %.preheader, label %145, !llvm.loop !27

145:                                              ; preds = %.preheader
  %146 = ptrtoint ptr %143 to i64
  %147 = ptrtoint ptr %.3158 to i64
  %148 = xor i64 %147, -1
  %149 = add i64 %146, %148
  %150 = udiv i64 %149, %71
  %151 = urem i64 %149, %71
  %152 = trunc nuw nsw i64 %151 to i32
  %153 = sub nsw i32 %.3141, %152
  %154 = icmp slt i32 %153, 0
  br i1 %154, label %155, label %161

155:                                              ; preds = %145
  %156 = add nsw i32 %153, %56
  %157 = icmp sgt i32 %156, -1
  br i1 %157, label %159, label %158

158:                                              ; preds = %155
  call void @LogAssertFailure(i64 noundef 223, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.47)
  call void @__assert_fail(ptr noundef nonnull @.str.48, ptr noundef nonnull @.str, i32 noundef 223, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

159:                                              ; preds = %155
  %160 = add i64 %150, 1
  br label %161

161:                                              ; preds = %159, %145
  %.4142 = phi i32 [ %156, %159 ], [ %153, %145 ]
  %.0137 = phi i64 [ %160, %159 ], [ %150, %145 ]
  %162 = getelementptr inbounds i64, ptr %.3148, i64 %.0137
  br label %163

163:                                              ; preds = %161, %141
  %.4170 = phi i8 [ %142, %161 ], [ 1, %141 ]
  %.5160 = phi ptr [ %143, %161 ], [ null, %141 ]
  %.4149 = phi ptr [ %162, %161 ], [ %.3148, %141 ]
  %.5143 = phi i32 [ %.4142, %161 ], [ %.3141, %141 ]
  %164 = mul nuw nsw i32 %.5143, %63
  %165 = icmp slt i32 %164, 64
  br i1 %165, label %167, label %166

166:                                              ; preds = %163
  call void @LogAssertFailure(i64 noundef 232, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.49)
  call void @__assert_fail(ptr noundef nonnull @.str.50, ptr noundef nonnull @.str, i32 noundef 232, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

167:                                              ; preds = %163
  %168 = load i64, ptr %.4149, align 8, !tbaa !19
  %169 = zext nneg i32 %164 to i64
  %170 = lshr i64 %168, %169
  %171 = and i64 %170, %70
  %172 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImmEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuentsr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %171) #8
  br i1 %172, label %173, label %174

173:                                              ; preds = %167
  call void @LogAssertFailure(i64 noundef 235, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.51)
  call void @__assert_fail(ptr noundef nonnull @.str.52, ptr noundef nonnull @.str, i32 noundef 235, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

174:                                              ; preds = %167
  %175 = icmp ult i64 %171, %45
  br i1 %175, label %.thread, label %176

176:                                              ; preds = %174
  call void @LogAssertFailure(i64 noundef 236, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.53)
  call void @__assert_fail(ptr noundef nonnull @.str.54, ptr noundef nonnull @.str, i32 noundef 236, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

.thread:                                          ; preds = %174
  %177 = icmp slt i32 %.5143, 1
  %.5150.idx = select i1 %177, i64 8, i64 0
  %.5150 = getelementptr inbounds i8, ptr %.4149, i64 %.5150.idx
  %.6144.in = select i1 %177, i32 %56, i32 %.5143
  %.6144 = add nsw i32 %.6144.in, -1
  br label %181

178:                                              ; preds = %139
  %179 = icmp sgt i8 %.3169, 0
  br i1 %179, label %181, label %180

180:                                              ; preds = %178
  call void @LogAssertFailure(i64 noundef 246, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.57)
  call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str, i32 noundef 246, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

181:                                              ; preds = %.thread, %178
  %.7241 = phi i32 [ %.6144, %.thread ], [ %.3141, %178 ]
  %.6151240 = phi ptr [ %.5150, %.thread ], [ %.3148, %178 ]
  %.6161239 = phi ptr [ %.5160, %.thread ], [ %.3158, %178 ]
  %.5171238 = phi i8 [ %.4170, %.thread ], [ %.3169, %178 ]
  %.5179237 = phi i64 [ %171, %.thread ], [ %.4178, %178 ]
  %182 = add nsw i8 %.5171238, -1
  %183 = load ptr, ptr %135, align 8, !tbaa !29
  %184 = getelementptr inbounds i8, ptr %183, i64 136
  %185 = load i64, ptr %184, align 8, !tbaa !20
  switch i64 %185, label %191 [
    i64 8, label %186
    i64 4, label %192
  ]

186:                                              ; preds = %181
  %187 = shl i64 %.5179237, %138
  %188 = getelementptr inbounds i64, ptr %.0184, i64 %.0154
  %189 = load i64, ptr %188, align 8, !tbaa !19
  %190 = or i64 %189, %187
  store i64 %190, ptr %188, align 8, !tbaa !19
  br label %198

191:                                              ; preds = %181
  call void @LogAssertFailure(i64 noundef 254, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.61)
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str, i32 noundef 254, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

192:                                              ; preds = %181
  %193 = trunc i64 %.5179237 to i32
  %194 = shl i32 %193, %.1165
  %195 = getelementptr inbounds i32, ptr %.0184, i64 %.0154
  %196 = load i32, ptr %195, align 4, !tbaa !5
  %197 = or i32 %196, %194
  store i32 %197, ptr %195, align 4, !tbaa !5
  br label %198

198:                                              ; preds = %192, %186
  %199 = add nuw i64 %.0154, 1
  %.not228 = icmp eq i64 %92, %199
  br i1 %.not228, label %200, label %139, !llvm.loop !30

200:                                              ; preds = %198
  %201 = sub nsw i32 %.1165, %86
  %202 = icmp sgt i32 %201, -1
  br i1 %202, label %137, label %203, !llvm.loop !31

203:                                              ; preds = %200
  %204 = getelementptr inbounds i8, ptr %183, i64 136
  %205 = load i64, ptr %204, align 8, !tbaa !20
  %206 = mul i64 %205, %92
  %207 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIvEEPT_S2_m(ptr noundef nonnull %.0184, i64 noundef %206) #8
  %.not229 = icmp eq ptr %132, %207
  br i1 %.not229, label %208, label %136, !llvm.loop !32

208:                                              ; preds = %203
  %209 = getelementptr inbounds i8, ptr %.0185, i64 40
  %.not230 = icmp eq ptr %31, %209
  br i1 %.not230, label %210, label %75, !llvm.loop !33

210:                                              ; preds = %208
  %211 = icmp eq i8 %182, 0
  br i1 %211, label %213, label %212

212:                                              ; preds = %210
  call void @LogAssertFailure(i64 noundef 270, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam, ptr noundef nonnull @.str.63)
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str, i32 noundef 270, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKam) #7
  unreachable

.critedge.sink.split:                             ; preds = %125, %115
  %_ZZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKamE13LOG__sMessage_0.sink = phi ptr [ @_ZZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKamE13LOG__sMessage_0, %115 ], [ @_ZZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKamE13LOG__sMessage_1, %125 ]
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull %_ZZN14NAMESPACE_MAIN18DataSetInteraction15InitFeatureDataEPKhmPKamE13LOG__sMessage_0.sink)
  br label %.critedge

.critedge:                                        ; preds = %.critedge.sink.split, %115, %125
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #8
  br label %219

213:                                              ; preds = %44, %210
  %.8182 = phi i64 [ %.0174, %44 ], [ %.5179237, %210 ]
  %214 = add nuw i64 %.0135, 1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #8
  %.not231 = icmp eq i64 %214, %4
  br i1 %.not231, label %215, label %33, !llvm.loop !34

215:                                              ; preds = %213
  %216 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %217 = icmp sgt i32 %216, 2
  br i1 %217, label %218, label %219

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

219:                                              ; preds = %.critedge, %215, %218
  %.6 = phi i32 [ -1, %.critedge ], [ 0, %218 ], [ 0, %215 ]
  ret i32 %.6
}

declare noundef ptr @_ZN14NAMESPACE_MAIN23GetDataSetSharedFeatureEPKhmPbS2_S2_S2_PmS3_S3_(ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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