; LLVM IR from vteromero/VTEnc :: tests/unit (unit_tests)

; 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 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [23 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @main() #0 {
  %1 = alloca i32, align 4
  store i32 0, ptr %1, align 4
  br label %2

2:                                                ; preds = %0
  %3 = call i32 (ptr, ...) @printf(ptr noundef @.str)
  %4 = call i32 @test_bits_swap_u16()
  %5 = icmp ne i32 %4, 0
  br i1 %5, label %6, label %8

6:                                                ; preds = %2
  %7 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %10

8:                                                ; preds = %2
  %9 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

10:                                               ; preds = %6
  br label %11

11:                                               ; preds = %10
  br label %12

12:                                               ; preds = %11
  %13 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  %14 = call i32 @test_bits_swap_u32()
  %15 = icmp ne i32 %14, 0
  br i1 %15, label %16, label %18

16:                                               ; preds = %12
  %17 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %20

18:                                               ; preds = %12
  %19 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

20:                                               ; preds = %16
  br label %21

21:                                               ; preds = %20
  br label %22

22:                                               ; preds = %21
  %23 = call i32 (ptr, ...) @printf(ptr noundef @.str.4)
  %24 = call i32 @test_bits_swap_u64()
  %25 = icmp ne i32 %24, 0
  br i1 %25, label %26, label %28

26:                                               ; preds = %22
  %27 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %30

28:                                               ; preds = %22
  %29 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

30:                                               ; preds = %26
  br label %31

31:                                               ; preds = %30
  br label %32

32:                                               ; preds = %31
  %33 = call i32 (ptr, ...) @printf(ptr noundef @.str.5)
  %34 = call i32 @test_bits_len_u8()
  %35 = icmp ne i32 %34, 0
  br i1 %35, label %36, label %38

36:                                               ; preds = %32
  %37 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %40

38:                                               ; preds = %32
  %39 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

40:                                               ; preds = %36
  br label %41

41:                                               ; preds = %40
  br label %42

42:                                               ; preds = %41
  %43 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  %44 = call i32 @test_bits_len_u16()
  %45 = icmp ne i32 %44, 0
  br i1 %45, label %46, label %48

46:                                               ; preds = %42
  %47 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %50

48:                                               ; preds = %42
  %49 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

50:                                               ; preds = %46
  br label %51

51:                                               ; preds = %50
  br label %52

52:                                               ; preds = %51
  %53 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  %54 = call i32 @test_bits_len_u32()
  %55 = icmp ne i32 %54, 0
  br i1 %55, label %56, label %58

56:                                               ; preds = %52
  %57 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %60

58:                                               ; preds = %52
  %59 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

60:                                               ; preds = %56
  br label %61

61:                                               ; preds = %60
  br label %62

62:                                               ; preds = %61
  %63 = call i32 (ptr, ...) @printf(ptr noundef @.str.8)
  %64 = call i32 @test_bits_len_u64()
  %65 = icmp ne i32 %64, 0
  br i1 %65, label %66, label %68

66:                                               ; preds = %62
  %67 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %70

68:                                               ; preds = %62
  %69 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

70:                                               ; preds = %66
  br label %71

71:                                               ; preds = %70
  br label %72

72:                                               ; preds = %71
  %73 = call i32 (ptr, ...) @printf(ptr noundef @.str.9)
  %74 = call i32 @test_little_endian_read_and_write_u16()
  %75 = icmp ne i32 %74, 0
  br i1 %75, label %76, label %78

76:                                               ; preds = %72
  %77 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %80

78:                                               ; preds = %72
  %79 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

80:                                               ; preds = %76
  br label %81

81:                                               ; preds = %80
  br label %82

82:                                               ; preds = %81
  %83 = call i32 (ptr, ...) @printf(ptr noundef @.str.10)
  %84 = call i32 @test_little_endian_read_and_write_u32()
  %85 = icmp ne i32 %84, 0
  br i1 %85, label %86, label %88

86:                                               ; preds = %82
  %87 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %90

88:                                               ; preds = %82
  %89 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

90:                                               ; preds = %86
  br label %91

91:                                               ; preds = %90
  br label %92

92:                                               ; preds = %91
  %93 = call i32 (ptr, ...) @printf(ptr noundef @.str.11)
  %94 = call i32 @test_little_endian_read_and_write_u64()
  %95 = icmp ne i32 %94, 0
  br i1 %95, label %96, label %98

96:                                               ; preds = %92
  %97 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %100

98:                                               ; preds = %92
  %99 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

100:                                              ; preds = %96
  br label %101

101:                                              ; preds = %100
  br label %102

102:                                              ; preds = %101
  %103 = call i32 (ptr, ...) @printf(ptr noundef @.str.12)
  %104 = call i32 @test_bswriter_align_buffer_size()
  %105 = icmp ne i32 %104, 0
  br i1 %105, label %106, label %108

106:                                              ; preds = %102
  %107 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %110

108:                                              ; preds = %102
  %109 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

110:                                              ; preds = %106
  br label %111

111:                                              ; preds = %110
  br label %112

112:                                              ; preds = %111
  %113 = call i32 (ptr, ...) @printf(ptr noundef @.str.13)
  %114 = call i32 @test_bswriter_init_1()
  %115 = icmp ne i32 %114, 0
  br i1 %115, label %116, label %118

116:                                              ; preds = %112
  %117 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %120

118:                                              ; preds = %112
  %119 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

120:                                              ; preds = %116
  br label %121

121:                                              ; preds = %120
  br label %122

122:                                              ; preds = %121
  %123 = call i32 (ptr, ...) @printf(ptr noundef @.str.14)
  %124 = call i32 @test_bswriter_init_2()
  %125 = icmp ne i32 %124, 0
  br i1 %125, label %126, label %128

126:                                              ; preds = %122
  %127 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %130

128:                                              ; preds = %122
  %129 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

130:                                              ; preds = %126
  br label %131

131:                                              ; preds = %130
  br label %132

132:                                              ; preds = %131
  %133 = call i32 (ptr, ...) @printf(ptr noundef @.str.15)
  %134 = call i32 @test_bswriter_write_1()
  %135 = icmp ne i32 %134, 0
  br i1 %135, label %136, label %138

136:                                              ; preds = %132
  %137 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %140

138:                                              ; preds = %132
  %139 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

140:                                              ; preds = %136
  br label %141

141:                                              ; preds = %140
  br label %142

142:                                              ; preds = %141
  %143 = call i32 (ptr, ...) @printf(ptr noundef @.str.16)
  %144 = call i32 @test_bswriter_write_2()
  %145 = icmp ne i32 %144, 0
  br i1 %145, label %146, label %148

146:                                              ; preds = %142
  %147 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %150

148:                                              ; preds = %142
  %149 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

150:                                              ; preds = %146
  br label %151

151:                                              ; preds = %150
  br label %152

152:                                              ; preds = %151
  %153 = call i32 (ptr, ...) @printf(ptr noundef @.str.17)
  %154 = call i32 @test_bswriter_write_3()
  %155 = icmp ne i32 %154, 0
  br i1 %155, label %156, label %158

156:                                              ; preds = %152
  %157 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %160

158:                                              ; preds = %152
  %159 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

160:                                              ; preds = %156
  br label %161

161:                                              ; preds = %160
  br label %162

162:                                              ; preds = %161
  %163 = call i32 (ptr, ...) @printf(ptr noundef @.str.18)
  %164 = call i32 @test_bswriter_append_and_flush()
  %165 = icmp ne i32 %164, 0
  br i1 %165, label %166, label %168

166:                                              ; preds = %162
  %167 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %170

168:                                              ; preds = %162
  %169 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

170:                                              ; preds = %166
  br label %171

171:                                              ; preds = %170
  br label %172

172:                                              ; preds = %171
  %173 = call i32 (ptr, ...) @printf(ptr noundef @.str.19)
  %174 = call i32 @test_bswriter_append_fast_and_flush()
  %175 = icmp ne i32 %174, 0
  br i1 %175, label %176, label %178

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

178:                                              ; preds = %172
  %179 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

180:                                              ; preds = %176
  br label %181

181:                                              ; preds = %180
  br label %182

182:                                              ; preds = %181
  %183 = call i32 (ptr, ...) @printf(ptr noundef @.str.20)
  %184 = call i32 @test_bswriter_size_1()
  %185 = icmp ne i32 %184, 0
  br i1 %185, label %186, label %188

186:                                              ; preds = %182
  %187 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %190

188:                                              ; preds = %182
  %189 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

190:                                              ; preds = %186
  br label %191

191:                                              ; preds = %190
  br label %192

192:                                              ; preds = %191
  %193 = call i32 (ptr, ...) @printf(ptr noundef @.str.21)
  %194 = call i32 @test_bswriter_size_2()
  %195 = icmp ne i32 %194, 0
  br i1 %195, label %196, label %198

196:                                              ; preds = %192
  %197 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %200

198:                                              ; preds = %192
  %199 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

200:                                              ; preds = %196
  br label %201

201:                                              ; preds = %200
  br label %202

202:                                              ; preds = %201
  %203 = call i32 (ptr, ...) @printf(ptr noundef @.str.22)
  %204 = call i32 @test_bsreader_read_1()
  %205 = icmp ne i32 %204, 0
  br i1 %205, label %206, label %208

206:                                              ; preds = %202
  %207 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %210

208:                                              ; preds = %202
  %209 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

210:                                              ; preds = %206
  br label %211

211:                                              ; preds = %210
  br label %212

212:                                              ; preds = %211
  %213 = call i32 (ptr, ...) @printf(ptr noundef @.str.23)
  %214 = call i32 @test_bsreader_read_2()
  %215 = icmp ne i32 %214, 0
  br i1 %215, label %216, label %218

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

218:                                              ; preds = %212
  %219 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

220:                                              ; preds = %216
  br label %221

221:                                              ; preds = %220
  br label %222

222:                                              ; preds = %221
  %223 = call i32 (ptr, ...) @printf(ptr noundef @.str.24)
  %224 = call i32 @test_bsreader_read_3()
  %225 = icmp ne i32 %224, 0
  br i1 %225, label %226, label %228

226:                                              ; preds = %222
  %227 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %230

228:                                              ; preds = %222
  %229 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

230:                                              ; preds = %226
  br label %231

231:                                              ; preds = %230
  br label %232

232:                                              ; preds = %231
  %233 = call i32 (ptr, ...) @printf(ptr noundef @.str.25)
  %234 = call i32 @test_bsreader_read_4()
  %235 = icmp ne i32 %234, 0
  br i1 %235, label %236, label %238

236:                                              ; preds = %232
  %237 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %240

238:                                              ; preds = %232
  %239 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

240:                                              ; preds = %236
  br label %241

241:                                              ; preds = %240
  br label %242

242:                                              ; preds = %241
  %243 = call i32 (ptr, ...) @printf(ptr noundef @.str.26)
  %244 = call i32 @test_bsreader_read_5()
  %245 = icmp ne i32 %244, 0
  br i1 %245, label %246, label %248

246:                                              ; preds = %242
  %247 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %250

248:                                              ; preds = %242
  %249 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

250:                                              ; preds = %246
  br label %251

251:                                              ; preds = %250
  br label %252

252:                                              ; preds = %251
  %253 = call i32 (ptr, ...) @printf(ptr noundef @.str.27)
  %254 = call i32 @test_bsreader_size()
  %255 = icmp ne i32 %254, 0
  br i1 %255, label %256, label %258

256:                                              ; preds = %252
  %257 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %260

258:                                              ; preds = %252
  %259 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

260:                                              ; preds = %256
  br label %261

261:                                              ; preds = %260
  br label %262

262:                                              ; preds = %261
  %263 = call i32 (ptr, ...) @printf(ptr noundef @.str.28)
  %264 = call i32 @test_stack_init()
  %265 = icmp ne i32 %264, 0
  br i1 %265, label %266, label %268

266:                                              ; preds = %262
  %267 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %270

268:                                              ; preds = %262
  %269 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

270:                                              ; preds = %266
  br label %271

271:                                              ; preds = %270
  br label %272

272:                                              ; preds = %271
  %273 = call i32 (ptr, ...) @printf(ptr noundef @.str.29)
  %274 = call i32 @test_stack_push_and_pop()
  %275 = icmp ne i32 %274, 0
  br i1 %275, label %276, label %278

276:                                              ; preds = %272
  %277 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %280

278:                                              ; preds = %272
  %279 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

280:                                              ; preds = %276
  br label %281

281:                                              ; preds = %280
  br label %282

282:                                              ; preds = %281
  %283 = call i32 (ptr, ...) @printf(ptr noundef @.str.30)
  %284 = call i32 @test_count_zeros_at_bit_pos8()
  %285 = icmp ne i32 %284, 0
  br i1 %285, label %286, label %288

286:                                              ; preds = %282
  %287 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %290

288:                                              ; preds = %282
  %289 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

290:                                              ; preds = %286
  br label %291

291:                                              ; preds = %290
  br label %292

292:                                              ; preds = %291
  %293 = call i32 (ptr, ...) @printf(ptr noundef @.str.31)
  %294 = call i32 @test_count_zeros_at_bit_pos16()
  %295 = icmp ne i32 %294, 0
  br i1 %295, label %296, label %298

296:                                              ; preds = %292
  %297 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %300

298:                                              ; preds = %292
  %299 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

300:                                              ; preds = %296
  br label %301

301:                                              ; preds = %300
  br label %302

302:                                              ; preds = %301
  %303 = call i32 (ptr, ...) @printf(ptr noundef @.str.32)
  %304 = call i32 @test_count_zeros_at_bit_pos32()
  %305 = icmp ne i32 %304, 0
  br i1 %305, label %306, label %308

306:                                              ; preds = %302
  %307 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %310

308:                                              ; preds = %302
  %309 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

310:                                              ; preds = %306
  br label %311

311:                                              ; preds = %310
  br label %312

312:                                              ; preds = %311
  %313 = call i32 (ptr, ...) @printf(ptr noundef @.str.33)
  %314 = call i32 @test_count_zeros_at_bit_pos64()
  %315 = icmp ne i32 %314, 0
  br i1 %315, label %316, label %318

316:                                              ; preds = %312
  %317 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %320

318:                                              ; preds = %312
  %319 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

320:                                              ; preds = %316
  br label %321

321:                                              ; preds = %320
  br label %322

322:                                              ; preds = %321
  %323 = call i32 (ptr, ...) @printf(ptr noundef @.str.34)
  %324 = call i32 @test_encode_lower_bits8()
  %325 = icmp ne i32 %324, 0
  br i1 %325, label %326, label %328

326:                                              ; preds = %322
  %327 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %330

328:                                              ; preds = %322
  %329 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

330:                                              ; preds = %326
  br label %331

331:                                              ; preds = %330
  br label %332

332:                                              ; preds = %331
  %333 = call i32 (ptr, ...) @printf(ptr noundef @.str.35)
  %334 = call i32 @test_encode_lower_bits16()
  %335 = icmp ne i32 %334, 0
  br i1 %335, label %336, label %338

336:                                              ; preds = %332
  %337 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %340

338:                                              ; preds = %332
  %339 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

340:                                              ; preds = %336
  br label %341

341:                                              ; preds = %340
  br label %342

342:                                              ; preds = %341
  %343 = call i32 (ptr, ...) @printf(ptr noundef @.str.36)
  %344 = call i32 @test_encode_lower_bits32()
  %345 = icmp ne i32 %344, 0
  br i1 %345, label %346, label %348

346:                                              ; preds = %342
  %347 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %350

348:                                              ; preds = %342
  %349 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

350:                                              ; preds = %346
  br label %351

351:                                              ; preds = %350
  br label %352

352:                                              ; preds = %351
  %353 = call i32 (ptr, ...) @printf(ptr noundef @.str.37)
  %354 = call i32 @test_encode_lower_bits64()
  %355 = icmp ne i32 %354, 0
  br i1 %355, label %356, label %358

356:                                              ; preds = %352
  %357 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %360

358:                                              ; preds = %352
  %359 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

360:                                              ; preds = %356
  br label %361

361:                                              ; preds = %360
  br label %362

362:                                              ; preds = %361
  %363 = call i32 (ptr, ...) @printf(ptr noundef @.str.38)
  %364 = call i32 @test_vtenc_encode8()
  %365 = icmp ne i32 %364, 0
  br i1 %365, label %366, label %368

366:                                              ; preds = %362
  %367 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %370

368:                                              ; preds = %362
  %369 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

370:                                              ; preds = %366
  br label %371

371:                                              ; preds = %370
  br label %372

372:                                              ; preds = %371
  %373 = call i32 (ptr, ...) @printf(ptr noundef @.str.39)
  %374 = call i32 @test_vtenc_encode16()
  %375 = icmp ne i32 %374, 0
  br i1 %375, label %376, label %378

376:                                              ; preds = %372
  %377 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %380

378:                                              ; preds = %372
  %379 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

380:                                              ; preds = %376
  br label %381

381:                                              ; preds = %380
  br label %382

382:                                              ; preds = %381
  %383 = call i32 (ptr, ...) @printf(ptr noundef @.str.40)
  %384 = call i32 @test_vtenc_encode32()
  %385 = icmp ne i32 %384, 0
  br i1 %385, label %386, label %388

386:                                              ; preds = %382
  %387 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %390

388:                                              ; preds = %382
  %389 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

390:                                              ; preds = %386
  br label %391

391:                                              ; preds = %390
  br label %392

392:                                              ; preds = %391
  %393 = call i32 (ptr, ...) @printf(ptr noundef @.str.41)
  %394 = call i32 @test_vtenc_encode64()
  %395 = icmp ne i32 %394, 0
  br i1 %395, label %396, label %398

396:                                              ; preds = %392
  %397 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %400

398:                                              ; preds = %392
  %399 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

400:                                              ; preds = %396
  br label %401

401:                                              ; preds = %400
  br label %402

402:                                              ; preds = %401
  %403 = call i32 (ptr, ...) @printf(ptr noundef @.str.42)
  %404 = call i32 @test_vtenc_max_encoded_size8()
  %405 = icmp ne i32 %404, 0
  br i1 %405, label %406, label %408

406:                                              ; preds = %402
  %407 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %410

408:                                              ; preds = %402
  %409 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

410:                                              ; preds = %406
  br label %411

411:                                              ; preds = %410
  br label %412

412:                                              ; preds = %411
  %413 = call i32 (ptr, ...) @printf(ptr noundef @.str.43)
  %414 = call i32 @test_vtenc_max_encoded_size16()
  %415 = icmp ne i32 %414, 0
  br i1 %415, label %416, label %418

416:                                              ; preds = %412
  %417 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %420

418:                                              ; preds = %412
  %419 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

420:                                              ; preds = %416
  br label %421

421:                                              ; preds = %420
  br label %422

422:                                              ; preds = %421
  %423 = call i32 (ptr, ...) @printf(ptr noundef @.str.44)
  %424 = call i32 @test_vtenc_max_encoded_size32()
  %425 = icmp ne i32 %424, 0
  br i1 %425, label %426, label %428

426:                                              ; preds = %422
  %427 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %430

428:                                              ; preds = %422
  %429 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

430:                                              ; preds = %426
  br label %431

431:                                              ; preds = %430
  br label %432

432:                                              ; preds = %431
  %433 = call i32 (ptr, ...) @printf(ptr noundef @.str.45)
  %434 = call i32 @test_vtenc_max_encoded_size64()
  %435 = icmp ne i32 %434, 0
  br i1 %435, label %436, label %438

436:                                              ; preds = %432
  %437 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %440

438:                                              ; preds = %432
  %439 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

440:                                              ; preds = %436
  br label %441

441:                                              ; preds = %440
  br label %442

442:                                              ; preds = %441
  %443 = call i32 (ptr, ...) @printf(ptr noundef @.str.46)
  %444 = call i32 @test_vtenc_decode8()
  %445 = icmp ne i32 %444, 0
  br i1 %445, label %446, label %448

446:                                              ; preds = %442
  %447 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %450

448:                                              ; preds = %442
  %449 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

450:                                              ; preds = %446
  br label %451

451:                                              ; preds = %450
  br label %452

452:                                              ; preds = %451
  %453 = call i32 (ptr, ...) @printf(ptr noundef @.str.47)
  %454 = call i32 @test_vtenc_decode16()
  %455 = icmp ne i32 %454, 0
  br i1 %455, label %456, label %458

456:                                              ; preds = %452
  %457 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %460

458:                                              ; preds = %452
  %459 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

460:                                              ; preds = %456
  br label %461

461:                                              ; preds = %460
  br label %462

462:                                              ; preds = %461
  %463 = call i32 (ptr, ...) @printf(ptr noundef @.str.48)
  %464 = call i32 @test_vtenc_decode32()
  %465 = icmp ne i32 %464, 0
  br i1 %465, label %466, label %468

466:                                              ; preds = %462
  %467 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %470

468:                                              ; preds = %462
  %469 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

470:                                              ; preds = %466
  br label %471

471:                                              ; preds = %470
  br label %472

472:                                              ; preds = %471
  %473 = call i32 (ptr, ...) @printf(ptr noundef @.str.49)
  %474 = call i32 @test_vtenc_decode64()
  %475 = icmp ne i32 %474, 0
  br i1 %475, label %476, label %478

476:                                              ; preds = %472
  %477 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %480

478:                                              ; preds = %472
  %479 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  store i32 1, ptr %1, align 4
  br label %482

480:                                              ; preds = %476
  br label %481

481:                                              ; preds = %480
  store i32 0, ptr %1, align 4
  br label %482

482:                                              ; preds = %481, %478, %468, %458, %448, %438, %428, %418, %408, %398, %388, %378, %368, %358, %348, %338, %328, %318, %308, %298, %288, %278, %268, %258, %248, %238, %228, %218, %208, %198, %188, %178, %168, %158, %148, %138, %128, %118, %108, %98, %88, %78, %68, %58, %48, %38, %28, %18, %8
  %483 = load i32, ptr %1, align 4
  ret i32 %483
}

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

