; LLVM IR from venumb/ZSPACE :: cpp/depends/alglib/cpp/tests/test_c.ll (Z7testrbfbPN11alglib_impl8ae_stateE)

; 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"

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.671 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.672 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.673 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.674 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.675 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.676 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.677 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.678 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.679 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.680 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.681 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.682 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.683 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.684 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.685 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.686 = external hidden unnamed_addr constant [52 x i8], align 1

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

declare i32 @printf(ptr noundef, ...) #1

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z7testrbfbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) #2 {
  %3 = alloca i8, align 1
  %4 = alloca ptr, align 8
  %5 = alloca i8, align 1
  %6 = alloca i8, align 1
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca i8, align 1
  %10 = alloca i8, align 1
  %11 = alloca i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i8, align 1
  %17 = alloca i8, align 1
  %18 = alloca i8, align 1
  %19 = alloca i8, align 1
  %20 = alloca i8, align 1
  %21 = zext i1 %0 to i8
  store i8 %21, ptr %3, align 1, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #3
  %22 = load ptr, ptr %4, align 8, !tbaa !9
  %23 = call noundef zeroext i1 @_ZL25testrbfunit_basichrbftestPN11alglib_impl8ae_stateE(ptr noundef %22)
  %24 = zext i1 %23 to i8
  store i8 %24, ptr %14, align 1, !tbaa !5
  %25 = load ptr, ptr %4, align 8, !tbaa !9
  %26 = call noundef zeroext i1 @_ZL24testrbfunit_spechrbftestPN11alglib_impl8ae_stateE(ptr noundef %25)
  %27 = zext i1 %26 to i8
  store i8 %27, ptr %16, align 1, !tbaa !5
  %28 = load ptr, ptr %4, align 8, !tbaa !9
  %29 = call noundef zeroext i1 @_ZL26testrbfunit_scaledhrbftestPN11alglib_impl8ae_stateE(ptr noundef %28)
  %30 = zext i1 %29 to i8
  store i8 %30, ptr %15, align 1, !tbaa !5
  %31 = load ptr, ptr %4, align 8, !tbaa !9
  %32 = call noundef zeroext i1 @_ZL24testrbfunit_gridhrbftestPN11alglib_impl8ae_stateE(ptr noundef %31)
  %33 = zext i1 %32 to i8
  store i8 %33, ptr %17, align 1, !tbaa !5
  %34 = load i8, ptr %14, align 1, !tbaa !5, !range !11, !noundef !12
  %35 = trunc i8 %34 to i1
  br i1 %35, label %45, label %36

36:                                               ; preds = %2
  %37 = load i8, ptr %16, align 1, !tbaa !5, !range !11, !noundef !12
  %38 = trunc i8 %37 to i1
  br i1 %38, label %45, label %39

39:                                               ; preds = %36
  %40 = load i8, ptr %15, align 1, !tbaa !5, !range !11, !noundef !12
  %41 = trunc i8 %40 to i1
  br i1 %41, label %45, label %42

42:                                               ; preds = %39
  %43 = load i8, ptr %17, align 1, !tbaa !5, !range !11, !noundef !12
  %44 = trunc i8 %43 to i1
  br label %45