declare i32 @test_bits_swap_u16() #1

declare i32 @test_bits_swap_u32() #1

declare i32 @test_bits_swap_u64() #1

declare i32 @test_bits_len_u8() #1

declare i32 @test_bits_len_u16() #1

declare i32 @test_bits_len_u32() #1

declare i32 @test_bits_len_u64() #1

declare i32 @test_little_endian_read_and_write_u16() #1

declare i32 @test_little_endian_read_and_write_u32() #1

declare i32 @test_little_endian_read_and_write_u64() #1

declare i32 @test_bswriter_align_buffer_size() #1

declare i32 @test_bswriter_init_1() #1

declare i32 @test_bswriter_init_2() #1

declare i32 @test_bswriter_write_1() #1

declare i32 @test_bswriter_write_2() #1

declare i32 @test_bswriter_write_3() #1

declare i32 @test_bswriter_append_and_flush() #1

declare i32 @test_bswriter_append_fast_and_flush() #1

declare i32 @test_bswriter_size_1() #1

declare i32 @test_bswriter_size_2() #1

declare i32 @test_bsreader_read_1() #1

declare i32 @test_bsreader_read_2() #1

declare i32 @test_bsreader_read_3() #1

declare i32 @test_bsreader_read_4() #1

declare i32 @test_bsreader_read_5() #1

declare i32 @test_bsreader_size() #1

declare i32 @test_stack_init() #1

declare i32 @test_stack_push_and_pop() #1

declare i32 @test_count_zeros_at_bit_pos8() #1

declare i32 @test_count_zeros_at_bit_pos16() #1

declare i32 @test_count_zeros_at_bit_pos32() #1

declare i32 @test_count_zeros_at_bit_pos64() #1

declare i32 @test_encode_lower_bits8() #1

declare i32 @test_encode_lower_bits16() #1

declare i32 @test_encode_lower_bits32() #1

declare i32 @test_encode_lower_bits64() #1

declare i32 @test_vtenc_encode8() #1

declare i32 @test_vtenc_encode16() #1

declare i32 @test_vtenc_encode32() #1

declare i32 @test_vtenc_encode64() #1

declare i32 @test_vtenc_max_encoded_size8() #1

declare i32 @test_vtenc_max_encoded_size16() #1

declare i32 @test_vtenc_max_encoded_size32() #1

declare i32 @test_vtenc_max_encoded_size64() #1

declare i32 @test_vtenc_decode8() #1

declare i32 @test_vtenc_decode16() #1

declare i32 @test_vtenc_decode32() #1

declare i32 @test_vtenc_decode64() #1

attributes #0 = { 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 #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" }