45:                                               ; preds = %42, %39, %36, %2
  %46 = phi i1 [ true, %39 ], [ true, %36 ], [ true, %2 ], [ %44, %42 ]
  %47 = zext i1 %46 to i8
  store i8 %47, ptr %18, align 1, !tbaa !5
  %48 = load ptr, ptr %4, align 8, !tbaa !9
  %49 = call noundef zeroext i1 @_ZL23testrbfunit_specialtestPN11alglib_impl8ae_stateE(ptr noundef %48)
  %50 = zext i1 %49 to i8
  store i8 %50, ptr %5, align 1, !tbaa !5
  %51 = load ptr, ptr %4, align 8, !tbaa !9
  %52 = call noundef zeroext i1 @_ZL24testrbfunit_basicrbftestPN11alglib_impl8ae_stateE(ptr noundef %51)
  %53 = zext i1 %52 to i8
  store i8 %53, ptr %6, align 1, !tbaa !5
  %54 = load ptr, ptr %4, align 8, !tbaa !9
  %55 = call noundef zeroext i1 @_ZL28testrbfunit_irregularrbftestPN11alglib_impl8ae_stateE(ptr noundef %54)
  %56 = zext i1 %55 to i8
  store i8 %56, ptr %7, align 1, !tbaa !5
  %57 = load ptr, ptr %4, align 8, !tbaa !9
  %58 = call noundef zeroext i1 @_ZL33testrbfunit_linearitymodelrbftestPN11alglib_impl8ae_stateE(ptr noundef %57)
  %59 = zext i1 %58 to i8
  store i8 %59, ptr %8, align 1, !tbaa !5
  %60 = load ptr, ptr %4, align 8, !tbaa !9
  %61 = call noundef zeroext i1 @_Z19sqrdegmatrixrbftestbPN11alglib_impl8ae_stateE(i1 noundef zeroext true, ptr noundef %60)
  %62 = zext i1 %61 to i8
  store i8 %62, ptr %9, align 1, !tbaa !5
  store i8 0, ptr %11, align 1, !tbaa !5
  %63 = load ptr, ptr %4, align 8, !tbaa !9
  %64 = call noundef zeroext i1 @_ZL34testrbfunit_basicmultilayerrbftestPN11alglib_impl8ae_stateE(ptr noundef %63)
  %65 = zext i1 %64 to i8
  store i8 %65, ptr %12, align 1, !tbaa !5
  %66 = load ptr, ptr %4, align 8, !tbaa !9
  %67 = call noundef zeroext i1 @_ZL29testrbfunit_serializationtestPN11alglib_impl8ae_stateE(ptr noundef %66)
  %68 = zext i1 %67 to i8
  store i8 %68, ptr %10, align 1, !tbaa !5
  store i8 0, ptr %13, align 1, !tbaa !5
  %69 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testrbfunit_gridcalc23testPbPN11alglib_impl8ae_stateE(ptr noundef %13, ptr noundef %69)
  %70 = load i8, ptr %5, align 1, !tbaa !5, !range !11, !noundef !12
  %71 = trunc i8 %70 to i1
  br i1 %71, label %99, label %72

72:                                               ; preds = %45
  %73 = load i8, ptr %6, align 1, !tbaa !5, !range !11, !noundef !12
  %74 = trunc i8 %73 to i1
  br i1 %74, label %99, label %75

75:                                               ; preds = %72
  %76 = load i8, ptr %7, align 1, !tbaa !5, !range !11, !noundef !12
  %77 = trunc i8 %76 to i1
  br i1 %77, label %99, label %78

78:                                               ; preds = %75
  %79 = load i8, ptr %8, align 1, !tbaa !5, !range !11, !noundef !12
  %80 = trunc i8 %79 to i1
  br i1 %80, label %99, label %81

81:                                               ; preds = %78
  %82 = load i8, ptr %9, align 1, !tbaa !5, !range !11, !noundef !12
  %83 = trunc i8 %82 to i1
  br i1 %83, label %99, label %84

84:                                               ; preds = %81
  %85 = load i8, ptr %10, align 1, !tbaa !5, !range !11, !noundef !12
  %86 = trunc i8 %85 to i1
  br i1 %86, label %99, label %87

87:                                               ; preds = %84
  %88 = load i8, ptr %11, align 1, !tbaa !5, !range !11, !noundef !12
  %89 = trunc i8 %88 to i1
  br i1 %89, label %99, label %90

90:                                               ; preds = %87
  %91 = load i8, ptr %12, align 1, !tbaa !5, !range !11, !noundef !12
  %92 = trunc i8 %91 to i1
  br i1 %92, label %99, label %93