!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)"}


; 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 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [23 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @main() local_unnamed_addr #0 {
  %1 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str)
  %2 = tail call i32 @test_bits_swap_u16() #3
  %.not = icmp eq i32 %2, 0
  br i1 %.not, label %191, label %3

3:                                                ; preds = %0
  %4 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %5 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  %6 = tail call i32 @test_bits_swap_u32() #3
  %.not1 = icmp eq i32 %6, 0
  br i1 %.not1, label %191, label %7

7:                                                ; preds = %3
  %8 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %9 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4)
  %10 = tail call i32 @test_bits_swap_u64() #3
  %.not2 = icmp eq i32 %10, 0
  br i1 %.not2, label %191, label %11

11:                                               ; preds = %7
  %12 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %13 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5)
  %14 = tail call i32 @test_bits_len_u8() #3
  %.not3 = icmp eq i32 %14, 0
  br i1 %.not3, label %191, label %15

15:                                               ; preds = %11
  %16 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %17 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6)
  %18 = tail call i32 @test_bits_len_u16() #3
  %.not4 = icmp eq i32 %18, 0
  br i1 %.not4, label %191, label %19

19:                                               ; preds = %15
  %20 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %21 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7)
  %22 = tail call i32 @test_bits_len_u32() #3
  %.not5 = icmp eq i32 %22, 0
  br i1 %.not5, label %191, label %23

23:                                               ; preds = %19
  %24 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %25 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8)
  %26 = tail call i32 @test_bits_len_u64() #3
  %.not6 = icmp eq i32 %26, 0
  br i1 %.not6, label %191, label %27

27:                                               ; preds = %23
  %28 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %29 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.9)
  %30 = tail call i32 @test_little_endian_read_and_write_u16() #3
  %.not7 = icmp eq i32 %30, 0
  br i1 %.not7, label %191, label %31

31:                                               ; preds = %27
  %32 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %33 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.10)
  %34 = tail call i32 @test_little_endian_read_and_write_u32() #3
  %.not8 = icmp eq i32 %34, 0
  br i1 %.not8, label %191, label %35

35:                                               ; preds = %31
  %36 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %37 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.11)
  %38 = tail call i32 @test_little_endian_read_and_write_u64() #3
  %.not9 = icmp eq i32 %38, 0
  br i1 %.not9, label %191, label %39

39:                                               ; preds = %35
  %40 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %41 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.12)
  %42 = tail call i32 @test_bswriter_align_buffer_size() #3
  %.not10 = icmp eq i32 %42, 0
  br i1 %.not10, label %191, label %43

43:                                               ; preds = %39
  %44 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %45 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.13)
  %46 = tail call i32 @test_bswriter_init_1() #3
  %.not11 = icmp eq i32 %46, 0
  br i1 %.not11, label %191, label %47