93:                                               ; preds = %90
  %94 = load i8, ptr %13, align 1, !tbaa !5, !range !11, !noundef !12
  %95 = trunc i8 %94 to i1
  br i1 %95, label %99, label %96

96:                                               ; preds = %93
  %97 = load i8, ptr %18, align 1, !tbaa !5, !range !11, !noundef !12
  %98 = trunc i8 %97 to i1
  br label %99

99:                                               ; preds = %96, %93, %90, %87, %84, %81, %78, %75, %72, %45
  %100 = phi i1 [ true, %93 ], [ true, %90 ], [ true, %87 ], [ true, %84 ], [ true, %81 ], [ true, %78 ], [ true, %75 ], [ true, %72 ], [ true, %45 ], [ %98, %96 ]
  %101 = zext i1 %100 to i8
  store i8 %101, ptr %19, align 1, !tbaa !5
  %102 = load i8, ptr %3, align 1, !tbaa !5, !range !11, !noundef !12
  %103 = trunc i8 %102 to i1
  br i1 %103, label %221, label %104

104:                                              ; preds = %99
  %105 = call i32 (ptr, ...) @printf(ptr noundef @.str.671)
  %106 = call i32 (ptr, ...) @printf(ptr noundef @.str.672)
  %107 = call i32 (ptr, ...) @printf(ptr noundef @.str.673)
  %108 = load i8, ptr %10, align 1, !tbaa !5, !range !11, !noundef !12
  %109 = trunc i8 %108 to i1
  br i1 %109, label %110, label %112

110:                                              ; preds = %104
  %111 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %114

112:                                              ; preds = %104
  %113 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %114

114:                                              ; preds = %112, %110
  %115 = call i32 (ptr, ...) @printf(ptr noundef @.str.674)
  %116 = load i8, ptr %5, align 1, !tbaa !5, !range !11, !noundef !12
  %117 = trunc i8 %116 to i1
  br i1 %117, label %118, label %120

118:                                              ; preds = %114
  %119 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %122

120:                                              ; preds = %114
  %121 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %122

122:                                              ; preds = %120, %118
  %123 = call i32 (ptr, ...) @printf(ptr noundef @.str.675)
  %124 = call i32 (ptr, ...) @printf(ptr noundef @.str.676)
  %125 = load i8, ptr %14, align 1, !tbaa !5, !range !11, !noundef !12
  %126 = trunc i8 %125 to i1
  br i1 %126, label %127, label %129

127:                                              ; preds = %122
  %128 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %131

129:                                              ; preds = %122
  %130 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %131

131:                                              ; preds = %129, %127
  %132 = call i32 (ptr, ...) @printf(ptr noundef @.str.677)
  %133 = load i8, ptr %15, align 1, !tbaa !5, !range !11, !noundef !12
  %134 = trunc i8 %133 to i1
  br i1 %134, label %135, label %137

135:                                              ; preds = %131
  %136 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %139

137:                                              ; preds = %131
  %138 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %139

139:                                              ; preds = %137, %135
  %140 = call i32 (ptr, ...) @printf(ptr noundef @.str.678)
  %141 = load i8, ptr %17, align 1, !tbaa !5, !range !11, !noundef !12
  %142 = trunc i8 %141 to i1
  br i1 %142, label %143, label %145

143:                                              ; preds = %139
  %144 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %147

145:                                              ; preds = %139
  %146 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %147

147:                                              ; preds = %145, %143
  %148 = call i32 (ptr, ...) @printf(ptr noundef @.str.674)
  %149 = load i8, ptr %16, align 1, !tbaa !5, !range !11, !noundef !12
  %150 = trunc i8 %149 to i1
  br i1 %150, label %151, label %153

151:                                              ; preds = %147
  %152 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %155

153:                                              ; preds = %147
  %154 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %155

155:                                              ; preds = %153, %151
  %156 = call i32 (ptr, ...) @printf(ptr noundef @.str.679)
  %157 = call i32 (ptr, ...) @printf(ptr noundef @.str.680)
  %158 = load i8, ptr %6, align 1, !tbaa !5, !range !11, !noundef !12
  %159 = trunc i8 %158 to i1
  br i1 %159, label %160, label %162

160:                                              ; preds = %155
  %161 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %164

162:                                              ; preds = %155
  %163 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %164

164:                                              ; preds = %162, %160
  %165 = call i32 (ptr, ...) @printf(ptr noundef @.str.681)
  %166 = load i8, ptr %7, align 1, !tbaa !5, !range !11, !noundef !12
  %167 = trunc i8 %166 to i1
  br i1 %167, label %168, label %170

168:                                              ; preds = %164
  %169 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %172

170:                                              ; preds = %164
  %171 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %172

172:                                              ; preds = %170, %168
  %173 = call i32 (ptr, ...) @printf(ptr noundef @.str.682)
  %174 = load i8, ptr %8, align 1, !tbaa !5, !range !11, !noundef !12
  %175 = trunc i8 %174 to i1
  br i1 %175, label %176, label %178

176:                                              ; preds = %172
  %177 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %180

178:                                              ; preds = %172
  %179 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %180

180:                                              ; preds = %178, %176
  %181 = call i32 (ptr, ...) @printf(ptr noundef @.str.683)
  %182 = load i8, ptr %9, align 1, !tbaa !5, !range !11, !noundef !12
  %183 = trunc i8 %182 to i1
  br i1 %183, label %184, label %186

184:                                              ; preds = %180
  %185 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %188

186:                                              ; preds = %180
  %187 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %188

188:                                              ; preds = %186, %184
  %189 = call i32 (ptr, ...) @printf(ptr noundef @.str.684)
  %190 = load i8, ptr %11, align 1, !tbaa !5, !range !11, !noundef !12
  %191 = trunc i8 %190 to i1
  br i1 %191, label %192, label %194

192:                                              ; preds = %188
  %193 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %196

194:                                              ; preds = %188
  %195 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %196

196:                                              ; preds = %194, %192
  %197 = call i32 (ptr, ...) @printf(ptr noundef @.str.685)
  %198 = load i8, ptr %12, align 1, !tbaa !5, !range !11, !noundef !12
  %199 = trunc i8 %198 to i1
  br i1 %199, label %200, label %202

200:                                              ; preds = %196
  %201 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %204

202:                                              ; preds = %196
  %203 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %204

204:                                              ; preds = %202, %200
  %205 = call i32 (ptr, ...) @printf(ptr noundef @.str.686)
  %206 = load i8, ptr %13, align 1, !tbaa !5, !range !11, !noundef !12
  %207 = trunc i8 %206 to i1
  br i1 %207, label %208, label %210

208:                                              ; preds = %204
  %209 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %212

210:                                              ; preds = %204
  %211 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %212

212:                                              ; preds = %210, %208
  %213 = load i8, ptr %19, align 1, !tbaa !5, !range !11, !noundef !12
  %214 = trunc i8 %213 to i1
  br i1 %214, label %215, label %217

215:                                              ; preds = %212
  %216 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %219

217:                                              ; preds = %212
  %218 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %219

219:                                              ; preds = %217, %215
  %220 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %221