47:                                               ; preds = %43
  %48 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %49 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.14)
  %50 = tail call i32 @test_bswriter_init_2() #3
  %.not12 = icmp eq i32 %50, 0
  br i1 %.not12, label %191, label %51

51:                                               ; preds = %47
  %52 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %53 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.15)
  %54 = tail call i32 @test_bswriter_write_1() #3
  %.not13 = icmp eq i32 %54, 0
  br i1 %.not13, label %191, label %55

55:                                               ; preds = %51
  %56 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %57 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.16)
  %58 = tail call i32 @test_bswriter_write_2() #3
  %.not14 = icmp eq i32 %58, 0
  br i1 %.not14, label %191, label %59

59:                                               ; preds = %55
  %60 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %61 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17)
  %62 = tail call i32 @test_bswriter_write_3() #3
  %.not15 = icmp eq i32 %62, 0
  br i1 %.not15, label %191, label %63

63:                                               ; preds = %59
  %64 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %65 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.18)
  %66 = tail call i32 @test_bswriter_append_and_flush() #3
  %.not16 = icmp eq i32 %66, 0
  br i1 %.not16, label %191, label %67

67:                                               ; preds = %63
  %68 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %69 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.19)
  %70 = tail call i32 @test_bswriter_append_fast_and_flush() #3
  %.not17 = icmp eq i32 %70, 0
  br i1 %.not17, label %191, label %71

71:                                               ; preds = %67
  %72 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %73 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.20)
  %74 = tail call i32 @test_bswriter_size_1() #3
  %.not18 = icmp eq i32 %74, 0
  br i1 %.not18, label %191, label %75

75:                                               ; preds = %71
  %76 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %77 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.21)
  %78 = tail call i32 @test_bswriter_size_2() #3
  %.not19 = icmp eq i32 %78, 0
  br i1 %.not19, label %191, label %79

79:                                               ; preds = %75
  %80 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %81 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.22)
  %82 = tail call i32 @test_bsreader_read_1() #3
  %.not20 = icmp eq i32 %82, 0
  br i1 %.not20, label %191, label %83

83:                                               ; preds = %79
  %84 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %85 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.23)
  %86 = tail call i32 @test_bsreader_read_2() #3
  %.not21 = icmp eq i32 %86, 0
  br i1 %.not21, label %191, label %87

87:                                               ; preds = %83
  %88 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %89 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.24)
  %90 = tail call i32 @test_bsreader_read_3() #3
  %.not22 = icmp eq i32 %90, 0
  br i1 %.not22, label %191, label %91

91:                                               ; preds = %87
  %92 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %93 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.25)
  %94 = tail call i32 @test_bsreader_read_4() #3
  %.not23 = icmp eq i32 %94, 0
  br i1 %.not23, label %191, label %95

95:                                               ; preds = %91
  %96 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %97 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.26)
  %98 = tail call i32 @test_bsreader_read_5() #3
  %.not24 = icmp eq i32 %98, 0
  br i1 %.not24, label %191, label %99

99:                                               ; preds = %95
  %100 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %101 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.27)
  %102 = tail call i32 @test_bsreader_size() #3
  %.not25 = icmp eq i32 %102, 0
  br i1 %.not25, label %191, label %103

103:                                              ; preds = %99
  %104 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %105 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28)
  %106 = tail call i32 @test_stack_init() #3
  %.not26 = icmp eq i32 %106, 0
  br i1 %.not26, label %191, label %107

107:                                              ; preds = %103
  %108 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %109 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.29)
  %110 = tail call i32 @test_stack_push_and_pop() #3
  %.not27 = icmp eq i32 %110, 0
  br i1 %.not27, label %191, label %111

111:                                              ; preds = %107
  %112 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %113 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  %114 = tail call i32 @test_count_zeros_at_bit_pos8() #3
  %.not28 = icmp eq i32 %114, 0
  br i1 %.not28, label %191, label %115

115:                                              ; preds = %111
  %116 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %117 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31)
  %118 = tail call i32 @test_count_zeros_at_bit_pos16() #3
  %.not29 = icmp eq i32 %118, 0
  br i1 %.not29, label %191, label %119

119:                                              ; preds = %115
  %120 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %121 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.32)
  %122 = tail call i32 @test_count_zeros_at_bit_pos32() #3
  %.not30 = icmp eq i32 %122, 0
  br i1 %.not30, label %191, label %123

123:                                              ; preds = %119
  %124 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %125 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33)
  %126 = tail call i32 @test_count_zeros_at_bit_pos64() #3
  %.not31 = icmp eq i32 %126, 0
  br i1 %.not31, label %191, label %127

127:                                              ; preds = %123
  %128 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %129 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34)
  %130 = tail call i32 @test_encode_lower_bits8() #3
  %.not32 = icmp eq i32 %130, 0
  br i1 %.not32, label %191, label %131

131:                                              ; preds = %127
  %132 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %133 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.35)
  %134 = tail call i32 @test_encode_lower_bits16() #3
  %.not33 = icmp eq i32 %134, 0
  br i1 %.not33, label %191, label %135

135:                                              ; preds = %131
  %136 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %137 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.36)
  %138 = tail call i32 @test_encode_lower_bits32() #3
  %.not34 = icmp eq i32 %138, 0
  br i1 %.not34, label %191, label %139

139:                                              ; preds = %135
  %140 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %141 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.37)
  %142 = tail call i32 @test_encode_lower_bits64() #3
  %.not35 = icmp eq i32 %142, 0
  br i1 %.not35, label %191, label %143

143:                                              ; preds = %139
  %144 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %145 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.38)
  %146 = tail call i32 @test_vtenc_encode8() #3
  %.not36 = icmp eq i32 %146, 0
  br i1 %.not36, label %191, label %147

147:                                              ; preds = %143
  %148 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %149 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.39)
  %150 = tail call i32 @test_vtenc_encode16() #3
  %.not37 = icmp eq i32 %150, 0
  br i1 %.not37, label %191, label %151

151:                                              ; preds = %147
  %152 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %153 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40)
  %154 = tail call i32 @test_vtenc_encode32() #3
  %.not38 = icmp eq i32 %154, 0
  br i1 %.not38, label %191, label %155

155:                                              ; preds = %151
  %156 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %157 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.41)
  %158 = tail call i32 @test_vtenc_encode64() #3
  %.not39 = icmp eq i32 %158, 0
  br i1 %.not39, label %191, label %159

159:                                              ; preds = %155
  %160 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %161 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.42)
  %162 = tail call i32 @test_vtenc_max_encoded_size8() #3
  %.not40 = icmp eq i32 %162, 0
  br i1 %.not40, label %191, label %163

163:                                              ; preds = %159
  %164 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %165 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.43)
  %166 = tail call i32 @test_vtenc_max_encoded_size16() #3
  %.not41 = icmp eq i32 %166, 0
  br i1 %.not41, label %191, label %167

167:                                              ; preds = %163
  %168 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %169 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.44)
  %170 = tail call i32 @test_vtenc_max_encoded_size32() #3
  %.not42 = icmp eq i32 %170, 0
  br i1 %.not42, label %191, label %171

171:                                              ; preds = %167
  %172 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %173 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.45)
  %174 = tail call i32 @test_vtenc_max_encoded_size64() #3
  %.not43 = icmp eq i32 %174, 0
  br i1 %.not43, label %191, label %175

175:                                              ; preds = %171
  %176 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %177 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.46)
  %178 = tail call i32 @test_vtenc_decode8() #3
  %.not44 = icmp eq i32 %178, 0
  br i1 %.not44, label %191, label %179

179:                                              ; preds = %175
  %180 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %181 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.47)
  %182 = tail call i32 @test_vtenc_decode16() #3
  %.not45 = icmp eq i32 %182, 0
  br i1 %.not45, label %191, label %183

183:                                              ; preds = %179
  %184 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %185 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.48)
  %186 = tail call i32 @test_vtenc_decode32() #3
  %.not46 = icmp eq i32 %186, 0
  br i1 %.not46, label %191, label %187

187:                                              ; preds = %183
  %188 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %189 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.49)
  %190 = tail call i32 @test_vtenc_decode64() #3
  %.not47 = icmp eq i32 %190, 0
  %.str.2..str.1 = select i1 %.not47, ptr @.str.2, ptr @.str.1
  %. = zext i1 %.not47 to i32
  br label %191

191:                                              ; preds = %183, %187, %179, %175, %171, %167, %163, %159, %155, %151, %147, %143, %139, %135, %131, %127, %123, %119, %115, %111, %107, %103, %99, %95, %91, %87, %83, %79, %75, %71, %67, %63, %59, %55, %51, %47, %43, %39, %35, %31, %27, %23, %19, %15, %11, %7, %3, %0
  %.str.1.sink = phi ptr [ @.str.2, %0 ], [ @.str.2, %3 ], [ @.str.2, %7 ], [ @.str.2, %11 ], [ @.str.2, %15 ], [ @.str.2, %19 ], [ @.str.2, %23 ], [ @.str.2, %27 ], [ @.str.2, %31 ], [ @.str.2, %35 ], [ @.str.2, %39 ], [ @.str.2, %43 ], [ @.str.2, %47 ], [ @.str.2, %51 ], [ @.str.2, %55 ], [ @.str.2, %59 ], [ @.str.2, %63 ], [ @.str.2, %67 ], [ @.str.2, %71 ], [ @.str.2, %75 ], [ @.str.2, %79 ], [ @.str.2, %83 ], [ @.str.2, %87 ], [ @.str.2, %91 ], [ @.str.2, %95 ], [ @.str.2, %99 ], [ @.str.2, %103 ], [ @.str.2, %107 ], [ @.str.2, %111 ], [ @.str.2, %115 ], [ @.str.2, %119 ], [ @.str.2, %123 ], [ @.str.2, %127 ], [ @.str.2, %131 ], [ @.str.2, %135 ], [ @.str.2, %139 ], [ @.str.2, %143 ], [ @.str.2, %147 ], [ @.str.2, %151 ], [ @.str.2, %155 ], [ @.str.2, %159 ], [ @.str.2, %163 ], [ @.str.2, %167 ], [ @.str.2, %171 ], [ @.str.2, %175 ], [ @.str.2, %179 ], [ %.str.2..str.1, %187 ], [ @.str.2, %183 ]
  %.0 = phi i32 [ 1, %0 ], [ 1, %3 ], [ 1, %7 ], [ 1, %11 ], [ 1, %15 ], [ 1, %19 ], [ 1, %23 ], [ 1, %27 ], [ 1, %31 ], [ 1, %35 ], [ 1, %39 ], [ 1, %43 ], [ 1, %47 ], [ 1, %51 ], [ 1, %55 ], [ 1, %59 ], [ 1, %63 ], [ 1, %67 ], [ 1, %71 ], [ 1, %75 ], [ 1, %79 ], [ 1, %83 ], [ 1, %87 ], [ 1, %91 ], [ 1, %95 ], [ 1, %99 ], [ 1, %103 ], [ 1, %107 ], [ 1, %111 ], [ 1, %115 ], [ 1, %119 ], [ 1, %123 ], [ 1, %127 ], [ 1, %131 ], [ 1, %135 ], [ 1, %139 ], [ 1, %143 ], [ 1, %147 ], [ 1, %151 ], [ 1, %155 ], [ 1, %159 ], [ 1, %163 ], [ 1, %167 ], [ 1, %171 ], [ 1, %175 ], [ 1, %179 ], [ %., %187 ], [ 1, %183 ]
  %192 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.1.sink)
  ret i32 %.0
}

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #1

declare i32 @test_bits_swap_u16() local_unnamed_addr #2

declare i32 @test_bits_swap_u32() local_unnamed_addr #2

declare i32 @test_bits_swap_u64() local_unnamed_addr #2

declare i32 @test_bits_len_u8() local_unnamed_addr #2

declare i32 @test_bits_len_u16() local_unnamed_addr #2

declare i32 @test_bits_len_u32() local_unnamed_addr #2

declare i32 @test_bits_len_u64() local_unnamed_addr #2

declare i32 @test_little_endian_read_and_write_u16() local_unnamed_addr #2

declare i32 @test_little_endian_read_and_write_u32() local_unnamed_addr #2

declare i32 @test_little_endian_read_and_write_u64() local_unnamed_addr #2

declare i32 @test_bswriter_align_buffer_size() local_unnamed_addr #2

declare i32 @test_bswriter_init_1() local_unnamed_addr #2

declare i32 @test_bswriter_init_2() local_unnamed_addr #2

declare i32 @test_bswriter_write_1() local_unnamed_addr #2

declare i32 @test_bswriter_write_2() local_unnamed_addr #2

declare i32 @test_bswriter_write_3() local_unnamed_addr #2

declare i32 @test_bswriter_append_and_flush() local_unnamed_addr #2

declare i32 @test_bswriter_append_fast_and_flush() local_unnamed_addr #2

declare i32 @test_bswriter_size_1() local_unnamed_addr #2

declare i32 @test_bswriter_size_2() local_unnamed_addr #2

declare i32 @test_bsreader_read_1() local_unnamed_addr #2

declare i32 @test_bsreader_read_2() local_unnamed_addr #2

declare i32 @test_bsreader_read_3() local_unnamed_addr #2

declare i32 @test_bsreader_read_4() local_unnamed_addr #2

declare i32 @test_bsreader_read_5() local_unnamed_addr #2

declare i32 @test_bsreader_size() local_unnamed_addr #2

declare i32 @test_stack_init() local_unnamed_addr #2

declare i32 @test_stack_push_and_pop() local_unnamed_addr #2

declare i32 @test_count_zeros_at_bit_pos8() local_unnamed_addr #2

declare i32 @test_count_zeros_at_bit_pos16() local_unnamed_addr #2

declare i32 @test_count_zeros_at_bit_pos32() local_unnamed_addr #2

declare i32 @test_count_zeros_at_bit_pos64() local_unnamed_addr #2

declare i32 @test_encode_lower_bits8() local_unnamed_addr #2

declare i32 @test_encode_lower_bits16() local_unnamed_addr #2

declare i32 @test_encode_lower_bits32() local_unnamed_addr #2

declare i32 @test_encode_lower_bits64() local_unnamed_addr #2

declare i32 @test_vtenc_encode8() local_unnamed_addr #2

declare i32 @test_vtenc_encode16() local_unnamed_addr #2

declare i32 @test_vtenc_encode32() local_unnamed_addr #2

declare i32 @test_vtenc_encode64() local_unnamed_addr #2

declare i32 @test_vtenc_max_encoded_size8() local_unnamed_addr #2

declare i32 @test_vtenc_max_encoded_size16() local_unnamed_addr #2

declare i32 @test_vtenc_max_encoded_size32() local_unnamed_addr #2

declare i32 @test_vtenc_max_encoded_size64() local_unnamed_addr #2

declare i32 @test_vtenc_decode8() local_unnamed_addr #2

declare i32 @test_vtenc_decode16() local_unnamed_addr #2

declare i32 @test_vtenc_decode32() local_unnamed_addr #2

declare i32 @test_vtenc_decode64() local_unnamed_addr #2

attributes #0 = { 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 #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 = { "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)"}


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