221:                                              ; preds = %219, %99
  %222 = load i8, ptr %19, align 1, !tbaa !5, !range !11, !noundef !12
  %223 = trunc i8 %222 to i1
  %224 = xor i1 %223, true
  %225 = zext i1 %224 to i8
  store i8 %225, ptr %20, align 1, !tbaa !5
  %226 = load i8, ptr %20, align 1, !tbaa !5, !range !11, !noundef !12
  %227 = trunc i8 %226 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #3
  ret i1 %227
}

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL25testrbfunit_basichrbftestPN11alglib_impl8ae_stateE(ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL24testrbfunit_spechrbftestPN11alglib_impl8ae_stateE(ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL26testrbfunit_scaledhrbftestPN11alglib_impl8ae_stateE(ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL24testrbfunit_gridhrbftestPN11alglib_impl8ae_stateE(ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL23testrbfunit_specialtestPN11alglib_impl8ae_stateE(ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL24testrbfunit_basicrbftestPN11alglib_impl8ae_stateE(ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL28testrbfunit_irregularrbftestPN11alglib_impl8ae_stateE(ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL33testrbfunit_linearitymodelrbftestPN11alglib_impl8ae_stateE(ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z19sqrdegmatrixrbftestbPN11alglib_impl8ae_stateE(i1 noundef zeroext, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL34testrbfunit_basicmultilayerrbftestPN11alglib_impl8ae_stateE(ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL29testrbfunit_serializationtestPN11alglib_impl8ae_stateE(ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL26testrbfunit_gridcalc23testPbPN11alglib_impl8ae_stateE(ptr noundef, ptr noundef) #2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{i8 0, i8 2}
!12 = !{}


; 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"

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.671 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.672 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.673 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.674 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.675 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.676 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.677 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.678 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.679 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.680 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.681 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.682 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.683 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.684 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.685 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.686 = external hidden unnamed_addr constant [52 x i8], align 1

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

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) 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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z7testrbfbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) local_unnamed_addr #2 {
  %3 = alloca i8, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %3) #3
  %4 = tail call noundef zeroext i1 @_ZL25testrbfunit_basichrbftestPN11alglib_impl8ae_stateE(ptr noundef %1)
  %5 = tail call noundef zeroext i1 @_ZL24testrbfunit_spechrbftestPN11alglib_impl8ae_stateE(ptr noundef %1)
  %6 = tail call noundef zeroext i1 @_ZL26testrbfunit_scaledhrbftestPN11alglib_impl8ae_stateE(ptr noundef %1)
  %7 = tail call noundef zeroext i1 @_ZL24testrbfunit_gridhrbftestPN11alglib_impl8ae_stateE(ptr noundef %1)
  %8 = tail call noundef zeroext i1 @_ZL23testrbfunit_specialtestPN11alglib_impl8ae_stateE(ptr noundef %1)
  %9 = tail call noundef zeroext i1 @_ZL24testrbfunit_basicrbftestPN11alglib_impl8ae_stateE(ptr noundef %1)
  %10 = tail call noundef zeroext i1 @_ZL28testrbfunit_irregularrbftestPN11alglib_impl8ae_stateE(ptr noundef %1)
  %11 = tail call noundef zeroext i1 @_ZL33testrbfunit_linearitymodelrbftestPN11alglib_impl8ae_stateE(ptr noundef %1)
  %12 = tail call noundef zeroext i1 @_Z19sqrdegmatrixrbftestbPN11alglib_impl8ae_stateE(i1 noundef zeroext true, ptr noundef %1)
  %13 = tail call noundef zeroext i1 @_ZL34testrbfunit_basicmultilayerrbftestPN11alglib_impl8ae_stateE(ptr noundef %1)
  %14 = tail call noundef zeroext i1 @_ZL29testrbfunit_serializationtestPN11alglib_impl8ae_stateE(ptr noundef %1)
  store i8 0, ptr %3, align 1, !tbaa !5
  call void @_ZL26testrbfunit_gridcalc23testPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %3, ptr noundef %1)
  %brmerge40 = or i1 %8, %9
  %brmerge41 = or i1 %brmerge40, %10
  %brmerge42 = or i1 %brmerge41, %11
  %brmerge43 = or i1 %brmerge42, %12
  %brmerge44 = or i1 %brmerge43, %14
  %brmerge45 = or i1 %13, %brmerge44
  br i1 %brmerge45, label %21, label %15

15:                                               ; preds = %2
  %16 = load i8, ptr %3, align 1, !tbaa !5, !range !9, !noundef !10
  %17 = trunc nuw i8 %16 to i1
  %18 = or i1 %7, %17
  %19 = or i1 %6, %18
  %20 = or i1 %5, %19
  %spec.select46 = or i1 %4, %20
  br label %21

21:                                               ; preds = %15, %2
  %22 = phi i1 [ true, %2 ], [ %spec.select46, %15 ]
  br i1 %0, label %58, label %23

23:                                               ; preds = %21
  %24 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.671)
  %25 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.672)
  %26 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.673)
  %.str.7..str.6 = select i1 %14, ptr @.str.7, ptr @.str.6
  %27 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7..str.6)
  %28 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.674)
  %.str.6.sink48 = select i1 %8, ptr @.str.7, ptr @.str.6
  %29 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink48)
  %30 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.675)
  %31 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.676)
  %.str.6.sink49 = select i1 %4, ptr @.str.7, ptr @.str.6
  %32 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink49)
  %33 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.677)
  %.str.6.sink50 = select i1 %6, ptr @.str.7, ptr @.str.6
  %34 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink50)
  %35 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.678)
  %.str.6.sink51 = select i1 %7, ptr @.str.7, ptr @.str.6
  %36 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink51)
  %37 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.674)
  %.str.6.sink52 = select i1 %5, ptr @.str.7, ptr @.str.6
  %38 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink52)
  %39 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.679)
  %40 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.680)
  %.str.6.sink53 = select i1 %9, ptr @.str.7, ptr @.str.6
  %41 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink53)
  %42 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.681)
  %.str.6.sink54 = select i1 %10, ptr @.str.7, ptr @.str.6
  %43 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink54)
  %44 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.682)
  %.str.6.sink55 = select i1 %11, ptr @.str.7, ptr @.str.6
  %45 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink55)
  %46 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.683)
  %.str.6.sink56 = select i1 %12, ptr @.str.7, ptr @.str.6
  %47 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink56)
  %48 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.684)
  %49 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6)
  %50 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.685)
  %.str.6.sink57 = select i1 %13, ptr @.str.7, ptr @.str.6
  %51 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink57)
  %52 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.686)
  %53 = load i8, ptr %3, align 1, !tbaa !5, !range !9, !noundef !10
  %54 = trunc nuw i8 %53 to i1
  %.str.6.sink58 = select i1 %54, ptr @.str.7, ptr @.str.6
  %55 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink58)
  %.str.2.sink = select i1 %22, ptr @.str.1, ptr @.str.2
  %56 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink)
  %57 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  br label %58

58:                                               ; preds = %23, %21
  %59 = xor i1 %22, true
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #3
  ret i1 %59
}

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL25testrbfunit_basichrbftestPN11alglib_impl8ae_stateE(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL24testrbfunit_spechrbftestPN11alglib_impl8ae_stateE(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL26testrbfunit_scaledhrbftestPN11alglib_impl8ae_stateE(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL24testrbfunit_gridhrbftestPN11alglib_impl8ae_stateE(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL23testrbfunit_specialtestPN11alglib_impl8ae_stateE(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL24testrbfunit_basicrbftestPN11alglib_impl8ae_stateE(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL28testrbfunit_irregularrbftestPN11alglib_impl8ae_stateE(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL33testrbfunit_linearitymodelrbftestPN11alglib_impl8ae_stateE(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z19sqrdegmatrixrbftestbPN11alglib_impl8ae_stateE(i1 noundef zeroext, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL34testrbfunit_basicmultilayerrbftestPN11alglib_impl8ae_stateE(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL29testrbfunit_serializationtestPN11alglib_impl8ae_stateE(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL26testrbfunit_gridcalc23testPbPN11alglib_impl8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{i8 0, i8 2}
!10 = !{}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass