; LLVM IR from albertobsd/keyhunt :: keyhunt_legacy (main)

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

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Point, std::allocator<Point>>::_Vector_impl" }
%"struct.std::_Vector_base<Point, std::allocator<Point>>::_Vector_impl" = type { %"struct.std::_Vector_base<Point, std::allocator<Point>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Point, std::allocator<Point>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.Point = type { %class.Int, %class.Int, %class.Int }
%class.Int = type { [1 x %struct.__mpz_struct] }
%struct.__mpz_struct = type { i32, i32, ptr }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%struct.oldbloom = type { i64, i64, i64, i8, x86_fp80, i8, i8, i8, double, [32 x i8], [32 x i8], ptr, %union.pthread_mutex_t }
%struct.str_tokenizer = type { i32, i32, ptr }
%class.Secp256K1 = type { %class.Point, %class.Int, %class.Int, [8192 x %class.Point] }
%struct.bloom = type { i64, i64, i64, i8, x86_fp80, i8, i8, i8, double, ptr }
%struct.checksumsha256 = type { [32 x i8], [32 x i8] }
%struct.bPload = type { i32, i64, i64, i64, i64, i32, i32 }
%struct.tothread = type { i32, ptr, ptr }

@THREADBPWORKLOAD = external dso_local global i32, align 4
@Ccoinbuffer = external dso_local global ptr, align 8
@str_baseminikey = external dso_local global ptr, align 8
@raw_baseminikey = external dso_local global ptr, align 8
@minikeyN = external dso_local global ptr, align 8
@minikey_n_limit = external dso_local global i32, align 4
@version = external dso_local global ptr, align 8
@GSn = external dso_local global %"class.std::vector", align 8
@_2GSn = external dso_local global %class.Point, align 8
@THREADOUTPUT = external dso_local global i32, align 4
@bit_range_str_min = external dso_local global ptr, align 8
@bit_range_str_max = external dso_local global ptr, align 8
@bsgs_modes = external dso_local global [5 x ptr], align 16
@modes = external dso_local global [7 x ptr], align 16
@cryptos = external dso_local global [3 x ptr], align 16
@publicsearch = external dso_local global [3 x ptr], align 16
@default_fileName = external dso_local global ptr, align 8
@tid = external dso_local global ptr, align 8
@write_keys = external dso_local global %union.pthread_mutex_t, align 8
@write_random = external dso_local global %union.pthread_mutex_t, align 8
@bsgs_thread = external dso_local global %union.pthread_mutex_t, align 8
@bPload_mutex = external dso_local global ptr, align 8
@FINISHED_THREADS_COUNTER = external dso_local global i64, align 8
@FINISHED_THREADS_BP = external dso_local global i64, align 8
@THREADCYCLES = external dso_local global i64, align 8
@THREADCOUNTER = external dso_local global i64, align 8
@FINISHED_ITEMS = external dso_local global i64, align 8
@OLDFINISHED_ITEMS = external dso_local global i64, align 8
@vanity_bloom = external dso_local global ptr, align 8
@steps = external dso_local global ptr, align 8
@ends = external dso_local global ptr, align 8
@N = external dso_local global i64, align 8
@N_SEQUENTIAL_MAX = external dso_local global i64, align 8
@DEBUGCOUNT = external dso_local global i64, align 8
@OUTPUTSECONDS = external dso_local global %class.Int, align 8
@FLAGSKIPCHECKSUM = external dso_local global i32, align 4
@FLAGENDOMORPHISM = external dso_local global i32, align 4
@FLAGBLOOMMULTIPLIER = external dso_local global i32, align 4
@FLAGVANITY = external dso_local global i32, align 4
@FLAGBASEMINIKEY = external dso_local global i32, align 4
@FLAGBSGSMODE = external dso_local global i32, align 4
@FLAGDEBUG = external dso_local global i32, align 4
@FLAGQUIET = external dso_local global i32, align 4
@FLAGMATRIX = external dso_local global i32, align 4
@KFACTOR = external dso_local global i32, align 4
@NTHREADS = external dso_local global i32, align 4
@FLAGSAVEREADFILE = external dso_local global i32, align 4
@FLAGREADEDFILE1 = external dso_local global i32, align 4
@FLAGREADEDFILE2 = external dso_local global i32, align 4
@FLAGREADEDFILE3 = external dso_local global i32, align 4
@FLAGREADEDFILE4 = external dso_local global i32, align 4
@FLAGUPDATEFILE1 = external dso_local global i32, align 4
@FLAGSTRIDE = external dso_local global i32, align 4
@FLAGSEARCH = external dso_local global i32, align 4
@FLAGBITRANGE = external dso_local global i32, align 4
@FLAGRANGE = external dso_local global i32, align 4
@FLAGFILE = external dso_local global i32, align 4
@FLAGMODE = external dso_local global i32, align 4
@FLAGCRYPTO = external dso_local global i32, align 4
@FLAGRANDOM = external dso_local global i32, align 4
@FLAG_N = external dso_local global i32, align 4
@bitrange = external dso_local global i32, align 4
@str_N = external dso_local global ptr, align 8
@range_start = external dso_local global ptr, align 8
@range_end = external dso_local global ptr, align 8
@str_stride = external dso_local global ptr, align 8
@stride = external dso_local global %class.Int, align 8
@bsgs_found = external dso_local global ptr, align 8
@OriginalPointsBSGS = external dso_local global %"class.std::vector", align 8
@OriginalPointsBSGScompressed = external dso_local global ptr, align 8
@bytes = external dso_local global i64, align 8
@checksum = external dso_local global [32 x i8], align 16
@checksum_backup = external dso_local global [32 x i8], align 16
@buffer_bloom_file = external dso_local global [1024 x i8], align 16
@bPtable = external dso_local global ptr, align 8
@addressTable = external dso_local global ptr, align 8
@oldbloom_bP = external dso_local global %struct.oldbloom, align 16
@bloom_bP = external dso_local global ptr, align 8
@bloom_bPx2nd = external dso_local global ptr, align 8
@bloom_bPx3rd = external dso_local global ptr, align 8
@bloom_bP_checksums = external dso_local global ptr, align 8
@bloom_bPx2nd_checksums = external dso_local global ptr, align 8
@bloom_bPx3rd_checksums = external dso_local global ptr, align 8
@bloom_bP_mutex = external dso_local global ptr, align 8
@bloom_bPx2nd_mutex = external dso_local global ptr, align 8
@bloom_bPx3rd_mutex = external dso_local global ptr, align 8
@bloom_bP_totalbytes = external dso_local global i64, align 8
@bloom_bP2_totalbytes = external dso_local global i64, align 8
@bloom_bP3_totalbytes = external dso_local global i64, align 8
@bsgs_m = external dso_local global i64, align 8
@bsgs_m2 = external dso_local global i64, align 8
@bsgs_m3 = external dso_local global i64, align 8
@bsgs_aux = external dso_local global i64, align 8
@bsgs_point_number = external dso_local global i32, align 4
@str_limits_prefixs = external dso_local global [7 x ptr], align 16
@str_limits = external dso_local global [7 x ptr], align 16
@int_limits = external dso_local global [7 x %class.Int], align 16
@BSGS_GROUP_SIZE = external dso_local global %class.Int, align 8
@BSGS_CURRENT = external dso_local global %class.Int, align 8
@BSGS_R = external dso_local global %class.Int, align 8
@BSGS_AUX = external dso_local global %class.Int, align 8
@BSGS_N = external dso_local global %class.Int, align 8
@BSGS_N_double = external dso_local global %class.Int, align 8
@BSGS_M = external dso_local global %class.Int, align 8
@BSGS_M_double = external dso_local global %class.Int, align 8
@BSGS_M2 = external dso_local global %class.Int, align 8
@BSGS_M2_double = external dso_local global %class.Int, align 8
@BSGS_M3 = external dso_local global %class.Int, align 8
@BSGS_M3_double = external dso_local global %class.Int, align 8
@ONE = external dso_local global %class.Int, align 8
@ZERO = external dso_local global %class.Int, align 8
@MPZAUX = external dso_local global %class.Int, align 8
@BSGS_MP = external dso_local global %class.Point, align 8
@BSGS_MP2 = external dso_local global %class.Point, align 8
@BSGS_MP3 = external dso_local global %class.Point, align 8
@BSGS_MP_double = external dso_local global %class.Point, align 8
@BSGS_MP2_double = external dso_local global %class.Point, align 8
@BSGS_MP3_double = external dso_local global %class.Point, align 8
@BSGS_AMP2 = external dso_local global %"class.std::vector", align 8
@BSGS_AMP3 = external dso_local global %"class.std::vector", align 8
@point_temp = external dso_local global %class.Point, align 8
@n_range_start = external dso_local global %class.Int, align 8
@n_range_end = external dso_local global %class.Int, align 8
@n_range_diff = external dso_local global %class.Int, align 8
@n_range_aux = external dso_local global %class.Int, align 8
@lambda = external dso_local global %class.Int, align 8
@lambda2 = external dso_local global %class.Int, align 8
@beta = external dso_local global %class.Int, align 8
@beta2 = external dso_local global %class.Int, align 8
@secp = external dso_local global ptr, align 8
@.str.76 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [49 x i8], align 1
@stderr = external global ptr, align 8
@.str.78 = external hidden unnamed_addr constant [33 x i8], align 1
@optarg = external global ptr, align 8
@.str.79 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.165 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.166 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [15 x i8], align 1
@stdout = external global ptr, align 8
@.str.168 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.169 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.170 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.176 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.177 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.178 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.180 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.181 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.182 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.183 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.184 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.185 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.186 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.187 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.188 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.189 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.190 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.191 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.192 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.193 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.194 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.195 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.196 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.197 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.198 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.199 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.200 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.201 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.202 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.203 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.204 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.205 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.206 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.207 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.208 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.210 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.211 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.212 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.213 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.214 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.215 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.216 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.217 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.218 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.219 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.220 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.221 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.222 = external hidden unnamed_addr constant [6 x i8], align 1

; Function Attrs: nounwind
declare void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #0

declare void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1

; Function Attrs: nounwind
declare void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr noundef %1) #2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca [2048 x i8], align 16
  %7 = alloca [32 x i8], align 16
  %8 = alloca ptr, align 8
  %9 = alloca %struct.str_tokenizer, align 8
  %10 = alloca %struct.str_tokenizer, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca %class.Int, align 8
  %41 = alloca %class.Int, align 8
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca %class.Int, align 8
  %45 = alloca %class.Int, align 8
  %46 = alloca %class.Int, align 8
  %47 = alloca %class.Int, align 8
  %48 = alloca %class.Int, align 8
  %49 = alloca %class.Int, align 8
  %50 = alloca %class.Int, align 8
  %51 = alloca ptr, align 8
  %52 = alloca i64, align 8
  %53 = alloca i32, align 4
  %54 = alloca %class.Point, align 8
  %55 = alloca %class.Point, align 8
  %56 = alloca %class.Point, align 8
  %57 = alloca %class.Point, align 8
  %58 = alloca %class.Point, align 8
  %59 = alloca %class.Point, align 8
  %60 = alloca %class.Point, align 8
  %61 = alloca %class.Point, align 8
  %62 = alloca %class.Point, align 8
  %63 = alloca i32, align 4
  %64 = alloca %class.Point, align 8
  %65 = alloca %class.Point, align 8
  %66 = alloca %class.Point, align 8
  %67 = alloca %class.Point, align 8
  %68 = alloca %class.Point, align 8
  %69 = alloca %class.Point, align 8
  %70 = alloca %class.Point, align 8
  %71 = alloca %class.Point, align 8
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 2048, ptr %6) #14
  call void @llvm.lifetime.start.p0(i64 32, ptr %7) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #14
  store ptr null, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #14
  store ptr null, ptr %12, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #14
  store ptr null, ptr %13, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #14
  store ptr null, ptr %14, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #14
  store ptr null, ptr %15, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #14
  store ptr null, ptr %16, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #14
  store ptr null, ptr %17, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #14
  store ptr null, ptr %18, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #14
  store ptr null, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #14
  store ptr null, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #14
  store ptr null, ptr %21, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #14
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #14
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #14
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #14
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #14
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #14
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #14
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #14
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #14
  call void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %40)
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #14
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %41)
          to label %72 unwind label %105

72:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #14
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %44)
          to label %73 unwind label %109

73:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #14
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %45)
          to label %74 unwind label %113

74:                                               ; preds = %73
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #14
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %46)
          to label %75 unwind label %117

75:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #14
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %47)
          to label %76 unwind label %121

76:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #14
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %48)
          to label %77 unwind label %125

77:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #14
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %49)
          to label %78 unwind label %129

78:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #14
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %50)
          to label %79 unwind label %133

79:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #14
  %80 = call i32 @pthread_mutex_init(ptr noundef @write_keys, ptr noundef null) #14
  %81 = call i32 @pthread_mutex_init(ptr noundef @write_random, ptr noundef null) #14
  %82 = call i32 @pthread_mutex_init(ptr noundef @bsgs_thread, ptr noundef null) #14
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #14
  %83 = call i64 @time(ptr noundef null) #14
  %84 = trunc i64 %83 to i32
  call void @srand(i32 noundef %84) #14
  %85 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 393296) #15
          to label %86 unwind label %137

86:                                               ; preds = %79
  invoke void @_ZN9Secp256K1C1Ev(ptr noundef nonnull align 8 dereferenceable(393296) %85)
          to label %87 unwind label %141

87:                                               ; preds = %86
  store ptr %85, ptr @secp, align 8, !tbaa !9
  %88 = load ptr, ptr @secp, align 8, !tbaa !9
  invoke void @_ZN9Secp256K14InitEv(ptr noundef nonnull align 8 dereferenceable(393296) %88)
          to label %89 unwind label %137

89:                                               ; preds = %87
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @OUTPUTSECONDS, i32 noundef 30)
          to label %90 unwind label %137

90:                                               ; preds = %89
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @ZERO, i32 noundef 0)
          to label %91 unwind label %137

91:                                               ; preds = %90
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @ONE, i32 noundef 1)
          to label %92 unwind label %137

92:                                               ; preds = %91
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_GROUP_SIZE, i32 noundef 1024)
          to label %93 unwind label %137

93:                                               ; preds = %92
  invoke void @_Z14int_randominitv()
          to label %94 unwind label %137

94:                                               ; preds = %93
  %95 = load ptr, ptr @version, align 8, !tbaa !9
  %96 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.76, ptr noundef %95)
          to label %97 unwind label %137

97:                                               ; preds = %94
  br label %98

98:                                               ; preds = %525, %97
  %99 = load i32, ptr %4, align 4, !tbaa !5
  %100 = load ptr, ptr %5, align 8, !tbaa !9
  %101 = call i32 @getopt(i32 noundef %99, ptr noundef %100, ptr noundef @.str.77) #14
  store i32 %101, ptr %37, align 4, !tbaa !5
  %102 = icmp ne i32 %101, -1
  br i1 %102, label %103, label %526

103:                                              ; preds = %98
  %104 = load i32, ptr %37, align 4, !tbaa !5
  switch i32 %104, label %521 [
    i32 104, label %145
    i32 54, label %147
    i32 66, label %150
    i32 98, label %166
    i32 99, label %205
    i32 67, label %219
    i32 100, label %283
    i32 101, label %286
    i32 102, label %293
    i32 73, label %295
    i32 107, label %297
    i32 108, label %308
    i32 77, label %322
    i32 109, label %325
    i32 110, label %360
    i32 113, label %362
    i32 82, label %365
    i32 114, label %368
    i32 115, label %430
    i32 83, label %451
    i32 116, label %452
    i32 118, label %467
    i32 56, label %497
    i32 122, label %510
  ]

105:                                              ; preds = %2
  %106 = landingpad { ptr, i32 }
          cleanup
  %107 = extractvalue { ptr, i32 } %106, 0
  store ptr %107, ptr %42, align 8
  %108 = extractvalue { ptr, i32 } %106, 1
  store i32 %108, ptr %43, align 4
  br label %3823

109:                                              ; preds = %72
  %110 = landingpad { ptr, i32 }
          cleanup
  %111 = extractvalue { ptr, i32 } %110, 0
  store ptr %111, ptr %42, align 8
  %112 = extractvalue { ptr, i32 } %110, 1
  store i32 %112, ptr %43, align 4
  br label %3822

113:                                              ; preds = %73
  %114 = landingpad { ptr, i32 }
          cleanup
  %115 = extractvalue { ptr, i32 } %114, 0
  store ptr %115, ptr %42, align 8
  %116 = extractvalue { ptr, i32 } %114, 1
  store i32 %116, ptr %43, align 4
  br label %3821

117:                                              ; preds = %74
  %118 = landingpad { ptr, i32 }
          cleanup
  %119 = extractvalue { ptr, i32 } %118, 0
  store ptr %119, ptr %42, align 8
  %120 = extractvalue { ptr, i32 } %118, 1
  store i32 %120, ptr %43, align 4
  br label %3820

121:                                              ; preds = %75
  %122 = landingpad { ptr, i32 }
          cleanup
  %123 = extractvalue { ptr, i32 } %122, 0
  store ptr %123, ptr %42, align 8
  %124 = extractvalue { ptr, i32 } %122, 1
  store i32 %124, ptr %43, align 4
  br label %3819

125:                                              ; preds = %76
  %126 = landingpad { ptr, i32 }
          cleanup
  %127 = extractvalue { ptr, i32 } %126, 0
  store ptr %127, ptr %42, align 8
  %128 = extractvalue { ptr, i32 } %126, 1
  store i32 %128, ptr %43, align 4
  br label %3818

129:                                              ; preds = %77
  %130 = landingpad { ptr, i32 }
          cleanup
  %131 = extractvalue { ptr, i32 } %130, 0
  store ptr %131, ptr %42, align 8
  %132 = extractvalue { ptr, i32 } %130, 1
  store i32 %132, ptr %43, align 4
  br label %3817

133:                                              ; preds = %78
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %42, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %43, align 4
  br label %3816

137:                                              ; preds = %3811, %3798, %3795, %3727, %3723, %3714, %3702, %3673, %3671, %3669, %3667, %3666, %3664, %3661, %3655, %3653, %3643, %3637, %3636, %3630, %3627, %3626, %3625, %3622, %3596, %3595, %3593, %3592, %3591, %3590, %3579, %3524, %3514, %3509, %3504, %1371, %1341, %1334, %1331, %1328, %1325, %1319, %1289, %1282, %1279, %1276, %1273, %1267, %1237, %1230, %1227, %1224, %1221, %1218, %1169, %1167, %1166, %1165, %1163, %1161, %1159, %1158, %1155, %1154, %1153, %1152, %1151, %1149, %1147, %1146, %1145, %1143, %1140, %1139, %1138, %1137, %1136, %1135, %1134, %1133, %1132, %1130, %1127, %1126, %1125, %1124, %1123, %1122, %1119, %1113, %1112, %1110, %1109, %1106, %1105, %1100, %1097, %1095, %1091, %1088, %1085, %1084, %1083, %1081, %1079, %1068, %1062, %1059, %1058, %1057, %1052, %1051, %1048, %1046, %1042, %1038, %1021, %1020, %1019, %1012, %1004, %1000, %994, %975, %956, %949, %947, %940, %933, %924, %921, %918, %913, %909, %905, %879, %872, %863, %853, %850, %843, %840, %837, %835, %821, %813, %806, %803, %800, %798, %791, %787, %767, %766, %760, %758, %757, %756, %755, %752, %750, %748, %747, %744, %740, %734, %727, %678, %677, %675, %673, %668, %667, %664, %663, %654, %638, %637, %635, %634, %631, %628, %623, %618, %613, %611, %609, %606, %604, %598, %580, %576, %574, %571, %569, %566, %562, %517, %501, %487, %483, %478, %474, %470, %459, %445, %443, %440, %437, %435, %432, %430, %423, %408, %402, %397, %395, %393, %383, %378, %376, %371, %365, %362, %350, %345, %342, %339, %336, %332, %329, %325, %322, %318, %315, %312, %308, %304, %291, %290, %289, %288, %286, %283, %226, %223, %211, %205, %197, %195, %191, %186, %184, %183, %181, %179, %176, %175, %150, %145, %94, %93, %92, %91, %90, %89, %87, %79
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %42, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %43, align 4
  br label %3815

141:                                              ; preds = %86
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %42, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %43, align 4
  call void @_ZdlPvm(ptr noundef %85, i64 noundef 393296) #16
  br label %3815

145:                                              ; preds = %103
  invoke void @_Z4menuv()
          to label %146 unwind label %137

146:                                              ; preds = %145
  br label %525

147:                                              ; preds = %103
  store i32 1, ptr @FLAGSKIPCHECKSUM, align 4, !tbaa !5
  %148 = load ptr, ptr @stderr, align 8, !tbaa !9
  %149 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %148, ptr noundef @.str.78) #14
  br label %525

150:                                              ; preds = %103
  %151 = load ptr, ptr @optarg, align 8, !tbaa !9
  %152 = invoke noundef i32 @_Z7indexOfPcPPKci(ptr noundef %151, ptr noundef @bsgs_modes, i32 noundef 5)
          to label %153 unwind label %137

153:                                              ; preds = %150
  store i32 %152, ptr %39, align 4, !tbaa !5
  %154 = load i32, ptr %39, align 4, !tbaa !5
  %155 = icmp sge i32 %154, 0
  br i1 %155, label %156, label %161

156:                                              ; preds = %153
  %157 = load i32, ptr %39, align 4, !tbaa !5
  %158 = icmp sle i32 %157, 4
  br i1 %158, label %159, label %161

159:                                              ; preds = %156
  %160 = load i32, ptr %39, align 4, !tbaa !5
  store i32 %160, ptr @FLAGBSGSMODE, align 4, !tbaa !5
  br label %165

161:                                              ; preds = %156, %153
  %162 = load ptr, ptr @stderr, align 8, !tbaa !9
  %163 = load ptr, ptr @optarg, align 8, !tbaa !9
  %164 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %162, ptr noundef @.str.79, ptr noundef %163) #14
  br label %165

165:                                              ; preds = %161, %159
  br label %525

166:                                              ; preds = %103
  %167 = load ptr, ptr @optarg, align 8, !tbaa !9
  %168 = call i64 @strtol(ptr noundef %167, ptr noundef null, i32 noundef 10) #14
  %169 = trunc i64 %168 to i32
  store i32 %169, ptr @bitrange, align 4, !tbaa !5
  %170 = load i32, ptr @bitrange, align 4, !tbaa !5
  %171 = icmp sgt i32 %170, 0
  br i1 %171, label %172, label %200

172:                                              ; preds = %166
  %173 = load i32, ptr @bitrange, align 4, !tbaa !5
  %174 = icmp sle i32 %173, 256
  br i1 %174, label %175, label %200

175:                                              ; preds = %172
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX, ptr noundef @ONE)
          to label %176 unwind label %137

176:                                              ; preds = %175
  %177 = load i32, ptr @bitrange, align 4, !tbaa !5
  %178 = sub nsw i32 %177, 1
  invoke void @_ZN3Int6ShiftLEj(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX, i32 noundef %178)
          to label %179 unwind label %137

179:                                              ; preds = %176
  %180 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX)
          to label %181 unwind label %137

181:                                              ; preds = %179
  store ptr %180, ptr @bit_range_str_min, align 8, !tbaa !9
  %182 = load ptr, ptr @bit_range_str_min, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %182, ptr noundef @.str.80, ptr noundef @.str.81, ptr noundef @.str.82, i32 noundef 516)
          to label %183 unwind label %137

183:                                              ; preds = %181
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX, ptr noundef @ONE)
          to label %184 unwind label %137

184:                                              ; preds = %183
  %185 = load i32, ptr @bitrange, align 4, !tbaa !5
  invoke void @_ZN3Int6ShiftLEj(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX, i32 noundef %185)
          to label %186 unwind label %137

186:                                              ; preds = %184
  %187 = load ptr, ptr @secp, align 8, !tbaa !9
  %188 = getelementptr inbounds %class.Secp256K1, ptr %187, i32 0, i32 2
  %189 = invoke noundef zeroext i1 @_ZN3Int9IsGreaterEPS_(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX, ptr noundef %188)
          to label %190 unwind label %137

190:                                              ; preds = %186
  br i1 %189, label %191, label %195

191:                                              ; preds = %190
  %192 = load ptr, ptr @secp, align 8, !tbaa !9
  %193 = getelementptr inbounds %class.Secp256K1, ptr %192, i32 0, i32 2
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX, ptr noundef %193)
          to label %194 unwind label %137

194:                                              ; preds = %191
  br label %195

195:                                              ; preds = %194, %190
  %196 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX)
          to label %197 unwind label %137

197:                                              ; preds = %195
  store ptr %196, ptr @bit_range_str_max, align 8, !tbaa !9
  %198 = load ptr, ptr @bit_range_str_max, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %198, ptr noundef @.str.80, ptr noundef @.str.81, ptr noundef @.str.82, i32 noundef 523)
          to label %199 unwind label %137

199:                                              ; preds = %197
  store i32 1, ptr @FLAGBITRANGE, align 4, !tbaa !5
  br label %204

200:                                              ; preds = %172, %166
  %201 = load ptr, ptr @stderr, align 8, !tbaa !9
  %202 = load ptr, ptr @optarg, align 8, !tbaa !9
  %203 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %201, ptr noundef @.str.83, ptr noundef %202) #14
  br label %204

204:                                              ; preds = %200, %199
  br label %525

205:                                              ; preds = %103
  %206 = load ptr, ptr @optarg, align 8, !tbaa !9
  %207 = invoke noundef i32 @_Z7indexOfPcPPKci(ptr noundef %206, ptr noundef @cryptos, i32 noundef 3)
          to label %208 unwind label %137

208:                                              ; preds = %205
  store i32 %207, ptr %39, align 4, !tbaa !5
  %209 = load i32, ptr %39, align 4, !tbaa !5
  switch i32 %209, label %214 [
    i32 0, label %210
    i32 1, label %211
  ]

210:                                              ; preds = %208
  store i32 1, ptr @FLAGCRYPTO, align 4, !tbaa !5
  br label %218

211:                                              ; preds = %208
  store i32 2, ptr @FLAGCRYPTO, align 4, !tbaa !5
  %212 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.84)
          to label %213 unwind label %137

213:                                              ; preds = %211
  br label %218

214:                                              ; preds = %208
  store i32 0, ptr @FLAGCRYPTO, align 4, !tbaa !5
  %215 = load ptr, ptr @stderr, align 8, !tbaa !9
  %216 = load ptr, ptr @optarg, align 8, !tbaa !9
  %217 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %215, ptr noundef @.str.85, ptr noundef %216) #14
  call void @exit(i32 noundef 1) #17
  unreachable

218:                                              ; preds = %213, %210
  br label %525

219:                                              ; preds = %103
  %220 = load ptr, ptr @optarg, align 8, !tbaa !9
  %221 = call i64 @strlen(ptr noundef %220) #18
  %222 = icmp eq i64 %221, 22
  br i1 %222, label %223, label %276

223:                                              ; preds = %219
  store i32 1, ptr @FLAGBASEMINIKEY, align 4, !tbaa !5
  %224 = call noalias ptr @malloc(i64 noundef 23) #19
  store ptr %224, ptr @str_baseminikey, align 8, !tbaa !9
  %225 = load ptr, ptr @str_baseminikey, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %225, ptr noundef @.str.80, ptr noundef @.str.81, ptr noundef @.str.86, i32 noundef 556)
          to label %226 unwind label %137

226:                                              ; preds = %223
  %227 = call noalias ptr @malloc(i64 noundef 23) #19
  store ptr %227, ptr @raw_baseminikey, align 8, !tbaa !9
  %228 = load ptr, ptr @raw_baseminikey, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %228, ptr noundef @.str.80, ptr noundef @.str.81, ptr noundef @.str.87, i32 noundef 558)
          to label %229 unwind label %137

229:                                              ; preds = %226
  %230 = load ptr, ptr @str_baseminikey, align 8, !tbaa !9
  %231 = load ptr, ptr @optarg, align 8, !tbaa !9
  %232 = call ptr @strncpy(ptr noundef %230, ptr noundef %231, i64 noundef 22) #14
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %233

233:                                              ; preds = %272, %229
  %234 = load i32, ptr %33, align 4, !tbaa !5
  %235 = icmp slt i32 %234, 21
  br i1 %235, label %236, label %275

236:                                              ; preds = %233
  %237 = load ptr, ptr @Ccoinbuffer, align 8, !tbaa !9
  %238 = load ptr, ptr @str_baseminikey, align 8, !tbaa !9
  %239 = load i32, ptr %33, align 4, !tbaa !5
  %240 = add nsw i32 %239, 1
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds i8, ptr %238, i64 %241
  %243 = load i8, ptr %242, align 1, !tbaa !11
  %244 = sext i8 %243 to i32
  %245 = call noundef ptr @strchr(ptr noundef %237, i32 noundef %244) #18
  %246 = icmp ne ptr %245, null
  br i1 %246, label %247, label %268

247:                                              ; preds = %236
  %248 = load ptr, ptr @Ccoinbuffer, align 8, !tbaa !9
  %249 = load ptr, ptr @str_baseminikey, align 8, !tbaa !9
  %250 = load i32, ptr %33, align 4, !tbaa !5
  %251 = add nsw i32 %250, 1
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds i8, ptr %249, i64 %252
  %254 = load i8, ptr %253, align 1, !tbaa !11
  %255 = sext i8 %254 to i32
  %256 = call noundef ptr @strchr(ptr noundef %248, i32 noundef %255) #18
  %257 = load ptr, ptr @Ccoinbuffer, align 8, !tbaa !9
  %258 = ptrtoint ptr %256 to i64
  %259 = ptrtoint ptr %257 to i64
  %260 = sub i64 %258, %259
  %261 = trunc i64 %260 to i32
  %262 = srem i32 %261, 58
  %263 = trunc i32 %262 to i8
  %264 = load ptr, ptr @raw_baseminikey, align 8, !tbaa !9
  %265 = load i32, ptr %33, align 4, !tbaa !5
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds i8, ptr %264, i64 %266
  store i8 %263, ptr %267, align 1, !tbaa !11
  br label %271

268:                                              ; preds = %236
  %269 = load ptr, ptr @stderr, align 8, !tbaa !9
  %270 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %269, ptr noundef @.str.88) #14
  call void @exit(i32 noundef 1) #17
  unreachable

271:                                              ; preds = %247
  br label %272

272:                                              ; preds = %271
  %273 = load i32, ptr %33, align 4, !tbaa !5
  %274 = add nsw i32 %273, 1
  store i32 %274, ptr %33, align 4, !tbaa !5
  br label %233, !llvm.loop !12

275:                                              ; preds = %233
  br label %282

276:                                              ; preds = %219
  %277 = load ptr, ptr @stderr, align 8, !tbaa !9
  %278 = load ptr, ptr @optarg, align 8, !tbaa !9
  %279 = call i64 @strlen(ptr noundef %278) #18
  %280 = load ptr, ptr @optarg, align 8, !tbaa !9
  %281 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %277, ptr noundef @.str.89, i64 noundef %279, ptr noundef %280) #14
  call void @exit(i32 noundef 1) #17
  unreachable

282:                                              ; preds = %275
  br label %525

283:                                              ; preds = %103
  store i32 1, ptr @FLAGDEBUG, align 4, !tbaa !5
  %284 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.90)
          to label %285 unwind label %137

285:                                              ; preds = %283
  br label %525

286:                                              ; preds = %103
  store i32 1, ptr @FLAGENDOMORPHISM, align 4, !tbaa !5
  %287 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.91)
          to label %288 unwind label %137

288:                                              ; preds = %286
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @lambda, ptr noundef @.str.92)
          to label %289 unwind label %137

289:                                              ; preds = %288
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @lambda2, ptr noundef @.str.93)
          to label %290 unwind label %137

290:                                              ; preds = %289
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @beta, ptr noundef @.str.94)
          to label %291 unwind label %137

291:                                              ; preds = %290
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @beta2, ptr noundef @.str.95)
          to label %292 unwind label %137

292:                                              ; preds = %291
  br label %525

293:                                              ; preds = %103
  store i32 1, ptr @FLAGFILE, align 4, !tbaa !5
  %294 = load ptr, ptr @optarg, align 8, !tbaa !9
  store ptr %294, ptr %11, align 8, !tbaa !9
  br label %525

295:                                              ; preds = %103
  store i32 1, ptr @FLAGSTRIDE, align 4, !tbaa !5
  %296 = load ptr, ptr @optarg, align 8, !tbaa !9
  store ptr %296, ptr @str_stride, align 8, !tbaa !9
  br label %525

297:                                              ; preds = %103
  %298 = load ptr, ptr @optarg, align 8, !tbaa !9
  %299 = call i64 @strtol(ptr noundef %298, ptr noundef null, i32 noundef 10) #14
  %300 = trunc i64 %299 to i32
  store i32 %300, ptr @KFACTOR, align 4, !tbaa !5
  %301 = load i32, ptr @KFACTOR, align 4, !tbaa !5
  %302 = icmp sle i32 %301, 0
  br i1 %302, label %303, label %304

303:                                              ; preds = %297
  store i32 1, ptr @KFACTOR, align 4, !tbaa !5
  br label %304

304:                                              ; preds = %303, %297
  %305 = load i32, ptr @KFACTOR, align 4, !tbaa !5
  %306 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.96, i32 noundef %305)
          to label %307 unwind label %137

307:                                              ; preds = %304
  br label %525

308:                                              ; preds = %103
  %309 = load ptr, ptr @optarg, align 8, !tbaa !9
  %310 = invoke noundef i32 @_Z7indexOfPcPPKci(ptr noundef %309, ptr noundef @publicsearch, i32 noundef 3)
          to label %311 unwind label %137

311:                                              ; preds = %308
  switch i32 %310, label %321 [
    i32 0, label %312
    i32 1, label %315
    i32 2, label %318
  ]

312:                                              ; preds = %311
  store i32 0, ptr @FLAGSEARCH, align 4, !tbaa !5
  %313 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.97)
          to label %314 unwind label %137

314:                                              ; preds = %312
  br label %321

315:                                              ; preds = %311
  store i32 1, ptr @FLAGSEARCH, align 4, !tbaa !5
  %316 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.98)
          to label %317 unwind label %137

317:                                              ; preds = %315
  br label %321

318:                                              ; preds = %311
  store i32 2, ptr @FLAGSEARCH, align 4, !tbaa !5
  %319 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.99)
          to label %320 unwind label %137

320:                                              ; preds = %318
  br label %321

321:                                              ; preds = %320, %317, %314, %311
  br label %525

322:                                              ; preds = %103
  store i32 1, ptr @FLAGMATRIX, align 4, !tbaa !5
  %323 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.100)
          to label %324 unwind label %137

324:                                              ; preds = %322
  br label %525

325:                                              ; preds = %103
  %326 = load ptr, ptr @optarg, align 8, !tbaa !9
  %327 = invoke noundef i32 @_Z7indexOfPcPPKci(ptr noundef %326, ptr noundef @modes, i32 noundef 7)
          to label %328 unwind label %137

328:                                              ; preds = %325
  switch i32 %327, label %355 [
    i32 0, label %329
    i32 1, label %332
    i32 2, label %335
    i32 3, label %336
    i32 4, label %339
    i32 5, label %342
    i32 6, label %345
  ]

329:                                              ; preds = %328
  store i32 0, ptr @FLAGMODE, align 4, !tbaa !5
  %330 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.101)
          to label %331 unwind label %137

331:                                              ; preds = %329
  br label %359

332:                                              ; preds = %328
  store i32 1, ptr @FLAGMODE, align 4, !tbaa !5
  %333 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.102)
          to label %334 unwind label %137

334:                                              ; preds = %332
  br label %359

335:                                              ; preds = %328
  store i32 2, ptr @FLAGMODE, align 4, !tbaa !5
  br label %359

336:                                              ; preds = %328
  store i32 3, ptr @FLAGMODE, align 4, !tbaa !5
  store i32 1, ptr @FLAGCRYPTO, align 4, !tbaa !5
  %337 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.103)
          to label %338 unwind label %137

338:                                              ; preds = %336
  br label %359

339:                                              ; preds = %328
  store i32 4, ptr @FLAGMODE, align 4, !tbaa !5
  %340 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.104)
          to label %341 unwind label %137

341:                                              ; preds = %339
  br label %359

342:                                              ; preds = %328
  store i32 5, ptr @FLAGMODE, align 4, !tbaa !5
  %343 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.105)
          to label %344 unwind label %137

344:                                              ; preds = %342
  br label %359

345:                                              ; preds = %328
  store i32 6, ptr @FLAGMODE, align 4, !tbaa !5
  %346 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.106)
          to label %347 unwind label %137

347:                                              ; preds = %345
  %348 = load ptr, ptr @vanity_bloom, align 8, !tbaa !9
  %349 = icmp eq ptr %348, null
  br i1 %349, label %350, label %354

350:                                              ; preds = %347
  %351 = call noalias ptr @calloc(i64 noundef 1, i64 noundef 80) #20
  store ptr %351, ptr @vanity_bloom, align 8, !tbaa !9
  %352 = load ptr, ptr @vanity_bloom, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %352, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.108, i32 noundef 657)
          to label %353 unwind label %137

353:                                              ; preds = %350
  br label %354

354:                                              ; preds = %353, %347
  br label %359

355:                                              ; preds = %328
  %356 = load ptr, ptr @stderr, align 8, !tbaa !9
  %357 = load ptr, ptr @optarg, align 8, !tbaa !9
  %358 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %356, ptr noundef @.str.109, ptr noundef %357) #14
  call void @exit(i32 noundef 1) #17
  unreachable

359:                                              ; preds = %354, %344, %341, %338, %335, %334, %331
  br label %525

360:                                              ; preds = %103
  store i32 1, ptr @FLAG_N, align 4, !tbaa !5
  %361 = load ptr, ptr @optarg, align 8, !tbaa !9
  store ptr %361, ptr @str_N, align 8, !tbaa !9
  br label %525

362:                                              ; preds = %103
  store i32 1, ptr @FLAGQUIET, align 4, !tbaa !5
  %363 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.110)
          to label %364 unwind label %137

364:                                              ; preds = %362
  br label %525

365:                                              ; preds = %103
  %366 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.111)
          to label %367 unwind label %137

367:                                              ; preds = %365
  store i32 1, ptr @FLAGRANDOM, align 4, !tbaa !5
  store i32 3, ptr @FLAGBSGSMODE, align 4, !tbaa !5
  br label %525

368:                                              ; preds = %103
  %369 = load ptr, ptr @optarg, align 8, !tbaa !9
  %370 = icmp ne ptr %369, null
  br i1 %370, label %371, label %429

371:                                              ; preds = %368
  %372 = load ptr, ptr @optarg, align 8, !tbaa !9
  invoke void @_Z15stringtokenizerPcP13str_tokenizer(ptr noundef %372, ptr noundef %9)
          to label %373 unwind label %137

373:                                              ; preds = %371
  %374 = getelementptr inbounds %struct.str_tokenizer, ptr %9, i32 0, i32 1
  %375 = load i32, ptr %374, align 4, !tbaa !14
  switch i32 %375, label %423 [
    i32 1, label %376
    i32 2, label %393
  ]

376:                                              ; preds = %373
  %377 = invoke noundef ptr @_Z9nextTokenP13str_tokenizer(ptr noundef %9)
          to label %378 unwind label %137

378:                                              ; preds = %376
  store ptr %377, ptr @range_start, align 8, !tbaa !9
  %379 = load ptr, ptr @range_start, align 8, !tbaa !9
  %380 = invoke noundef i32 @_Z10isValidHexPc(ptr noundef %379)
          to label %381 unwind label %137

381:                                              ; preds = %378
  %382 = icmp ne i32 %380, 0
  br i1 %382, label %383, label %388

383:                                              ; preds = %381
  store i32 1, ptr @FLAGRANGE, align 4, !tbaa !5
  %384 = load ptr, ptr @secp, align 8, !tbaa !9
  %385 = getelementptr inbounds %class.Secp256K1, ptr %384, i32 0, i32 2
  %386 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16) %385)
          to label %387 unwind label %137

387:                                              ; preds = %383
  store ptr %386, ptr @range_end, align 8, !tbaa !9
  br label %392

388:                                              ; preds = %381
  %389 = load ptr, ptr @stderr, align 8, !tbaa !9
  %390 = load ptr, ptr @range_start, align 8, !tbaa !9
  %391 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %389, ptr noundef @.str.112, ptr noundef %390) #14
  br label %392

392:                                              ; preds = %388, %387
  br label %428

393:                                              ; preds = %373
  %394 = invoke noundef ptr @_Z9nextTokenP13str_tokenizer(ptr noundef %9)
          to label %395 unwind label %137

395:                                              ; preds = %393
  store ptr %394, ptr @range_start, align 8, !tbaa !9
  %396 = invoke noundef ptr @_Z9nextTokenP13str_tokenizer(ptr noundef %9)
          to label %397 unwind label %137

397:                                              ; preds = %395
  store ptr %396, ptr @range_end, align 8, !tbaa !9
  %398 = load ptr, ptr @range_start, align 8, !tbaa !9
  %399 = invoke noundef i32 @_Z10isValidHexPc(ptr noundef %398)
          to label %400 unwind label %137

400:                                              ; preds = %397
  %401 = icmp ne i32 %399, 0
  br i1 %401, label %402, label %408

402:                                              ; preds = %400
  %403 = load ptr, ptr @range_end, align 8, !tbaa !9
  %404 = invoke noundef i32 @_Z10isValidHexPc(ptr noundef %403)
          to label %405 unwind label %137

405:                                              ; preds = %402
  %406 = icmp ne i32 %404, 0
  br i1 %406, label %407, label %408

407:                                              ; preds = %405
  store i32 1, ptr @FLAGRANGE, align 4, !tbaa !5
  br label %422

408:                                              ; preds = %405, %400
  %409 = load ptr, ptr @range_start, align 8, !tbaa !9
  %410 = invoke noundef i32 @_Z10isValidHexPc(ptr noundef %409)
          to label %411 unwind label %137

411:                                              ; preds = %408
  %412 = icmp ne i32 %410, 0
  br i1 %412, label %413, label %417

413:                                              ; preds = %411
  %414 = load ptr, ptr @stderr, align 8, !tbaa !9
  %415 = load ptr, ptr @range_start, align 8, !tbaa !9
  %416 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %414, ptr noundef @.str.113, ptr noundef %415) #14
  br label %421

417:                                              ; preds = %411
  %418 = load ptr, ptr @stderr, align 8, !tbaa !9
  %419 = load ptr, ptr @range_end, align 8, !tbaa !9
  %420 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %418, ptr noundef @.str.113, ptr noundef %419) #14
  br label %421

421:                                              ; preds = %417, %413
  br label %422

422:                                              ; preds = %421, %407
  br label %428

423:                                              ; preds = %373
  %424 = getelementptr inbounds %struct.str_tokenizer, ptr %9, i32 0, i32 1
  %425 = load i32, ptr %424, align 4, !tbaa !14
  %426 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.114, i32 noundef %425)
          to label %427 unwind label %137

427:                                              ; preds = %423
  br label %428

428:                                              ; preds = %427, %422, %392
  br label %429

429:                                              ; preds = %428, %368
  br label %525

430:                                              ; preds = %103
  %431 = load ptr, ptr @optarg, align 8, !tbaa !9
  invoke void @_ZN3Int9SetBase10EPKc(ptr noundef nonnull align 8 dereferenceable(16) @OUTPUTSECONDS, ptr noundef %431)
          to label %432 unwind label %137

432:                                              ; preds = %430
  %433 = invoke noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(16) @OUTPUTSECONDS, ptr noundef @ZERO)
          to label %434 unwind label %137

434:                                              ; preds = %432
  br i1 %433, label %435, label %437

435:                                              ; preds = %434
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @OUTPUTSECONDS, i32 noundef 30)
          to label %436 unwind label %137

436:                                              ; preds = %435
  br label %437

437:                                              ; preds = %436, %434
  %438 = invoke noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16) @OUTPUTSECONDS)
          to label %439 unwind label %137

439:                                              ; preds = %437
  br i1 %438, label %440, label %443

440:                                              ; preds = %439
  %441 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.115)
          to label %442 unwind label %137

442:                                              ; preds = %440
  br label %450

443:                                              ; preds = %439
  %444 = invoke noundef ptr @_ZN3Int9GetBase10Ev(ptr noundef nonnull align 8 dereferenceable(16) @OUTPUTSECONDS)
          to label %445 unwind label %137

445:                                              ; preds = %443
  store ptr %444, ptr %12, align 8, !tbaa !9
  %446 = load ptr, ptr %12, align 8, !tbaa !9
  %447 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.116, ptr noundef %446)
          to label %448 unwind label %137

448:                                              ; preds = %445
  %449 = load ptr, ptr %12, align 8, !tbaa !9
  call void @free(ptr noundef %449) #14
  br label %450

450:                                              ; preds = %448, %442
  br label %525

451:                                              ; preds = %103
  store i32 1, ptr @FLAGSAVEREADFILE, align 4, !tbaa !5
  br label %525

452:                                              ; preds = %103
  %453 = load ptr, ptr @optarg, align 8, !tbaa !9
  %454 = call i64 @strtol(ptr noundef %453, ptr noundef null, i32 noundef 10) #14
  %455 = trunc i64 %454 to i32
  store i32 %455, ptr @NTHREADS, align 4, !tbaa !5
  %456 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %457 = icmp sle i32 %456, 0
  br i1 %457, label %458, label %459

458:                                              ; preds = %452
  store i32 1, ptr @NTHREADS, align 4, !tbaa !5
  br label %459

459:                                              ; preds = %458, %452
  %460 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %461 = icmp sgt i32 %460, 1
  %462 = zext i1 %461 to i64
  %463 = select i1 %461, ptr @.str.117, ptr @.str.118
  %464 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %465 = invoke i32 (ptr, ...) @printf(ptr noundef %463, i32 noundef %464)
          to label %466 unwind label %137

466:                                              ; preds = %459
  br label %525

467:                                              ; preds = %103
  store i32 1, ptr @FLAGVANITY, align 4, !tbaa !5
  %468 = load ptr, ptr @vanity_bloom, align 8, !tbaa !9
  %469 = icmp eq ptr %468, null
  br i1 %469, label %470, label %474

470:                                              ; preds = %467
  %471 = call noalias ptr @calloc(i64 noundef 1, i64 noundef 80) #20
  store ptr %471, ptr @vanity_bloom, align 8, !tbaa !9
  %472 = load ptr, ptr @vanity_bloom, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %472, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.108, i32 noundef 742)
          to label %473 unwind label %137

473:                                              ; preds = %470
  br label %474

474:                                              ; preds = %473, %467
  %475 = load ptr, ptr @optarg, align 8, !tbaa !9
  %476 = invoke noundef zeroext i1 @_Z19isValidBase58StringPc(ptr noundef %475)
          to label %477 unwind label %137

477:                                              ; preds = %474
  br i1 %476, label %478, label %492

478:                                              ; preds = %477
  %479 = load ptr, ptr @optarg, align 8, !tbaa !9
  %480 = invoke noundef i32 @_Z9addvanityPc(ptr noundef %479)
          to label %481 unwind label %137

481:                                              ; preds = %478
  %482 = icmp sgt i32 %480, 0
  br i1 %482, label %483, label %487

483:                                              ; preds = %481
  %484 = load ptr, ptr @optarg, align 8, !tbaa !9
  %485 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.119, ptr noundef %484)
          to label %486 unwind label %137

486:                                              ; preds = %483
  br label %491

487:                                              ; preds = %481
  %488 = load ptr, ptr @optarg, align 8, !tbaa !9
  %489 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.120, ptr noundef %488)
          to label %490 unwind label %137

490:                                              ; preds = %487
  br label %491

491:                                              ; preds = %490, %486
  br label %496

492:                                              ; preds = %477
  %493 = load ptr, ptr @stderr, align 8, !tbaa !9
  %494 = load ptr, ptr @optarg, align 8, !tbaa !9
  %495 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %493, ptr noundef @.str.121, ptr noundef %494) #14
  br label %496

496:                                              ; preds = %492, %491
  br label %525

497:                                              ; preds = %103
  %498 = load ptr, ptr @optarg, align 8, !tbaa !9
  %499 = call i64 @strlen(ptr noundef %498) #18
  %500 = icmp eq i64 %499, 58
  br i1 %500, label %501, label %506

501:                                              ; preds = %497
  %502 = load ptr, ptr @optarg, align 8, !tbaa !9
  store ptr %502, ptr @Ccoinbuffer, align 8, !tbaa !9
  %503 = load ptr, ptr @Ccoinbuffer, align 8, !tbaa !9
  %504 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.122, ptr noundef %503)
          to label %505 unwind label %137

505:                                              ; preds = %501
  br label %509

506:                                              ; preds = %497
  %507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %508 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %507, ptr noundef @.str.123) #14
  call void @exit(i32 noundef 1) #17
  unreachable

509:                                              ; preds = %505
  br label %525

510:                                              ; preds = %103
  %511 = load ptr, ptr @optarg, align 8, !tbaa !9
  %512 = call i64 @strtol(ptr noundef %511, ptr noundef null, i32 noundef 10) #14
  %513 = trunc i64 %512 to i32
  store i32 %513, ptr @FLAGBLOOMMULTIPLIER, align 4, !tbaa !5
  %514 = load i32, ptr @FLAGBLOOMMULTIPLIER, align 4, !tbaa !5
  %515 = icmp sle i32 %514, 0
  br i1 %515, label %516, label %517

516:                                              ; preds = %510
  store i32 1, ptr @FLAGBLOOMMULTIPLIER, align 4, !tbaa !5
  br label %517

517:                                              ; preds = %516, %510
  %518 = load i32, ptr @FLAGBLOOMMULTIPLIER, align 4, !tbaa !5
  %519 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.124, i32 noundef %518)
          to label %520 unwind label %137

520:                                              ; preds = %517
  br label %525

521:                                              ; preds = %103
  %522 = load ptr, ptr @stderr, align 8, !tbaa !9
  %523 = load i32, ptr %37, align 4, !tbaa !5
  %524 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %522, ptr noundef @.str.125, i32 noundef %523) #14
  call void @exit(i32 noundef 1) #17
  unreachable

525:                                              ; preds = %520, %509, %496, %466, %451, %450, %429, %367, %364, %360, %359, %324, %321, %307, %295, %293, %292, %285, %282, %218, %204, %165, %147, %146
  br label %98, !llvm.loop !16

526:                                              ; preds = %98
  %527 = load i32, ptr @FLAGBSGSMODE, align 4, !tbaa !5
  %528 = icmp eq i32 %527, 2
  br i1 %528, label %529, label %535

529:                                              ; preds = %526
  %530 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !5
  %531 = icmp ne i32 %530, 0
  br i1 %531, label %532, label %535

532:                                              ; preds = %529
  %533 = load ptr, ptr @stderr, align 8, !tbaa !9
  %534 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %533, ptr noundef @.str.126) #14
  call void @exit(i32 noundef 1) #17
  unreachable

535:                                              ; preds = %529, %526
  %536 = load i32, ptr @FLAGBSGSMODE, align 4, !tbaa !5
  %537 = icmp eq i32 %536, 2
  br i1 %537, label %541, label %538

538:                                              ; preds = %535
  %539 = load i32, ptr @FLAGBSGSMODE, align 4, !tbaa !5
  %540 = icmp eq i32 %539, 4
  br i1 %540, label %541, label %547

541:                                              ; preds = %538, %535
  %542 = load i32, ptr @FLAGSTRIDE, align 4, !tbaa !5
  %543 = icmp ne i32 %542, 0
  br i1 %543, label %544, label %547

544:                                              ; preds = %541
  %545 = load ptr, ptr @stderr, align 8, !tbaa !9
  %546 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %545, ptr noundef @.str.127) #14
  call void @exit(i32 noundef 1) #17
  unreachable

547:                                              ; preds = %541, %538
  %548 = load i32, ptr @FLAGSTRIDE, align 4, !tbaa !5
  %549 = icmp ne i32 %548, 0
  br i1 %549, label %550, label %574

550:                                              ; preds = %547
  %551 = load ptr, ptr @str_stride, align 8, !tbaa !9
  %552 = getelementptr inbounds i8, ptr %551, i64 0
  %553 = load i8, ptr %552, align 1, !tbaa !11
  %554 = sext i8 %553 to i32
  %555 = icmp eq i32 %554, 48
  br i1 %555, label %556, label %566

556:                                              ; preds = %550
  %557 = load ptr, ptr @str_stride, align 8, !tbaa !9
  %558 = getelementptr inbounds i8, ptr %557, i64 1
  %559 = load i8, ptr %558, align 1, !tbaa !11
  %560 = sext i8 %559 to i32
  %561 = icmp eq i32 %560, 120
  br i1 %561, label %562, label %566

562:                                              ; preds = %556
  %563 = load ptr, ptr @str_stride, align 8, !tbaa !9
  %564 = getelementptr inbounds i8, ptr %563, i64 2
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @stride, ptr noundef %564)
          to label %565 unwind label %137

565:                                              ; preds = %562
  br label %569

566:                                              ; preds = %556, %550
  %567 = load ptr, ptr @str_stride, align 8, !tbaa !9
  invoke void @_ZN3Int9SetBase10EPKc(ptr noundef nonnull align 8 dereferenceable(16) @stride, ptr noundef %567)
          to label %568 unwind label %137

568:                                              ; preds = %566
  br label %569

569:                                              ; preds = %568, %565
  %570 = invoke noundef ptr @_ZN3Int9GetBase10Ev(ptr noundef nonnull align 8 dereferenceable(16) @stride)
          to label %571 unwind label %137

571:                                              ; preds = %569
  %572 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.128, ptr noundef %570)
          to label %573 unwind label %137

573:                                              ; preds = %571
  br label %576

574:                                              ; preds = %547
  store i32 1, ptr @FLAGSTRIDE, align 4, !tbaa !5
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @stride, ptr noundef @ONE)
          to label %575 unwind label %137

575:                                              ; preds = %574
  br label %576

576:                                              ; preds = %575, %573
  invoke void @_Z14init_generatorv()
          to label %577 unwind label %137

577:                                              ; preds = %576
  %578 = load i32, ptr @FLAGMODE, align 4, !tbaa !5
  %579 = icmp eq i32 %578, 2
  br i1 %579, label %580, label %587

580:                                              ; preds = %577
  %581 = load i32, ptr @FLAGBSGSMODE, align 4, !tbaa !5
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds [5 x ptr], ptr @bsgs_modes, i64 0, i64 %582
  %584 = load ptr, ptr %583, align 8, !tbaa !9
  %585 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.129, ptr noundef %584)
          to label %586 unwind label %137

586:                                              ; preds = %580
  br label %587

587:                                              ; preds = %586, %577
  %588 = load i32, ptr @FLAGFILE, align 4, !tbaa !5
  %589 = icmp eq i32 %588, 0
  br i1 %589, label %590, label %592

590:                                              ; preds = %587
  %591 = load ptr, ptr @default_fileName, align 8, !tbaa !9
  store ptr %591, ptr %11, align 8, !tbaa !9
  br label %592

592:                                              ; preds = %590, %587
  %593 = load i32, ptr @FLAGMODE, align 4, !tbaa !5
  %594 = icmp eq i32 %593, 1
  br i1 %594, label %595, label %601

595:                                              ; preds = %592
  %596 = load i32, ptr @FLAGCRYPTO, align 4, !tbaa !5
  %597 = icmp eq i32 %596, 0
  br i1 %597, label %598, label %601

598:                                              ; preds = %595
  store i32 1, ptr @FLAGCRYPTO, align 4, !tbaa !5
  %599 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.130)
          to label %600 unwind label %137

600:                                              ; preds = %598
  br label %601

601:                                              ; preds = %600, %595, %592
  %602 = load i32, ptr @FLAGRANGE, align 4, !tbaa !5
  %603 = icmp ne i32 %602, 0
  br i1 %603, label %604, label %648

604:                                              ; preds = %601
  %605 = load ptr, ptr @range_start, align 8, !tbaa !9
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef %605)
          to label %606 unwind label %137

606:                                              ; preds = %604
  %607 = invoke noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start)
          to label %608 unwind label %137

608:                                              ; preds = %606
  br i1 %607, label %609, label %611

609:                                              ; preds = %608
  invoke void @_ZN3Int6AddOneEv(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start)
          to label %610 unwind label %137

610:                                              ; preds = %609
  br label %611

611:                                              ; preds = %610, %608
  %612 = load ptr, ptr @range_end, align 8, !tbaa !9
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @n_range_end, ptr noundef %612)
          to label %613 unwind label %137

613:                                              ; preds = %611
  %614 = invoke noundef zeroext i1 @_ZN3Int7IsEqualEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef @n_range_end)
          to label %615 unwind label %137

615:                                              ; preds = %613
  %616 = zext i1 %614 to i32
  %617 = icmp eq i32 %616, 0
  br i1 %617, label %618, label %644

618:                                              ; preds = %615
  %619 = load ptr, ptr @secp, align 8, !tbaa !9
  %620 = getelementptr inbounds %class.Secp256K1, ptr %619, i32 0, i32 2
  %621 = invoke noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef %620)
          to label %622 unwind label %137

622:                                              ; preds = %618
  br i1 %621, label %623, label %640

623:                                              ; preds = %622
  %624 = load ptr, ptr @secp, align 8, !tbaa !9
  %625 = getelementptr inbounds %class.Secp256K1, ptr %624, i32 0, i32 2
  %626 = invoke noundef zeroext i1 @_ZN3Int14IsLowerOrEqualEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_end, ptr noundef %625)
          to label %627 unwind label %137

627:                                              ; preds = %623
  br i1 %626, label %628, label %640

628:                                              ; preds = %627
  %629 = invoke noundef zeroext i1 @_ZN3Int9IsGreaterEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef @n_range_end)
          to label %630 unwind label %137

630:                                              ; preds = %628
  br i1 %629, label %631, label %637

631:                                              ; preds = %630
  %632 = load ptr, ptr @stderr, align 8, !tbaa !9
  %633 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %632, ptr noundef @.str.131) #14
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_aux, ptr noundef @n_range_start)
          to label %634 unwind label %137

634:                                              ; preds = %631
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef @n_range_end)
          to label %635 unwind label %137

635:                                              ; preds = %634
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_end, ptr noundef @n_range_aux)
          to label %636 unwind label %137

636:                                              ; preds = %635
  br label %637

637:                                              ; preds = %636, %630
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef @n_range_end)
          to label %638 unwind label %137

638:                                              ; preds = %637
  invoke void @_ZN3Int3SubEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef @n_range_start)
          to label %639 unwind label %137

639:                                              ; preds = %638
  br label %643

640:                                              ; preds = %627, %622
  %641 = load ptr, ptr @stderr, align 8, !tbaa !9
  %642 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %641, ptr noundef @.str.132) #14
  store i32 0, ptr @FLAGRANGE, align 4, !tbaa !5
  br label %643

643:                                              ; preds = %640, %639
  br label %647

644:                                              ; preds = %615
  %645 = load ptr, ptr @stderr, align 8, !tbaa !9
  %646 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %645, ptr noundef @.str.133) #14
  store i32 0, ptr @FLAGRANGE, align 4, !tbaa !5
  br label %647

647:                                              ; preds = %644, %643
  br label %648

648:                                              ; preds = %647, %601
  %649 = load i32, ptr @FLAGMODE, align 4, !tbaa !5
  %650 = icmp ne i32 %649, 2
  br i1 %650, label %651, label %689

651:                                              ; preds = %648
  %652 = load i32, ptr @FLAGMODE, align 4, !tbaa !5
  %653 = icmp ne i32 %652, 5
  br i1 %653, label %654, label %689

654:                                              ; preds = %651
  %655 = load i64, ptr @DEBUGCOUNT, align 8, !tbaa !17
  %656 = trunc i64 %655 to i32
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N, i32 noundef %656)
          to label %657 unwind label %137

657:                                              ; preds = %654
  %658 = load i32, ptr @FLAGRANGE, align 4, !tbaa !5
  %659 = icmp eq i32 %658, 0
  br i1 %659, label %660, label %670

660:                                              ; preds = %657
  %661 = load i32, ptr @FLAGBITRANGE, align 4, !tbaa !5
  %662 = icmp eq i32 %661, 0
  br i1 %662, label %663, label %670

663:                                              ; preds = %660
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, i32 noundef 1)
          to label %664 unwind label %137

664:                                              ; preds = %663
  %665 = load ptr, ptr @secp, align 8, !tbaa !9
  %666 = getelementptr inbounds %class.Secp256K1, ptr %665, i32 0, i32 2
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_end, ptr noundef %666)
          to label %667 unwind label %137

667:                                              ; preds = %664
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef @n_range_end)
          to label %668 unwind label %137

668:                                              ; preds = %667
  invoke void @_ZN3Int3SubEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef @n_range_start)
          to label %669 unwind label %137

669:                                              ; preds = %668
  br label %688

670:                                              ; preds = %660, %657
  %671 = load i32, ptr @FLAGBITRANGE, align 4, !tbaa !5
  %672 = icmp ne i32 %671, 0
  br i1 %672, label %673, label %680

673:                                              ; preds = %670
  %674 = load ptr, ptr @bit_range_str_min, align 8, !tbaa !9
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef %674)
          to label %675 unwind label %137

675:                                              ; preds = %673
  %676 = load ptr, ptr @bit_range_str_max, align 8, !tbaa !9
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @n_range_end, ptr noundef %676)
          to label %677 unwind label %137

677:                                              ; preds = %675
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef @n_range_end)
          to label %678 unwind label %137

678:                                              ; preds = %677
  invoke void @_ZN3Int3SubEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef @n_range_start)
          to label %679 unwind label %137

679:                                              ; preds = %678
  br label %687

680:                                              ; preds = %670
  %681 = load i32, ptr @FLAGRANGE, align 4, !tbaa !5
  %682 = icmp eq i32 %681, 0
  br i1 %682, label %683, label %686

683:                                              ; preds = %680
  %684 = load ptr, ptr @stderr, align 8, !tbaa !9
  %685 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %684, ptr noundef @.str.134) #14
  br label %686

686:                                              ; preds = %683, %680
  br label %687

687:                                              ; preds = %686, %679
  br label %688

688:                                              ; preds = %687, %669
  br label %689

689:                                              ; preds = %688, %651, %648
  store i64 0, ptr @N, align 8, !tbaa !17
  %690 = load i32, ptr @FLAGMODE, align 4, !tbaa !5
  %691 = icmp ne i32 %690, 2
  br i1 %691, label %692, label %847

692:                                              ; preds = %689
  %693 = load i32, ptr @FLAG_N, align 4, !tbaa !5
  %694 = icmp ne i32 %693, 0
  br i1 %694, label %695, label %727

695:                                              ; preds = %692
  %696 = load ptr, ptr @str_N, align 8, !tbaa !9
  %697 = getelementptr inbounds i8, ptr %696, i64 0
  %698 = load i8, ptr %697, align 1, !tbaa !11
  %699 = sext i8 %698 to i32
  %700 = icmp eq i32 %699, 48
  br i1 %700, label %701, label %710

701:                                              ; preds = %695
  %702 = load ptr, ptr @str_N, align 8, !tbaa !9
  %703 = getelementptr inbounds i8, ptr %702, i64 1
  %704 = load i8, ptr %703, align 1, !tbaa !11
  %705 = sext i8 %704 to i32
  %706 = icmp eq i32 %705, 120
  br i1 %706, label %707, label %710

707:                                              ; preds = %701
  %708 = load ptr, ptr @str_N, align 8, !tbaa !9
  %709 = call i64 @strtol(ptr noundef %708, ptr noundef null, i32 noundef 16) #14
  store i64 %709, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !17
  br label %713

710:                                              ; preds = %701, %695
  %711 = load ptr, ptr @str_N, align 8, !tbaa !9
  %712 = call i64 @strtol(ptr noundef %711, ptr noundef null, i32 noundef 10) #14
  store i64 %712, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !17
  br label %713

713:                                              ; preds = %710, %707
  %714 = load i64, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !17
  %715 = icmp ult i64 %714, 1024
  br i1 %715, label %716, label %719

716:                                              ; preds = %713
  %717 = load ptr, ptr @stderr, align 8, !tbaa !9
  %718 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %717, ptr noundef @.str.135) #14
  store i32 0, ptr @FLAG_N, align 4, !tbaa !5
  store i64 4294967296, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !17
  br label %719

719:                                              ; preds = %716, %713
  %720 = load i64, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !17
  %721 = urem i64 %720, 1024
  %722 = icmp ne i64 %721, 0
  br i1 %722, label %723, label %726

723:                                              ; preds = %719
  %724 = load ptr, ptr @stderr, align 8, !tbaa !9
  %725 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %724, ptr noundef @.str.136) #14
  store i32 0, ptr @FLAG_N, align 4, !tbaa !5
  store i64 4294967296, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !17
  br label %726

726:                                              ; preds = %723, %719
  br label %727

727:                                              ; preds = %726, %692
  %728 = load i64, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !17
  %729 = inttoptr i64 %728 to ptr
  %730 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.137, ptr noundef %729)
          to label %731 unwind label %137

731:                                              ; preds = %727
  %732 = load i32, ptr @FLAGMODE, align 4, !tbaa !5
  %733 = icmp eq i32 %732, 5
  br i1 %733, label %734, label %784

734:                                              ; preds = %731
  %735 = load i64, ptr @DEBUGCOUNT, align 8, !tbaa !17
  %736 = trunc i64 %735 to i32
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N, i32 noundef %736)
          to label %737 unwind label %137

737:                                              ; preds = %734
  %738 = load i32, ptr @FLAGBASEMINIKEY, align 4, !tbaa !5
  %739 = icmp ne i32 %738, 0
  br i1 %739, label %740, label %744

740:                                              ; preds = %737
  %741 = load ptr, ptr @str_baseminikey, align 8, !tbaa !9
  %742 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.138, ptr noundef %741)
          to label %743 unwind label %137

743:                                              ; preds = %740
  br label %744

744:                                              ; preds = %743, %737
  %745 = call noalias ptr @malloc(i64 noundef 22) #19
  store ptr %745, ptr @minikeyN, align 8, !tbaa !9
  %746 = load ptr, ptr @minikeyN, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %746, ptr noundef @.str.80, ptr noundef @.str.81, ptr noundef @.str.139, i32 noundef 898)
          to label %747 unwind label %137

747:                                              ; preds = %744
  store i32 0, ptr %33, align 4, !tbaa !5
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %50, i32 noundef 58)
          to label %748 unwind label %137

748:                                              ; preds = %747
  %749 = load i64, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !17
  invoke void @_ZN3Int8SetInt64Em(ptr noundef nonnull align 8 dereferenceable(16) %47, i64 noundef %749)
          to label %750 unwind label %137

750:                                              ; preds = %748
  invoke void @_ZN3Int4MultEm(ptr noundef nonnull align 8 dereferenceable(16) %47, i64 noundef 253)
          to label %751 unwind label %137

751:                                              ; preds = %750
  store i32 20, ptr %33, align 4, !tbaa !5
  store i32 0, ptr %38, align 4, !tbaa !5
  br label %752

752:                                              ; preds = %779, %751
  %753 = invoke noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16) %47)
          to label %754 unwind label %137

754:                                              ; preds = %752
  br i1 %753, label %771, label %755

755:                                              ; preds = %754
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef %47)
          to label %756 unwind label %137

756:                                              ; preds = %755
  invoke void @_ZN3Int3ModEPS_(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef %50)
          to label %757 unwind label %137

757:                                              ; preds = %756
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef %47)
          to label %758 unwind label %137

758:                                              ; preds = %757
  %759 = invoke noundef i64 @_ZN3Int8GetInt64Ev(ptr noundef nonnull align 8 dereferenceable(16) %48)
          to label %760 unwind label %137

760:                                              ; preds = %758
  %761 = trunc i64 %759 to i8
  %762 = load ptr, ptr @minikeyN, align 8, !tbaa !9
  %763 = load i32, ptr %33, align 4, !tbaa !5
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds i8, ptr %762, i64 %764
  store i8 %761, ptr %765, align 1, !tbaa !11
  invoke void @_ZN3Int3SubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef %48)
          to label %766 unwind label %137

766:                                              ; preds = %760
  invoke void @_ZN3Int3DivEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef %50, ptr noundef null)
          to label %767 unwind label %137

767:                                              ; preds = %766
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef %49)
          to label %768 unwind label %137

768:                                              ; preds = %767
  %769 = load i32, ptr %33, align 4, !tbaa !5
  %770 = add nsw i32 %769, -1
  store i32 %770, ptr %33, align 4, !tbaa !5
  br label %772

771:                                              ; preds = %754
  store i32 1, ptr %38, align 4, !tbaa !5
  br label %772

772:                                              ; preds = %771, %768
  br label %773

773:                                              ; preds = %772
  %774 = load i32, ptr %38, align 4, !tbaa !5
  %775 = icmp ne i32 %774, 0
  br i1 %775, label %779, label %776

776:                                              ; preds = %773
  %777 = load i32, ptr %33, align 4, !tbaa !5
  %778 = icmp sgt i32 %777, 0
  br label %779

779:                                              ; preds = %776, %773
  %780 = phi i1 [ false, %773 ], [ %778, %776 ]
  br i1 %780, label %752, label %781, !llvm.loop !19

781:                                              ; preds = %779
  %782 = load i32, ptr %33, align 4, !tbaa !5
  %783 = sub nsw i32 21, %782
  store i32 %783, ptr @minikey_n_limit, align 4, !tbaa !5
  br label %795

784:                                              ; preds = %731
  %785 = load i32, ptr @FLAGBITRANGE, align 4, !tbaa !5
  %786 = icmp ne i32 %785, 0
  br i1 %786, label %787, label %791

787:                                              ; preds = %784
  %788 = load i32, ptr @bitrange, align 4, !tbaa !5
  %789 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.140, i32 noundef %788)
          to label %790 unwind label %137

790:                                              ; preds = %787
  br label %794

791:                                              ; preds = %784
  %792 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.141)
          to label %793 unwind label %137

793:                                              ; preds = %791
  br label %794

794:                                              ; preds = %793, %790
  br label %795

795:                                              ; preds = %794, %781
  %796 = load i32, ptr @FLAGMODE, align 4, !tbaa !5
  %797 = icmp ne i32 %796, 5
  br i1 %797, label %798, label %811

798:                                              ; preds = %795
  %799 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start)
          to label %800 unwind label %137

800:                                              ; preds = %798
  store ptr %799, ptr %12, align 8, !tbaa !9
  %801 = load ptr, ptr %12, align 8, !tbaa !9
  %802 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.142, ptr noundef %801)
          to label %803 unwind label %137

803:                                              ; preds = %800
  %804 = load ptr, ptr %12, align 8, !tbaa !9
  call void @free(ptr noundef %804) #14
  %805 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16) @n_range_end)
          to label %806 unwind label %137

806:                                              ; preds = %803
  store ptr %805, ptr %12, align 8, !tbaa !9
  %807 = load ptr, ptr %12, align 8, !tbaa !9
  %808 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.143, ptr noundef %807)
          to label %809 unwind label %137

809:                                              ; preds = %806
  %810 = load ptr, ptr %12, align 8, !tbaa !9
  call void @free(ptr noundef %810) #14
  br label %811

811:                                              ; preds = %809, %795
  %812 = load i32, ptr @FLAGMODE, align 4, !tbaa !5
  switch i32 %812, label %829 [
    i32 5, label %813
    i32 4, label %813
    i32 3, label %813
    i32 1, label %813
    i32 0, label %813
    i32 6, label %821
  ]

813:                                              ; preds = %811, %811, %811, %811, %811
  %814 = load ptr, ptr %11, align 8, !tbaa !9
  %815 = invoke noundef zeroext i1 @_Z15readFileAddressPc(ptr noundef %814)
          to label %816 unwind label %137

816:                                              ; preds = %813
  br i1 %815, label %820, label %817

817:                                              ; preds = %816
  %818 = load ptr, ptr @stderr, align 8, !tbaa !9
  %819 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %818, ptr noundef @.str.144) #14
  call void @exit(i32 noundef 1) #17
  unreachable

820:                                              ; preds = %816
  br label %829

821:                                              ; preds = %811
  %822 = load ptr, ptr %11, align 8, !tbaa !9
  %823 = invoke noundef zeroext i1 @_Z14readFileVanityPc(ptr noundef %822)
          to label %824 unwind label %137

824:                                              ; preds = %821
  br i1 %823, label %828, label %825

825:                                              ; preds = %824
  %826 = load ptr, ptr @stderr, align 8, !tbaa !9
  %827 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %826, ptr noundef @.str.144) #14
  call void @exit(i32 noundef 1) #17
  unreachable

828:                                              ; preds = %824
  br label %829

829:                                              ; preds = %828, %820, %811
  %830 = load i32, ptr @FLAGMODE, align 4, !tbaa !5
  %831 = icmp ne i32 %830, 6
  br i1 %831, label %832, label %846

832:                                              ; preds = %829
  %833 = load i32, ptr @FLAGREADEDFILE1, align 4, !tbaa !5
  %834 = icmp ne i32 %833, 0
  br i1 %834, label %846, label %835

835:                                              ; preds = %832
  %836 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.145)
          to label %837 unwind label %137

837:                                              ; preds = %835
  %838 = load ptr, ptr @addressTable, align 8, !tbaa !9
  %839 = load i64, ptr @N, align 8, !tbaa !17
  invoke void @_Z5_sortP13address_valuel(ptr noundef %838, i64 noundef %839)
          to label %840 unwind label %137

840:                                              ; preds = %837
  %841 = load i64, ptr @N, align 8, !tbaa !17
  %842 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.146, i64 noundef %841)
          to label %843 unwind label %137

843:                                              ; preds = %840
  %844 = load ptr, ptr %11, align 8, !tbaa !9
  invoke void @_Z17writeFileIfNeededPKc(ptr noundef %844)
          to label %845 unwind label %137

845:                                              ; preds = %843
  br label %846

846:                                              ; preds = %845, %832, %829
  br label %847

847:                                              ; preds = %846, %689
  %848 = load i32, ptr @FLAGMODE, align 4, !tbaa !5
  %849 = icmp eq i32 %848, 2
  br i1 %849, label %850, label %3501

850:                                              ; preds = %847
  %851 = load ptr, ptr %11, align 8, !tbaa !9
  %852 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.147, ptr noundef %851)
          to label %853 unwind label %137

853:                                              ; preds = %850
  %854 = load ptr, ptr %11, align 8, !tbaa !9
  %855 = invoke noalias ptr @fopen(ptr noundef %854, ptr noundef @.str.148)
          to label %856 unwind label %137

856:                                              ; preds = %853
  store ptr %855, ptr %23, align 8, !tbaa !9
  %857 = load ptr, ptr %23, align 8, !tbaa !9
  %858 = icmp eq ptr %857, null
  br i1 %858, label %859, label %863

859:                                              ; preds = %856
  %860 = load ptr, ptr @stderr, align 8, !tbaa !9
  %861 = load ptr, ptr %11, align 8, !tbaa !9
  %862 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %860, ptr noundef @.str.149, ptr noundef %861) #14
  call void @exit(i32 noundef 1) #17
  unreachable

863:                                              ; preds = %856
  %864 = call noalias ptr @malloc(i64 noundef 1024) #19
  store ptr %864, ptr %13, align 8, !tbaa !9
  %865 = load ptr, ptr %13, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %865, ptr noundef @.str.80, ptr noundef @.str.81, ptr noundef @.str.150, i32 noundef 975)
          to label %866 unwind label %137

866:                                              ; preds = %863
  br label %867

867:                                              ; preds = %898, %866
  %868 = load ptr, ptr %23, align 8, !tbaa !9
  %869 = call i32 @feof(ptr noundef %868) #14
  %870 = icmp ne i32 %869, 0
  %871 = xor i1 %870, true
  br i1 %871, label %872, label %899

872:                                              ; preds = %867
  %873 = load ptr, ptr %13, align 8, !tbaa !9
  %874 = load ptr, ptr %23, align 8, !tbaa !9
  %875 = invoke ptr @fgets(ptr noundef %873, i32 noundef 1022, ptr noundef %874)
          to label %876 unwind label %137

876:                                              ; preds = %872
  %877 = load ptr, ptr %13, align 8, !tbaa !9
  %878 = icmp eq ptr %875, %877
  br i1 %878, label %879, label %898

879:                                              ; preds = %876
  %880 = load ptr, ptr %13, align 8, !tbaa !9
  %881 = invoke noundef ptr @_Z4trimPcPKc(ptr noundef %880, ptr noundef @.str.151)
          to label %882 unwind label %137

882:                                              ; preds = %879
  %883 = load ptr, ptr %13, align 8, !tbaa !9
  %884 = call i64 @strlen(ptr noundef %883) #18
  %885 = icmp uge i64 %884, 128
  br i1 %885, label %886, label %889

886:                                              ; preds = %882
  %887 = load i64, ptr @N, align 8, !tbaa !17
  %888 = add i64 %887, 1
  store i64 %888, ptr @N, align 8, !tbaa !17
  br label %897

889:                                              ; preds = %882
  %890 = load ptr, ptr %13, align 8, !tbaa !9
  %891 = call i64 @strlen(ptr noundef %890) #18
  %892 = icmp uge i64 %891, 66
  br i1 %892, label %893, label %896

893:                                              ; preds = %889
  %894 = load i64, ptr @N, align 8, !tbaa !17
  %895 = add i64 %894, 1
  store i64 %895, ptr @N, align 8, !tbaa !17
  br label %896

896:                                              ; preds = %893, %889
  br label %897

897:                                              ; preds = %896, %886
  br label %898

898:                                              ; preds = %897, %876
  br label %867, !llvm.loop !20

899:                                              ; preds = %867
  %900 = load i64, ptr @N, align 8, !tbaa !17
  %901 = icmp eq i64 %900, 0
  br i1 %901, label %902, label %905

902:                                              ; preds = %899
  %903 = load ptr, ptr @stderr, align 8, !tbaa !9
  %904 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %903, ptr noundef @.str.152) #14
  call void @exit(i32 noundef 1) #17
  unreachable

905:                                              ; preds = %899
  %906 = load i64, ptr @N, align 8, !tbaa !17
  %907 = call noalias ptr @calloc(i64 noundef %906, i64 noundef 4) #20
  store ptr %907, ptr @bsgs_found, align 8, !tbaa !9
  %908 = load ptr, ptr @bsgs_found, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %908, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.153, i32 noundef 993)
          to label %909 unwind label %137

909:                                              ; preds = %905
  %910 = load i64, ptr @N, align 8, !tbaa !17
  %911 = load ptr, ptr @secp, align 8, !tbaa !9
  %912 = getelementptr inbounds %class.Secp256K1, ptr %911, i32 0, i32 0
  invoke void @_ZNSt6vectorI5PointSaIS0_EE6resizeEmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) @OriginalPointsBSGS, i64 noundef %910, ptr noundef nonnull align 8 dereferenceable(48) %912)
          to label %913 unwind label %137

913:                                              ; preds = %909
  %914 = load i64, ptr @N, align 8, !tbaa !17
  %915 = mul i64 %914, 1
  %916 = call noalias ptr @malloc(i64 noundef %915) #19
  store ptr %916, ptr @OriginalPointsBSGScompressed, align 8, !tbaa !9
  %917 = load ptr, ptr @OriginalPointsBSGScompressed, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %917, ptr noundef @.str.80, ptr noundef @.str.81, ptr noundef @.str.154, i32 noundef 996)
          to label %918 unwind label %137

918:                                              ; preds = %913
  %919 = call noalias ptr @malloc(i64 noundef 65) #19
  store ptr %919, ptr %15, align 8, !tbaa !9
  %920 = load ptr, ptr %15, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %920, ptr noundef @.str.80, ptr noundef @.str.81, ptr noundef @.str.155, i32 noundef 998)
          to label %921 unwind label %137

921:                                              ; preds = %918
  %922 = call noalias ptr @malloc(i64 noundef 65) #19
  store ptr %922, ptr %16, align 8, !tbaa !9
  %923 = load ptr, ptr %16, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %923, ptr noundef @.str.80, ptr noundef @.str.81, ptr noundef @.str.156, i32 noundef 1000)
          to label %924 unwind label %137

924:                                              ; preds = %921
  %925 = load ptr, ptr %23, align 8, !tbaa !9
  %926 = invoke i32 @fseek(ptr noundef %925, i64 noundef 0, i32 noundef 0)
          to label %927 unwind label %137

927:                                              ; preds = %924
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %928

928:                                              ; preds = %1003, %927
  %929 = load ptr, ptr %23, align 8, !tbaa !9
  %930 = call i32 @feof(ptr noundef %929) #14
  %931 = icmp ne i32 %930, 0
  %932 = xor i1 %931, true
  br i1 %932, label %933, label %1004

933:                                              ; preds = %928
  %934 = load ptr, ptr %13, align 8, !tbaa !9
  %935 = load ptr, ptr %23, align 8, !tbaa !9
  %936 = invoke ptr @fgets(ptr noundef %934, i32 noundef 1022, ptr noundef %935)
          to label %937 unwind label %137

937:                                              ; preds = %933
  %938 = load ptr, ptr %13, align 8, !tbaa !9
  %939 = icmp eq ptr %936, %938
  br i1 %939, label %940, label %1003

940:                                              ; preds = %937
  %941 = load ptr, ptr %13, align 8, !tbaa !9
  %942 = invoke noundef ptr @_Z4trimPcPKc(ptr noundef %941, ptr noundef @.str.151)
          to label %943 unwind label %137

943:                                              ; preds = %940
  %944 = load ptr, ptr %13, align 8, !tbaa !9
  %945 = call i64 @strlen(ptr noundef %944) #18
  %946 = icmp uge i64 %945, 66
  br i1 %946, label %947, label %1002

947:                                              ; preds = %943
  %948 = load ptr, ptr %13, align 8, !tbaa !9
  invoke void @_Z15stringtokenizerPcP13str_tokenizer(ptr noundef %948, ptr noundef %10)
          to label %949 unwind label %137

949:                                              ; preds = %947
  %950 = invoke noundef ptr @_Z9nextTokenP13str_tokenizer(ptr noundef %10)
          to label %951 unwind label %137

951:                                              ; preds = %949
  store ptr %950, ptr %14, align 8, !tbaa !9
  %952 = load ptr, ptr %15, align 8, !tbaa !9
  call void @llvm.memset.p0.i64(ptr align 1 %952, i8 0, i64 65, i1 false)
  %953 = load ptr, ptr %16, align 8, !tbaa !9
  call void @llvm.memset.p0.i64(ptr align 1 %953, i8 0, i64 65, i1 false)
  %954 = load ptr, ptr %14, align 8, !tbaa !9
  %955 = call i64 @strlen(ptr noundef %954) #18
  switch i64 %955, label %994 [
    i64 66, label %956
    i64 130, label %975
  ]

956:                                              ; preds = %951
  %957 = load ptr, ptr @secp, align 8, !tbaa !9
  %958 = load ptr, ptr %14, align 8, !tbaa !9
  %959 = load i32, ptr %33, align 4, !tbaa !5
  %960 = sext i32 %959 to i64
  %961 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @OriginalPointsBSGS, i64 noundef %960) #14
  %962 = load ptr, ptr @OriginalPointsBSGScompressed, align 8, !tbaa !9
  %963 = load i32, ptr %33, align 4, !tbaa !5
  %964 = sext i32 %963 to i64
  %965 = getelementptr inbounds i8, ptr %962, i64 %964
  %966 = invoke noundef zeroext i1 @_ZN9Secp256K117ParsePublicKeyHexEPcR5PointRb(ptr noundef nonnull align 8 dereferenceable(393296) %957, ptr noundef %958, ptr noundef nonnull align 8 dereferenceable(48) %961, ptr noundef nonnull align 1 dereferenceable(1) %965)
          to label %967 unwind label %137

967:                                              ; preds = %956
  br i1 %966, label %968, label %971

968:                                              ; preds = %967
  %969 = load i32, ptr %33, align 4, !tbaa !5
  %970 = add nsw i32 %969, 1
  store i32 %970, ptr %33, align 4, !tbaa !5
  br label %974

971:                                              ; preds = %967
  %972 = load i64, ptr @N, align 8, !tbaa !17
  %973 = add i64 %972, -1
  store i64 %973, ptr @N, align 8, !tbaa !17
  br label %974

974:                                              ; preds = %971, %968
  br label %1000

975:                                              ; preds = %951
  %976 = load ptr, ptr @secp, align 8, !tbaa !9
  %977 = load ptr, ptr %14, align 8, !tbaa !9
  %978 = load i32, ptr %33, align 4, !tbaa !5
  %979 = sext i32 %978 to i64
  %980 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @OriginalPointsBSGS, i64 noundef %979) #14
  %981 = load ptr, ptr @OriginalPointsBSGScompressed, align 8, !tbaa !9
  %982 = load i32, ptr %33, align 4, !tbaa !5
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds i8, ptr %981, i64 %983
  %985 = invoke noundef zeroext i1 @_ZN9Secp256K117ParsePublicKeyHexEPcR5PointRb(ptr noundef nonnull align 8 dereferenceable(393296) %976, ptr noundef %977, ptr noundef nonnull align 8 dereferenceable(48) %980, ptr noundef nonnull align 1 dereferenceable(1) %984)
          to label %986 unwind label %137

986:                                              ; preds = %975
  br i1 %985, label %987, label %990

987:                                              ; preds = %986
  %988 = load i32, ptr %33, align 4, !tbaa !5
  %989 = add nsw i32 %988, 1
  store i32 %989, ptr %33, align 4, !tbaa !5
  br label %993

990:                                              ; preds = %986
  %991 = load i64, ptr @N, align 8, !tbaa !17
  %992 = add i64 %991, -1
  store i64 %992, ptr @N, align 8, !tbaa !17
  br label %993

993:                                              ; preds = %990, %987
  br label %1000

994:                                              ; preds = %951
  %995 = load ptr, ptr %14, align 8, !tbaa !9
  %996 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.157, ptr noundef %995)
          to label %997 unwind label %137

997:                                              ; preds = %994
  %998 = load i64, ptr @N, align 8, !tbaa !17
  %999 = add i64 %998, -1
  store i64 %999, ptr @N, align 8, !tbaa !17
  br label %1000

1000:                                             ; preds = %997, %993, %974
  invoke void @_Z13freetokenizerP13str_tokenizer(ptr noundef %10)
          to label %1001 unwind label %137

1001:                                             ; preds = %1000
  br label %1002

1002:                                             ; preds = %1001, %943
  br label %1003

1003:                                             ; preds = %1002, %937
  br label %928, !llvm.loop !21

1004:                                             ; preds = %928
  %1005 = load ptr, ptr %23, align 8, !tbaa !9
  %1006 = invoke i32 @fclose(ptr noundef %1005)
          to label %1007 unwind label %137

1007:                                             ; preds = %1004
  %1008 = load i64, ptr @N, align 8, !tbaa !17
  %1009 = trunc i64 %1008 to i32
  store i32 %1009, ptr @bsgs_point_number, align 4, !tbaa !5
  %1010 = load i32, ptr @bsgs_point_number, align 4, !tbaa !5
  %1011 = icmp ugt i32 %1010, 0
  br i1 %1011, label %1012, label %1016

1012:                                             ; preds = %1007
  %1013 = load i32, ptr @bsgs_point_number, align 4, !tbaa !5
  %1014 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.158, i32 noundef %1013)
          to label %1015 unwind label %137

1015:                                             ; preds = %1012
  br label %1019

1016:                                             ; preds = %1007
  %1017 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1018 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1017, ptr noundef @.str.159) #14
  call void @exit(i32 noundef 1) #17
  unreachable

1019:                                             ; preds = %1015
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N, i32 noundef 0)
          to label %1020 unwind label %137

1020:                                             ; preds = %1019
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M, i32 noundef 0)
          to label %1021 unwind label %137

1021:                                             ; preds = %1020
  %1022 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  invoke void @_ZN3Int8SetInt64Em(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M, i64 noundef %1022)
          to label %1023 unwind label %137

1023:                                             ; preds = %1021
  %1024 = load i32, ptr @FLAG_N, align 4, !tbaa !5
  %1025 = icmp ne i32 %1024, 0
  br i1 %1025, label %1026, label %1046

1026:                                             ; preds = %1023
  %1027 = load ptr, ptr @str_N, align 8, !tbaa !9
  %1028 = getelementptr inbounds i8, ptr %1027, i64 0
  %1029 = load i8, ptr %1028, align 1, !tbaa !11
  %1030 = sext i8 %1029 to i32
  %1031 = icmp eq i32 %1030, 48
  br i1 %1031, label %1032, label %1042

1032:                                             ; preds = %1026
  %1033 = load ptr, ptr @str_N, align 8, !tbaa !9
  %1034 = getelementptr inbounds i8, ptr %1033, i64 1
  %1035 = load i8, ptr %1034, align 1, !tbaa !11
  %1036 = sext i8 %1035 to i32
  %1037 = icmp eq i32 %1036, 120
  br i1 %1037, label %1038, label %1042

1038:                                             ; preds = %1032
  %1039 = load ptr, ptr @str_N, align 8, !tbaa !9
  %1040 = getelementptr inbounds i8, ptr %1039, i64 2
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N, ptr noundef %1040)
          to label %1041 unwind label %137

1041:                                             ; preds = %1038
  br label %1045

1042:                                             ; preds = %1032, %1026
  %1043 = load ptr, ptr @str_N, align 8, !tbaa !9
  invoke void @_ZN3Int9SetBase10EPKc(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N, ptr noundef %1043)
          to label %1044 unwind label %137

1044:                                             ; preds = %1042
  br label %1045

1045:                                             ; preds = %1044, %1041
  br label %1048

1046:                                             ; preds = %1023
  invoke void @_ZN3Int8SetInt64Em(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N, i64 noundef 17592186044416)
          to label %1047 unwind label %137

1047:                                             ; preds = %1046
  br label %1048

1048:                                             ; preds = %1047, %1045
  %1049 = invoke noundef zeroext i1 @_ZN3Int7HasSqrtEv(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N)
          to label %1050 unwind label %137

1050:                                             ; preds = %1048
  br i1 %1049, label %1051, label %1054

1051:                                             ; preds = %1050
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M, ptr noundef @BSGS_N)
          to label %1052 unwind label %137

1052:                                             ; preds = %1051
  invoke void @_ZN3Int7ModSqrtEv(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M)
          to label %1053 unwind label %137

1053:                                             ; preds = %1052
  br label %1057

1054:                                             ; preds = %1050
  %1055 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1056 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1055, ptr noundef @.str.160) #14
  call void @exit(i32 noundef 1) #17
  unreachable

1057:                                             ; preds = %1053
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_AUX, ptr noundef @BSGS_M)
          to label %1058 unwind label %137

1058:                                             ; preds = %1057
  invoke void @_ZN3Int3ModEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_AUX, ptr noundef @BSGS_GROUP_SIZE)
          to label %1059 unwind label %137

1059:                                             ; preds = %1058
  %1060 = invoke noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_AUX)
          to label %1061 unwind label %137

1061:                                             ; preds = %1059
  br i1 %1060, label %1068, label %1062

1062:                                             ; preds = %1061
  %1063 = invoke noundef ptr @_ZN3Int9GetBase10Ev(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_GROUP_SIZE)
          to label %1064 unwind label %137

1064:                                             ; preds = %1062
  store ptr %1063, ptr %12, align 8, !tbaa !9
  %1065 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1066 = load ptr, ptr %12, align 8, !tbaa !9
  %1067 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1065, ptr noundef @.str.161, ptr noundef %1066) #14
  call void @exit(i32 noundef 1) #17
  unreachable

1068:                                             ; preds = %1061
  %1069 = invoke noundef i64 @_ZN3Int8GetInt64Ev(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M)
          to label %1070 unwind label %137

1070:                                             ; preds = %1068
  store i64 %1069, ptr @bsgs_m, align 8, !tbaa !17
  %1071 = load i32, ptr @FLAGRANGE, align 4, !tbaa !5
  %1072 = icmp ne i32 %1071, 0
  br i1 %1072, label %1076, label %1073

1073:                                             ; preds = %1070
  %1074 = load i32, ptr @FLAGBITRANGE, align 4, !tbaa !5
  %1075 = icmp ne i32 %1074, 0
  br i1 %1075, label %1076, label %1105

1076:                                             ; preds = %1073, %1070
  %1077 = load i32, ptr @FLAGBITRANGE, align 4, !tbaa !5
  %1078 = icmp ne i32 %1077, 0
  br i1 %1078, label %1079, label %1095

1079:                                             ; preds = %1076
  %1080 = load ptr, ptr @bit_range_str_min, align 8, !tbaa !9
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef %1080)
          to label %1081 unwind label %137

1081:                                             ; preds = %1079
  %1082 = load ptr, ptr @bit_range_str_max, align 8, !tbaa !9
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @n_range_end, ptr noundef %1082)
          to label %1083 unwind label %137

1083:                                             ; preds = %1081
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef @n_range_end)
          to label %1084 unwind label %137

1084:                                             ; preds = %1083
  invoke void @_ZN3Int3SubEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef @n_range_start)
          to label %1085 unwind label %137

1085:                                             ; preds = %1084
  %1086 = load i32, ptr @bitrange, align 4, !tbaa !5
  %1087 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.140, i32 noundef %1086)
          to label %1088 unwind label %137

1088:                                             ; preds = %1085
  %1089 = load ptr, ptr @bit_range_str_min, align 8, !tbaa !9
  %1090 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.142, ptr noundef %1089)
          to label %1091 unwind label %137

1091:                                             ; preds = %1088
  %1092 = load ptr, ptr @bit_range_str_max, align 8, !tbaa !9
  %1093 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.143, ptr noundef %1092)
          to label %1094 unwind label %137

1094:                                             ; preds = %1091
  br label %1104

1095:                                             ; preds = %1076
  %1096 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.141)
          to label %1097 unwind label %137

1097:                                             ; preds = %1095
  %1098 = load ptr, ptr @range_start, align 8, !tbaa !9
  %1099 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.142, ptr noundef %1098)
          to label %1100 unwind label %137

1100:                                             ; preds = %1097
  %1101 = load ptr, ptr @range_end, align 8, !tbaa !9
  %1102 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.143, ptr noundef %1101)
          to label %1103 unwind label %137

1103:                                             ; preds = %1100
  br label %1104

1104:                                             ; preds = %1103, %1094
  br label %1112

1105:                                             ; preds = %1073
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, i32 noundef 1)
          to label %1106 unwind label %137

1106:                                             ; preds = %1105
  %1107 = load ptr, ptr @secp, align 8, !tbaa !9
  %1108 = getelementptr inbounds %class.Secp256K1, ptr %1107, i32 0, i32 2
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_end, ptr noundef %1108)
          to label %1109 unwind label %137

1109:                                             ; preds = %1106
  invoke void @_ZN3Int4RandEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef @n_range_start, ptr noundef @n_range_end)
          to label %1110 unwind label %137

1110:                                             ; preds = %1109
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef @n_range_diff)
          to label %1111 unwind label %137

1111:                                             ; preds = %1110
  br label %1112

1112:                                             ; preds = %1111, %1104
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_CURRENT, ptr noundef @n_range_start)
          to label %1113 unwind label %137

1113:                                             ; preds = %1112
  %1114 = invoke noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef @BSGS_N)
          to label %1115 unwind label %137

1115:                                             ; preds = %1113
  br i1 %1114, label %1116, label %1119

1116:                                             ; preds = %1115
  %1117 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1118 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1117, ptr noundef @.str.162) #14
  call void @exit(i32 noundef 1) #17
  unreachable

1119:                                             ; preds = %1115
  %1120 = load i32, ptr @KFACTOR, align 4, !tbaa !5
  %1121 = sext i32 %1120 to i64
  invoke void @_ZN3Int4MultEm(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M, i64 noundef %1121)
          to label %1122 unwind label %137

1122:                                             ; preds = %1119
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_AUX, i32 noundef 32)
          to label %1123 unwind label %137

1123:                                             ; preds = %1122
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R, ptr noundef @BSGS_M)
          to label %1124 unwind label %137

1124:                                             ; preds = %1123
  invoke void @_ZN3Int3ModEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R, ptr noundef @BSGS_AUX)
          to label %1125 unwind label %137

1125:                                             ; preds = %1124
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M2, ptr noundef @BSGS_M)
          to label %1126 unwind label %137

1126:                                             ; preds = %1125
  invoke void @_ZN3Int3DivEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M2, ptr noundef @BSGS_AUX, ptr noundef null)
          to label %1127 unwind label %137

1127:                                             ; preds = %1126
  %1128 = invoke noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R)
          to label %1129 unwind label %137

1129:                                             ; preds = %1127
  br i1 %1128, label %1132, label %1130

1130:                                             ; preds = %1129
  invoke void @_ZN3Int6AddOneEv(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M2)
          to label %1131 unwind label %137

1131:                                             ; preds = %1130
  br label %1132

1132:                                             ; preds = %1131, %1129
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M_double, i32 noundef 2)
          to label %1133 unwind label %137

1133:                                             ; preds = %1132
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M_double, ptr noundef @BSGS_M)
          to label %1134 unwind label %137

1134:                                             ; preds = %1133
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M2_double, i32 noundef 2)
          to label %1135 unwind label %137

1135:                                             ; preds = %1134
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M2_double, ptr noundef @BSGS_M2)
          to label %1136 unwind label %137

1136:                                             ; preds = %1135
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R, ptr noundef @BSGS_M2)
          to label %1137 unwind label %137

1137:                                             ; preds = %1136
  invoke void @_ZN3Int3ModEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R, ptr noundef @BSGS_AUX)
          to label %1138 unwind label %137

1138:                                             ; preds = %1137
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M3, ptr noundef @BSGS_M2)
          to label %1139 unwind label %137

1139:                                             ; preds = %1138
  invoke void @_ZN3Int3DivEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M3, ptr noundef @BSGS_AUX, ptr noundef null)
          to label %1140 unwind label %137

1140:                                             ; preds = %1139
  %1141 = invoke noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R)
          to label %1142 unwind label %137

1142:                                             ; preds = %1140
  br i1 %1141, label %1145, label %1143

1143:                                             ; preds = %1142
  invoke void @_ZN3Int6AddOneEv(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M3)
          to label %1144 unwind label %137

1144:                                             ; preds = %1143
  br label %1145

1145:                                             ; preds = %1144, %1142
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M3_double, i32 noundef 2)
          to label %1146 unwind label %137

1146:                                             ; preds = %1145
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M3_double, ptr noundef @BSGS_M3)
          to label %1147 unwind label %137

1147:                                             ; preds = %1146
  %1148 = invoke noundef i64 @_ZN3Int8GetInt64Ev(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M2)
          to label %1149 unwind label %137

1149:                                             ; preds = %1147
  store i64 %1148, ptr @bsgs_m2, align 8, !tbaa !17
  %1150 = invoke noundef i64 @_ZN3Int8GetInt64Ev(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M3)
          to label %1151 unwind label %137

1151:                                             ; preds = %1149
  store i64 %1150, ptr @bsgs_m3, align 8, !tbaa !17
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_AUX, ptr noundef @BSGS_N)
          to label %1152 unwind label %137

1152:                                             ; preds = %1151
  invoke void @_ZN3Int3DivEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_AUX, ptr noundef @BSGS_M, ptr noundef null)
          to label %1153 unwind label %137

1153:                                             ; preds = %1152
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R, ptr noundef @BSGS_N)
          to label %1154 unwind label %137

1154:                                             ; preds = %1153
  invoke void @_ZN3Int3ModEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R, ptr noundef @BSGS_M)
          to label %1155 unwind label %137

1155:                                             ; preds = %1154
  %1156 = invoke noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R)
          to label %1157 unwind label %137

1157:                                             ; preds = %1155
  br i1 %1156, label %1161, label %1158

1158:                                             ; preds = %1157
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N, ptr noundef @BSGS_M)
          to label %1159 unwind label %137

1159:                                             ; preds = %1158
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N, ptr noundef @BSGS_AUX)
          to label %1160 unwind label %137

1160:                                             ; preds = %1159
  br label %1161

1161:                                             ; preds = %1160, %1157
  %1162 = invoke noundef i64 @_ZN3Int8GetInt64Ev(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M)
          to label %1163 unwind label %137

1163:                                             ; preds = %1161
  store i64 %1162, ptr @bsgs_m, align 8, !tbaa !17
  %1164 = invoke noundef i64 @_ZN3Int8GetInt64Ev(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_AUX)
          to label %1165 unwind label %137

1165:                                             ; preds = %1163
  store i64 %1164, ptr @bsgs_aux, align 8, !tbaa !17
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N_double, i32 noundef 2)
          to label %1166 unwind label %137

1166:                                             ; preds = %1165
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N_double, ptr noundef @BSGS_N)
          to label %1167 unwind label %137

1167:                                             ; preds = %1166
  %1168 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N)
          to label %1169 unwind label %137

1169:                                             ; preds = %1167
  store ptr %1168, ptr %12, align 8, !tbaa !9
  %1170 = load ptr, ptr %12, align 8, !tbaa !9
  %1171 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.163, ptr noundef %1170)
          to label %1172 unwind label %137

1172:                                             ; preds = %1169
  %1173 = load ptr, ptr %12, align 8, !tbaa !9
  call void @free(ptr noundef %1173) #14
  %1174 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %1175 = udiv i64 %1174, 256
  %1176 = icmp ugt i64 %1175, 10000
  br i1 %1176, label %1177, label %1187

1177:                                             ; preds = %1172
  %1178 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %1179 = udiv i64 %1178, 256
  store i64 %1179, ptr %29, align 8, !tbaa !17
  %1180 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %1181 = urem i64 %1180, 256
  %1182 = icmp ne i64 %1181, 0
  br i1 %1182, label %1183, label %1186

1183:                                             ; preds = %1177
  %1184 = load i64, ptr %29, align 8, !tbaa !17
  %1185 = add i64 %1184, 1
  store i64 %1185, ptr %29, align 8, !tbaa !17
  br label %1186

1186:                                             ; preds = %1183, %1177
  br label %1188

1187:                                             ; preds = %1172
  store i64 1000, ptr %29, align 8, !tbaa !17
  br label %1188

1188:                                             ; preds = %1187, %1186
  %1189 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %1190 = udiv i64 %1189, 256
  %1191 = icmp ugt i64 %1190, 1000
  br i1 %1191, label %1192, label %1202

1192:                                             ; preds = %1188
  %1193 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %1194 = udiv i64 %1193, 256
  store i64 %1194, ptr %30, align 8, !tbaa !17
  %1195 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %1196 = urem i64 %1195, 256
  %1197 = icmp ne i64 %1196, 0
  br i1 %1197, label %1198, label %1201

1198:                                             ; preds = %1192
  %1199 = load i64, ptr %30, align 8, !tbaa !17
  %1200 = add i64 %1199, 1
  store i64 %1200, ptr %30, align 8, !tbaa !17
  br label %1201

1201:                                             ; preds = %1198, %1192
  br label %1203

1202:                                             ; preds = %1188
  store i64 1000, ptr %30, align 8, !tbaa !17
  br label %1203

1203:                                             ; preds = %1202, %1201
  %1204 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %1205 = udiv i64 %1204, 256
  %1206 = icmp ugt i64 %1205, 1000
  br i1 %1206, label %1207, label %1217

1207:                                             ; preds = %1203
  %1208 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %1209 = udiv i64 %1208, 256
  store i64 %1209, ptr %31, align 8, !tbaa !17
  %1210 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %1211 = urem i64 %1210, 256
  %1212 = icmp ne i64 %1211, 0
  br i1 %1212, label %1213, label %1216

1213:                                             ; preds = %1207
  %1214 = load i64, ptr %31, align 8, !tbaa !17
  %1215 = add i64 %1214, 1
  store i64 %1215, ptr %31, align 8, !tbaa !17
  br label %1216

1216:                                             ; preds = %1213, %1207
  br label %1218

1217:                                             ; preds = %1203
  store i64 1000, ptr %31, align 8, !tbaa !17
  br label %1218

1218:                                             ; preds = %1217, %1216
  %1219 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %1220 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.164, i64 noundef %1219)
          to label %1221 unwind label %137

1221:                                             ; preds = %1218
  %1222 = call noalias ptr @calloc(i64 noundef 256, i64 noundef 80) #20
  store ptr %1222, ptr @bloom_bP, align 8, !tbaa !9
  %1223 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1223, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.165, i32 noundef 1220)
          to label %1224 unwind label %137

1224:                                             ; preds = %1221
  %1225 = call noalias ptr @calloc(i64 noundef 256, i64 noundef 64) #20
  store ptr %1225, ptr @bloom_bP_checksums, align 8, !tbaa !9
  %1226 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1226, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.166, i32 noundef 1222)
          to label %1227 unwind label %137

1227:                                             ; preds = %1224
  %1228 = call noalias ptr @calloc(i64 noundef 256, i64 noundef 40) #20
  store ptr %1228, ptr @bloom_bP_mutex, align 8, !tbaa !9
  %1229 = load ptr, ptr @bloom_bP_mutex, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1229, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.167, i32 noundef 1230)
          to label %1230 unwind label %137

1230:                                             ; preds = %1227
  %1231 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1232 = invoke i32 @fflush(ptr noundef %1231)
          to label %1233 unwind label %137

1233:                                             ; preds = %1230
  store i64 0, ptr @bloom_bP_totalbytes, align 8, !tbaa !17
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %1234

1234:                                             ; preds = %1264, %1233
  %1235 = load i32, ptr %33, align 4, !tbaa !5
  %1236 = icmp slt i32 %1235, 256
  br i1 %1236, label %1237, label %1267

1237:                                             ; preds = %1234
  %1238 = load ptr, ptr @bloom_bP_mutex, align 8, !tbaa !9
  %1239 = load i32, ptr %33, align 4, !tbaa !5
  %1240 = sext i32 %1239 to i64
  %1241 = getelementptr inbounds %union.pthread_mutex_t, ptr %1238, i64 %1240
  %1242 = call i32 @pthread_mutex_init(ptr noundef %1241, ptr noundef null) #14
  %1243 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %1244 = load i32, ptr %33, align 4, !tbaa !5
  %1245 = sext i32 %1244 to i64
  %1246 = getelementptr inbounds %struct.bloom, ptr %1243, i64 %1245
  %1247 = load i64, ptr %29, align 8, !tbaa !17
  %1248 = invoke i32 @bloom_init2(ptr noundef %1246, i64 noundef %1247, x86_fp80 noundef 0xK3FEB8637BD05AF6C6800)
          to label %1249 unwind label %137

1249:                                             ; preds = %1237
  %1250 = icmp eq i32 %1248, 1
  br i1 %1250, label %1251, label %1255

1251:                                             ; preds = %1249
  %1252 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1253 = load i32, ptr %33, align 4, !tbaa !5
  %1254 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1252, ptr noundef @.str.168, i32 noundef %1253) #14
  call void @exit(i32 noundef 1) #17
  unreachable

1255:                                             ; preds = %1249
  %1256 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %1257 = load i32, ptr %33, align 4, !tbaa !5
  %1258 = sext i32 %1257 to i64
  %1259 = getelementptr inbounds %struct.bloom, ptr %1256, i64 %1258
  %1260 = getelementptr inbounds %struct.bloom, ptr %1259, i32 0, i32 2
  %1261 = load i64, ptr %1260, align 16, !tbaa !22
  %1262 = load i64, ptr @bloom_bP_totalbytes, align 8, !tbaa !17
  %1263 = add i64 %1262, %1261
  store i64 %1263, ptr @bloom_bP_totalbytes, align 8, !tbaa !17
  br label %1264

1264:                                             ; preds = %1255
  %1265 = load i32, ptr %33, align 4, !tbaa !5
  %1266 = add nsw i32 %1265, 1
  store i32 %1266, ptr %33, align 4, !tbaa !5
  br label %1234, !llvm.loop !26

1267:                                             ; preds = %1234
  %1268 = load i64, ptr @bloom_bP_totalbytes, align 8, !tbaa !17
  %1269 = uitofp i64 %1268 to float
  %1270 = fdiv float %1269, 0x4130000000000000
  %1271 = fpext float %1270 to double
  %1272 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.169, double noundef %1271)
          to label %1273 unwind label %137

1273:                                             ; preds = %1267
  %1274 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %1275 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.164, i64 noundef %1274)
          to label %1276 unwind label %137

1276:                                             ; preds = %1273
  %1277 = call noalias ptr @calloc(i64 noundef 256, i64 noundef 40) #20
  store ptr %1277, ptr @bloom_bPx2nd_mutex, align 8, !tbaa !9
  %1278 = load ptr, ptr @bloom_bPx2nd_mutex, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1278, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.170, i32 noundef 1258)
          to label %1279 unwind label %137

1279:                                             ; preds = %1276
  %1280 = call noalias ptr @calloc(i64 noundef 256, i64 noundef 80) #20
  store ptr %1280, ptr @bloom_bPx2nd, align 8, !tbaa !9
  %1281 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1281, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.171, i32 noundef 1260)
          to label %1282 unwind label %137

1282:                                             ; preds = %1279
  %1283 = call noalias ptr @calloc(i64 noundef 256, i64 noundef 64) #20
  store ptr %1283, ptr @bloom_bPx2nd_checksums, align 8, !tbaa !9
  %1284 = load ptr, ptr @bloom_bPx2nd_checksums, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1284, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.172, i32 noundef 1262)
          to label %1285 unwind label %137

1285:                                             ; preds = %1282
  store i64 0, ptr @bloom_bP2_totalbytes, align 8, !tbaa !17
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %1286

1286:                                             ; preds = %1316, %1285
  %1287 = load i32, ptr %33, align 4, !tbaa !5
  %1288 = icmp slt i32 %1287, 256
  br i1 %1288, label %1289, label %1319

1289:                                             ; preds = %1286
  %1290 = load ptr, ptr @bloom_bPx2nd_mutex, align 8, !tbaa !9
  %1291 = load i32, ptr %33, align 4, !tbaa !5
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds %union.pthread_mutex_t, ptr %1290, i64 %1292
  %1294 = call i32 @pthread_mutex_init(ptr noundef %1293, ptr noundef null) #14
  %1295 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !9
  %1296 = load i32, ptr %33, align 4, !tbaa !5
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds %struct.bloom, ptr %1295, i64 %1297
  %1299 = load i64, ptr %30, align 8, !tbaa !17
  %1300 = invoke i32 @bloom_init2(ptr noundef %1298, i64 noundef %1299, x86_fp80 noundef 0xK3FEB8637BD05AF6C6800)
          to label %1301 unwind label %137

1301:                                             ; preds = %1289
  %1302 = icmp eq i32 %1300, 1
  br i1 %1302, label %1303, label %1307

1303:                                             ; preds = %1301
  %1304 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1305 = load i32, ptr %33, align 4, !tbaa !5
  %1306 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1304, ptr noundef @.str.168, i32 noundef %1305) #14
  call void @exit(i32 noundef 1) #17
  unreachable

1307:                                             ; preds = %1301
  %1308 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !9
  %1309 = load i32, ptr %33, align 4, !tbaa !5
  %1310 = sext i32 %1309 to i64
  %1311 = getelementptr inbounds %struct.bloom, ptr %1308, i64 %1310
  %1312 = getelementptr inbounds %struct.bloom, ptr %1311, i32 0, i32 2
  %1313 = load i64, ptr %1312, align 16, !tbaa !22
  %1314 = load i64, ptr @bloom_bP2_totalbytes, align 8, !tbaa !17
  %1315 = add i64 %1314, %1313
  store i64 %1315, ptr @bloom_bP2_totalbytes, align 8, !tbaa !17
  br label %1316

1316:                                             ; preds = %1307
  %1317 = load i32, ptr %33, align 4, !tbaa !5
  %1318 = add nsw i32 %1317, 1
  store i32 %1318, ptr %33, align 4, !tbaa !5
  br label %1286, !llvm.loop !27

1319:                                             ; preds = %1286
  %1320 = load i64, ptr @bloom_bP2_totalbytes, align 8, !tbaa !17
  %1321 = uitofp i64 %1320 to float
  %1322 = fdiv float %1321, 0x4130000000000000
  %1323 = fpext float %1322 to double
  %1324 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.169, double noundef %1323)
          to label %1325 unwind label %137

1325:                                             ; preds = %1319
  %1326 = call noalias ptr @calloc(i64 noundef 256, i64 noundef 40) #20
  store ptr %1326, ptr @bloom_bPx3rd_mutex, align 8, !tbaa !9
  %1327 = load ptr, ptr @bloom_bPx3rd_mutex, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1327, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.173, i32 noundef 1285)
          to label %1328 unwind label %137

1328:                                             ; preds = %1325
  %1329 = call noalias ptr @calloc(i64 noundef 256, i64 noundef 80) #20
  store ptr %1329, ptr @bloom_bPx3rd, align 8, !tbaa !9
  %1330 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1330, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.174, i32 noundef 1287)
          to label %1331 unwind label %137

1331:                                             ; preds = %1328
  %1332 = call noalias ptr @calloc(i64 noundef 256, i64 noundef 64) #20
  store ptr %1332, ptr @bloom_bPx3rd_checksums, align 8, !tbaa !9
  %1333 = load ptr, ptr @bloom_bPx3rd_checksums, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1333, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.175, i32 noundef 1289)
          to label %1334 unwind label %137

1334:                                             ; preds = %1331
  %1335 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %1336 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.164, i64 noundef %1335)
          to label %1337 unwind label %137

1337:                                             ; preds = %1334
  store i64 0, ptr @bloom_bP3_totalbytes, align 8, !tbaa !17
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %1338

1338:                                             ; preds = %1368, %1337
  %1339 = load i32, ptr %33, align 4, !tbaa !5
  %1340 = icmp slt i32 %1339, 256
  br i1 %1340, label %1341, label %1371

1341:                                             ; preds = %1338
  %1342 = load ptr, ptr @bloom_bPx3rd_mutex, align 8, !tbaa !9
  %1343 = load i32, ptr %33, align 4, !tbaa !5
  %1344 = sext i32 %1343 to i64
  %1345 = getelementptr inbounds %union.pthread_mutex_t, ptr %1342, i64 %1344
  %1346 = call i32 @pthread_mutex_init(ptr noundef %1345, ptr noundef null) #14
  %1347 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !9
  %1348 = load i32, ptr %33, align 4, !tbaa !5
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds %struct.bloom, ptr %1347, i64 %1349
  %1351 = load i64, ptr %31, align 8, !tbaa !17
  %1352 = invoke i32 @bloom_init2(ptr noundef %1350, i64 noundef %1351, x86_fp80 noundef 0xK3FEB8637BD05AF6C6800)
          to label %1353 unwind label %137

1353:                                             ; preds = %1341
  %1354 = icmp eq i32 %1352, 1
  br i1 %1354, label %1355, label %1359

1355:                                             ; preds = %1353
  %1356 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1357 = load i32, ptr %33, align 4, !tbaa !5
  %1358 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1356, ptr noundef @.str.176, i32 noundef %1357) #14
  call void @exit(i32 noundef 1) #17
  unreachable

1359:                                             ; preds = %1353
  %1360 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !9
  %1361 = load i32, ptr %33, align 4, !tbaa !5
  %1362 = sext i32 %1361 to i64
  %1363 = getelementptr inbounds %struct.bloom, ptr %1360, i64 %1362
  %1364 = getelementptr inbounds %struct.bloom, ptr %1363, i32 0, i32 2
  %1365 = load i64, ptr %1364, align 16, !tbaa !22
  %1366 = load i64, ptr @bloom_bP3_totalbytes, align 8, !tbaa !17
  %1367 = add i64 %1366, %1365
  store i64 %1367, ptr @bloom_bP3_totalbytes, align 8, !tbaa !17
  br label %1368

1368:                                             ; preds = %1359
  %1369 = load i32, ptr %33, align 4, !tbaa !5
  %1370 = add nsw i32 %1369, 1
  store i32 %1370, ptr %33, align 4, !tbaa !5
  br label %1338, !llvm.loop !28

1371:                                             ; preds = %1338
  %1372 = load i64, ptr @bloom_bP3_totalbytes, align 8, !tbaa !17
  %1373 = uitofp i64 %1372 to float
  %1374 = fdiv float %1373, 0x4130000000000000
  %1375 = fpext float %1374 to double
  %1376 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.169, double noundef %1375)
          to label %1377 unwind label %137

1377:                                             ; preds = %1371
  call void @llvm.lifetime.start.p0(i64 48, ptr %54) #14
  %1378 = load ptr, ptr @secp, align 8, !tbaa !9
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind writable sret(%class.Point) align 8 %54, ptr noundef nonnull align 8 dereferenceable(393296) %1378, ptr noundef @BSGS_M)
          to label %1379 unwind label %1422

1379:                                             ; preds = %1377
  %1380 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP, ptr noundef nonnull align 8 dereferenceable(48) %54)
          to label %1381 unwind label %1426

1381:                                             ; preds = %1379
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %54) #14
  call void @llvm.lifetime.end.p0(i64 48, ptr %54) #14
  call void @llvm.lifetime.start.p0(i64 48, ptr %55) #14
  %1382 = load ptr, ptr @secp, align 8, !tbaa !9
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind writable sret(%class.Point) align 8 %55, ptr noundef nonnull align 8 dereferenceable(393296) %1382, ptr noundef @BSGS_M_double)
          to label %1383 unwind label %1431

1383:                                             ; preds = %1381
  %1384 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP_double, ptr noundef nonnull align 8 dereferenceable(48) %55)
          to label %1385 unwind label %1435

1385:                                             ; preds = %1383
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %55) #14
  call void @llvm.lifetime.end.p0(i64 48, ptr %55) #14
  call void @llvm.lifetime.start.p0(i64 48, ptr %56) #14
  %1386 = load ptr, ptr @secp, align 8, !tbaa !9
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind writable sret(%class.Point) align 8 %56, ptr noundef nonnull align 8 dereferenceable(393296) %1386, ptr noundef @BSGS_M2)
          to label %1387 unwind label %1440

1387:                                             ; preds = %1385
  %1388 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP2, ptr noundef nonnull align 8 dereferenceable(48) %56)
          to label %1389 unwind label %1444

1389:                                             ; preds = %1387
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %56) #14
  call void @llvm.lifetime.end.p0(i64 48, ptr %56) #14
  call void @llvm.lifetime.start.p0(i64 48, ptr %57) #14
  %1390 = load ptr, ptr @secp, align 8, !tbaa !9
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind writable sret(%class.Point) align 8 %57, ptr noundef nonnull align 8 dereferenceable(393296) %1390, ptr noundef @BSGS_M2_double)
          to label %1391 unwind label %1449

1391:                                             ; preds = %1389
  %1392 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP2_double, ptr noundef nonnull align 8 dereferenceable(48) %57)
          to label %1393 unwind label %1453

1393:                                             ; preds = %1391
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %57) #14
  call void @llvm.lifetime.end.p0(i64 48, ptr %57) #14
  call void @llvm.lifetime.start.p0(i64 48, ptr %58) #14
  %1394 = load ptr, ptr @secp, align 8, !tbaa !9
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind writable sret(%class.Point) align 8 %58, ptr noundef nonnull align 8 dereferenceable(393296) %1394, ptr noundef @BSGS_M3)
          to label %1395 unwind label %1458

1395:                                             ; preds = %1393
  %1396 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP3, ptr noundef nonnull align 8 dereferenceable(48) %58)
          to label %1397 unwind label %1462

1397:                                             ; preds = %1395
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %58) #14
  call void @llvm.lifetime.end.p0(i64 48, ptr %58) #14
  call void @llvm.lifetime.start.p0(i64 48, ptr %59) #14
  %1398 = load ptr, ptr @secp, align 8, !tbaa !9
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind writable sret(%class.Point) align 8 %59, ptr noundef nonnull align 8 dereferenceable(393296) %1398, ptr noundef @BSGS_M3_double)
          to label %1399 unwind label %1467

1399:                                             ; preds = %1397
  %1400 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP3_double, ptr noundef nonnull align 8 dereferenceable(48) %59)
          to label %1401 unwind label %1471

1401:                                             ; preds = %1399
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %59) #14
  call void @llvm.lifetime.end.p0(i64 48, ptr %59) #14
  store i32 0, ptr %33, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %60) #14
  %1402 = load ptr, ptr @secp, align 8, !tbaa !9
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8 %60, ptr noundef nonnull align 8 dereferenceable(393296) %1402, ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP_double)
          to label %1403 unwind label %1476

1403:                                             ; preds = %1401
  call void @llvm.lifetime.start.p0(i64 48, ptr %61) #14
  invoke void @_ZN5PointC1ERKS_(ptr noundef nonnull align 8 dereferenceable(48) %61, ptr noundef nonnull align 8 dereferenceable(48) %60)
          to label %1404 unwind label %1480

1404:                                             ; preds = %1403
  invoke void @_ZNSt6vectorI5PointSaIS0_EE6resizeEmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) @GSn, i64 noundef 512, ptr noundef nonnull align 8 dereferenceable(48) %61)
          to label %1405 unwind label %1484

1405:                                             ; preds = %1404
  invoke void @_ZNSt6vectorI5PointSaIS0_EE6resizeEmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP2, i64 noundef 32, ptr noundef nonnull align 8 dereferenceable(48) %61)
          to label %1406 unwind label %1484

1406:                                             ; preds = %1405
  invoke void @_ZNSt6vectorI5PointSaIS0_EE6resizeEmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP3, i64 noundef 32, ptr noundef nonnull align 8 dereferenceable(48) %61)
          to label %1407 unwind label %1484

1407:                                             ; preds = %1406
  %1408 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @GSn, i64 noundef 0) #14
  %1409 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %1408, ptr noundef nonnull align 8 dereferenceable(48) %61)
          to label %1410 unwind label %1484

1410:                                             ; preds = %1407
  call void @llvm.lifetime.start.p0(i64 48, ptr %62) #14
  %1411 = load ptr, ptr @secp, align 8, !tbaa !9
  invoke void @_ZN9Secp256K112DoubleDirectER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8 %62, ptr noundef nonnull align 8 dereferenceable(393296) %1411, ptr noundef nonnull align 8 dereferenceable(48) %61)
          to label %1412 unwind label %1488

1412:                                             ; preds = %1410
  %1413 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %61, ptr noundef nonnull align 8 dereferenceable(48) %62)
          to label %1414 unwind label %1492

1414:                                             ; preds = %1412
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %62) #14
  call void @llvm.lifetime.end.p0(i64 48, ptr %62) #14
  %1415 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @GSn, i64 noundef 1) #14
  %1416 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %1415, ptr noundef nonnull align 8 dereferenceable(48) %61)
          to label %1417 unwind label %1484

1417:                                             ; preds = %1414
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #14
  store i32 2, ptr %63, align 4, !tbaa !5
  br label %1418

1418:                                             ; preds = %1507, %1417
  %1419 = load i32, ptr %63, align 4, !tbaa !5
  %1420 = icmp slt i32 %1419, 512
  br i1 %1420, label %1497, label %1421

1421:                                             ; preds = %1418
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #14
  br label %1524

1422:                                             ; preds = %1377
  %1423 = landingpad { ptr, i32 }
          cleanup
  %1424 = extractvalue { ptr, i32 } %1423, 0
  store ptr %1424, ptr %42, align 8
  %1425 = extractvalue { ptr, i32 } %1423, 1
  store i32 %1425, ptr %43, align 4
  br label %1430

1426:                                             ; preds = %1379
  %1427 = landingpad { ptr, i32 }
          cleanup
  %1428 = extractvalue { ptr, i32 } %1427, 0
  store ptr %1428, ptr %42, align 8
  %1429 = extractvalue { ptr, i32 } %1427, 1
  store i32 %1429, ptr %43, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %54) #14
  br label %1430

1430:                                             ; preds = %1426, %1422
  call void @llvm.lifetime.end.p0(i64 48, ptr %54) #14
  br label %3815

1431:                                             ; preds = %1381
  %1432 = landingpad { ptr, i32 }
          cleanup
  %1433 = extractvalue { ptr, i32 } %1432, 0
  store ptr %1433, ptr %42, align 8
  %1434 = extractvalue { ptr, i32 } %1432, 1
  store i32 %1434, ptr %43, align 4
  br label %1439

1435:                                             ; preds = %1383
  %1436 = landingpad { ptr, i32 }
          cleanup
  %1437 = extractvalue { ptr, i32 } %1436, 0
  store ptr %1437, ptr %42, align 8
  %1438 = extractvalue { ptr, i32 } %1436, 1
  store i32 %1438, ptr %43, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %55) #14
  br label %1439

1439:                                             ; preds = %1435, %1431
  call void @llvm.lifetime.end.p0(i64 48, ptr %55) #14
  br label %3815

1440:                                             ; preds = %1385
  %1441 = landingpad { ptr, i32 }
          cleanup
  %1442 = extractvalue { ptr, i32 } %1441, 0
  store ptr %1442, ptr %42, align 8
  %1443 = extractvalue { ptr, i32 } %1441, 1
  store i32 %1443, ptr %43, align 4
  br label %1448

1444:                                             ; preds = %1387
  %1445 = landingpad { ptr, i32 }
          cleanup
  %1446 = extractvalue { ptr, i32 } %1445, 0
  store ptr %1446, ptr %42, align 8
  %1447 = extractvalue { ptr, i32 } %1445, 1
  store i32 %1447, ptr %43, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %56) #14
  br label %1448

1448:                                             ; preds = %1444, %1440
  call void @llvm.lifetime.end.p0(i64 48, ptr %56) #14
  br label %3815

1449:                                             ; preds = %1389
  %1450 = landingpad { ptr, i32 }
          cleanup
  %1451 = extractvalue { ptr, i32 } %1450, 0
  store ptr %1451, ptr %42, align 8
  %1452 = extractvalue { ptr, i32 } %1450, 1
  store i32 %1452, ptr %43, align 4
  br label %1457

1453:                                             ; preds = %1391
  %1454 = landingpad { ptr, i32 }
          cleanup
  %1455 = extractvalue { ptr, i32 } %1454, 0
  store ptr %1455, ptr %42, align 8
  %1456 = extractvalue { ptr, i32 } %1454, 1
  store i32 %1456, ptr %43, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %57) #14
  br label %1457

1457:                                             ; preds = %1453, %1449
  call void @llvm.lifetime.end.p0(i64 48, ptr %57) #14
  br label %3815

1458:                                             ; preds = %1393
  %1459 = landingpad { ptr, i32 }
          cleanup
  %1460 = extractvalue { ptr, i32 } %1459, 0
  store ptr %1460, ptr %42, align 8
  %1461 = extractvalue { ptr, i32 } %1459, 1
  store i32 %1461, ptr %43, align 4
  br label %1466

1462:                                             ; preds = %1395
  %1463 = landingpad { ptr, i32 }
          cleanup
  %1464 = extractvalue { ptr, i32 } %1463, 0
  store ptr %1464, ptr %42, align 8
  %1465 = extractvalue { ptr, i32 } %1463, 1
  store i32 %1465, ptr %43, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %58) #14
  br label %1466

1466:                                             ; preds = %1462, %1458
  call void @llvm.lifetime.end.p0(i64 48, ptr %58) #14
  br label %3815

1467:                                             ; preds = %1397
  %1468 = landingpad { ptr, i32 }
          cleanup
  %1469 = extractvalue { ptr, i32 } %1468, 0
  store ptr %1469, ptr %42, align 8
  %1470 = extractvalue { ptr, i32 } %1468, 1
  store i32 %1470, ptr %43, align 4
  br label %1475

1471:                                             ; preds = %1399
  %1472 = landingpad { ptr, i32 }
          cleanup
  %1473 = extractvalue { ptr, i32 } %1472, 0
  store ptr %1473, ptr %42, align 8
  %1474 = extractvalue { ptr, i32 } %1472, 1
  store i32 %1474, ptr %43, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %59) #14
  br label %1475

1475:                                             ; preds = %1471, %1467
  call void @llvm.lifetime.end.p0(i64 48, ptr %59) #14
  br label %3815

1476:                                             ; preds = %1401
  %1477 = landingpad { ptr, i32 }
          cleanup
  %1478 = extractvalue { ptr, i32 } %1477, 0
  store ptr %1478, ptr %42, align 8
  %1479 = extractvalue { ptr, i32 } %1477, 1
  store i32 %1479, ptr %43, align 4
  br label %3500

1480:                                             ; preds = %1403
  %1481 = landingpad { ptr, i32 }
          cleanup
  %1482 = extractvalue { ptr, i32 } %1481, 0
  store ptr %1482, ptr %42, align 8
  %1483 = extractvalue { ptr, i32 } %1481, 1
  store i32 %1483, ptr %43, align 4
  br label %3499

1484:                                             ; preds = %3443, %3433, %3428, %3423, %3414, %3412, %3404, %3402, %3384, %3362, %3348, %3341, %3339, %3332, %3321, %3319, %3309, %3297, %3294, %3292, %3285, %3274, %3272, %3264, %3262, %3244, %3222, %3208, %3201, %3199, %3192, %3181, %3179, %3171, %3169, %3151, %3129, %3115, %3108, %3106, %3101, %3098, %3077, %3075, %3071, %3068, %3065, %3062, %3055, %3053, %3041, %3005, %2995, %2959, %2949, %2913, %2902, %2900, %2881, %2823, %2812, %2674, %2669, %2667, %2659, %2656, %2645, %2614, %2556, %2545, %2407, %2402, %2394, %2391, %2380, %2356, %2336, %2333, %2325, %2323, %2280, %2262, %2234, %2214, %2207, %2205, %2198, %2193, %2191, %2180, %2168, %2157, %2154, %2152, %2145, %2139, %2137, %2130, %2126, %2124, %2117, %2115, %2112, %2104, %2102, %2059, %2041, %2013, %1993, %1986, %1984, %1977, %1971, %1969, %1961, %1959, %1916, %1868, %1852, %1845, %1843, %1836, %1831, %1829, %1822, %1819, %1817, %1809, %1807, %1764, %1747, %1719, %1699, %1692, %1690, %1683, %1674, %1666, %1631, %1615, %1610, %1608, %1602, %1558, %1542, %1537, %1535, %1529, %1414, %1407, %1406, %1405, %1404
  %1485 = landingpad { ptr, i32 }
          cleanup
  %1486 = extractvalue { ptr, i32 } %1485, 0
  store ptr %1486, ptr %42, align 8
  %1487 = extractvalue { ptr, i32 } %1485, 1
  store i32 %1487, ptr %43, align 4
  br label %3498

1488:                                             ; preds = %1410
  %1489 = landingpad { ptr, i32 }
          cleanup
  %1490 = extractvalue { ptr, i32 } %1489, 0
  store ptr %1490, ptr %42, align 8
  %1491 = extractvalue { ptr, i32 } %1489, 1
  store i32 %1491, ptr %43, align 4
  br label %1496

1492:                                             ; preds = %1412
  %1493 = landingpad { ptr, i32 }
          cleanup
  %1494 = extractvalue { ptr, i32 } %1493, 0
  store ptr %1494, ptr %42, align 8
  %1495 = extractvalue { ptr, i32 } %1493, 1
  store i32 %1495, ptr %43, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %62) #14
  br label %1496

1496:                                             ; preds = %1492, %1488
  call void @llvm.lifetime.end.p0(i64 48, ptr %62) #14
  br label %3498

1497:                                             ; preds = %1418
  call void @llvm.lifetime.start.p0(i64 48, ptr %64) #14
  %1498 = load ptr, ptr @secp, align 8, !tbaa !9
  invoke void @_ZN9Secp256K19AddDirectER5PointS1_(ptr dead_on_unwind writable sret(%class.Point) align 8 %64, ptr noundef nonnull align 8 dereferenceable(393296) %1498, ptr noundef nonnull align 8 dereferenceable(48) %61, ptr noundef nonnull align 8 dereferenceable(48) %60)
          to label %1499 unwind label %1510

1499:                                             ; preds = %1497
  %1500 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %61, ptr noundef nonnull align 8 dereferenceable(48) %64)
          to label %1501 unwind label %1514

1501:                                             ; preds = %1499
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %64) #14
  call void @llvm.lifetime.end.p0(i64 48, ptr %64) #14
  %1502 = load i32, ptr %63, align 4, !tbaa !5
  %1503 = sext i32 %1502 to i64
  %1504 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @GSn, i64 noundef %1503) #14
  %1505 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %1504, ptr noundef nonnull align 8 dereferenceable(48) %61)
          to label %1506 unwind label %1519

1506:                                             ; preds = %1501
  br label %1507

1507:                                             ; preds = %1506
  %1508 = load i32, ptr %63, align 4, !tbaa !5
  %1509 = add nsw i32 %1508, 1
  store i32 %1509, ptr %63, align 4, !tbaa !5
  br label %1418, !llvm.loop !29

1510:                                             ; preds = %1497
  %1511 = landingpad { ptr, i32 }
          cleanup
  %1512 = extractvalue { ptr, i32 } %1511, 0
  store ptr %1512, ptr %42, align 8
  %1513 = extractvalue { ptr, i32 } %1511, 1
  store i32 %1513, ptr %43, align 4
  br label %1518

1514:                                             ; preds = %1499
  %1515 = landingpad { ptr, i32 }
          cleanup
  %1516 = extractvalue { ptr, i32 } %1515, 0
  store ptr %1516, ptr %42, align 8
  %1517 = extractvalue { ptr, i32 } %1515, 1
  store i32 %1517, ptr %43, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %64) #14
  br label %1518

1518:                                             ; preds = %1514, %1510
  call void @llvm.lifetime.end.p0(i64 48, ptr %64) #14
  br label %1523

1519:                                             ; preds = %1501
  %1520 = landingpad { ptr, i32 }
          cleanup
  %1521 = extractvalue { ptr, i32 } %1520, 0
  store ptr %1521, ptr %42, align 8
  %1522 = extractvalue { ptr, i32 } %1520, 1
  store i32 %1522, ptr %43, align 4
  br label %1523

1523:                                             ; preds = %1519, %1518
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #14
  br label %3498

1524:                                             ; preds = %1421
  call void @llvm.lifetime.start.p0(i64 48, ptr %65) #14
  %1525 = load ptr, ptr @secp, align 8, !tbaa !9
  %1526 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @GSn, i64 noundef 511) #14
  invoke void @_ZN9Secp256K112DoubleDirectER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8 %65, ptr noundef nonnull align 8 dereferenceable(393296) %1525, ptr noundef nonnull align 8 dereferenceable(48) %1526)
          to label %1527 unwind label %1566

1527:                                             ; preds = %1524
  %1528 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @_2GSn, ptr noundef nonnull align 8 dereferenceable(48) %65)
          to label %1529 unwind label %1570

1529:                                             ; preds = %1527
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %65) #14
  call void @llvm.lifetime.end.p0(i64 48, ptr %65) #14
  store i32 0, ptr %33, align 4, !tbaa !5
  invoke void @_ZN5Point3SetERS_(ptr noundef nonnull align 8 dereferenceable(48) @point_temp, ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP2)
          to label %1530 unwind label %1484

1530:                                             ; preds = %1529
  call void @llvm.lifetime.start.p0(i64 48, ptr %66) #14
  %1531 = load ptr, ptr @secp, align 8, !tbaa !9
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8 %66, ptr noundef nonnull align 8 dereferenceable(393296) %1531, ptr noundef nonnull align 8 dereferenceable(48) @point_temp)
          to label %1532 unwind label %1575

1532:                                             ; preds = %1530
  %1533 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP2, i64 noundef 0) #14
  %1534 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %1533, ptr noundef nonnull align 8 dereferenceable(48) %66)
          to label %1535 unwind label %1579

1535:                                             ; preds = %1532
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %66) #14
  call void @llvm.lifetime.end.p0(i64 48, ptr %66) #14
  %1536 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP2, i64 noundef 0) #14
  invoke void @_ZN5Point6ReduceEv(ptr noundef nonnull align 8 dereferenceable(48) %1536)
          to label %1537 unwind label %1484

1537:                                             ; preds = %1535
  invoke void @_ZN5Point3SetERS_(ptr noundef nonnull align 8 dereferenceable(48) @point_temp, ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP2_double)
          to label %1538 unwind label %1484

1538:                                             ; preds = %1537
  call void @llvm.lifetime.start.p0(i64 48, ptr %67) #14
  %1539 = load ptr, ptr @secp, align 8, !tbaa !9
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8 %67, ptr noundef nonnull align 8 dereferenceable(393296) %1539, ptr noundef nonnull align 8 dereferenceable(48) @point_temp)
          to label %1540 unwind label %1584

1540:                                             ; preds = %1538
  %1541 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @point_temp, ptr noundef nonnull align 8 dereferenceable(48) %67)
          to label %1542 unwind label %1588

1542:                                             ; preds = %1540
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %67) #14
  call void @llvm.lifetime.end.p0(i64 48, ptr %67) #14
  invoke void @_ZN5Point6ReduceEv(ptr noundef nonnull align 8 dereferenceable(48) @point_temp)
          to label %1543 unwind label %1484

1543:                                             ; preds = %1542
  store i32 1, ptr %33, align 4, !tbaa !5
  br label %1544

1544:                                             ; preds = %1563, %1543
  %1545 = load i32, ptr %33, align 4, !tbaa !5
  %1546 = icmp slt i32 %1545, 32
  br i1 %1546, label %1547, label %1602

1547:                                             ; preds = %1544
  call void @llvm.lifetime.start.p0(i64 48, ptr %68) #14
  %1548 = load ptr, ptr @secp, align 8, !tbaa !9
  %1549 = load i32, ptr %33, align 4, !tbaa !5
  %1550 = sub nsw i32 %1549, 1
  %1551 = sext i32 %1550 to i64
  %1552 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP2, i64 noundef %1551) #14
  invoke void @_ZN9Secp256K19AddDirectER5PointS1_(ptr dead_on_unwind writable sret(%class.Point) align 8 %68, ptr noundef nonnull align 8 dereferenceable(393296) %1548, ptr noundef nonnull align 8 dereferenceable(48) %1552, ptr noundef nonnull align 8 dereferenceable(48) @point_temp)
          to label %1553 unwind label %1593

1553:                                             ; preds = %1547
  %1554 = load i32, ptr %33, align 4, !tbaa !5
  %1555 = sext i32 %1554 to i64
  %1556 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP2, i64 noundef %1555) #14
  %1557 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %1556, ptr noundef nonnull align 8 dereferenceable(48) %68)
          to label %1558 unwind label %1597

1558:                                             ; preds = %1553
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %68) #14
  call void @llvm.lifetime.end.p0(i64 48, ptr %68) #14
  %1559 = load i32, ptr %33, align 4, !tbaa !5
  %1560 = sext i32 %1559 to i64
  %1561 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP2, i64 noundef %1560) #14
  invoke void @_ZN5Point6ReduceEv(ptr noundef nonnull align 8 dereferenceable(48) %1561)
          to label %1562 unwind label %1484

1562:                                             ; preds = %1558
  br label %1563

1563:                                             ; preds = %1562
  %1564 = load i32, ptr %33, align 4, !tbaa !5
  %1565 = add nsw i32 %1564, 1
  store i32 %1565, ptr %33, align 4, !tbaa !5
  br label %1544, !llvm.loop !30

1566:                                             ; preds = %1524
  %1567 = landingpad { ptr, i32 }
          cleanup
  %1568 = extractvalue { ptr, i32 } %1567, 0
  store ptr %1568, ptr %42, align 8
  %1569 = extractvalue { ptr, i32 } %1567, 1
  store i32 %1569, ptr %43, align 4
  br label %1574

1570:                                             ; preds = %1527
  %1571 = landingpad { ptr, i32 }
          cleanup
  %1572 = extractvalue { ptr, i32 } %1571, 0
  store ptr %1572, ptr %42, align 8
  %1573 = extractvalue { ptr, i32 } %1571, 1
  store i32 %1573, ptr %43, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %65) #14
  br label %1574

1574:                                             ; preds = %1570, %1566
  call void @llvm.lifetime.end.p0(i64 48, ptr %65) #14
  br label %3498

1575:                                             ; preds = %1530
  %1576 = landingpad { ptr, i32 }
          cleanup
  %1577 = extractvalue { ptr, i32 } %1576, 0
  store ptr %1577, ptr %42, align 8
  %1578 = extractvalue { ptr, i32 } %1576, 1
  store i32 %1578, ptr %43, align 4
  br label %1583

1579:                                             ; preds = %1532
  %1580 = landingpad { ptr, i32 }
          cleanup
  %1581 = extractvalue { ptr, i32 } %1580, 0
  store ptr %1581, ptr %42, align 8
  %1582 = extractvalue { ptr, i32 } %1580, 1
  store i32 %1582, ptr %43, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %66) #14
  br label %1583

1583:                                             ; preds = %1579, %1575
  call void @llvm.lifetime.end.p0(i64 48, ptr %66) #14
  br label %3498

1584:                                             ; preds = %1538
  %1585 = landingpad { ptr, i32 }
          cleanup
  %1586 = extractvalue { ptr, i32 } %1585, 0
  store ptr %1586, ptr %42, align 8
  %1587 = extractvalue { ptr, i32 } %1585, 1
  store i32 %1587, ptr %43, align 4
  br label %1592

1588:                                             ; preds = %1540
  %1589 = landingpad { ptr, i32 }
          cleanup
  %1590 = extractvalue { ptr, i32 } %1589, 0
  store ptr %1590, ptr %42, align 8
  %1591 = extractvalue { ptr, i32 } %1589, 1
  store i32 %1591, ptr %43, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %67) #14
  br label %1592

1592:                                             ; preds = %1588, %1584
  call void @llvm.lifetime.end.p0(i64 48, ptr %67) #14
  br label %3498

1593:                                             ; preds = %1547
  %1594 = landingpad { ptr, i32 }
          cleanup
  %1595 = extractvalue { ptr, i32 } %1594, 0
  store ptr %1595, ptr %42, align 8
  %1596 = extractvalue { ptr, i32 } %1594, 1
  store i32 %1596, ptr %43, align 4
  br label %1601

1597:                                             ; preds = %1553
  %1598 = landingpad { ptr, i32 }
          cleanup
  %1599 = extractvalue { ptr, i32 } %1598, 0
  store ptr %1599, ptr %42, align 8
  %1600 = extractvalue { ptr, i32 } %1598, 1
  store i32 %1600, ptr %43, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %68) #14
  br label %1601

1601:                                             ; preds = %1597, %1593
  call void @llvm.lifetime.end.p0(i64 48, ptr %68) #14
  br label %3498

1602:                                             ; preds = %1544
  store i32 0, ptr %33, align 4, !tbaa !5
  invoke void @_ZN5Point3SetERS_(ptr noundef nonnull align 8 dereferenceable(48) @point_temp, ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP3)
          to label %1603 unwind label %1484

1603:                                             ; preds = %1602
  call void @llvm.lifetime.start.p0(i64 48, ptr %69) #14
  %1604 = load ptr, ptr @secp, align 8, !tbaa !9
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8 %69, ptr noundef nonnull align 8 dereferenceable(393296) %1604, ptr noundef nonnull align 8 dereferenceable(48) @point_temp)
          to label %1605 unwind label %1639

1605:                                             ; preds = %1603
  %1606 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP3, i64 noundef 0) #14
  %1607 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %1606, ptr noundef nonnull align 8 dereferenceable(48) %69)
          to label %1608 unwind label %1643

1608:                                             ; preds = %1605
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %69) #14
  call void @llvm.lifetime.end.p0(i64 48, ptr %69) #14
  %1609 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP3, i64 noundef 0) #14
  invoke void @_ZN5Point6ReduceEv(ptr noundef nonnull align 8 dereferenceable(48) %1609)
          to label %1610 unwind label %1484

1610:                                             ; preds = %1608
  invoke void @_ZN5Point3SetERS_(ptr noundef nonnull align 8 dereferenceable(48) @point_temp, ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP3_double)
          to label %1611 unwind label %1484

1611:                                             ; preds = %1610
  call void @llvm.lifetime.start.p0(i64 48, ptr %70) #14
  %1612 = load ptr, ptr @secp, align 8, !tbaa !9
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8 %70, ptr noundef nonnull align 8 dereferenceable(393296) %1612, ptr noundef nonnull align 8 dereferenceable(48) @point_temp)
          to label %1613 unwind label %1648

1613:                                             ; preds = %1611
  %1614 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @point_temp, ptr noundef nonnull align 8 dereferenceable(48) %70)
          to label %1615 unwind label %1652

1615:                                             ; preds = %1613
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %70) #14
  call void @llvm.lifetime.end.p0(i64 48, ptr %70) #14
  invoke void @_ZN5Point6ReduceEv(ptr noundef nonnull align 8 dereferenceable(48) @point_temp)
          to label %1616 unwind label %1484

1616:                                             ; preds = %1615
  store i32 1, ptr %33, align 4, !tbaa !5
  br label %1617

1617:                                             ; preds = %1636, %1616
  %1618 = load i32, ptr %33, align 4, !tbaa !5
  %1619 = icmp slt i32 %1618, 32
  br i1 %1619, label %1620, label %1666

1620:                                             ; preds = %1617
  call void @llvm.lifetime.start.p0(i64 48, ptr %71) #14
  %1621 = load ptr, ptr @secp, align 8, !tbaa !9
  %1622 = load i32, ptr %33, align 4, !tbaa !5
  %1623 = sub nsw i32 %1622, 1
  %1624 = sext i32 %1623 to i64
  %1625 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP3, i64 noundef %1624) #14
  invoke void @_ZN9Secp256K19AddDirectER5PointS1_(ptr dead_on_unwind writable sret(%class.Point) align 8 %71, ptr noundef nonnull align 8 dereferenceable(393296) %1621, ptr noundef nonnull align 8 dereferenceable(48) %1625, ptr noundef nonnull align 8 dereferenceable(48) @point_temp)
          to label %1626 unwind label %1657

1626:                                             ; preds = %1620
  %1627 = load i32, ptr %33, align 4, !tbaa !5
  %1628 = sext i32 %1627 to i64
  %1629 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP3, i64 noundef %1628) #14
  %1630 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %1629, ptr noundef nonnull align 8 dereferenceable(48) %71)
          to label %1631 unwind label %1661

1631:                                             ; preds = %1626
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %71) #14
  call void @llvm.lifetime.end.p0(i64 48, ptr %71) #14
  %1632 = load i32, ptr %33, align 4, !tbaa !5
  %1633 = sext i32 %1632 to i64
  %1634 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP3, i64 noundef %1633) #14
  invoke void @_ZN5Point6ReduceEv(ptr noundef nonnull align 8 dereferenceable(48) %1634)
          to label %1635 unwind label %1484

1635:                                             ; preds = %1631
  br label %1636

1636:                                             ; preds = %1635
  %1637 = load i32, ptr %33, align 4, !tbaa !5
  %1638 = add nsw i32 %1637, 1
  store i32 %1638, ptr %33, align 4, !tbaa !5
  br label %1617, !llvm.loop !31

1639:                                             ; preds = %1603
  %1640 = landingpad { ptr, i32 }
          cleanup
  %1641 = extractvalue { ptr, i32 } %1640, 0
  store ptr %1641, ptr %42, align 8
  %1642 = extractvalue { ptr, i32 } %1640, 1
  store i32 %1642, ptr %43, align 4
  br label %1647

1643:                                             ; preds = %1605
  %1644 = landingpad { ptr, i32 }
          cleanup
  %1645 = extractvalue { ptr, i32 } %1644, 0
  store ptr %1645, ptr %42, align 8
  %1646 = extractvalue { ptr, i32 } %1644, 1
  store i32 %1646, ptr %43, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %69) #14
  br label %1647

1647:                                             ; preds = %1643, %1639
  call void @llvm.lifetime.end.p0(i64 48, ptr %69) #14
  br label %3498

1648:                                             ; preds = %1611
  %1649 = landingpad { ptr, i32 }
          cleanup
  %1650 = extractvalue { ptr, i32 } %1649, 0
  store ptr %1650, ptr %42, align 8
  %1651 = extractvalue { ptr, i32 } %1649, 1
  store i32 %1651, ptr %43, align 4
  br label %1656

1652:                                             ; preds = %1613
  %1653 = landingpad { ptr, i32 }
          cleanup
  %1654 = extractvalue { ptr, i32 } %1653, 0
  store ptr %1654, ptr %42, align 8
  %1655 = extractvalue { ptr, i32 } %1653, 1
  store i32 %1655, ptr %43, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %70) #14
  br label %1656

1656:                                             ; preds = %1652, %1648
  call void @llvm.lifetime.end.p0(i64 48, ptr %70) #14
  br label %3498

1657:                                             ; preds = %1620
  %1658 = landingpad { ptr, i32 }
          cleanup
  %1659 = extractvalue { ptr, i32 } %1658, 0
  store ptr %1659, ptr %42, align 8
  %1660 = extractvalue { ptr, i32 } %1658, 1
  store i32 %1660, ptr %43, align 4
  br label %1665

1661:                                             ; preds = %1626
  %1662 = landingpad { ptr, i32 }
          cleanup
  %1663 = extractvalue { ptr, i32 } %1662, 0
  store ptr %1663, ptr %42, align 8
  %1664 = extractvalue { ptr, i32 } %1662, 1
  store i32 %1664, ptr %43, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %71) #14
  br label %1665

1665:                                             ; preds = %1661, %1657
  call void @llvm.lifetime.end.p0(i64 48, ptr %71) #14
  br label %3498

1666:                                             ; preds = %1617
  %1667 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %1668 = mul i64 %1667, 16
  store i64 %1668, ptr @bytes, align 8, !tbaa !17
  %1669 = load i64, ptr @bytes, align 8, !tbaa !17
  %1670 = udiv i64 %1669, 1048576
  %1671 = uitofp i64 %1670 to double
  %1672 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %1673 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.177, double noundef %1671, i64 noundef %1672)
          to label %1674 unwind label %1484

1674:                                             ; preds = %1666
  %1675 = load i64, ptr @bytes, align 8, !tbaa !17
  %1676 = call noalias ptr @malloc(i64 noundef %1675) #19
  store ptr %1676, ptr @bPtable, align 8, !tbaa !9
  %1677 = load ptr, ptr @bPtable, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1677, ptr noundef @.str.80, ptr noundef @.str.81, ptr noundef @.str.178, i32 noundef 1369)
          to label %1678 unwind label %1484

1678:                                             ; preds = %1674
  %1679 = load ptr, ptr @bPtable, align 8, !tbaa !9
  %1680 = load i64, ptr @bytes, align 8, !tbaa !17
  call void @llvm.memset.p0.i64(ptr align 8 %1679, i8 0, i64 %1680, i1 false)
  %1681 = load i32, ptr @FLAGSAVEREADFILE, align 4, !tbaa !5
  %1682 = icmp ne i32 %1681, 0
  br i1 %1682, label %1683, label %2341

1683:                                             ; preds = %1678
  %1684 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %1685 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef @buffer_bloom_file, i64 noundef 1024, ptr noundef @.str.179, i64 noundef %1684) #14
  %1686 = invoke noalias ptr @fopen(ptr noundef @buffer_bloom_file, ptr noundef @.str.148)
          to label %1687 unwind label %1484

1687:                                             ; preds = %1683
  store ptr %1686, ptr %24, align 8, !tbaa !9
  %1688 = load ptr, ptr %24, align 8, !tbaa !9
  %1689 = icmp ne ptr %1688, null
  br i1 %1689, label %1690, label %1836

1690:                                             ; preds = %1687
  %1691 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.180, ptr noundef @buffer_bloom_file)
          to label %1692 unwind label %1484

1692:                                             ; preds = %1690
  %1693 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1694 = invoke i32 @fflush(ptr noundef %1693)
          to label %1695 unwind label %1484

1695:                                             ; preds = %1692
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %1696

1696:                                             ; preds = %1814, %1695
  %1697 = load i32, ptr %33, align 4, !tbaa !5
  %1698 = icmp slt i32 %1697, 256
  br i1 %1698, label %1699, label %1817

1699:                                             ; preds = %1696
  %1700 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %1701 = load i32, ptr %33, align 4, !tbaa !5
  %1702 = sext i32 %1701 to i64
  %1703 = getelementptr inbounds %struct.bloom, ptr %1700, i64 %1702
  %1704 = getelementptr inbounds %struct.bloom, ptr %1703, i32 0, i32 9
  %1705 = load ptr, ptr %1704, align 16, !tbaa !32
  store ptr %1705, ptr %21, align 8, !tbaa !9
  %1706 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %1707 = load i32, ptr %33, align 4, !tbaa !5
  %1708 = sext i32 %1707 to i64
  %1709 = getelementptr inbounds %struct.bloom, ptr %1706, i64 %1708
  %1710 = load ptr, ptr %24, align 8, !tbaa !9
  %1711 = invoke i64 @fread(ptr noundef %1709, i64 noundef 80, i64 noundef 1, ptr noundef %1710)
          to label %1712 unwind label %1484

1712:                                             ; preds = %1699
  %1713 = trunc i64 %1711 to i32
  store i32 %1713, ptr %34, align 4, !tbaa !5
  %1714 = load i32, ptr %34, align 4, !tbaa !5
  %1715 = icmp ne i32 %1714, 1
  br i1 %1715, label %1716, label %1719

1716:                                             ; preds = %1712
  %1717 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1718 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1717, ptr noundef @.str.181, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

1719:                                             ; preds = %1712
  %1720 = load ptr, ptr %21, align 8, !tbaa !9
  %1721 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %1722 = load i32, ptr %33, align 4, !tbaa !5
  %1723 = sext i32 %1722 to i64
  %1724 = getelementptr inbounds %struct.bloom, ptr %1721, i64 %1723
  %1725 = getelementptr inbounds %struct.bloom, ptr %1724, i32 0, i32 9
  store ptr %1720, ptr %1725, align 16, !tbaa !32
  %1726 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %1727 = load i32, ptr %33, align 4, !tbaa !5
  %1728 = sext i32 %1727 to i64
  %1729 = getelementptr inbounds %struct.bloom, ptr %1726, i64 %1728
  %1730 = getelementptr inbounds %struct.bloom, ptr %1729, i32 0, i32 9
  %1731 = load ptr, ptr %1730, align 16, !tbaa !32
  %1732 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %1733 = load i32, ptr %33, align 4, !tbaa !5
  %1734 = sext i32 %1733 to i64
  %1735 = getelementptr inbounds %struct.bloom, ptr %1732, i64 %1734
  %1736 = getelementptr inbounds %struct.bloom, ptr %1735, i32 0, i32 2
  %1737 = load i64, ptr %1736, align 16, !tbaa !22
  %1738 = load ptr, ptr %24, align 8, !tbaa !9
  %1739 = invoke i64 @fread(ptr noundef %1731, i64 noundef %1737, i64 noundef 1, ptr noundef %1738)
          to label %1740 unwind label %1484

1740:                                             ; preds = %1719
  %1741 = trunc i64 %1739 to i32
  store i32 %1741, ptr %34, align 4, !tbaa !5
  %1742 = load i32, ptr %34, align 4, !tbaa !5
  %1743 = icmp ne i32 %1742, 1
  br i1 %1743, label %1744, label %1747

1744:                                             ; preds = %1740
  %1745 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1746 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1745, ptr noundef @.str.181, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

1747:                                             ; preds = %1740
  %1748 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !9
  %1749 = load i32, ptr %33, align 4, !tbaa !5
  %1750 = sext i32 %1749 to i64
  %1751 = getelementptr inbounds %struct.checksumsha256, ptr %1748, i64 %1750
  %1752 = load ptr, ptr %24, align 8, !tbaa !9
  %1753 = invoke i64 @fread(ptr noundef %1751, i64 noundef 64, i64 noundef 1, ptr noundef %1752)
          to label %1754 unwind label %1484

1754:                                             ; preds = %1747
  %1755 = trunc i64 %1753 to i32
  store i32 %1755, ptr %34, align 4, !tbaa !5
  %1756 = load i32, ptr %34, align 4, !tbaa !5
  %1757 = icmp ne i32 %1756, 1
  br i1 %1757, label %1758, label %1761

1758:                                             ; preds = %1754
  %1759 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1760 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1759, ptr noundef @.str.181, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

1761:                                             ; preds = %1754
  %1762 = load i32, ptr @FLAGSKIPCHECKSUM, align 4, !tbaa !5
  %1763 = icmp eq i32 %1762, 0
  br i1 %1763, label %1764, label %1803

1764:                                             ; preds = %1761
  %1765 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %1766 = load i32, ptr %33, align 4, !tbaa !5
  %1767 = sext i32 %1766 to i64
  %1768 = getelementptr inbounds %struct.bloom, ptr %1765, i64 %1767
  %1769 = getelementptr inbounds %struct.bloom, ptr %1768, i32 0, i32 9
  %1770 = load ptr, ptr %1769, align 16, !tbaa !32
  %1771 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %1772 = load i32, ptr %33, align 4, !tbaa !5
  %1773 = sext i32 %1772 to i64
  %1774 = getelementptr inbounds %struct.bloom, ptr %1771, i64 %1773
  %1775 = getelementptr inbounds %struct.bloom, ptr %1774, i32 0, i32 2
  %1776 = load i64, ptr %1775, align 16, !tbaa !22
  %1777 = getelementptr inbounds [32 x i8], ptr %7, i64 0, i64 0
  %1778 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %1770, i64 noundef %1776, ptr noundef %1777)
          to label %1779 unwind label %1484

1779:                                             ; preds = %1764
  %1780 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !9
  %1781 = load i32, ptr %33, align 4, !tbaa !5
  %1782 = sext i32 %1781 to i64
  %1783 = getelementptr inbounds %struct.checksumsha256, ptr %1780, i64 %1782
  %1784 = getelementptr inbounds %struct.checksumsha256, ptr %1783, i32 0, i32 0
  %1785 = getelementptr inbounds [32 x i8], ptr %1784, i64 0, i64 0
  %1786 = getelementptr inbounds [32 x i8], ptr %7, i64 0, i64 0
  %1787 = call i32 @memcmp(ptr noundef %1785, ptr noundef %1786, i64 noundef 32) #18
  %1788 = icmp ne i32 %1787, 0
  br i1 %1788, label %1799, label %1789

1789:                                             ; preds = %1779
  %1790 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !9
  %1791 = load i32, ptr %33, align 4, !tbaa !5
  %1792 = sext i32 %1791 to i64
  %1793 = getelementptr inbounds %struct.checksumsha256, ptr %1790, i64 %1792
  %1794 = getelementptr inbounds %struct.checksumsha256, ptr %1793, i32 0, i32 1
  %1795 = getelementptr inbounds [32 x i8], ptr %1794, i64 0, i64 0
  %1796 = getelementptr inbounds [32 x i8], ptr %7, i64 0, i64 0
  %1797 = call i32 @memcmp(ptr noundef %1795, ptr noundef %1796, i64 noundef 32) #18
  %1798 = icmp ne i32 %1797, 0
  br i1 %1798, label %1799, label %1802

1799:                                             ; preds = %1789, %1779
  %1800 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1801 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1800, ptr noundef @.str.182, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

1802:                                             ; preds = %1789
  br label %1803

1803:                                             ; preds = %1802, %1761
  %1804 = load i32, ptr %33, align 4, !tbaa !5
  %1805 = srem i32 %1804, 64
  %1806 = icmp eq i32 %1805, 0
  br i1 %1806, label %1807, label %1813

1807:                                             ; preds = %1803
  %1808 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.183)
          to label %1809 unwind label %1484

1809:                                             ; preds = %1807
  %1810 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1811 = invoke i32 @fflush(ptr noundef %1810)
          to label %1812 unwind label %1484

1812:                                             ; preds = %1809
  br label %1813

1813:                                             ; preds = %1812, %1803
  br label %1814

1814:                                             ; preds = %1813
  %1815 = load i32, ptr %33, align 4, !tbaa !5
  %1816 = add nsw i32 %1815, 1
  store i32 %1816, ptr %33, align 4, !tbaa !5
  br label %1696, !llvm.loop !33

1817:                                             ; preds = %1696
  %1818 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.184)
          to label %1819 unwind label %1484

1819:                                             ; preds = %1817
  %1820 = load ptr, ptr %24, align 8, !tbaa !9
  %1821 = invoke i32 @fclose(ptr noundef %1820)
          to label %1822 unwind label %1484

1822:                                             ; preds = %1819
  call void @llvm.memset.p0.i64(ptr align 16 @buffer_bloom_file, i8 0, i64 1024, i1 false)
  %1823 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %1824 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef @buffer_bloom_file, i64 noundef 1024, ptr noundef @.str.185, i64 noundef %1823) #14
  %1825 = invoke noalias ptr @fopen(ptr noundef @buffer_bloom_file, ptr noundef @.str.148)
          to label %1826 unwind label %1484

1826:                                             ; preds = %1822
  store ptr %1825, ptr %24, align 8, !tbaa !9
  %1827 = load ptr, ptr %24, align 8, !tbaa !9
  %1828 = icmp ne ptr %1827, null
  br i1 %1828, label %1829, label %1835

1829:                                             ; preds = %1826
  %1830 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.186, ptr noundef @buffer_bloom_file)
          to label %1831 unwind label %1484

1831:                                             ; preds = %1829
  %1832 = load ptr, ptr %24, align 8, !tbaa !9
  %1833 = invoke i32 @fclose(ptr noundef %1832)
          to label %1834 unwind label %1484

1834:                                             ; preds = %1831
  br label %1835

1835:                                             ; preds = %1834, %1826
  store i32 1, ptr @FLAGREADEDFILE1, align 4, !tbaa !5
  br label %1977

1836:                                             ; preds = %1687
  %1837 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %1838 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef @buffer_bloom_file, i64 noundef 1024, ptr noundef @.str.185, i64 noundef %1837) #14
  %1839 = invoke noalias ptr @fopen(ptr noundef @buffer_bloom_file, ptr noundef @.str.148)
          to label %1840 unwind label %1484

1840:                                             ; preds = %1836
  store ptr %1839, ptr %24, align 8, !tbaa !9
  %1841 = load ptr, ptr %24, align 8, !tbaa !9
  %1842 = icmp ne ptr %1841, null
  br i1 %1842, label %1843, label %1975

1843:                                             ; preds = %1840
  %1844 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.180, ptr noundef @buffer_bloom_file)
          to label %1845 unwind label %1484

1845:                                             ; preds = %1843
  %1846 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1847 = invoke i32 @fflush(ptr noundef %1846)
          to label %1848 unwind label %1484

1848:                                             ; preds = %1845
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %1849

1849:                                             ; preds = %1966, %1848
  %1850 = load i32, ptr %33, align 4, !tbaa !5
  %1851 = icmp slt i32 %1850, 256
  br i1 %1851, label %1852, label %1969

1852:                                             ; preds = %1849
  %1853 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %1854 = load i32, ptr %33, align 4, !tbaa !5
  %1855 = sext i32 %1854 to i64
  %1856 = getelementptr inbounds %struct.bloom, ptr %1853, i64 %1855
  %1857 = getelementptr inbounds %struct.bloom, ptr %1856, i32 0, i32 9
  %1858 = load ptr, ptr %1857, align 16, !tbaa !32
  store ptr %1858, ptr %21, align 8, !tbaa !9
  %1859 = load ptr, ptr %24, align 8, !tbaa !9
  %1860 = invoke i64 @fread(ptr noundef @oldbloom_bP, i64 noundef 176, i64 noundef 1, ptr noundef %1859)
          to label %1861 unwind label %1484

1861:                                             ; preds = %1852
  %1862 = trunc i64 %1860 to i32
  store i32 %1862, ptr %34, align 4, !tbaa !5
  %1863 = load i32, ptr %34, align 4, !tbaa !5
  %1864 = icmp ne i32 %1863, 1
  br i1 %1864, label %1865, label %1868

1865:                                             ; preds = %1861
  %1866 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1867 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1866, ptr noundef @.str.181, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

1868:                                             ; preds = %1861
  %1869 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %1870 = load i32, ptr %33, align 4, !tbaa !5
  %1871 = sext i32 %1870 to i64
  %1872 = getelementptr inbounds %struct.bloom, ptr %1869, i64 %1871
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %1872, ptr align 16 @oldbloom_bP, i64 80, i1 false)
  %1873 = load ptr, ptr %21, align 8, !tbaa !9
  %1874 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %1875 = load i32, ptr %33, align 4, !tbaa !5
  %1876 = sext i32 %1875 to i64
  %1877 = getelementptr inbounds %struct.bloom, ptr %1874, i64 %1876
  %1878 = getelementptr inbounds %struct.bloom, ptr %1877, i32 0, i32 9
  store ptr %1873, ptr %1878, align 16, !tbaa !32
  %1879 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %1880 = load i32, ptr %33, align 4, !tbaa !5
  %1881 = sext i32 %1880 to i64
  %1882 = getelementptr inbounds %struct.bloom, ptr %1879, i64 %1881
  %1883 = getelementptr inbounds %struct.bloom, ptr %1882, i32 0, i32 9
  %1884 = load ptr, ptr %1883, align 16, !tbaa !32
  %1885 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %1886 = load i32, ptr %33, align 4, !tbaa !5
  %1887 = sext i32 %1886 to i64
  %1888 = getelementptr inbounds %struct.bloom, ptr %1885, i64 %1887
  %1889 = getelementptr inbounds %struct.bloom, ptr %1888, i32 0, i32 2
  %1890 = load i64, ptr %1889, align 16, !tbaa !22
  %1891 = load ptr, ptr %24, align 8, !tbaa !9
  %1892 = invoke i64 @fread(ptr noundef %1884, i64 noundef %1890, i64 noundef 1, ptr noundef %1891)
          to label %1893 unwind label %1484

1893:                                             ; preds = %1868
  %1894 = trunc i64 %1892 to i32
  store i32 %1894, ptr %34, align 4, !tbaa !5
  %1895 = load i32, ptr %34, align 4, !tbaa !5
  %1896 = icmp ne i32 %1895, 1
  br i1 %1896, label %1897, label %1900

1897:                                             ; preds = %1893
  %1898 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1899 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1898, ptr noundef @.str.181, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

1900:                                             ; preds = %1893
  %1901 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !9
  %1902 = load i32, ptr %33, align 4, !tbaa !5
  %1903 = sext i32 %1902 to i64
  %1904 = getelementptr inbounds %struct.checksumsha256, ptr %1901, i64 %1903
  %1905 = getelementptr inbounds %struct.checksumsha256, ptr %1904, i32 0, i32 0
  %1906 = getelementptr inbounds [32 x i8], ptr %1905, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1906, ptr align 16 getelementptr inbounds (%struct.oldbloom, ptr @oldbloom_bP, i32 0, i32 9), i64 32, i1 false)
  %1907 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !9
  %1908 = load i32, ptr %33, align 4, !tbaa !5
  %1909 = sext i32 %1908 to i64
  %1910 = getelementptr inbounds %struct.checksumsha256, ptr %1907, i64 %1909
  %1911 = getelementptr inbounds %struct.checksumsha256, ptr %1910, i32 0, i32 1
  %1912 = getelementptr inbounds [32 x i8], ptr %1911, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1912, ptr align 16 getelementptr inbounds (%struct.oldbloom, ptr @oldbloom_bP, i32 0, i32 10), i64 32, i1 false)
  %1913 = getelementptr inbounds [32 x i8], ptr %7, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %1913, i8 0, i64 32, i1 false)
  %1914 = load i32, ptr @FLAGSKIPCHECKSUM, align 4, !tbaa !5
  %1915 = icmp eq i32 %1914, 0
  br i1 %1915, label %1916, label %1955

1916:                                             ; preds = %1900
  %1917 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %1918 = load i32, ptr %33, align 4, !tbaa !5
  %1919 = sext i32 %1918 to i64
  %1920 = getelementptr inbounds %struct.bloom, ptr %1917, i64 %1919
  %1921 = getelementptr inbounds %struct.bloom, ptr %1920, i32 0, i32 9
  %1922 = load ptr, ptr %1921, align 16, !tbaa !32
  %1923 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %1924 = load i32, ptr %33, align 4, !tbaa !5
  %1925 = sext i32 %1924 to i64
  %1926 = getelementptr inbounds %struct.bloom, ptr %1923, i64 %1925
  %1927 = getelementptr inbounds %struct.bloom, ptr %1926, i32 0, i32 2
  %1928 = load i64, ptr %1927, align 16, !tbaa !22
  %1929 = getelementptr inbounds [32 x i8], ptr %7, i64 0, i64 0
  %1930 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %1922, i64 noundef %1928, ptr noundef %1929)
          to label %1931 unwind label %1484

1931:                                             ; preds = %1916
  %1932 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !9
  %1933 = load i32, ptr %33, align 4, !tbaa !5
  %1934 = sext i32 %1933 to i64
  %1935 = getelementptr inbounds %struct.checksumsha256, ptr %1932, i64 %1934
  %1936 = getelementptr inbounds %struct.checksumsha256, ptr %1935, i32 0, i32 0
  %1937 = getelementptr inbounds [32 x i8], ptr %1936, i64 0, i64 0
  %1938 = getelementptr inbounds [32 x i8], ptr %7, i64 0, i64 0
  %1939 = call i32 @memcmp(ptr noundef %1937, ptr noundef %1938, i64 noundef 32) #18
  %1940 = icmp ne i32 %1939, 0
  br i1 %1940, label %1951, label %1941

1941:                                             ; preds = %1931
  %1942 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !9
  %1943 = load i32, ptr %33, align 4, !tbaa !5
  %1944 = sext i32 %1943 to i64
  %1945 = getelementptr inbounds %struct.checksumsha256, ptr %1942, i64 %1944
  %1946 = getelementptr inbounds %struct.checksumsha256, ptr %1945, i32 0, i32 1
  %1947 = getelementptr inbounds [32 x i8], ptr %1946, i64 0, i64 0
  %1948 = getelementptr inbounds [32 x i8], ptr %7, i64 0, i64 0
  %1949 = call i32 @memcmp(ptr noundef %1947, ptr noundef %1948, i64 noundef 32) #18
  %1950 = icmp ne i32 %1949, 0
  br i1 %1950, label %1951, label %1954

1951:                                             ; preds = %1941, %1931
  %1952 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1953 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1952, ptr noundef @.str.182, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

1954:                                             ; preds = %1941
  br label %1955

1955:                                             ; preds = %1954, %1900
  %1956 = load i32, ptr %33, align 4, !tbaa !5
  %1957 = srem i32 %1956, 32
  %1958 = icmp eq i32 %1957, 0
  br i1 %1958, label %1959, label %1965

1959:                                             ; preds = %1955
  %1960 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.183)
          to label %1961 unwind label %1484

1961:                                             ; preds = %1959
  %1962 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1963 = invoke i32 @fflush(ptr noundef %1962)
          to label %1964 unwind label %1484

1964:                                             ; preds = %1961
  br label %1965

1965:                                             ; preds = %1964, %1955
  br label %1966

1966:                                             ; preds = %1965
  %1967 = load i32, ptr %33, align 4, !tbaa !5
  %1968 = add nsw i32 %1967, 1
  store i32 %1968, ptr %33, align 4, !tbaa !5
  br label %1849, !llvm.loop !34

1969:                                             ; preds = %1849
  %1970 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.184)
          to label %1971 unwind label %1484

1971:                                             ; preds = %1969
  %1972 = load ptr, ptr %24, align 8, !tbaa !9
  %1973 = invoke i32 @fclose(ptr noundef %1972)
          to label %1974 unwind label %1484

1974:                                             ; preds = %1971
  store i32 1, ptr @FLAGUPDATEFILE1, align 4, !tbaa !5
  store i32 1, ptr @FLAGREADEDFILE1, align 4, !tbaa !5
  br label %1976

1975:                                             ; preds = %1840
  store i32 0, ptr @FLAGREADEDFILE1, align 4, !tbaa !5
  br label %1976

1976:                                             ; preds = %1975, %1974
  br label %1977

1977:                                             ; preds = %1976, %1835
  %1978 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %1979 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef @buffer_bloom_file, i64 noundef 1024, ptr noundef @.str.187, i64 noundef %1978) #14
  %1980 = invoke noalias ptr @fopen(ptr noundef @buffer_bloom_file, ptr noundef @.str.148)
          to label %1981 unwind label %1484

1981:                                             ; preds = %1977
  store ptr %1980, ptr %25, align 8, !tbaa !9
  %1982 = load ptr, ptr %25, align 8, !tbaa !9
  %1983 = icmp ne ptr %1982, null
  br i1 %1983, label %1984, label %2144

1984:                                             ; preds = %1981
  %1985 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.180, ptr noundef @buffer_bloom_file)
          to label %1986 unwind label %1484

1986:                                             ; preds = %1984
  %1987 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1988 = invoke i32 @fflush(ptr noundef %1987)
          to label %1989 unwind label %1484

1989:                                             ; preds = %1986
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %1990

1990:                                             ; preds = %2109, %1989
  %1991 = load i32, ptr %33, align 4, !tbaa !5
  %1992 = icmp slt i32 %1991, 256
  br i1 %1992, label %1993, label %2112

1993:                                             ; preds = %1990
  %1994 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !9
  %1995 = load i32, ptr %33, align 4, !tbaa !5
  %1996 = sext i32 %1995 to i64
  %1997 = getelementptr inbounds %struct.bloom, ptr %1994, i64 %1996
  %1998 = getelementptr inbounds %struct.bloom, ptr %1997, i32 0, i32 9
  %1999 = load ptr, ptr %1998, align 16, !tbaa !32
  store ptr %1999, ptr %21, align 8, !tbaa !9
  %2000 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !9
  %2001 = load i32, ptr %33, align 4, !tbaa !5
  %2002 = sext i32 %2001 to i64
  %2003 = getelementptr inbounds %struct.bloom, ptr %2000, i64 %2002
  %2004 = load ptr, ptr %25, align 8, !tbaa !9
  %2005 = invoke i64 @fread(ptr noundef %2003, i64 noundef 80, i64 noundef 1, ptr noundef %2004)
          to label %2006 unwind label %1484

2006:                                             ; preds = %1993
  %2007 = trunc i64 %2005 to i32
  store i32 %2007, ptr %34, align 4, !tbaa !5
  %2008 = load i32, ptr %34, align 4, !tbaa !5
  %2009 = icmp ne i32 %2008, 1
  br i1 %2009, label %2010, label %2013

2010:                                             ; preds = %2006
  %2011 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2012 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2011, ptr noundef @.str.181, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

2013:                                             ; preds = %2006
  %2014 = load ptr, ptr %21, align 8, !tbaa !9
  %2015 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !9
  %2016 = load i32, ptr %33, align 4, !tbaa !5
  %2017 = sext i32 %2016 to i64
  %2018 = getelementptr inbounds %struct.bloom, ptr %2015, i64 %2017
  %2019 = getelementptr inbounds %struct.bloom, ptr %2018, i32 0, i32 9
  store ptr %2014, ptr %2019, align 16, !tbaa !32
  %2020 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !9
  %2021 = load i32, ptr %33, align 4, !tbaa !5
  %2022 = sext i32 %2021 to i64
  %2023 = getelementptr inbounds %struct.bloom, ptr %2020, i64 %2022
  %2024 = getelementptr inbounds %struct.bloom, ptr %2023, i32 0, i32 9
  %2025 = load ptr, ptr %2024, align 16, !tbaa !32
  %2026 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !9
  %2027 = load i32, ptr %33, align 4, !tbaa !5
  %2028 = sext i32 %2027 to i64
  %2029 = getelementptr inbounds %struct.bloom, ptr %2026, i64 %2028
  %2030 = getelementptr inbounds %struct.bloom, ptr %2029, i32 0, i32 2
  %2031 = load i64, ptr %2030, align 16, !tbaa !22
  %2032 = load ptr, ptr %25, align 8, !tbaa !9
  %2033 = invoke i64 @fread(ptr noundef %2025, i64 noundef %2031, i64 noundef 1, ptr noundef %2032)
          to label %2034 unwind label %1484

2034:                                             ; preds = %2013
  %2035 = trunc i64 %2033 to i32
  store i32 %2035, ptr %34, align 4, !tbaa !5
  %2036 = load i32, ptr %34, align 4, !tbaa !5
  %2037 = icmp ne i32 %2036, 1
  br i1 %2037, label %2038, label %2041

2038:                                             ; preds = %2034
  %2039 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2040 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2039, ptr noundef @.str.181, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

2041:                                             ; preds = %2034
  %2042 = load ptr, ptr @bloom_bPx2nd_checksums, align 8, !tbaa !9
  %2043 = load i32, ptr %33, align 4, !tbaa !5
  %2044 = sext i32 %2043 to i64
  %2045 = getelementptr inbounds %struct.checksumsha256, ptr %2042, i64 %2044
  %2046 = load ptr, ptr %25, align 8, !tbaa !9
  %2047 = invoke i64 @fread(ptr noundef %2045, i64 noundef 64, i64 noundef 1, ptr noundef %2046)
          to label %2048 unwind label %1484

2048:                                             ; preds = %2041
  %2049 = trunc i64 %2047 to i32
  store i32 %2049, ptr %34, align 4, !tbaa !5
  %2050 = load i32, ptr %34, align 4, !tbaa !5
  %2051 = icmp ne i32 %2050, 1
  br i1 %2051, label %2052, label %2055

2052:                                             ; preds = %2048
  %2053 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2054 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2053, ptr noundef @.str.181, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

2055:                                             ; preds = %2048
  %2056 = getelementptr inbounds [32 x i8], ptr %7, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %2056, i8 0, i64 32, i1 false)
  %2057 = load i32, ptr @FLAGSKIPCHECKSUM, align 4, !tbaa !5
  %2058 = icmp eq i32 %2057, 0
  br i1 %2058, label %2059, label %2098

2059:                                             ; preds = %2055
  %2060 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !9
  %2061 = load i32, ptr %33, align 4, !tbaa !5
  %2062 = sext i32 %2061 to i64
  %2063 = getelementptr inbounds %struct.bloom, ptr %2060, i64 %2062
  %2064 = getelementptr inbounds %struct.bloom, ptr %2063, i32 0, i32 9
  %2065 = load ptr, ptr %2064, align 16, !tbaa !32
  %2066 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !9
  %2067 = load i32, ptr %33, align 4, !tbaa !5
  %2068 = sext i32 %2067 to i64
  %2069 = getelementptr inbounds %struct.bloom, ptr %2066, i64 %2068
  %2070 = getelementptr inbounds %struct.bloom, ptr %2069, i32 0, i32 2
  %2071 = load i64, ptr %2070, align 16, !tbaa !22
  %2072 = getelementptr inbounds [32 x i8], ptr %7, i64 0, i64 0
  %2073 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %2065, i64 noundef %2071, ptr noundef %2072)
          to label %2074 unwind label %1484

2074:                                             ; preds = %2059
  %2075 = load ptr, ptr @bloom_bPx2nd_checksums, align 8, !tbaa !9
  %2076 = load i32, ptr %33, align 4, !tbaa !5
  %2077 = sext i32 %2076 to i64
  %2078 = getelementptr inbounds %struct.checksumsha256, ptr %2075, i64 %2077
  %2079 = getelementptr inbounds %struct.checksumsha256, ptr %2078, i32 0, i32 0
  %2080 = getelementptr inbounds [32 x i8], ptr %2079, i64 0, i64 0
  %2081 = getelementptr inbounds [32 x i8], ptr %7, i64 0, i64 0
  %2082 = call i32 @memcmp(ptr noundef %2080, ptr noundef %2081, i64 noundef 32) #18
  %2083 = icmp ne i32 %2082, 0
  br i1 %2083, label %2094, label %2084

2084:                                             ; preds = %2074
  %2085 = load ptr, ptr @bloom_bPx2nd_checksums, align 8, !tbaa !9
  %2086 = load i32, ptr %33, align 4, !tbaa !5
  %2087 = sext i32 %2086 to i64
  %2088 = getelementptr inbounds %struct.checksumsha256, ptr %2085, i64 %2087
  %2089 = getelementptr inbounds %struct.checksumsha256, ptr %2088, i32 0, i32 1
  %2090 = getelementptr inbounds [32 x i8], ptr %2089, i64 0, i64 0
  %2091 = getelementptr inbounds [32 x i8], ptr %7, i64 0, i64 0
  %2092 = call i32 @memcmp(ptr noundef %2090, ptr noundef %2091, i64 noundef 32) #18
  %2093 = icmp ne i32 %2092, 0
  br i1 %2093, label %2094, label %2097

2094:                                             ; preds = %2084, %2074
  %2095 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2096 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2095, ptr noundef @.str.182, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

2097:                                             ; preds = %2084
  br label %2098

2098:                                             ; preds = %2097, %2055
  %2099 = load i32, ptr %33, align 4, !tbaa !5
  %2100 = srem i32 %2099, 64
  %2101 = icmp eq i32 %2100, 0
  br i1 %2101, label %2102, label %2108

2102:                                             ; preds = %2098
  %2103 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.183)
          to label %2104 unwind label %1484

2104:                                             ; preds = %2102
  %2105 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2106 = invoke i32 @fflush(ptr noundef %2105)
          to label %2107 unwind label %1484

2107:                                             ; preds = %2104
  br label %2108

2108:                                             ; preds = %2107, %2098
  br label %2109

2109:                                             ; preds = %2108
  %2110 = load i32, ptr %33, align 4, !tbaa !5
  %2111 = add nsw i32 %2110, 1
  store i32 %2111, ptr %33, align 4, !tbaa !5
  br label %1990, !llvm.loop !35

2112:                                             ; preds = %1990
  %2113 = load ptr, ptr %25, align 8, !tbaa !9
  %2114 = invoke i32 @fclose(ptr noundef %2113)
          to label %2115 unwind label %1484

2115:                                             ; preds = %2112
  %2116 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.184)
          to label %2117 unwind label %1484

2117:                                             ; preds = %2115
  call void @llvm.memset.p0.i64(ptr align 16 @buffer_bloom_file, i8 0, i64 1024, i1 false)
  %2118 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %2119 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef @buffer_bloom_file, i64 noundef 1024, ptr noundef @.str.188, i64 noundef %2118) #14
  %2120 = invoke noalias ptr @fopen(ptr noundef @buffer_bloom_file, ptr noundef @.str.148)
          to label %2121 unwind label %1484

2121:                                             ; preds = %2117
  store ptr %2120, ptr %25, align 8, !tbaa !9
  %2122 = load ptr, ptr %25, align 8, !tbaa !9
  %2123 = icmp ne ptr %2122, null
  br i1 %2123, label %2124, label %2130

2124:                                             ; preds = %2121
  %2125 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.186, ptr noundef @buffer_bloom_file)
          to label %2126 unwind label %1484

2126:                                             ; preds = %2124
  %2127 = load ptr, ptr %25, align 8, !tbaa !9
  %2128 = invoke i32 @fclose(ptr noundef %2127)
          to label %2129 unwind label %1484

2129:                                             ; preds = %2126
  br label %2130

2130:                                             ; preds = %2129, %2121
  call void @llvm.memset.p0.i64(ptr align 16 @buffer_bloom_file, i8 0, i64 1024, i1 false)
  %2131 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %2132 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef @buffer_bloom_file, i64 noundef 1024, ptr noundef @.str.189, i64 noundef %2131) #14
  %2133 = invoke noalias ptr @fopen(ptr noundef @buffer_bloom_file, ptr noundef @.str.148)
          to label %2134 unwind label %1484

2134:                                             ; preds = %2130
  store ptr %2133, ptr %25, align 8, !tbaa !9
  %2135 = load ptr, ptr %25, align 8, !tbaa !9
  %2136 = icmp ne ptr %2135, null
  br i1 %2136, label %2137, label %2143

2137:                                             ; preds = %2134
  %2138 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.186, ptr noundef @buffer_bloom_file)
          to label %2139 unwind label %1484

2139:                                             ; preds = %2137
  %2140 = load ptr, ptr %25, align 8, !tbaa !9
  %2141 = invoke i32 @fclose(ptr noundef %2140)
          to label %2142 unwind label %1484

2142:                                             ; preds = %2139
  br label %2143

2143:                                             ; preds = %2142, %2134
  store i32 1, ptr @FLAGREADEDFILE2, align 4, !tbaa !5
  br label %2145

2144:                                             ; preds = %1981
  store i32 0, ptr @FLAGREADEDFILE2, align 4, !tbaa !5
  br label %2145

2145:                                             ; preds = %2144, %2143
  %2146 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %2147 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef @buffer_bloom_file, i64 noundef 1024, ptr noundef @.str.190, i64 noundef %2146) #14
  %2148 = invoke noalias ptr @fopen(ptr noundef @buffer_bloom_file, ptr noundef @.str.148)
          to label %2149 unwind label %1484

2149:                                             ; preds = %2145
  store ptr %2148, ptr %26, align 8, !tbaa !9
  %2150 = load ptr, ptr %26, align 8, !tbaa !9
  %2151 = icmp ne ptr %2150, null
  br i1 %2151, label %2152, label %2197

2152:                                             ; preds = %2149
  %2153 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.191, ptr noundef @buffer_bloom_file)
          to label %2154 unwind label %1484

2154:                                             ; preds = %2152
  %2155 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2156 = invoke i32 @fflush(ptr noundef %2155)
          to label %2157 unwind label %1484

2157:                                             ; preds = %2154
  %2158 = load ptr, ptr @bPtable, align 8, !tbaa !9
  %2159 = load i64, ptr @bytes, align 8, !tbaa !17
  %2160 = load ptr, ptr %26, align 8, !tbaa !9
  %2161 = invoke i64 @fread(ptr noundef %2158, i64 noundef %2159, i64 noundef 1, ptr noundef %2160)
          to label %2162 unwind label %1484

2162:                                             ; preds = %2157
  store i64 %2161, ptr %52, align 8, !tbaa !17
  %2163 = load i64, ptr %52, align 8, !tbaa !17
  %2164 = icmp ne i64 %2163, 1
  br i1 %2164, label %2165, label %2168

2165:                                             ; preds = %2162
  %2166 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2167 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2166, ptr noundef @.str.181, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

2168:                                             ; preds = %2162
  %2169 = load ptr, ptr %26, align 8, !tbaa !9
  %2170 = invoke i64 @fread(ptr noundef @checksum, i64 noundef 32, i64 noundef 1, ptr noundef %2169)
          to label %2171 unwind label %1484

2171:                                             ; preds = %2168
  store i64 %2170, ptr %52, align 8, !tbaa !17
  %2172 = load i64, ptr %52, align 8, !tbaa !17
  %2173 = icmp ne i64 %2172, 1
  br i1 %2173, label %2174, label %2177

2174:                                             ; preds = %2171
  %2175 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2176 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2175, ptr noundef @.str.181, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

2177:                                             ; preds = %2171
  %2178 = load i32, ptr @FLAGSKIPCHECKSUM, align 4, !tbaa !5
  %2179 = icmp eq i32 %2178, 0
  br i1 %2179, label %2180, label %2191

2180:                                             ; preds = %2177
  %2181 = load ptr, ptr @bPtable, align 8, !tbaa !9
  %2182 = load i64, ptr @bytes, align 8, !tbaa !17
  %2183 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %2181, i64 noundef %2182, ptr noundef @checksum_backup)
          to label %2184 unwind label %1484

2184:                                             ; preds = %2180
  %2185 = call i32 @memcmp(ptr noundef @checksum, ptr noundef @checksum_backup, i64 noundef 32) #18
  %2186 = icmp ne i32 %2185, 0
  br i1 %2186, label %2187, label %2190

2187:                                             ; preds = %2184
  %2188 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2189 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2188, ptr noundef @.str.182, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

2190:                                             ; preds = %2184
  br label %2191

2191:                                             ; preds = %2190, %2177
  %2192 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.192)
          to label %2193 unwind label %1484

2193:                                             ; preds = %2191
  %2194 = load ptr, ptr %26, align 8, !tbaa !9
  %2195 = invoke i32 @fclose(ptr noundef %2194)
          to label %2196 unwind label %1484

2196:                                             ; preds = %2193
  store i32 1, ptr @FLAGREADEDFILE3, align 4, !tbaa !5
  br label %2198

2197:                                             ; preds = %2149
  store i32 0, ptr @FLAGREADEDFILE3, align 4, !tbaa !5
  br label %2198

2198:                                             ; preds = %2197, %2196
  %2199 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %2200 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef @buffer_bloom_file, i64 noundef 1024, ptr noundef @.str.193, i64 noundef %2199) #14
  %2201 = invoke noalias ptr @fopen(ptr noundef @buffer_bloom_file, ptr noundef @.str.148)
          to label %2202 unwind label %1484

2202:                                             ; preds = %2198
  store ptr %2201, ptr %25, align 8, !tbaa !9
  %2203 = load ptr, ptr %25, align 8, !tbaa !9
  %2204 = icmp ne ptr %2203, null
  br i1 %2204, label %2205, label %2339

2205:                                             ; preds = %2202
  %2206 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.180, ptr noundef @buffer_bloom_file)
          to label %2207 unwind label %1484

2207:                                             ; preds = %2205
  %2208 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2209 = invoke i32 @fflush(ptr noundef %2208)
          to label %2210 unwind label %1484

2210:                                             ; preds = %2207
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %2211

2211:                                             ; preds = %2330, %2210
  %2212 = load i32, ptr %33, align 4, !tbaa !5
  %2213 = icmp slt i32 %2212, 256
  br i1 %2213, label %2214, label %2333

2214:                                             ; preds = %2211
  %2215 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !9
  %2216 = load i32, ptr %33, align 4, !tbaa !5
  %2217 = sext i32 %2216 to i64
  %2218 = getelementptr inbounds %struct.bloom, ptr %2215, i64 %2217
  %2219 = getelementptr inbounds %struct.bloom, ptr %2218, i32 0, i32 9
  %2220 = load ptr, ptr %2219, align 16, !tbaa !32
  store ptr %2220, ptr %21, align 8, !tbaa !9
  %2221 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !9
  %2222 = load i32, ptr %33, align 4, !tbaa !5
  %2223 = sext i32 %2222 to i64
  %2224 = getelementptr inbounds %struct.bloom, ptr %2221, i64 %2223
  %2225 = load ptr, ptr %25, align 8, !tbaa !9
  %2226 = invoke i64 @fread(ptr noundef %2224, i64 noundef 80, i64 noundef 1, ptr noundef %2225)
          to label %2227 unwind label %1484

2227:                                             ; preds = %2214
  %2228 = trunc i64 %2226 to i32
  store i32 %2228, ptr %34, align 4, !tbaa !5
  %2229 = load i32, ptr %34, align 4, !tbaa !5
  %2230 = icmp ne i32 %2229, 1
  br i1 %2230, label %2231, label %2234

2231:                                             ; preds = %2227
  %2232 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2233 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2232, ptr noundef @.str.181, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

2234:                                             ; preds = %2227
  %2235 = load ptr, ptr %21, align 8, !tbaa !9
  %2236 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !9
  %2237 = load i32, ptr %33, align 4, !tbaa !5
  %2238 = sext i32 %2237 to i64
  %2239 = getelementptr inbounds %struct.bloom, ptr %2236, i64 %2238
  %2240 = getelementptr inbounds %struct.bloom, ptr %2239, i32 0, i32 9
  store ptr %2235, ptr %2240, align 16, !tbaa !32
  %2241 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !9
  %2242 = load i32, ptr %33, align 4, !tbaa !5
  %2243 = sext i32 %2242 to i64
  %2244 = getelementptr inbounds %struct.bloom, ptr %2241, i64 %2243
  %2245 = getelementptr inbounds %struct.bloom, ptr %2244, i32 0, i32 9
  %2246 = load ptr, ptr %2245, align 16, !tbaa !32
  %2247 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !9
  %2248 = load i32, ptr %33, align 4, !tbaa !5
  %2249 = sext i32 %2248 to i64
  %2250 = getelementptr inbounds %struct.bloom, ptr %2247, i64 %2249
  %2251 = getelementptr inbounds %struct.bloom, ptr %2250, i32 0, i32 2
  %2252 = load i64, ptr %2251, align 16, !tbaa !22
  %2253 = load ptr, ptr %25, align 8, !tbaa !9
  %2254 = invoke i64 @fread(ptr noundef %2246, i64 noundef %2252, i64 noundef 1, ptr noundef %2253)
          to label %2255 unwind label %1484

2255:                                             ; preds = %2234
  %2256 = trunc i64 %2254 to i32
  store i32 %2256, ptr %34, align 4, !tbaa !5
  %2257 = load i32, ptr %34, align 4, !tbaa !5
  %2258 = icmp ne i32 %2257, 1
  br i1 %2258, label %2259, label %2262

2259:                                             ; preds = %2255
  %2260 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2261 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2260, ptr noundef @.str.181, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

2262:                                             ; preds = %2255
  %2263 = load ptr, ptr @bloom_bPx3rd_checksums, align 8, !tbaa !9
  %2264 = load i32, ptr %33, align 4, !tbaa !5
  %2265 = sext i32 %2264 to i64
  %2266 = getelementptr inbounds %struct.checksumsha256, ptr %2263, i64 %2265
  %2267 = load ptr, ptr %25, align 8, !tbaa !9
  %2268 = invoke i64 @fread(ptr noundef %2266, i64 noundef 64, i64 noundef 1, ptr noundef %2267)
          to label %2269 unwind label %1484

2269:                                             ; preds = %2262
  %2270 = trunc i64 %2268 to i32
  store i32 %2270, ptr %34, align 4, !tbaa !5
  %2271 = load i32, ptr %34, align 4, !tbaa !5
  %2272 = icmp ne i32 %2271, 1
  br i1 %2272, label %2273, label %2276

2273:                                             ; preds = %2269
  %2274 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2275 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2274, ptr noundef @.str.181, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

2276:                                             ; preds = %2269
  %2277 = getelementptr inbounds [32 x i8], ptr %7, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %2277, i8 0, i64 32, i1 false)
  %2278 = load i32, ptr @FLAGSKIPCHECKSUM, align 4, !tbaa !5
  %2279 = icmp eq i32 %2278, 0
  br i1 %2279, label %2280, label %2319

2280:                                             ; preds = %2276
  %2281 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !9
  %2282 = load i32, ptr %33, align 4, !tbaa !5
  %2283 = sext i32 %2282 to i64
  %2284 = getelementptr inbounds %struct.bloom, ptr %2281, i64 %2283
  %2285 = getelementptr inbounds %struct.bloom, ptr %2284, i32 0, i32 9
  %2286 = load ptr, ptr %2285, align 16, !tbaa !32
  %2287 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !9
  %2288 = load i32, ptr %33, align 4, !tbaa !5
  %2289 = sext i32 %2288 to i64
  %2290 = getelementptr inbounds %struct.bloom, ptr %2287, i64 %2289
  %2291 = getelementptr inbounds %struct.bloom, ptr %2290, i32 0, i32 2
  %2292 = load i64, ptr %2291, align 16, !tbaa !22
  %2293 = getelementptr inbounds [32 x i8], ptr %7, i64 0, i64 0
  %2294 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %2286, i64 noundef %2292, ptr noundef %2293)
          to label %2295 unwind label %1484

2295:                                             ; preds = %2280
  %2296 = load ptr, ptr @bloom_bPx3rd_checksums, align 8, !tbaa !9
  %2297 = load i32, ptr %33, align 4, !tbaa !5
  %2298 = sext i32 %2297 to i64
  %2299 = getelementptr inbounds %struct.checksumsha256, ptr %2296, i64 %2298
  %2300 = getelementptr inbounds %struct.checksumsha256, ptr %2299, i32 0, i32 0
  %2301 = getelementptr inbounds [32 x i8], ptr %2300, i64 0, i64 0
  %2302 = getelementptr inbounds [32 x i8], ptr %7, i64 0, i64 0
  %2303 = call i32 @memcmp(ptr noundef %2301, ptr noundef %2302, i64 noundef 32) #18
  %2304 = icmp ne i32 %2303, 0
  br i1 %2304, label %2315, label %2305

2305:                                             ; preds = %2295
  %2306 = load ptr, ptr @bloom_bPx3rd_checksums, align 8, !tbaa !9
  %2307 = load i32, ptr %33, align 4, !tbaa !5
  %2308 = sext i32 %2307 to i64
  %2309 = getelementptr inbounds %struct.checksumsha256, ptr %2306, i64 %2308
  %2310 = getelementptr inbounds %struct.checksumsha256, ptr %2309, i32 0, i32 1
  %2311 = getelementptr inbounds [32 x i8], ptr %2310, i64 0, i64 0
  %2312 = getelementptr inbounds [32 x i8], ptr %7, i64 0, i64 0
  %2313 = call i32 @memcmp(ptr noundef %2311, ptr noundef %2312, i64 noundef 32) #18
  %2314 = icmp ne i32 %2313, 0
  br i1 %2314, label %2315, label %2318

2315:                                             ; preds = %2305, %2295
  %2316 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2317 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2316, ptr noundef @.str.182, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

2318:                                             ; preds = %2305
  br label %2319

2319:                                             ; preds = %2318, %2276
  %2320 = load i32, ptr %33, align 4, !tbaa !5
  %2321 = srem i32 %2320, 64
  %2322 = icmp eq i32 %2321, 0
  br i1 %2322, label %2323, label %2329

2323:                                             ; preds = %2319
  %2324 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.183)
          to label %2325 unwind label %1484

2325:                                             ; preds = %2323
  %2326 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2327 = invoke i32 @fflush(ptr noundef %2326)
          to label %2328 unwind label %1484

2328:                                             ; preds = %2325
  br label %2329

2329:                                             ; preds = %2328, %2319
  br label %2330

2330:                                             ; preds = %2329
  %2331 = load i32, ptr %33, align 4, !tbaa !5
  %2332 = add nsw i32 %2331, 1
  store i32 %2332, ptr %33, align 4, !tbaa !5
  br label %2211, !llvm.loop !36

2333:                                             ; preds = %2211
  %2334 = load ptr, ptr %25, align 8, !tbaa !9
  %2335 = invoke i32 @fclose(ptr noundef %2334)
          to label %2336 unwind label %1484

2336:                                             ; preds = %2333
  %2337 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.184)
          to label %2338 unwind label %1484

2338:                                             ; preds = %2336
  store i32 1, ptr @FLAGREADEDFILE4, align 4, !tbaa !5
  br label %2340

2339:                                             ; preds = %2202
  store i32 0, ptr @FLAGREADEDFILE4, align 4, !tbaa !5
  br label %2340

2340:                                             ; preds = %2339, %2338
  br label %2341

2341:                                             ; preds = %2340, %1678
  %2342 = load i32, ptr @FLAGREADEDFILE1, align 4, !tbaa !5
  %2343 = icmp ne i32 %2342, 0
  br i1 %2343, label %2344, label %2353

2344:                                             ; preds = %2341
  %2345 = load i32, ptr @FLAGREADEDFILE2, align 4, !tbaa !5
  %2346 = icmp ne i32 %2345, 0
  br i1 %2346, label %2347, label %2353

2347:                                             ; preds = %2344
  %2348 = load i32, ptr @FLAGREADEDFILE3, align 4, !tbaa !5
  %2349 = icmp ne i32 %2348, 0
  br i1 %2349, label %2350, label %2353

2350:                                             ; preds = %2347
  %2351 = load i32, ptr @FLAGREADEDFILE4, align 4, !tbaa !5
  %2352 = icmp ne i32 %2351, 0
  br i1 %2352, label %2891, label %2353

2353:                                             ; preds = %2350, %2347, %2344, %2341
  %2354 = load i32, ptr @FLAGREADEDFILE1, align 4, !tbaa !5
  %2355 = icmp eq i32 %2354, 1
  br i1 %2355, label %2356, label %2623

2356:                                             ; preds = %2353
  %2357 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.194)
          to label %2358 unwind label %1484

2358:                                             ; preds = %2356
  store i64 0, ptr @FINISHED_THREADS_COUNTER, align 8, !tbaa !17
  store i64 0, ptr @FINISHED_THREADS_BP, align 8, !tbaa !17
  store i64 0, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  store i32 0, ptr %38, align 4, !tbaa !5
  store i64 0, ptr %27, align 8, !tbaa !17
  store i64 0, ptr @THREADCOUNTER, align 8, !tbaa !17
  %2359 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  %2360 = zext i32 %2359 to i64
  %2361 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %2362 = icmp uge i64 %2360, %2361
  br i1 %2362, label %2363, label %2366

2363:                                             ; preds = %2358
  %2364 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %2365 = trunc i64 %2364 to i32
  store i32 %2365, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  br label %2366

2366:                                             ; preds = %2363, %2358
  %2367 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %2368 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  %2369 = zext i32 %2368 to i64
  %2370 = udiv i64 %2367, %2369
  store i64 %2370, ptr @THREADCYCLES, align 8, !tbaa !17
  %2371 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %2372 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  %2373 = zext i32 %2372 to i64
  %2374 = urem i64 %2371, %2373
  store i64 %2374, ptr %28, align 8, !tbaa !17
  %2375 = load i64, ptr %28, align 8, !tbaa !17
  %2376 = icmp ne i64 %2375, 0
  br i1 %2376, label %2377, label %2380

2377:                                             ; preds = %2366
  %2378 = load i64, ptr @THREADCYCLES, align 8, !tbaa !17
  %2379 = add i64 %2378, 1
  store i64 %2379, ptr @THREADCYCLES, align 8, !tbaa !17
  br label %2380

2380:                                             ; preds = %2377, %2366
  %2381 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %2382 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %2383 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %2384 = uitofp i64 %2383 to double
  %2385 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %2386 = uitofp i64 %2385 to double
  %2387 = fdiv double %2384, %2386
  %2388 = fmul double %2387, 1.000000e+02
  %2389 = fptosi double %2388 to i32
  %2390 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.195, i64 noundef %2381, i64 noundef %2382, i32 noundef %2389)
          to label %2391 unwind label %1484

2391:                                             ; preds = %2380
  %2392 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2393 = invoke i32 @fflush(ptr noundef %2392)
          to label %2394 unwind label %1484

2394:                                             ; preds = %2391
  %2395 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %2396 = sext i32 %2395 to i64
  %2397 = call noalias ptr @calloc(i64 noundef %2396, i64 noundef 8) #20
  store ptr %2397, ptr @tid, align 8, !tbaa !9
  %2398 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %2399 = sext i32 %2398 to i64
  %2400 = call noalias ptr @calloc(i64 noundef %2399, i64 noundef 40) #20
  store ptr %2400, ptr @bPload_mutex, align 8, !tbaa !9
  %2401 = load ptr, ptr @bPload_mutex, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %2401, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.196, i32 noundef 1649)
          to label %2402 unwind label %1484

2402:                                             ; preds = %2394
  %2403 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %2404 = sext i32 %2403 to i64
  %2405 = call noalias ptr @calloc(i64 noundef %2404, i64 noundef 48) #20
  store ptr %2405, ptr %51, align 8, !tbaa !9
  %2406 = load ptr, ptr %51, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %2406, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.197, i32 noundef 1651)
          to label %2407 unwind label %1484

2407:                                             ; preds = %2402
  %2408 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %2409 = sext i32 %2408 to i64
  %2410 = call noalias ptr @calloc(i64 noundef %2409, i64 noundef 1) #20
  store ptr %2410, ptr %22, align 8, !tbaa !9
  %2411 = load ptr, ptr %22, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %2411, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.198, i32 noundef 1653)
          to label %2412 unwind label %1484

2412:                                             ; preds = %2407
  %2413 = load ptr, ptr %22, align 8, !tbaa !9
  %2414 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %2415 = sext i32 %2414 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %2413, i8 1, i64 %2415, i1 false)
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %2416

2416:                                             ; preds = %2426, %2412
  %2417 = load i32, ptr %33, align 4, !tbaa !5
  %2418 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %2419 = icmp slt i32 %2417, %2418
  br i1 %2419, label %2420, label %2429

2420:                                             ; preds = %2416
  %2421 = load ptr, ptr @bPload_mutex, align 8, !tbaa !9
  %2422 = load i32, ptr %33, align 4, !tbaa !5
  %2423 = sext i32 %2422 to i64
  %2424 = getelementptr inbounds %union.pthread_mutex_t, ptr %2421, i64 %2423
  %2425 = call i32 @pthread_mutex_init(ptr noundef %2424, ptr noundef null) #14
  br label %2426

2426:                                             ; preds = %2420
  %2427 = load i32, ptr %33, align 4, !tbaa !5
  %2428 = add nsw i32 %2427, 1
  store i32 %2428, ptr %33, align 4, !tbaa !5
  br label %2416, !llvm.loop !37

2429:                                             ; preds = %2416
  br label %2430

2430:                                             ; preds = %2610, %2429
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %2431

2431:                                             ; preds = %2538, %2430
  %2432 = load i32, ptr %33, align 4, !tbaa !5
  %2433 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %2434 = icmp slt i32 %2432, %2433
  br i1 %2434, label %2435, label %2439

2435:                                             ; preds = %2431
  %2436 = load i32, ptr %38, align 4, !tbaa !5
  %2437 = icmp ne i32 %2436, 0
  %2438 = xor i1 %2437, true
  br label %2439

2439:                                             ; preds = %2435, %2431
  %2440 = phi i1 [ false, %2431 ], [ %2438, %2435 ]
  br i1 %2440, label %2441, label %2541

2441:                                             ; preds = %2439
  %2442 = load ptr, ptr %22, align 8, !tbaa !9
  %2443 = load i32, ptr %33, align 4, !tbaa !5
  %2444 = sext i32 %2443 to i64
  %2445 = getelementptr inbounds i8, ptr %2442, i64 %2444
  %2446 = load i8, ptr %2445, align 1, !tbaa !11
  %2447 = icmp ne i8 %2446, 0
  br i1 %2447, label %2448, label %2537

2448:                                             ; preds = %2441
  %2449 = load i32, ptr %38, align 4, !tbaa !5
  %2450 = icmp ne i32 %2449, 0
  br i1 %2450, label %2537, label %2451

2451:                                             ; preds = %2448
  %2452 = load ptr, ptr %22, align 8, !tbaa !9
  %2453 = load i32, ptr %33, align 4, !tbaa !5
  %2454 = sext i32 %2453 to i64
  %2455 = getelementptr inbounds i8, ptr %2452, i64 %2454
  store i8 0, ptr %2455, align 1, !tbaa !11
  %2456 = load i64, ptr %27, align 8, !tbaa !17
  %2457 = load ptr, ptr %51, align 8, !tbaa !9
  %2458 = load i32, ptr %33, align 4, !tbaa !5
  %2459 = sext i32 %2458 to i64
  %2460 = getelementptr inbounds %struct.bPload, ptr %2457, i64 %2459
  %2461 = getelementptr inbounds %struct.bPload, ptr %2460, i32 0, i32 1
  store i64 %2456, ptr %2461, align 8, !tbaa !38
  %2462 = load i32, ptr %33, align 4, !tbaa !5
  %2463 = load ptr, ptr %51, align 8, !tbaa !9
  %2464 = load i32, ptr %33, align 4, !tbaa !5
  %2465 = sext i32 %2464 to i64
  %2466 = getelementptr inbounds %struct.bPload, ptr %2463, i64 %2465
  %2467 = getelementptr inbounds %struct.bPload, ptr %2466, i32 0, i32 0
  store i32 %2462, ptr %2467, align 8, !tbaa !40
  %2468 = load ptr, ptr %51, align 8, !tbaa !9
  %2469 = load i32, ptr %33, align 4, !tbaa !5
  %2470 = sext i32 %2469 to i64
  %2471 = getelementptr inbounds %struct.bPload, ptr %2468, i64 %2470
  %2472 = getelementptr inbounds %struct.bPload, ptr %2471, i32 0, i32 6
  store i32 0, ptr %2472, align 4, !tbaa !41
  %2473 = load i64, ptr @THREADCOUNTER, align 8, !tbaa !17
  %2474 = load i64, ptr @THREADCYCLES, align 8, !tbaa !17
  %2475 = sub i64 %2474, 1
  %2476 = icmp ult i64 %2473, %2475
  br i1 %2476, label %2477, label %2494

2477:                                             ; preds = %2451
  %2478 = load i64, ptr %27, align 8, !tbaa !17
  %2479 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  %2480 = zext i32 %2479 to i64
  %2481 = add i64 %2478, %2480
  %2482 = load ptr, ptr %51, align 8, !tbaa !9
  %2483 = load i32, ptr %33, align 4, !tbaa !5
  %2484 = sext i32 %2483 to i64
  %2485 = getelementptr inbounds %struct.bPload, ptr %2482, i64 %2484
  %2486 = getelementptr inbounds %struct.bPload, ptr %2485, i32 0, i32 2
  store i64 %2481, ptr %2486, align 8, !tbaa !42
  %2487 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  %2488 = zext i32 %2487 to i64
  %2489 = load ptr, ptr %51, align 8, !tbaa !9
  %2490 = load i32, ptr %33, align 4, !tbaa !5
  %2491 = sext i32 %2490 to i64
  %2492 = getelementptr inbounds %struct.bPload, ptr %2489, i64 %2491
  %2493 = getelementptr inbounds %struct.bPload, ptr %2492, i32 0, i32 4
  store i64 %2488, ptr %2493, align 8, !tbaa !43
  br label %2515

2494:                                             ; preds = %2451
  %2495 = load i64, ptr %27, align 8, !tbaa !17
  %2496 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  %2497 = zext i32 %2496 to i64
  %2498 = add i64 %2495, %2497
  %2499 = load i64, ptr %28, align 8, !tbaa !17
  %2500 = add i64 %2498, %2499
  %2501 = load ptr, ptr %51, align 8, !tbaa !9
  %2502 = load i32, ptr %33, align 4, !tbaa !5
  %2503 = sext i32 %2502 to i64
  %2504 = getelementptr inbounds %struct.bPload, ptr %2501, i64 %2503
  %2505 = getelementptr inbounds %struct.bPload, ptr %2504, i32 0, i32 2
  store i64 %2500, ptr %2505, align 8, !tbaa !42
  %2506 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  %2507 = zext i32 %2506 to i64
  %2508 = load i64, ptr %28, align 8, !tbaa !17
  %2509 = add i64 %2507, %2508
  %2510 = load ptr, ptr %51, align 8, !tbaa !9
  %2511 = load i32, ptr %33, align 4, !tbaa !5
  %2512 = sext i32 %2511 to i64
  %2513 = getelementptr inbounds %struct.bPload, ptr %2510, i64 %2512
  %2514 = getelementptr inbounds %struct.bPload, ptr %2513, i32 0, i32 4
  store i64 %2509, ptr %2514, align 8, !tbaa !43
  store i32 1, ptr %38, align 4, !tbaa !5
  br label %2515

2515:                                             ; preds = %2494, %2477
  %2516 = load ptr, ptr @tid, align 8, !tbaa !9
  %2517 = load i32, ptr %33, align 4, !tbaa !5
  %2518 = sext i32 %2517 to i64
  %2519 = getelementptr inbounds i64, ptr %2516, i64 %2518
  %2520 = load ptr, ptr %51, align 8, !tbaa !9
  %2521 = load i32, ptr %33, align 4, !tbaa !5
  %2522 = sext i32 %2521 to i64
  %2523 = getelementptr inbounds %struct.bPload, ptr %2520, i64 %2522
  %2524 = call i32 @pthread_create(ptr noundef %2519, ptr noundef null, ptr noundef @_Z21thread_bPload_2bloomsPv, ptr noundef %2523) #14
  store i32 %2524, ptr %53, align 4, !tbaa !5
  %2525 = load ptr, ptr @tid, align 8, !tbaa !9
  %2526 = load i32, ptr %33, align 4, !tbaa !5
  %2527 = sext i32 %2526 to i64
  %2528 = getelementptr inbounds i64, ptr %2525, i64 %2527
  %2529 = load i64, ptr %2528, align 8, !tbaa !17
  %2530 = call i32 @pthread_detach(i64 noundef %2529) #14
  %2531 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  %2532 = zext i32 %2531 to i64
  %2533 = load i64, ptr %27, align 8, !tbaa !17
  %2534 = add i64 %2533, %2532
  store i64 %2534, ptr %27, align 8, !tbaa !17
  %2535 = load i64, ptr @THREADCOUNTER, align 8, !tbaa !17
  %2536 = add i64 %2535, 1
  store i64 %2536, ptr @THREADCOUNTER, align 8, !tbaa !17
  br label %2537

2537:                                             ; preds = %2515, %2448, %2441
  br label %2538

2538:                                             ; preds = %2537
  %2539 = load i32, ptr %33, align 4, !tbaa !5
  %2540 = add nsw i32 %2539, 1
  store i32 %2540, ptr %33, align 4, !tbaa !5
  br label %2431, !llvm.loop !44

2541:                                             ; preds = %2439
  %2542 = load i64, ptr @OLDFINISHED_ITEMS, align 8, !tbaa !17
  %2543 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %2544 = icmp ne i64 %2542, %2543
  br i1 %2544, label %2545, label %2561

2545:                                             ; preds = %2541
  %2546 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %2547 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %2548 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %2549 = uitofp i64 %2548 to double
  %2550 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %2551 = uitofp i64 %2550 to double
  %2552 = fdiv double %2549, %2551
  %2553 = fmul double %2552, 1.000000e+02
  %2554 = fptosi double %2553 to i32
  %2555 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.195, i64 noundef %2546, i64 noundef %2547, i32 noundef %2554)
          to label %2556 unwind label %1484

2556:                                             ; preds = %2545
  %2557 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2558 = invoke i32 @fflush(ptr noundef %2557)
          to label %2559 unwind label %1484

2559:                                             ; preds = %2556
  %2560 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  store i64 %2560, ptr @OLDFINISHED_ITEMS, align 8, !tbaa !17
  br label %2561

2561:                                             ; preds = %2559, %2541
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %2562

2562:                                             ; preds = %2606, %2561
  %2563 = load i32, ptr %33, align 4, !tbaa !5
  %2564 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %2565 = icmp slt i32 %2563, %2564
  br i1 %2565, label %2566, label %2609

2566:                                             ; preds = %2562
  %2567 = load ptr, ptr @bPload_mutex, align 8, !tbaa !9
  %2568 = load i32, ptr %33, align 4, !tbaa !5
  %2569 = sext i32 %2568 to i64
  %2570 = getelementptr inbounds %union.pthread_mutex_t, ptr %2567, i64 %2569
  %2571 = call i32 @pthread_mutex_lock(ptr noundef %2570) #14
  %2572 = load ptr, ptr %51, align 8, !tbaa !9
  %2573 = load i32, ptr %33, align 4, !tbaa !5
  %2574 = sext i32 %2573 to i64
  %2575 = getelementptr inbounds %struct.bPload, ptr %2572, i64 %2574
  %2576 = getelementptr inbounds %struct.bPload, ptr %2575, i32 0, i32 6
  %2577 = load i32, ptr %2576, align 4, !tbaa !41
  store i32 %2577, ptr %32, align 4, !tbaa !5
  %2578 = load ptr, ptr @bPload_mutex, align 8, !tbaa !9
  %2579 = load i32, ptr %33, align 4, !tbaa !5
  %2580 = sext i32 %2579 to i64
  %2581 = getelementptr inbounds %union.pthread_mutex_t, ptr %2578, i64 %2580
  %2582 = call i32 @pthread_mutex_unlock(ptr noundef %2581) #14
  %2583 = load i32, ptr %32, align 4, !tbaa !5
  %2584 = icmp ne i32 %2583, 0
  br i1 %2584, label %2585, label %2605

2585:                                             ; preds = %2566
  %2586 = load ptr, ptr %51, align 8, !tbaa !9
  %2587 = load i32, ptr %33, align 4, !tbaa !5
  %2588 = sext i32 %2587 to i64
  %2589 = getelementptr inbounds %struct.bPload, ptr %2586, i64 %2588
  %2590 = getelementptr inbounds %struct.bPload, ptr %2589, i32 0, i32 6
  store i32 0, ptr %2590, align 4, !tbaa !41
  %2591 = load ptr, ptr %22, align 8, !tbaa !9
  %2592 = load i32, ptr %33, align 4, !tbaa !5
  %2593 = sext i32 %2592 to i64
  %2594 = getelementptr inbounds i8, ptr %2591, i64 %2593
  store i8 1, ptr %2594, align 1, !tbaa !11
  %2595 = load ptr, ptr %51, align 8, !tbaa !9
  %2596 = load i32, ptr %33, align 4, !tbaa !5
  %2597 = sext i32 %2596 to i64
  %2598 = getelementptr inbounds %struct.bPload, ptr %2595, i64 %2597
  %2599 = getelementptr inbounds %struct.bPload, ptr %2598, i32 0, i32 4
  %2600 = load i64, ptr %2599, align 8, !tbaa !43
  %2601 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %2602 = add i64 %2601, %2600
  store i64 %2602, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %2603 = load i64, ptr @FINISHED_THREADS_COUNTER, align 8, !tbaa !17
  %2604 = add i64 %2603, 1
  store i64 %2604, ptr @FINISHED_THREADS_COUNTER, align 8, !tbaa !17
  br label %2605

2605:                                             ; preds = %2585, %2566
  br label %2606

2606:                                             ; preds = %2605
  %2607 = load i32, ptr %33, align 4, !tbaa !5
  %2608 = add nsw i32 %2607, 1
  store i32 %2608, ptr %33, align 4, !tbaa !5
  br label %2562, !llvm.loop !45

2609:                                             ; preds = %2562
  br label %2610

2610:                                             ; preds = %2609
  %2611 = load i64, ptr @FINISHED_THREADS_COUNTER, align 8, !tbaa !17
  %2612 = load i64, ptr @THREADCYCLES, align 8, !tbaa !17
  %2613 = icmp ult i64 %2611, %2612
  br i1 %2613, label %2430, label %2614, !llvm.loop !46

2614:                                             ; preds = %2610
  %2615 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %2616 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %2617 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.199, i64 noundef %2615, i64 noundef %2616)
          to label %2618 unwind label %1484

2618:                                             ; preds = %2614
  %2619 = load ptr, ptr @tid, align 8, !tbaa !9
  call void @free(ptr noundef %2619) #14
  %2620 = load ptr, ptr @bPload_mutex, align 8, !tbaa !9
  call void @free(ptr noundef %2620) #14
  %2621 = load ptr, ptr %51, align 8, !tbaa !9
  call void @free(ptr noundef %2621) #14
  %2622 = load ptr, ptr %22, align 8, !tbaa !9
  call void @free(ptr noundef %2622) #14
  br label %2890

2623:                                             ; preds = %2353
  store i64 0, ptr @FINISHED_THREADS_COUNTER, align 8, !tbaa !17
  store i64 0, ptr @FINISHED_THREADS_BP, align 8, !tbaa !17
  store i64 0, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  store i32 0, ptr %38, align 4, !tbaa !5
  store i64 0, ptr %27, align 8, !tbaa !17
  store i64 0, ptr @THREADCOUNTER, align 8, !tbaa !17
  %2624 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  %2625 = zext i32 %2624 to i64
  %2626 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %2627 = icmp uge i64 %2625, %2626
  br i1 %2627, label %2628, label %2631

2628:                                             ; preds = %2623
  %2629 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %2630 = trunc i64 %2629 to i32
  store i32 %2630, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  br label %2631

2631:                                             ; preds = %2628, %2623
  %2632 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %2633 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  %2634 = zext i32 %2633 to i64
  %2635 = udiv i64 %2632, %2634
  store i64 %2635, ptr @THREADCYCLES, align 8, !tbaa !17
  %2636 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %2637 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  %2638 = zext i32 %2637 to i64
  %2639 = urem i64 %2636, %2638
  store i64 %2639, ptr %28, align 8, !tbaa !17
  %2640 = load i64, ptr %28, align 8, !tbaa !17
  %2641 = icmp ne i64 %2640, 0
  br i1 %2641, label %2642, label %2645

2642:                                             ; preds = %2631
  %2643 = load i64, ptr @THREADCYCLES, align 8, !tbaa !17
  %2644 = add i64 %2643, 1
  store i64 %2644, ptr @THREADCYCLES, align 8, !tbaa !17
  br label %2645

2645:                                             ; preds = %2642, %2631
  %2646 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %2647 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %2648 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %2649 = uitofp i64 %2648 to double
  %2650 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %2651 = uitofp i64 %2650 to double
  %2652 = fdiv double %2649, %2651
  %2653 = fmul double %2652, 1.000000e+02
  %2654 = fptosi double %2653 to i32
  %2655 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.195, i64 noundef %2646, i64 noundef %2647, i32 noundef %2654)
          to label %2656 unwind label %1484

2656:                                             ; preds = %2645
  %2657 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2658 = invoke i32 @fflush(ptr noundef %2657)
          to label %2659 unwind label %1484

2659:                                             ; preds = %2656
  %2660 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %2661 = sext i32 %2660 to i64
  %2662 = call noalias ptr @calloc(i64 noundef %2661, i64 noundef 8) #20
  store ptr %2662, ptr @tid, align 8, !tbaa !9
  %2663 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %2664 = sext i32 %2663 to i64
  %2665 = call noalias ptr @calloc(i64 noundef %2664, i64 noundef 40) #20
  store ptr %2665, ptr @bPload_mutex, align 8, !tbaa !9
  %2666 = load ptr, ptr @tid, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %2666, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.200, i32 noundef 1762)
          to label %2667 unwind label %1484

2667:                                             ; preds = %2659
  %2668 = load ptr, ptr @bPload_mutex, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %2668, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.196, i32 noundef 1763)
          to label %2669 unwind label %1484

2669:                                             ; preds = %2667
  %2670 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %2671 = sext i32 %2670 to i64
  %2672 = call noalias ptr @calloc(i64 noundef %2671, i64 noundef 48) #20
  store ptr %2672, ptr %51, align 8, !tbaa !9
  %2673 = load ptr, ptr %51, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %2673, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.197, i32 noundef 1766)
          to label %2674 unwind label %1484

2674:                                             ; preds = %2669
  %2675 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %2676 = sext i32 %2675 to i64
  %2677 = call noalias ptr @calloc(i64 noundef %2676, i64 noundef 1) #20
  store ptr %2677, ptr %22, align 8, !tbaa !9
  %2678 = load ptr, ptr %22, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %2678, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.198, i32 noundef 1768)
          to label %2679 unwind label %1484

2679:                                             ; preds = %2674
  %2680 = load ptr, ptr %22, align 8, !tbaa !9
  %2681 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %2682 = sext i32 %2681 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %2680, i8 1, i64 %2682, i1 false)
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %2683

2683:                                             ; preds = %2693, %2679
  %2684 = load i32, ptr %33, align 4, !tbaa !5
  %2685 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %2686 = icmp slt i32 %2684, %2685
  br i1 %2686, label %2687, label %2696

2687:                                             ; preds = %2683
  %2688 = load ptr, ptr @bPload_mutex, align 8, !tbaa !9
  %2689 = load i32, ptr %33, align 4, !tbaa !5
  %2690 = sext i32 %2689 to i64
  %2691 = getelementptr inbounds %union.pthread_mutex_t, ptr %2688, i64 %2690
  %2692 = call i32 @pthread_mutex_init(ptr noundef %2691, ptr noundef null) #14
  br label %2693

2693:                                             ; preds = %2687
  %2694 = load i32, ptr %33, align 4, !tbaa !5
  %2695 = add nsw i32 %2694, 1
  store i32 %2695, ptr %33, align 4, !tbaa !5
  br label %2683, !llvm.loop !47

2696:                                             ; preds = %2683
  br label %2697

2697:                                             ; preds = %2877, %2696
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %2698

2698:                                             ; preds = %2805, %2697
  %2699 = load i32, ptr %33, align 4, !tbaa !5
  %2700 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %2701 = icmp slt i32 %2699, %2700
  br i1 %2701, label %2702, label %2706

2702:                                             ; preds = %2698
  %2703 = load i32, ptr %38, align 4, !tbaa !5
  %2704 = icmp ne i32 %2703, 0
  %2705 = xor i1 %2704, true
  br label %2706

2706:                                             ; preds = %2702, %2698
  %2707 = phi i1 [ false, %2698 ], [ %2705, %2702 ]
  br i1 %2707, label %2708, label %2808

2708:                                             ; preds = %2706
  %2709 = load ptr, ptr %22, align 8, !tbaa !9
  %2710 = load i32, ptr %33, align 4, !tbaa !5
  %2711 = sext i32 %2710 to i64
  %2712 = getelementptr inbounds i8, ptr %2709, i64 %2711
  %2713 = load i8, ptr %2712, align 1, !tbaa !11
  %2714 = icmp ne i8 %2713, 0
  br i1 %2714, label %2715, label %2804

2715:                                             ; preds = %2708
  %2716 = load i32, ptr %38, align 4, !tbaa !5
  %2717 = icmp ne i32 %2716, 0
  br i1 %2717, label %2804, label %2718

2718:                                             ; preds = %2715
  %2719 = load ptr, ptr %22, align 8, !tbaa !9
  %2720 = load i32, ptr %33, align 4, !tbaa !5
  %2721 = sext i32 %2720 to i64
  %2722 = getelementptr inbounds i8, ptr %2719, i64 %2721
  store i8 0, ptr %2722, align 1, !tbaa !11
  %2723 = load i64, ptr %27, align 8, !tbaa !17
  %2724 = load ptr, ptr %51, align 8, !tbaa !9
  %2725 = load i32, ptr %33, align 4, !tbaa !5
  %2726 = sext i32 %2725 to i64
  %2727 = getelementptr inbounds %struct.bPload, ptr %2724, i64 %2726
  %2728 = getelementptr inbounds %struct.bPload, ptr %2727, i32 0, i32 1
  store i64 %2723, ptr %2728, align 8, !tbaa !38
  %2729 = load i32, ptr %33, align 4, !tbaa !5
  %2730 = load ptr, ptr %51, align 8, !tbaa !9
  %2731 = load i32, ptr %33, align 4, !tbaa !5
  %2732 = sext i32 %2731 to i64
  %2733 = getelementptr inbounds %struct.bPload, ptr %2730, i64 %2732
  %2734 = getelementptr inbounds %struct.bPload, ptr %2733, i32 0, i32 0
  store i32 %2729, ptr %2734, align 8, !tbaa !40
  %2735 = load ptr, ptr %51, align 8, !tbaa !9
  %2736 = load i32, ptr %33, align 4, !tbaa !5
  %2737 = sext i32 %2736 to i64
  %2738 = getelementptr inbounds %struct.bPload, ptr %2735, i64 %2737
  %2739 = getelementptr inbounds %struct.bPload, ptr %2738, i32 0, i32 6
  store i32 0, ptr %2739, align 4, !tbaa !41
  %2740 = load i64, ptr @THREADCOUNTER, align 8, !tbaa !17
  %2741 = load i64, ptr @THREADCYCLES, align 8, !tbaa !17
  %2742 = sub i64 %2741, 1
  %2743 = icmp ult i64 %2740, %2742
  br i1 %2743, label %2744, label %2761

2744:                                             ; preds = %2718
  %2745 = load i64, ptr %27, align 8, !tbaa !17
  %2746 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  %2747 = zext i32 %2746 to i64
  %2748 = add i64 %2745, %2747
  %2749 = load ptr, ptr %51, align 8, !tbaa !9
  %2750 = load i32, ptr %33, align 4, !tbaa !5
  %2751 = sext i32 %2750 to i64
  %2752 = getelementptr inbounds %struct.bPload, ptr %2749, i64 %2751
  %2753 = getelementptr inbounds %struct.bPload, ptr %2752, i32 0, i32 2
  store i64 %2748, ptr %2753, align 8, !tbaa !42
  %2754 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  %2755 = zext i32 %2754 to i64
  %2756 = load ptr, ptr %51, align 8, !tbaa !9
  %2757 = load i32, ptr %33, align 4, !tbaa !5
  %2758 = sext i32 %2757 to i64
  %2759 = getelementptr inbounds %struct.bPload, ptr %2756, i64 %2758
  %2760 = getelementptr inbounds %struct.bPload, ptr %2759, i32 0, i32 4
  store i64 %2755, ptr %2760, align 8, !tbaa !43
  br label %2782

2761:                                             ; preds = %2718
  %2762 = load i64, ptr %27, align 8, !tbaa !17
  %2763 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  %2764 = zext i32 %2763 to i64
  %2765 = add i64 %2762, %2764
  %2766 = load i64, ptr %28, align 8, !tbaa !17
  %2767 = add i64 %2765, %2766
  %2768 = load ptr, ptr %51, align 8, !tbaa !9
  %2769 = load i32, ptr %33, align 4, !tbaa !5
  %2770 = sext i32 %2769 to i64
  %2771 = getelementptr inbounds %struct.bPload, ptr %2768, i64 %2770
  %2772 = getelementptr inbounds %struct.bPload, ptr %2771, i32 0, i32 2
  store i64 %2767, ptr %2772, align 8, !tbaa !42
  %2773 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  %2774 = zext i32 %2773 to i64
  %2775 = load i64, ptr %28, align 8, !tbaa !17
  %2776 = add i64 %2774, %2775
  %2777 = load ptr, ptr %51, align 8, !tbaa !9
  %2778 = load i32, ptr %33, align 4, !tbaa !5
  %2779 = sext i32 %2778 to i64
  %2780 = getelementptr inbounds %struct.bPload, ptr %2777, i64 %2779
  %2781 = getelementptr inbounds %struct.bPload, ptr %2780, i32 0, i32 4
  store i64 %2776, ptr %2781, align 8, !tbaa !43
  store i32 1, ptr %38, align 4, !tbaa !5
  br label %2782

2782:                                             ; preds = %2761, %2744
  %2783 = load ptr, ptr @tid, align 8, !tbaa !9
  %2784 = load i32, ptr %33, align 4, !tbaa !5
  %2785 = sext i32 %2784 to i64
  %2786 = getelementptr inbounds i64, ptr %2783, i64 %2785
  %2787 = load ptr, ptr %51, align 8, !tbaa !9
  %2788 = load i32, ptr %33, align 4, !tbaa !5
  %2789 = sext i32 %2788 to i64
  %2790 = getelementptr inbounds %struct.bPload, ptr %2787, i64 %2789
  %2791 = call i32 @pthread_create(ptr noundef %2786, ptr noundef null, ptr noundef @_Z13thread_bPloadPv, ptr noundef %2790) #14
  store i32 %2791, ptr %53, align 4, !tbaa !5
  %2792 = load ptr, ptr @tid, align 8, !tbaa !9
  %2793 = load i32, ptr %33, align 4, !tbaa !5
  %2794 = sext i32 %2793 to i64
  %2795 = getelementptr inbounds i64, ptr %2792, i64 %2794
  %2796 = load i64, ptr %2795, align 8, !tbaa !17
  %2797 = call i32 @pthread_detach(i64 noundef %2796) #14
  %2798 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !5
  %2799 = zext i32 %2798 to i64
  %2800 = load i64, ptr %27, align 8, !tbaa !17
  %2801 = add i64 %2800, %2799
  store i64 %2801, ptr %27, align 8, !tbaa !17
  %2802 = load i64, ptr @THREADCOUNTER, align 8, !tbaa !17
  %2803 = add i64 %2802, 1
  store i64 %2803, ptr @THREADCOUNTER, align 8, !tbaa !17
  br label %2804

2804:                                             ; preds = %2782, %2715, %2708
  br label %2805

2805:                                             ; preds = %2804
  %2806 = load i32, ptr %33, align 4, !tbaa !5
  %2807 = add nsw i32 %2806, 1
  store i32 %2807, ptr %33, align 4, !tbaa !5
  br label %2698, !llvm.loop !48

2808:                                             ; preds = %2706
  %2809 = load i64, ptr @OLDFINISHED_ITEMS, align 8, !tbaa !17
  %2810 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %2811 = icmp ne i64 %2809, %2810
  br i1 %2811, label %2812, label %2828

2812:                                             ; preds = %2808
  %2813 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %2814 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %2815 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %2816 = uitofp i64 %2815 to double
  %2817 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %2818 = uitofp i64 %2817 to double
  %2819 = fdiv double %2816, %2818
  %2820 = fmul double %2819, 1.000000e+02
  %2821 = fptosi double %2820 to i32
  %2822 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.195, i64 noundef %2813, i64 noundef %2814, i32 noundef %2821)
          to label %2823 unwind label %1484

2823:                                             ; preds = %2812
  %2824 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2825 = invoke i32 @fflush(ptr noundef %2824)
          to label %2826 unwind label %1484

2826:                                             ; preds = %2823
  %2827 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  store i64 %2827, ptr @OLDFINISHED_ITEMS, align 8, !tbaa !17
  br label %2828

2828:                                             ; preds = %2826, %2808
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %2829

2829:                                             ; preds = %2873, %2828
  %2830 = load i32, ptr %33, align 4, !tbaa !5
  %2831 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %2832 = icmp slt i32 %2830, %2831
  br i1 %2832, label %2833, label %2876

2833:                                             ; preds = %2829
  %2834 = load ptr, ptr @bPload_mutex, align 8, !tbaa !9
  %2835 = load i32, ptr %33, align 4, !tbaa !5
  %2836 = sext i32 %2835 to i64
  %2837 = getelementptr inbounds %union.pthread_mutex_t, ptr %2834, i64 %2836
  %2838 = call i32 @pthread_mutex_lock(ptr noundef %2837) #14
  %2839 = load ptr, ptr %51, align 8, !tbaa !9
  %2840 = load i32, ptr %33, align 4, !tbaa !5
  %2841 = sext i32 %2840 to i64
  %2842 = getelementptr inbounds %struct.bPload, ptr %2839, i64 %2841
  %2843 = getelementptr inbounds %struct.bPload, ptr %2842, i32 0, i32 6
  %2844 = load i32, ptr %2843, align 4, !tbaa !41
  store i32 %2844, ptr %32, align 4, !tbaa !5
  %2845 = load ptr, ptr @bPload_mutex, align 8, !tbaa !9
  %2846 = load i32, ptr %33, align 4, !tbaa !5
  %2847 = sext i32 %2846 to i64
  %2848 = getelementptr inbounds %union.pthread_mutex_t, ptr %2845, i64 %2847
  %2849 = call i32 @pthread_mutex_unlock(ptr noundef %2848) #14
  %2850 = load i32, ptr %32, align 4, !tbaa !5
  %2851 = icmp ne i32 %2850, 0
  br i1 %2851, label %2852, label %2872

2852:                                             ; preds = %2833
  %2853 = load ptr, ptr %51, align 8, !tbaa !9
  %2854 = load i32, ptr %33, align 4, !tbaa !5
  %2855 = sext i32 %2854 to i64
  %2856 = getelementptr inbounds %struct.bPload, ptr %2853, i64 %2855
  %2857 = getelementptr inbounds %struct.bPload, ptr %2856, i32 0, i32 6
  store i32 0, ptr %2857, align 4, !tbaa !41
  %2858 = load ptr, ptr %22, align 8, !tbaa !9
  %2859 = load i32, ptr %33, align 4, !tbaa !5
  %2860 = sext i32 %2859 to i64
  %2861 = getelementptr inbounds i8, ptr %2858, i64 %2860
  store i8 1, ptr %2861, align 1, !tbaa !11
  %2862 = load ptr, ptr %51, align 8, !tbaa !9
  %2863 = load i32, ptr %33, align 4, !tbaa !5
  %2864 = sext i32 %2863 to i64
  %2865 = getelementptr inbounds %struct.bPload, ptr %2862, i64 %2864
  %2866 = getelementptr inbounds %struct.bPload, ptr %2865, i32 0, i32 4
  %2867 = load i64, ptr %2866, align 8, !tbaa !43
  %2868 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %2869 = add i64 %2868, %2867
  store i64 %2869, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %2870 = load i64, ptr @FINISHED_THREADS_COUNTER, align 8, !tbaa !17
  %2871 = add i64 %2870, 1
  store i64 %2871, ptr @FINISHED_THREADS_COUNTER, align 8, !tbaa !17
  br label %2872

2872:                                             ; preds = %2852, %2833
  br label %2873

2873:                                             ; preds = %2872
  %2874 = load i32, ptr %33, align 4, !tbaa !5
  %2875 = add nsw i32 %2874, 1
  store i32 %2875, ptr %33, align 4, !tbaa !5
  br label %2829, !llvm.loop !49

2876:                                             ; preds = %2829
  br label %2877

2877:                                             ; preds = %2876
  %2878 = load i64, ptr @FINISHED_THREADS_COUNTER, align 8, !tbaa !17
  %2879 = load i64, ptr @THREADCYCLES, align 8, !tbaa !17
  %2880 = icmp ult i64 %2878, %2879
  br i1 %2880, label %2697, label %2881, !llvm.loop !50

2881:                                             ; preds = %2877
  %2882 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %2883 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %2884 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.199, i64 noundef %2882, i64 noundef %2883)
          to label %2885 unwind label %1484

2885:                                             ; preds = %2881
  %2886 = load ptr, ptr @tid, align 8, !tbaa !9
  call void @free(ptr noundef %2886) #14
  %2887 = load ptr, ptr @bPload_mutex, align 8, !tbaa !9
  call void @free(ptr noundef %2887) #14
  %2888 = load ptr, ptr %51, align 8, !tbaa !9
  call void @free(ptr noundef %2888) #14
  %2889 = load ptr, ptr %22, align 8, !tbaa !9
  call void @free(ptr noundef %2889) #14
  br label %2890

2890:                                             ; preds = %2885, %2618
  br label %2891

2891:                                             ; preds = %2890, %2350
  %2892 = load i32, ptr @FLAGREADEDFILE1, align 4, !tbaa !5
  %2893 = icmp ne i32 %2892, 0
  br i1 %2893, label %2894, label %2900

2894:                                             ; preds = %2891
  %2895 = load i32, ptr @FLAGREADEDFILE2, align 4, !tbaa !5
  %2896 = icmp ne i32 %2895, 0
  br i1 %2896, label %2897, label %2900

2897:                                             ; preds = %2894
  %2898 = load i32, ptr @FLAGREADEDFILE4, align 4, !tbaa !5
  %2899 = icmp ne i32 %2898, 0
  br i1 %2899, label %2906, label %2900

2900:                                             ; preds = %2897, %2894, %2891
  %2901 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.201)
          to label %2902 unwind label %1484

2902:                                             ; preds = %2900
  %2903 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2904 = invoke i32 @fflush(ptr noundef %2903)
          to label %2905 unwind label %1484

2905:                                             ; preds = %2902
  br label %2906

2906:                                             ; preds = %2905, %2897
  %2907 = load i32, ptr @FLAGREADEDFILE1, align 4, !tbaa !5
  %2908 = icmp ne i32 %2907, 0
  br i1 %2908, label %2952, label %2909

2909:                                             ; preds = %2906
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %2910

2910:                                             ; preds = %2946, %2909
  %2911 = load i32, ptr %33, align 4, !tbaa !5
  %2912 = icmp slt i32 %2911, 256
  br i1 %2912, label %2913, label %2949

2913:                                             ; preds = %2910
  %2914 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %2915 = load i32, ptr %33, align 4, !tbaa !5
  %2916 = sext i32 %2915 to i64
  %2917 = getelementptr inbounds %struct.bloom, ptr %2914, i64 %2916
  %2918 = getelementptr inbounds %struct.bloom, ptr %2917, i32 0, i32 9
  %2919 = load ptr, ptr %2918, align 16, !tbaa !32
  %2920 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %2921 = load i32, ptr %33, align 4, !tbaa !5
  %2922 = sext i32 %2921 to i64
  %2923 = getelementptr inbounds %struct.bloom, ptr %2920, i64 %2922
  %2924 = getelementptr inbounds %struct.bloom, ptr %2923, i32 0, i32 2
  %2925 = load i64, ptr %2924, align 16, !tbaa !22
  %2926 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !9
  %2927 = load i32, ptr %33, align 4, !tbaa !5
  %2928 = sext i32 %2927 to i64
  %2929 = getelementptr inbounds %struct.checksumsha256, ptr %2926, i64 %2928
  %2930 = getelementptr inbounds %struct.checksumsha256, ptr %2929, i32 0, i32 0
  %2931 = getelementptr inbounds [32 x i8], ptr %2930, i64 0, i64 0
  %2932 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %2919, i64 noundef %2925, ptr noundef %2931)
          to label %2933 unwind label %1484

2933:                                             ; preds = %2913
  %2934 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !9
  %2935 = load i32, ptr %33, align 4, !tbaa !5
  %2936 = sext i32 %2935 to i64
  %2937 = getelementptr inbounds %struct.checksumsha256, ptr %2934, i64 %2936
  %2938 = getelementptr inbounds %struct.checksumsha256, ptr %2937, i32 0, i32 1
  %2939 = getelementptr inbounds [32 x i8], ptr %2938, i64 0, i64 0
  %2940 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !9
  %2941 = load i32, ptr %33, align 4, !tbaa !5
  %2942 = sext i32 %2941 to i64
  %2943 = getelementptr inbounds %struct.checksumsha256, ptr %2940, i64 %2942
  %2944 = getelementptr inbounds %struct.checksumsha256, ptr %2943, i32 0, i32 0
  %2945 = getelementptr inbounds [32 x i8], ptr %2944, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2939, ptr align 1 %2945, i64 32, i1 false)
  br label %2946

2946:                                             ; preds = %2933
  %2947 = load i32, ptr %33, align 4, !tbaa !5
  %2948 = add nsw i32 %2947, 1
  store i32 %2948, ptr %33, align 4, !tbaa !5
  br label %2910, !llvm.loop !51

2949:                                             ; preds = %2910
  %2950 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.183)
          to label %2951 unwind label %1484

2951:                                             ; preds = %2949
  br label %2952

2952:                                             ; preds = %2951, %2906
  %2953 = load i32, ptr @FLAGREADEDFILE2, align 4, !tbaa !5
  %2954 = icmp ne i32 %2953, 0
  br i1 %2954, label %2998, label %2955

2955:                                             ; preds = %2952
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %2956

2956:                                             ; preds = %2992, %2955
  %2957 = load i32, ptr %33, align 4, !tbaa !5
  %2958 = icmp slt i32 %2957, 256
  br i1 %2958, label %2959, label %2995

2959:                                             ; preds = %2956
  %2960 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !9
  %2961 = load i32, ptr %33, align 4, !tbaa !5
  %2962 = sext i32 %2961 to i64
  %2963 = getelementptr inbounds %struct.bloom, ptr %2960, i64 %2962
  %2964 = getelementptr inbounds %struct.bloom, ptr %2963, i32 0, i32 9
  %2965 = load ptr, ptr %2964, align 16, !tbaa !32
  %2966 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !9
  %2967 = load i32, ptr %33, align 4, !tbaa !5
  %2968 = sext i32 %2967 to i64
  %2969 = getelementptr inbounds %struct.bloom, ptr %2966, i64 %2968
  %2970 = getelementptr inbounds %struct.bloom, ptr %2969, i32 0, i32 2
  %2971 = load i64, ptr %2970, align 16, !tbaa !22
  %2972 = load ptr, ptr @bloom_bPx2nd_checksums, align 8, !tbaa !9
  %2973 = load i32, ptr %33, align 4, !tbaa !5
  %2974 = sext i32 %2973 to i64
  %2975 = getelementptr inbounds %struct.checksumsha256, ptr %2972, i64 %2974
  %2976 = getelementptr inbounds %struct.checksumsha256, ptr %2975, i32 0, i32 0
  %2977 = getelementptr inbounds [32 x i8], ptr %2976, i64 0, i64 0
  %2978 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %2965, i64 noundef %2971, ptr noundef %2977)
          to label %2979 unwind label %1484

2979:                                             ; preds = %2959
  %2980 = load ptr, ptr @bloom_bPx2nd_checksums, align 8, !tbaa !9
  %2981 = load i32, ptr %33, align 4, !tbaa !5
  %2982 = sext i32 %2981 to i64
  %2983 = getelementptr inbounds %struct.checksumsha256, ptr %2980, i64 %2982
  %2984 = getelementptr inbounds %struct.checksumsha256, ptr %2983, i32 0, i32 1
  %2985 = getelementptr inbounds [32 x i8], ptr %2984, i64 0, i64 0
  %2986 = load ptr, ptr @bloom_bPx2nd_checksums, align 8, !tbaa !9
  %2987 = load i32, ptr %33, align 4, !tbaa !5
  %2988 = sext i32 %2987 to i64
  %2989 = getelementptr inbounds %struct.checksumsha256, ptr %2986, i64 %2988
  %2990 = getelementptr inbounds %struct.checksumsha256, ptr %2989, i32 0, i32 0
  %2991 = getelementptr inbounds [32 x i8], ptr %2990, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2985, ptr align 1 %2991, i64 32, i1 false)
  br label %2992

2992:                                             ; preds = %2979
  %2993 = load i32, ptr %33, align 4, !tbaa !5
  %2994 = add nsw i32 %2993, 1
  store i32 %2994, ptr %33, align 4, !tbaa !5
  br label %2956, !llvm.loop !52

2995:                                             ; preds = %2956
  %2996 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.183)
          to label %2997 unwind label %1484

2997:                                             ; preds = %2995
  br label %2998

2998:                                             ; preds = %2997, %2952
  %2999 = load i32, ptr @FLAGREADEDFILE4, align 4, !tbaa !5
  %3000 = icmp ne i32 %2999, 0
  br i1 %3000, label %3044, label %3001

3001:                                             ; preds = %2998
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %3002

3002:                                             ; preds = %3038, %3001
  %3003 = load i32, ptr %33, align 4, !tbaa !5
  %3004 = icmp slt i32 %3003, 256
  br i1 %3004, label %3005, label %3041

3005:                                             ; preds = %3002
  %3006 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !9
  %3007 = load i32, ptr %33, align 4, !tbaa !5
  %3008 = sext i32 %3007 to i64
  %3009 = getelementptr inbounds %struct.bloom, ptr %3006, i64 %3008
  %3010 = getelementptr inbounds %struct.bloom, ptr %3009, i32 0, i32 9
  %3011 = load ptr, ptr %3010, align 16, !tbaa !32
  %3012 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !9
  %3013 = load i32, ptr %33, align 4, !tbaa !5
  %3014 = sext i32 %3013 to i64
  %3015 = getelementptr inbounds %struct.bloom, ptr %3012, i64 %3014
  %3016 = getelementptr inbounds %struct.bloom, ptr %3015, i32 0, i32 2
  %3017 = load i64, ptr %3016, align 16, !tbaa !22
  %3018 = load ptr, ptr @bloom_bPx3rd_checksums, align 8, !tbaa !9
  %3019 = load i32, ptr %33, align 4, !tbaa !5
  %3020 = sext i32 %3019 to i64
  %3021 = getelementptr inbounds %struct.checksumsha256, ptr %3018, i64 %3020
  %3022 = getelementptr inbounds %struct.checksumsha256, ptr %3021, i32 0, i32 0
  %3023 = getelementptr inbounds [32 x i8], ptr %3022, i64 0, i64 0
  %3024 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %3011, i64 noundef %3017, ptr noundef %3023)
          to label %3025 unwind label %1484

3025:                                             ; preds = %3005
  %3026 = load ptr, ptr @bloom_bPx3rd_checksums, align 8, !tbaa !9
  %3027 = load i32, ptr %33, align 4, !tbaa !5
  %3028 = sext i32 %3027 to i64
  %3029 = getelementptr inbounds %struct.checksumsha256, ptr %3026, i64 %3028
  %3030 = getelementptr inbounds %struct.checksumsha256, ptr %3029, i32 0, i32 1
  %3031 = getelementptr inbounds [32 x i8], ptr %3030, i64 0, i64 0
  %3032 = load ptr, ptr @bloom_bPx3rd_checksums, align 8, !tbaa !9
  %3033 = load i32, ptr %33, align 4, !tbaa !5
  %3034 = sext i32 %3033 to i64
  %3035 = getelementptr inbounds %struct.checksumsha256, ptr %3032, i64 %3034
  %3036 = getelementptr inbounds %struct.checksumsha256, ptr %3035, i32 0, i32 0
  %3037 = getelementptr inbounds [32 x i8], ptr %3036, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %3031, ptr align 1 %3037, i64 32, i1 false)
  br label %3038

3038:                                             ; preds = %3025
  %3039 = load i32, ptr %33, align 4, !tbaa !5
  %3040 = add nsw i32 %3039, 1
  store i32 %3040, ptr %33, align 4, !tbaa !5
  br label %3002, !llvm.loop !53

3041:                                             ; preds = %3002
  %3042 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.183)
          to label %3043 unwind label %1484

3043:                                             ; preds = %3041
  br label %3044

3044:                                             ; preds = %3043, %2998
  %3045 = load i32, ptr @FLAGREADEDFILE1, align 4, !tbaa !5
  %3046 = icmp ne i32 %3045, 0
  br i1 %3046, label %3047, label %3053

3047:                                             ; preds = %3044
  %3048 = load i32, ptr @FLAGREADEDFILE2, align 4, !tbaa !5
  %3049 = icmp ne i32 %3048, 0
  br i1 %3049, label %3050, label %3053

3050:                                             ; preds = %3047
  %3051 = load i32, ptr @FLAGREADEDFILE4, align 4, !tbaa !5
  %3052 = icmp ne i32 %3051, 0
  br i1 %3052, label %3059, label %3053

3053:                                             ; preds = %3050, %3047, %3044
  %3054 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.202)
          to label %3055 unwind label %1484

3055:                                             ; preds = %3053
  %3056 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3057 = invoke i32 @fflush(ptr noundef %3056)
          to label %3058 unwind label %1484

3058:                                             ; preds = %3055
  br label %3059

3059:                                             ; preds = %3058, %3050
  %3060 = load i32, ptr @FLAGREADEDFILE3, align 4, !tbaa !5
  %3061 = icmp ne i32 %3060, 0
  br i1 %3061, label %3081, label %3062

3062:                                             ; preds = %3059
  %3063 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %3064 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.203, i64 noundef %3063)
          to label %3065 unwind label %1484

3065:                                             ; preds = %3062
  %3066 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3067 = invoke i32 @fflush(ptr noundef %3066)
          to label %3068 unwind label %1484

3068:                                             ; preds = %3065
  %3069 = load ptr, ptr @bPtable, align 8, !tbaa !9
  %3070 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  invoke void @_Z9bsgs_sortP11bsgs_xvaluel(ptr noundef %3069, i64 noundef %3070)
          to label %3071 unwind label %1484

3071:                                             ; preds = %3068
  %3072 = load ptr, ptr @bPtable, align 8, !tbaa !9
  %3073 = load i64, ptr @bytes, align 8, !tbaa !17
  %3074 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %3072, i64 noundef %3073, ptr noundef @checksum)
          to label %3075 unwind label %1484

3075:                                             ; preds = %3071
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 @checksum_backup, ptr align 16 @checksum, i64 32, i1 false)
  %3076 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.204)
          to label %3077 unwind label %1484

3077:                                             ; preds = %3075
  %3078 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3079 = invoke i32 @fflush(ptr noundef %3078)
          to label %3080 unwind label %1484

3080:                                             ; preds = %3077
  br label %3081

3081:                                             ; preds = %3080, %3059
  %3082 = load i32, ptr @FLAGSAVEREADFILE, align 4, !tbaa !5
  %3083 = icmp ne i32 %3082, 0
  br i1 %3083, label %3087, label %3084

3084:                                             ; preds = %3081
  %3085 = load i32, ptr @FLAGUPDATEFILE1, align 4, !tbaa !5
  %3086 = icmp ne i32 %3085, 0
  br i1 %3086, label %3087, label %3423

3087:                                             ; preds = %3084, %3081
  %3088 = load i32, ptr @FLAGREADEDFILE1, align 4, !tbaa !5
  %3089 = icmp ne i32 %3088, 0
  br i1 %3089, label %3090, label %3093

3090:                                             ; preds = %3087
  %3091 = load i32, ptr @FLAGUPDATEFILE1, align 4, !tbaa !5
  %3092 = icmp ne i32 %3091, 0
  br i1 %3092, label %3093, label %3189

3093:                                             ; preds = %3090, %3087
  %3094 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %3095 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef @buffer_bloom_file, i64 noundef 1024, ptr noundef @.str.179, i64 noundef %3094) #14
  %3096 = load i32, ptr @FLAGUPDATEFILE1, align 4, !tbaa !5
  %3097 = icmp ne i32 %3096, 0
  br i1 %3097, label %3098, label %3101

3098:                                             ; preds = %3093
  %3099 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.205)
          to label %3100 unwind label %1484

3100:                                             ; preds = %3098
  br label %3101

3101:                                             ; preds = %3100, %3093
  %3102 = invoke noalias ptr @fopen(ptr noundef @buffer_bloom_file, ptr noundef @.str.206)
          to label %3103 unwind label %1484

3103:                                             ; preds = %3101
  store ptr %3102, ptr %24, align 8, !tbaa !9
  %3104 = load ptr, ptr %24, align 8, !tbaa !9
  %3105 = icmp ne ptr %3104, null
  br i1 %3105, label %3106, label %3185

3106:                                             ; preds = %3103
  %3107 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.207, ptr noundef @buffer_bloom_file)
          to label %3108 unwind label %1484

3108:                                             ; preds = %3106
  %3109 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3110 = invoke i32 @fflush(ptr noundef %3109)
          to label %3111 unwind label %1484

3111:                                             ; preds = %3108
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %3112

3112:                                             ; preds = %3176, %3111
  %3113 = load i32, ptr %33, align 4, !tbaa !5
  %3114 = icmp slt i32 %3113, 256
  br i1 %3114, label %3115, label %3179

3115:                                             ; preds = %3112
  %3116 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %3117 = load i32, ptr %33, align 4, !tbaa !5
  %3118 = sext i32 %3117 to i64
  %3119 = getelementptr inbounds %struct.bloom, ptr %3116, i64 %3118
  %3120 = load ptr, ptr %24, align 8, !tbaa !9
  %3121 = invoke i64 @fwrite(ptr noundef %3119, i64 noundef 80, i64 noundef 1, ptr noundef %3120)
          to label %3122 unwind label %1484

3122:                                             ; preds = %3115
  %3123 = trunc i64 %3121 to i32
  store i32 %3123, ptr %34, align 4, !tbaa !5
  %3124 = load i32, ptr %34, align 4, !tbaa !5
  %3125 = icmp ne i32 %3124, 1
  br i1 %3125, label %3126, label %3129

3126:                                             ; preds = %3122
  %3127 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3128 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3127, ptr noundef @.str.208, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

3129:                                             ; preds = %3122
  %3130 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %3131 = load i32, ptr %33, align 4, !tbaa !5
  %3132 = sext i32 %3131 to i64
  %3133 = getelementptr inbounds %struct.bloom, ptr %3130, i64 %3132
  %3134 = getelementptr inbounds %struct.bloom, ptr %3133, i32 0, i32 9
  %3135 = load ptr, ptr %3134, align 16, !tbaa !32
  %3136 = load ptr, ptr @bloom_bP, align 8, !tbaa !9
  %3137 = load i32, ptr %33, align 4, !tbaa !5
  %3138 = sext i32 %3137 to i64
  %3139 = getelementptr inbounds %struct.bloom, ptr %3136, i64 %3138
  %3140 = getelementptr inbounds %struct.bloom, ptr %3139, i32 0, i32 2
  %3141 = load i64, ptr %3140, align 16, !tbaa !22
  %3142 = load ptr, ptr %24, align 8, !tbaa !9
  %3143 = invoke i64 @fwrite(ptr noundef %3135, i64 noundef %3141, i64 noundef 1, ptr noundef %3142)
          to label %3144 unwind label %1484

3144:                                             ; preds = %3129
  %3145 = trunc i64 %3143 to i32
  store i32 %3145, ptr %34, align 4, !tbaa !5
  %3146 = load i32, ptr %34, align 4, !tbaa !5
  %3147 = icmp ne i32 %3146, 1
  br i1 %3147, label %3148, label %3151

3148:                                             ; preds = %3144
  %3149 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3150 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3149, ptr noundef @.str.208, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

3151:                                             ; preds = %3144
  %3152 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !9
  %3153 = load i32, ptr %33, align 4, !tbaa !5
  %3154 = sext i32 %3153 to i64
  %3155 = getelementptr inbounds %struct.checksumsha256, ptr %3152, i64 %3154
  %3156 = load ptr, ptr %24, align 8, !tbaa !9
  %3157 = invoke i64 @fwrite(ptr noundef %3155, i64 noundef 64, i64 noundef 1, ptr noundef %3156)
          to label %3158 unwind label %1484

3158:                                             ; preds = %3151
  %3159 = trunc i64 %3157 to i32
  store i32 %3159, ptr %34, align 4, !tbaa !5
  %3160 = load i32, ptr %34, align 4, !tbaa !5
  %3161 = icmp ne i32 %3160, 1
  br i1 %3161, label %3162, label %3165

3162:                                             ; preds = %3158
  %3163 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3164 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3163, ptr noundef @.str.208, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

3165:                                             ; preds = %3158
  %3166 = load i32, ptr %33, align 4, !tbaa !5
  %3167 = srem i32 %3166, 64
  %3168 = icmp eq i32 %3167, 0
  br i1 %3168, label %3169, label %3175

3169:                                             ; preds = %3165
  %3170 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.183)
          to label %3171 unwind label %1484

3171:                                             ; preds = %3169
  %3172 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3173 = invoke i32 @fflush(ptr noundef %3172)
          to label %3174 unwind label %1484

3174:                                             ; preds = %3171
  br label %3175

3175:                                             ; preds = %3174, %3165
  br label %3176

3176:                                             ; preds = %3175
  %3177 = load i32, ptr %33, align 4, !tbaa !5
  %3178 = add nsw i32 %3177, 1
  store i32 %3178, ptr %33, align 4, !tbaa !5
  br label %3112, !llvm.loop !54

3179:                                             ; preds = %3112
  %3180 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.184)
          to label %3181 unwind label %1484

3181:                                             ; preds = %3179
  %3182 = load ptr, ptr %24, align 8, !tbaa !9
  %3183 = invoke i32 @fclose(ptr noundef %3182)
          to label %3184 unwind label %1484

3184:                                             ; preds = %3181
  br label %3188

3185:                                             ; preds = %3103
  %3186 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3187 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3186, ptr noundef @.str.209, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

3188:                                             ; preds = %3184
  br label %3189

3189:                                             ; preds = %3188, %3090
  %3190 = load i32, ptr @FLAGREADEDFILE2, align 4, !tbaa !5
  %3191 = icmp ne i32 %3190, 0
  br i1 %3191, label %3282, label %3192

3192:                                             ; preds = %3189
  %3193 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %3194 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef @buffer_bloom_file, i64 noundef 1024, ptr noundef @.str.187, i64 noundef %3193) #14
  %3195 = invoke noalias ptr @fopen(ptr noundef @buffer_bloom_file, ptr noundef @.str.206)
          to label %3196 unwind label %1484

3196:                                             ; preds = %3192
  store ptr %3195, ptr %25, align 8, !tbaa !9
  %3197 = load ptr, ptr %25, align 8, !tbaa !9
  %3198 = icmp ne ptr %3197, null
  br i1 %3198, label %3199, label %3278

3199:                                             ; preds = %3196
  %3200 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.207, ptr noundef @buffer_bloom_file)
          to label %3201 unwind label %1484

3201:                                             ; preds = %3199
  %3202 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3203 = invoke i32 @fflush(ptr noundef %3202)
          to label %3204 unwind label %1484

3204:                                             ; preds = %3201
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %3205

3205:                                             ; preds = %3269, %3204
  %3206 = load i32, ptr %33, align 4, !tbaa !5
  %3207 = icmp slt i32 %3206, 256
  br i1 %3207, label %3208, label %3272

3208:                                             ; preds = %3205
  %3209 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !9
  %3210 = load i32, ptr %33, align 4, !tbaa !5
  %3211 = sext i32 %3210 to i64
  %3212 = getelementptr inbounds %struct.bloom, ptr %3209, i64 %3211
  %3213 = load ptr, ptr %25, align 8, !tbaa !9
  %3214 = invoke i64 @fwrite(ptr noundef %3212, i64 noundef 80, i64 noundef 1, ptr noundef %3213)
          to label %3215 unwind label %1484

3215:                                             ; preds = %3208
  %3216 = trunc i64 %3214 to i32
  store i32 %3216, ptr %34, align 4, !tbaa !5
  %3217 = load i32, ptr %34, align 4, !tbaa !5
  %3218 = icmp ne i32 %3217, 1
  br i1 %3218, label %3219, label %3222

3219:                                             ; preds = %3215
  %3220 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3221 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3220, ptr noundef @.str.210, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

3222:                                             ; preds = %3215
  %3223 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !9
  %3224 = load i32, ptr %33, align 4, !tbaa !5
  %3225 = sext i32 %3224 to i64
  %3226 = getelementptr inbounds %struct.bloom, ptr %3223, i64 %3225
  %3227 = getelementptr inbounds %struct.bloom, ptr %3226, i32 0, i32 9
  %3228 = load ptr, ptr %3227, align 16, !tbaa !32
  %3229 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !9
  %3230 = load i32, ptr %33, align 4, !tbaa !5
  %3231 = sext i32 %3230 to i64
  %3232 = getelementptr inbounds %struct.bloom, ptr %3229, i64 %3231
  %3233 = getelementptr inbounds %struct.bloom, ptr %3232, i32 0, i32 2
  %3234 = load i64, ptr %3233, align 16, !tbaa !22
  %3235 = load ptr, ptr %25, align 8, !tbaa !9
  %3236 = invoke i64 @fwrite(ptr noundef %3228, i64 noundef %3234, i64 noundef 1, ptr noundef %3235)
          to label %3237 unwind label %1484

3237:                                             ; preds = %3222
  %3238 = trunc i64 %3236 to i32
  store i32 %3238, ptr %34, align 4, !tbaa !5
  %3239 = load i32, ptr %34, align 4, !tbaa !5
  %3240 = icmp ne i32 %3239, 1
  br i1 %3240, label %3241, label %3244

3241:                                             ; preds = %3237
  %3242 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3243 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3242, ptr noundef @.str.210, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

3244:                                             ; preds = %3237
  %3245 = load ptr, ptr @bloom_bPx2nd_checksums, align 8, !tbaa !9
  %3246 = load i32, ptr %33, align 4, !tbaa !5
  %3247 = sext i32 %3246 to i64
  %3248 = getelementptr inbounds %struct.checksumsha256, ptr %3245, i64 %3247
  %3249 = load ptr, ptr %25, align 8, !tbaa !9
  %3250 = invoke i64 @fwrite(ptr noundef %3248, i64 noundef 64, i64 noundef 1, ptr noundef %3249)
          to label %3251 unwind label %1484

3251:                                             ; preds = %3244
  %3252 = trunc i64 %3250 to i32
  store i32 %3252, ptr %34, align 4, !tbaa !5
  %3253 = load i32, ptr %34, align 4, !tbaa !5
  %3254 = icmp ne i32 %3253, 1
  br i1 %3254, label %3255, label %3258

3255:                                             ; preds = %3251
  %3256 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3257 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3256, ptr noundef @.str.208, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

3258:                                             ; preds = %3251
  %3259 = load i32, ptr %33, align 4, !tbaa !5
  %3260 = srem i32 %3259, 64
  %3261 = icmp eq i32 %3260, 0
  br i1 %3261, label %3262, label %3268

3262:                                             ; preds = %3258
  %3263 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.183)
          to label %3264 unwind label %1484

3264:                                             ; preds = %3262
  %3265 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3266 = invoke i32 @fflush(ptr noundef %3265)
          to label %3267 unwind label %1484

3267:                                             ; preds = %3264
  br label %3268

3268:                                             ; preds = %3267, %3258
  br label %3269

3269:                                             ; preds = %3268
  %3270 = load i32, ptr %33, align 4, !tbaa !5
  %3271 = add nsw i32 %3270, 1
  store i32 %3271, ptr %33, align 4, !tbaa !5
  br label %3205, !llvm.loop !55

3272:                                             ; preds = %3205
  %3273 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.184)
          to label %3274 unwind label %1484

3274:                                             ; preds = %3272
  %3275 = load ptr, ptr %25, align 8, !tbaa !9
  %3276 = invoke i32 @fclose(ptr noundef %3275)
          to label %3277 unwind label %1484

3277:                                             ; preds = %3274
  br label %3281

3278:                                             ; preds = %3196
  %3279 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3280 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3279, ptr noundef @.str.209, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

3281:                                             ; preds = %3277
  br label %3282

3282:                                             ; preds = %3281, %3189
  %3283 = load i32, ptr @FLAGREADEDFILE3, align 4, !tbaa !5
  %3284 = icmp ne i32 %3283, 0
  br i1 %3284, label %3329, label %3285

3285:                                             ; preds = %3282
  %3286 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %3287 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef @buffer_bloom_file, i64 noundef 1024, ptr noundef @.str.190, i64 noundef %3286) #14
  %3288 = invoke noalias ptr @fopen(ptr noundef @buffer_bloom_file, ptr noundef @.str.206)
          to label %3289 unwind label %1484

3289:                                             ; preds = %3285
  store ptr %3288, ptr %26, align 8, !tbaa !9
  %3290 = load ptr, ptr %26, align 8, !tbaa !9
  %3291 = icmp ne ptr %3290, null
  br i1 %3291, label %3292, label %3325

3292:                                             ; preds = %3289
  %3293 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.211, ptr noundef @buffer_bloom_file)
          to label %3294 unwind label %1484

3294:                                             ; preds = %3292
  %3295 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3296 = invoke i32 @fflush(ptr noundef %3295)
          to label %3297 unwind label %1484

3297:                                             ; preds = %3294
  %3298 = load ptr, ptr @bPtable, align 8, !tbaa !9
  %3299 = load i64, ptr @bytes, align 8, !tbaa !17
  %3300 = load ptr, ptr %26, align 8, !tbaa !9
  %3301 = invoke i64 @fwrite(ptr noundef %3298, i64 noundef %3299, i64 noundef 1, ptr noundef %3300)
          to label %3302 unwind label %1484

3302:                                             ; preds = %3297
  %3303 = trunc i64 %3301 to i32
  store i32 %3303, ptr %34, align 4, !tbaa !5
  %3304 = load i32, ptr %34, align 4, !tbaa !5
  %3305 = icmp ne i32 %3304, 1
  br i1 %3305, label %3306, label %3309

3306:                                             ; preds = %3302
  %3307 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3308 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3307, ptr noundef @.str.210, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

3309:                                             ; preds = %3302
  %3310 = load ptr, ptr %26, align 8, !tbaa !9
  %3311 = invoke i64 @fwrite(ptr noundef @checksum, i64 noundef 32, i64 noundef 1, ptr noundef %3310)
          to label %3312 unwind label %1484

3312:                                             ; preds = %3309
  %3313 = trunc i64 %3311 to i32
  store i32 %3313, ptr %34, align 4, !tbaa !5
  %3314 = load i32, ptr %34, align 4, !tbaa !5
  %3315 = icmp ne i32 %3314, 1
  br i1 %3315, label %3316, label %3319

3316:                                             ; preds = %3312
  %3317 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3318 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3317, ptr noundef @.str.210, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

3319:                                             ; preds = %3312
  %3320 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.204)
          to label %3321 unwind label %1484

3321:                                             ; preds = %3319
  %3322 = load ptr, ptr %26, align 8, !tbaa !9
  %3323 = invoke i32 @fclose(ptr noundef %3322)
          to label %3324 unwind label %1484

3324:                                             ; preds = %3321
  br label %3328

3325:                                             ; preds = %3289
  %3326 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3327 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3326, ptr noundef @.str.209, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

3328:                                             ; preds = %3324
  br label %3329

3329:                                             ; preds = %3328, %3282
  %3330 = load i32, ptr @FLAGREADEDFILE4, align 4, !tbaa !5
  %3331 = icmp ne i32 %3330, 0
  br i1 %3331, label %3422, label %3332

3332:                                             ; preds = %3329
  %3333 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %3334 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef @buffer_bloom_file, i64 noundef 1024, ptr noundef @.str.193, i64 noundef %3333) #14
  %3335 = invoke noalias ptr @fopen(ptr noundef @buffer_bloom_file, ptr noundef @.str.206)
          to label %3336 unwind label %1484

3336:                                             ; preds = %3332
  store ptr %3335, ptr %25, align 8, !tbaa !9
  %3337 = load ptr, ptr %25, align 8, !tbaa !9
  %3338 = icmp ne ptr %3337, null
  br i1 %3338, label %3339, label %3418

3339:                                             ; preds = %3336
  %3340 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.207, ptr noundef @buffer_bloom_file)
          to label %3341 unwind label %1484

3341:                                             ; preds = %3339
  %3342 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3343 = invoke i32 @fflush(ptr noundef %3342)
          to label %3344 unwind label %1484

3344:                                             ; preds = %3341
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %3345

3345:                                             ; preds = %3409, %3344
  %3346 = load i32, ptr %33, align 4, !tbaa !5
  %3347 = icmp slt i32 %3346, 256
  br i1 %3347, label %3348, label %3412

3348:                                             ; preds = %3345
  %3349 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !9
  %3350 = load i32, ptr %33, align 4, !tbaa !5
  %3351 = sext i32 %3350 to i64
  %3352 = getelementptr inbounds %struct.bloom, ptr %3349, i64 %3351
  %3353 = load ptr, ptr %25, align 8, !tbaa !9
  %3354 = invoke i64 @fwrite(ptr noundef %3352, i64 noundef 80, i64 noundef 1, ptr noundef %3353)
          to label %3355 unwind label %1484

3355:                                             ; preds = %3348
  %3356 = trunc i64 %3354 to i32
  store i32 %3356, ptr %34, align 4, !tbaa !5
  %3357 = load i32, ptr %34, align 4, !tbaa !5
  %3358 = icmp ne i32 %3357, 1
  br i1 %3358, label %3359, label %3362

3359:                                             ; preds = %3355
  %3360 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3361 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3360, ptr noundef @.str.210, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

3362:                                             ; preds = %3355
  %3363 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !9
  %3364 = load i32, ptr %33, align 4, !tbaa !5
  %3365 = sext i32 %3364 to i64
  %3366 = getelementptr inbounds %struct.bloom, ptr %3363, i64 %3365
  %3367 = getelementptr inbounds %struct.bloom, ptr %3366, i32 0, i32 9
  %3368 = load ptr, ptr %3367, align 16, !tbaa !32
  %3369 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !9
  %3370 = load i32, ptr %33, align 4, !tbaa !5
  %3371 = sext i32 %3370 to i64
  %3372 = getelementptr inbounds %struct.bloom, ptr %3369, i64 %3371
  %3373 = getelementptr inbounds %struct.bloom, ptr %3372, i32 0, i32 2
  %3374 = load i64, ptr %3373, align 16, !tbaa !22
  %3375 = load ptr, ptr %25, align 8, !tbaa !9
  %3376 = invoke i64 @fwrite(ptr noundef %3368, i64 noundef %3374, i64 noundef 1, ptr noundef %3375)
          to label %3377 unwind label %1484

3377:                                             ; preds = %3362
  %3378 = trunc i64 %3376 to i32
  store i32 %3378, ptr %34, align 4, !tbaa !5
  %3379 = load i32, ptr %34, align 4, !tbaa !5
  %3380 = icmp ne i32 %3379, 1
  br i1 %3380, label %3381, label %3384

3381:                                             ; preds = %3377
  %3382 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3383 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3382, ptr noundef @.str.210, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

3384:                                             ; preds = %3377
  %3385 = load ptr, ptr @bloom_bPx3rd_checksums, align 8, !tbaa !9
  %3386 = load i32, ptr %33, align 4, !tbaa !5
  %3387 = sext i32 %3386 to i64
  %3388 = getelementptr inbounds %struct.checksumsha256, ptr %3385, i64 %3387
  %3389 = load ptr, ptr %25, align 8, !tbaa !9
  %3390 = invoke i64 @fwrite(ptr noundef %3388, i64 noundef 64, i64 noundef 1, ptr noundef %3389)
          to label %3391 unwind label %1484

3391:                                             ; preds = %3384
  %3392 = trunc i64 %3390 to i32
  store i32 %3392, ptr %34, align 4, !tbaa !5
  %3393 = load i32, ptr %34, align 4, !tbaa !5
  %3394 = icmp ne i32 %3393, 1
  br i1 %3394, label %3395, label %3398

3395:                                             ; preds = %3391
  %3396 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3397 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3396, ptr noundef @.str.208, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

3398:                                             ; preds = %3391
  %3399 = load i32, ptr %33, align 4, !tbaa !5
  %3400 = srem i32 %3399, 64
  %3401 = icmp eq i32 %3400, 0
  br i1 %3401, label %3402, label %3408

3402:                                             ; preds = %3398
  %3403 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.183)
          to label %3404 unwind label %1484

3404:                                             ; preds = %3402
  %3405 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3406 = invoke i32 @fflush(ptr noundef %3405)
          to label %3407 unwind label %1484

3407:                                             ; preds = %3404
  br label %3408

3408:                                             ; preds = %3407, %3398
  br label %3409

3409:                                             ; preds = %3408
  %3410 = load i32, ptr %33, align 4, !tbaa !5
  %3411 = add nsw i32 %3410, 1
  store i32 %3411, ptr %33, align 4, !tbaa !5
  br label %3345, !llvm.loop !56

3412:                                             ; preds = %3345
  %3413 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.184)
          to label %3414 unwind label %1484

3414:                                             ; preds = %3412
  %3415 = load ptr, ptr %25, align 8, !tbaa !9
  %3416 = invoke i32 @fclose(ptr noundef %3415)
          to label %3417 unwind label %1484

3417:                                             ; preds = %3414
  br label %3421

3418:                                             ; preds = %3336
  %3419 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3420 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3419, ptr noundef @.str.209, ptr noundef @buffer_bloom_file) #14
  call void @exit(i32 noundef 1) #17
  unreachable

3421:                                             ; preds = %3417
  br label %3422

3422:                                             ; preds = %3421, %3329
  br label %3423

3423:                                             ; preds = %3422, %3084
  store i32 0, ptr %33, align 4, !tbaa !5
  %3424 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %3425 = sext i32 %3424 to i64
  %3426 = call noalias ptr @calloc(i64 noundef %3425, i64 noundef 8) #20
  store ptr %3426, ptr @steps, align 8, !tbaa !9
  %3427 = load ptr, ptr @steps, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %3427, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.212, i32 noundef 2033)
          to label %3428 unwind label %1484

3428:                                             ; preds = %3423
  %3429 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %3430 = sext i32 %3429 to i64
  %3431 = call noalias ptr @calloc(i64 noundef %3430, i64 noundef 4) #20
  store ptr %3431, ptr @ends, align 8, !tbaa !9
  %3432 = load ptr, ptr @ends, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %3432, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.213, i32 noundef 2035)
          to label %3433 unwind label %1484

3433:                                             ; preds = %3428
  %3434 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %3435 = sext i32 %3434 to i64
  %3436 = call noalias ptr @calloc(i64 noundef %3435, i64 noundef 8) #20
  store ptr %3436, ptr @tid, align 8, !tbaa !9
  %3437 = load ptr, ptr @tid, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %3437, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.200, i32 noundef 2041)
          to label %3438 unwind label %1484

3438:                                             ; preds = %3433
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %3439

3439:                                             ; preds = %3493, %3438
  %3440 = load i32, ptr %33, align 4, !tbaa !5
  %3441 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %3442 = icmp slt i32 %3440, %3441
  br i1 %3442, label %3443, label %3496

3443:                                             ; preds = %3439
  %3444 = call noalias ptr @malloc(i64 noundef 24) #19
  store ptr %3444, ptr %8, align 8, !tbaa !9
  %3445 = load ptr, ptr %8, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %3445, ptr noundef @.str.80, ptr noundef @.str.81, ptr noundef @.str.214, i32 noundef 2045)
          to label %3446 unwind label %1484

3446:                                             ; preds = %3443
  %3447 = load i32, ptr %33, align 4, !tbaa !5
  %3448 = load ptr, ptr %8, align 8, !tbaa !9
  %3449 = getelementptr inbounds %struct.tothread, ptr %3448, i32 0, i32 0
  store i32 %3447, ptr %3449, align 8, !tbaa !57
  store i32 0, ptr %53, align 4, !tbaa !5
  %3450 = load i32, ptr @FLAGBSGSMODE, align 4, !tbaa !5
  switch i32 %3450, label %3486 [
    i32 0, label %3451
    i32 1, label %3458
    i32 2, label %3465
    i32 3, label %3472
    i32 4, label %3479
  ]

3451:                                             ; preds = %3446
  %3452 = load ptr, ptr @tid, align 8, !tbaa !9
  %3453 = load i32, ptr %33, align 4, !tbaa !5
  %3454 = sext i32 %3453 to i64
  %3455 = getelementptr inbounds i64, ptr %3452, i64 %3454
  %3456 = load ptr, ptr %8, align 8, !tbaa !9
  %3457 = call i32 @pthread_create(ptr noundef %3455, ptr noundef null, ptr noundef @_Z19thread_process_bsgsPv, ptr noundef %3456) #14
  store i32 %3457, ptr %53, align 4, !tbaa !5
  br label %3486

3458:                                             ; preds = %3446
  %3459 = load ptr, ptr @tid, align 8, !tbaa !9
  %3460 = load i32, ptr %33, align 4, !tbaa !5
  %3461 = sext i32 %3460 to i64
  %3462 = getelementptr inbounds i64, ptr %3459, i64 %3461
  %3463 = load ptr, ptr %8, align 8, !tbaa !9
  %3464 = call i32 @pthread_create(ptr noundef %3462, ptr noundef null, ptr noundef @_Z28thread_process_bsgs_backwardPv, ptr noundef %3463) #14
  store i32 %3464, ptr %53, align 4, !tbaa !5
  br label %3486

3465:                                             ; preds = %3446
  %3466 = load ptr, ptr @tid, align 8, !tbaa !9
  %3467 = load i32, ptr %33, align 4, !tbaa !5
  %3468 = sext i32 %3467 to i64
  %3469 = getelementptr inbounds i64, ptr %3466, i64 %3468
  %3470 = load ptr, ptr %8, align 8, !tbaa !9
  %3471 = call i32 @pthread_create(ptr noundef %3469, ptr noundef null, ptr noundef @_Z24thread_process_bsgs_bothPv, ptr noundef %3470) #14
  store i32 %3471, ptr %53, align 4, !tbaa !5
  br label %3486

3472:                                             ; preds = %3446
  %3473 = load ptr, ptr @tid, align 8, !tbaa !9
  %3474 = load i32, ptr %33, align 4, !tbaa !5
  %3475 = sext i32 %3474 to i64
  %3476 = getelementptr inbounds i64, ptr %3473, i64 %3475
  %3477 = load ptr, ptr %8, align 8, !tbaa !9
  %3478 = call i32 @pthread_create(ptr noundef %3476, ptr noundef null, ptr noundef @_Z26thread_process_bsgs_randomPv, ptr noundef %3477) #14
  store i32 %3478, ptr %53, align 4, !tbaa !5
  br label %3486

3479:                                             ; preds = %3446
  %3480 = load ptr, ptr @tid, align 8, !tbaa !9
  %3481 = load i32, ptr %33, align 4, !tbaa !5
  %3482 = sext i32 %3481 to i64
  %3483 = getelementptr inbounds i64, ptr %3480, i64 %3482
  %3484 = load ptr, ptr %8, align 8, !tbaa !9
  %3485 = call i32 @pthread_create(ptr noundef %3483, ptr noundef null, ptr noundef @_Z25thread_process_bsgs_dancePv, ptr noundef %3484) #14
  store i32 %3485, ptr %53, align 4, !tbaa !5
  br label %3486

3486:                                             ; preds = %3479, %3472, %3465, %3458, %3451, %3446
  %3487 = load i32, ptr %53, align 4, !tbaa !5
  %3488 = icmp ne i32 %3487, 0
  br i1 %3488, label %3489, label %3492

3489:                                             ; preds = %3486
  %3490 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3491 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3490, ptr noundef @.str.215) #14
  call void @exit(i32 noundef 1) #17
  unreachable

3492:                                             ; preds = %3486
  br label %3493

3493:                                             ; preds = %3492
  %3494 = load i32, ptr %33, align 4, !tbaa !5
  %3495 = add nsw i32 %3494, 1
  store i32 %3495, ptr %33, align 4, !tbaa !5
  br label %3439, !llvm.loop !59

3496:                                             ; preds = %3439
  %3497 = load ptr, ptr %13, align 8, !tbaa !9
  call void @free(ptr noundef %3497) #14
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %61) #14
  call void @llvm.lifetime.end.p0(i64 48, ptr %61) #14
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %60) #14
  call void @llvm.lifetime.end.p0(i64 48, ptr %60) #14
  br label %3501

3498:                                             ; preds = %1665, %1656, %1647, %1601, %1592, %1583, %1574, %1523, %1496, %1484
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %61) #14
  br label %3499

3499:                                             ; preds = %3498, %1480
  call void @llvm.lifetime.end.p0(i64 48, ptr %61) #14
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %60) #14
  br label %3500

3500:                                             ; preds = %3499, %1476
  call void @llvm.lifetime.end.p0(i64 48, ptr %60) #14
  br label %3815

3501:                                             ; preds = %3496, %847
  %3502 = load i32, ptr @FLAGMODE, align 4, !tbaa !5
  %3503 = icmp ne i32 %3502, 2
  br i1 %3503, label %3504, label %3575

3504:                                             ; preds = %3501
  %3505 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %3506 = sext i32 %3505 to i64
  %3507 = call noalias ptr @calloc(i64 noundef %3506, i64 noundef 8) #20
  store ptr %3507, ptr @steps, align 8, !tbaa !9
  %3508 = load ptr, ptr @steps, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %3508, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.212, i32 noundef 2101)
          to label %3509 unwind label %137

3509:                                             ; preds = %3504
  %3510 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %3511 = sext i32 %3510 to i64
  %3512 = call noalias ptr @calloc(i64 noundef %3511, i64 noundef 4) #20
  store ptr %3512, ptr @ends, align 8, !tbaa !9
  %3513 = load ptr, ptr @ends, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %3513, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.213, i32 noundef 2103)
          to label %3514 unwind label %137

3514:                                             ; preds = %3509
  %3515 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %3516 = sext i32 %3515 to i64
  %3517 = call noalias ptr @calloc(i64 noundef %3516, i64 noundef 8) #20
  store ptr %3517, ptr @tid, align 8, !tbaa !9
  %3518 = load ptr, ptr @tid, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %3518, ptr noundef @.str.80, ptr noundef @.str.107, ptr noundef @.str.200, i32 noundef 2109)
          to label %3519 unwind label %137

3519:                                             ; preds = %3514
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %3520

3520:                                             ; preds = %3571, %3519
  %3521 = load i32, ptr %33, align 4, !tbaa !5
  %3522 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %3523 = icmp slt i32 %3521, %3522
  br i1 %3523, label %3524, label %3574

3524:                                             ; preds = %3520
  %3525 = call noalias ptr @malloc(i64 noundef 24) #19
  store ptr %3525, ptr %8, align 8, !tbaa !9
  %3526 = load ptr, ptr %8, align 8, !tbaa !9
  invoke void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %3526, ptr noundef @.str.80, ptr noundef @.str.81, ptr noundef @.str.214, i32 noundef 2113)
          to label %3527 unwind label %137

3527:                                             ; preds = %3524
  %3528 = load i32, ptr %33, align 4, !tbaa !5
  %3529 = load ptr, ptr %8, align 8, !tbaa !9
  %3530 = getelementptr inbounds %struct.tothread, ptr %3529, i32 0, i32 0
  store i32 %3528, ptr %3530, align 8, !tbaa !57
  %3531 = load ptr, ptr @steps, align 8, !tbaa !9
  %3532 = load i32, ptr %33, align 4, !tbaa !5
  %3533 = sext i32 %3532 to i64
  %3534 = getelementptr inbounds i64, ptr %3531, i64 %3533
  store i64 0, ptr %3534, align 8, !tbaa !17
  store i32 0, ptr %53, align 4, !tbaa !5
  %3535 = load i32, ptr @FLAGMODE, align 4, !tbaa !5
  switch i32 %3535, label %3564 [
    i32 1, label %3536
    i32 0, label %3536
    i32 3, label %3536
    i32 4, label %3543
    i32 5, label %3550
    i32 6, label %3557
  ]

3536:                                             ; preds = %3527, %3527, %3527
  %3537 = load ptr, ptr @tid, align 8, !tbaa !9
  %3538 = load i32, ptr %33, align 4, !tbaa !5
  %3539 = sext i32 %3538 to i64
  %3540 = getelementptr inbounds i64, ptr %3537, i64 %3539
  %3541 = load ptr, ptr %8, align 8, !tbaa !9
  %3542 = call i32 @pthread_create(ptr noundef %3540, ptr noundef null, ptr noundef @_Z14thread_processPv, ptr noundef %3541) #14
  store i32 %3542, ptr %53, align 4, !tbaa !5
  br label %3564

3543:                                             ; preds = %3527
  %3544 = load ptr, ptr @tid, align 8, !tbaa !9
  %3545 = load i32, ptr %33, align 4, !tbaa !5
  %3546 = sext i32 %3545 to i64
  %3547 = getelementptr inbounds i64, ptr %3544, i64 %3546
  %3548 = load ptr, ptr %8, align 8, !tbaa !9
  %3549 = call i32 @pthread_create(ptr noundef %3547, ptr noundef null, ptr noundef @_Z14thread_pub2rmdPv, ptr noundef %3548) #14
  store i32 %3549, ptr %53, align 4, !tbaa !5
  br label %3564

3550:                                             ; preds = %3527
  %3551 = load ptr, ptr @tid, align 8, !tbaa !9
  %3552 = load i32, ptr %33, align 4, !tbaa !5
  %3553 = sext i32 %3552 to i64
  %3554 = getelementptr inbounds i64, ptr %3551, i64 %3553
  %3555 = load ptr, ptr %8, align 8, !tbaa !9
  %3556 = call i32 @pthread_create(ptr noundef %3554, ptr noundef null, ptr noundef @_Z23thread_process_minikeysPv, ptr noundef %3555) #14
  store i32 %3556, ptr %53, align 4, !tbaa !5
  br label %3564

3557:                                             ; preds = %3527
  %3558 = load ptr, ptr @tid, align 8, !tbaa !9
  %3559 = load i32, ptr %33, align 4, !tbaa !5
  %3560 = sext i32 %3559 to i64
  %3561 = getelementptr inbounds i64, ptr %3558, i64 %3560
  %3562 = load ptr, ptr %8, align 8, !tbaa !9
  %3563 = call i32 @pthread_create(ptr noundef %3561, ptr noundef null, ptr noundef @_Z21thread_process_vanityPv, ptr noundef %3562) #14
  store i32 %3563, ptr %53, align 4, !tbaa !5
  br label %3564

3564:                                             ; preds = %3557, %3550, %3543, %3536, %3527
  %3565 = load i32, ptr %53, align 4, !tbaa !5
  %3566 = icmp ne i32 %3565, 0
  br i1 %3566, label %3567, label %3570

3567:                                             ; preds = %3564
  %3568 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3569 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3568, ptr noundef @.str.216) #14
  call void @exit(i32 noundef 1) #17
  unreachable

3570:                                             ; preds = %3564
  br label %3571

3571:                                             ; preds = %3570
  %3572 = load i32, ptr %33, align 4, !tbaa !5
  %3573 = add nsw i32 %3572, 1
  store i32 %3573, ptr %33, align 4, !tbaa !5
  br label %3520, !llvm.loop !60

3574:                                             ; preds = %3520
  br label %3575

3575:                                             ; preds = %3574, %3501
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %3576

3576:                                             ; preds = %3587, %3575
  %3577 = load i32, ptr %33, align 4, !tbaa !5
  %3578 = icmp slt i32 %3577, 7
  br i1 %3578, label %3579, label %3590

3579:                                             ; preds = %3576
  %3580 = load i32, ptr %33, align 4, !tbaa !5
  %3581 = sext i32 %3580 to i64
  %3582 = getelementptr inbounds [7 x %class.Int], ptr @int_limits, i64 0, i64 %3581
  %3583 = load i32, ptr %33, align 4, !tbaa !5
  %3584 = sext i32 %3583 to i64
  %3585 = getelementptr inbounds [7 x ptr], ptr @str_limits, i64 0, i64 %3584
  %3586 = load ptr, ptr %3585, align 8, !tbaa !9
  invoke void @_ZN3Int9SetBase10EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3582, ptr noundef %3586)
          to label %3587 unwind label %137

3587:                                             ; preds = %3579
  %3588 = load i32, ptr %33, align 4, !tbaa !5
  %3589 = add nsw i32 %3588, 1
  store i32 %3589, ptr %33, align 4, !tbaa !5
  br label %3576, !llvm.loop !61

3590:                                             ; preds = %3576
  store i32 1, ptr %35, align 4, !tbaa !5
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %40, i32 noundef 0)
          to label %3591 unwind label %137

3591:                                             ; preds = %3590
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %41, i32 noundef 0)
          to label %3592 unwind label %137

3592:                                             ; preds = %3591
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef @BSGS_N)
          to label %3593 unwind label %137

3593:                                             ; preds = %3592
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %45, i32 noundef 0)
          to label %3594 unwind label %137

3594:                                             ; preds = %3593
  br label %3595

3595:                                             ; preds = %3808, %3594
  invoke void @_Z8sleep_msi(i32 noundef 1000)
          to label %3596 unwind label %137

3596:                                             ; preds = %3595
  invoke void @_ZN3Int6AddOneEv(ptr noundef nonnull align 8 dereferenceable(16) %45)
          to label %3597 unwind label %137

3597:                                             ; preds = %3596
  store i32 1, ptr %36, align 4, !tbaa !5
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %3598

3598:                                             ; preds = %3615, %3597
  %3599 = load i32, ptr %33, align 4, !tbaa !5
  %3600 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %3601 = icmp slt i32 %3599, %3600
  br i1 %3601, label %3602, label %3605

3602:                                             ; preds = %3598
  %3603 = load i32, ptr %36, align 4, !tbaa !5
  %3604 = icmp ne i32 %3603, 0
  br label %3605

3605:                                             ; preds = %3602, %3598
  %3606 = phi i1 [ false, %3598 ], [ %3604, %3602 ]
  br i1 %3606, label %3607, label %3618

3607:                                             ; preds = %3605
  %3608 = load ptr, ptr @ends, align 8, !tbaa !9
  %3609 = load i32, ptr %33, align 4, !tbaa !5
  %3610 = sext i32 %3609 to i64
  %3611 = getelementptr inbounds i32, ptr %3608, i64 %3610
  %3612 = load i32, ptr %3611, align 4, !tbaa !5
  %3613 = load i32, ptr %36, align 4, !tbaa !5
  %3614 = and i32 %3613, %3612
  store i32 %3614, ptr %36, align 4, !tbaa !5
  br label %3615

3615:                                             ; preds = %3607
  %3616 = load i32, ptr %33, align 4, !tbaa !5
  %3617 = add nsw i32 %3616, 1
  store i32 %3617, ptr %33, align 4, !tbaa !5
  br label %3598, !llvm.loop !62

3618:                                             ; preds = %3605
  %3619 = load i32, ptr %36, align 4, !tbaa !5
  %3620 = icmp ne i32 %3619, 0
  br i1 %3620, label %3621, label %3622

3621:                                             ; preds = %3618
  store i32 0, ptr %35, align 4, !tbaa !5
  br label %3622

3622:                                             ; preds = %3621, %3618
  %3623 = invoke noundef zeroext i1 @_ZN3Int9IsGreaterEPS_(ptr noundef nonnull align 8 dereferenceable(16) @OUTPUTSECONDS, ptr noundef @ZERO)
          to label %3624 unwind label %137

3624:                                             ; preds = %3622
  br i1 %3623, label %3625, label %3807

3625:                                             ; preds = %3624
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX, ptr noundef %45)
          to label %3626 unwind label %137

3626:                                             ; preds = %3625
  invoke void @_ZN3Int3ModEPS_(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX, ptr noundef @OUTPUTSECONDS)
          to label %3627 unwind label %137

3627:                                             ; preds = %3626
  %3628 = invoke noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX)
          to label %3629 unwind label %137

3629:                                             ; preds = %3627
  br i1 %3628, label %3630, label %3806

3630:                                             ; preds = %3629
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %40, i32 noundef 0)
          to label %3631 unwind label %137

3631:                                             ; preds = %3630
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %3632

3632:                                             ; preds = %3644, %3631
  %3633 = load i32, ptr %33, align 4, !tbaa !5
  %3634 = load i32, ptr @NTHREADS, align 4, !tbaa !5
  %3635 = icmp slt i32 %3633, %3634
  br i1 %3635, label %3636, label %3647

3636:                                             ; preds = %3632
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef %44)
          to label %3637 unwind label %137

3637:                                             ; preds = %3636
  %3638 = load ptr, ptr @steps, align 8, !tbaa !9
  %3639 = load i32, ptr %33, align 4, !tbaa !5
  %3640 = sext i32 %3639 to i64
  %3641 = getelementptr inbounds i64, ptr %3638, i64 %3640
  %3642 = load i64, ptr %3641, align 8, !tbaa !17
  invoke void @_ZN3Int4MultEm(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %3642)
          to label %3643 unwind label %137

3643:                                             ; preds = %3637
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef %41)
          to label %3644 unwind label %137

3644:                                             ; preds = %3643
  %3645 = load i32, ptr %33, align 4, !tbaa !5
  %3646 = add nsw i32 %3645, 1
  store i32 %3646, ptr %33, align 4, !tbaa !5
  br label %3632, !llvm.loop !63

3647:                                             ; preds = %3632
  %3648 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !5
  %3649 = icmp ne i32 %3648, 0
  br i1 %3649, label %3650, label %3658

3650:                                             ; preds = %3647
  %3651 = load i32, ptr @FLAGMODE, align 4, !tbaa !5
  %3652 = icmp eq i32 %3651, 0
  br i1 %3652, label %3653, label %3655

3653:                                             ; preds = %3650
  invoke void @_ZN3Int4MultEm(ptr noundef nonnull align 8 dereferenceable(16) %40, i64 noundef 3)
          to label %3654 unwind label %137

3654:                                             ; preds = %3653
  br label %3657

3655:                                             ; preds = %3650
  invoke void @_ZN3Int4MultEm(ptr noundef nonnull align 8 dereferenceable(16) %40, i64 noundef 6)
          to label %3656 unwind label %137

3656:                                             ; preds = %3655
  br label %3657

3657:                                             ; preds = %3656, %3654
  br label %3664

3658:                                             ; preds = %3647
  %3659 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !5
  %3660 = icmp eq i32 %3659, 1
  br i1 %3660, label %3661, label %3663

3661:                                             ; preds = %3658
  invoke void @_ZN3Int4MultEm(ptr noundef nonnull align 8 dereferenceable(16) %40, i64 noundef 2)
          to label %3662 unwind label %137

3662:                                             ; preds = %3661
  br label %3663

3663:                                             ; preds = %3662, %3658
  br label %3664

3664:                                             ; preds = %3663, %3657
  %3665 = call i32 @pthread_mutex_lock(ptr noundef @bsgs_thread) #14
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef %40)
          to label %3666 unwind label %137

3666:                                             ; preds = %3664
  invoke void @_ZN3Int3DivEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef %45, ptr noundef null)
          to label %3667 unwind label %137

3667:                                             ; preds = %3666
  %3668 = invoke noundef ptr @_ZN3Int9GetBase10Ev(ptr noundef nonnull align 8 dereferenceable(16) %45)
          to label %3669 unwind label %137

3669:                                             ; preds = %3667
  store ptr %3668, ptr %17, align 8, !tbaa !9
  %3670 = invoke noundef ptr @_ZN3Int9GetBase10Ev(ptr noundef nonnull align 8 dereferenceable(16) %41)
          to label %3671 unwind label %137

3671:                                             ; preds = %3669
  store ptr %3670, ptr %19, align 8, !tbaa !9
  %3672 = invoke noundef ptr @_ZN3Int9GetBase10Ev(ptr noundef nonnull align 8 dereferenceable(16) %40)
          to label %3673 unwind label %137

3673:                                             ; preds = %3671
  store ptr %3672, ptr %18, align 8, !tbaa !9
  %3674 = invoke noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef @int_limits)
          to label %3675 unwind label %137

3675:                                             ; preds = %3673
  br i1 %3674, label %3676, label %3692

3676:                                             ; preds = %3675
  %3677 = load i32, ptr @FLAGMATRIX, align 4, !tbaa !5
  %3678 = icmp ne i32 %3677, 0
  br i1 %3678, label %3679, label %3685

3679:                                             ; preds = %3676
  %3680 = getelementptr inbounds [2048 x i8], ptr %6, i64 0, i64 0
  %3681 = load ptr, ptr %18, align 8, !tbaa !9
  %3682 = load ptr, ptr %17, align 8, !tbaa !9
  %3683 = load ptr, ptr %19, align 8, !tbaa !9
  %3684 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %3680, ptr noundef @.str.217, ptr noundef %3681, ptr noundef %3682, ptr noundef %3683) #14
  br label %3691

3685:                                             ; preds = %3676
  %3686 = getelementptr inbounds [2048 x i8], ptr %6, i64 0, i64 0
  %3687 = load ptr, ptr %18, align 8, !tbaa !9
  %3688 = load ptr, ptr %17, align 8, !tbaa !9
  %3689 = load ptr, ptr %19, align 8, !tbaa !9
  %3690 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %3686, ptr noundef @.str.218, ptr noundef %3687, ptr noundef %3688, ptr noundef %3689) #14
  br label %3691

3691:                                             ; preds = %3685, %3679
  br label %3795

3692:                                             ; preds = %3675
  store i32 0, ptr %33, align 4, !tbaa !5
  store i32 0, ptr %38, align 4, !tbaa !5
  br label %3693

3693:                                             ; preds = %3713, %3692
  %3694 = load i32, ptr %33, align 4, !tbaa !5
  %3695 = icmp slt i32 %3694, 6
  br i1 %3695, label %3696, label %3700

3696:                                             ; preds = %3693
  %3697 = load i32, ptr %38, align 4, !tbaa !5
  %3698 = icmp ne i32 %3697, 0
  %3699 = xor i1 %3698, true
  br label %3700

3700:                                             ; preds = %3696, %3693
  %3701 = phi i1 [ false, %3693 ], [ %3699, %3696 ]
  br i1 %3701, label %3702, label %3714

3702:                                             ; preds = %3700
  %3703 = load i32, ptr %33, align 4, !tbaa !5
  %3704 = add nsw i32 %3703, 1
  %3705 = sext i32 %3704 to i64
  %3706 = getelementptr inbounds [7 x %class.Int], ptr @int_limits, i64 0, i64 %3705
  %3707 = invoke noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef %3706)
          to label %3708 unwind label %137

3708:                                             ; preds = %3702
  br i1 %3707, label %3709, label %3710

3709:                                             ; preds = %3708
  store i32 1, ptr %38, align 4, !tbaa !5
  br label %3713

3710:                                             ; preds = %3708
  %3711 = load i32, ptr %33, align 4, !tbaa !5
  %3712 = add nsw i32 %3711, 1
  store i32 %3712, ptr %33, align 4, !tbaa !5
  br label %3713

3713:                                             ; preds = %3710, %3709
  br label %3693, !llvm.loop !64

3714:                                             ; preds = %3700
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef %41)
          to label %3715 unwind label %137

3715:                                             ; preds = %3714
  %3716 = load i32, ptr %38, align 4, !tbaa !5
  %3717 = icmp ne i32 %3716, 0
  br i1 %3717, label %3718, label %3720

3718:                                             ; preds = %3715
  %3719 = load i32, ptr %33, align 4, !tbaa !5
  br label %3723

3720:                                             ; preds = %3715
  %3721 = load i32, ptr %33, align 4, !tbaa !5
  %3722 = sub nsw i32 %3721, 1
  br label %3723

3723:                                             ; preds = %3720, %3718
  %3724 = phi i32 [ %3719, %3718 ], [ %3722, %3720 ]
  %3725 = sext i32 %3724 to i64
  %3726 = getelementptr inbounds [7 x %class.Int], ptr @int_limits, i64 0, i64 %3725
  invoke void @_ZN3Int3DivEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef %3726, ptr noundef null)
          to label %3727 unwind label %137

3727:                                             ; preds = %3723
  %3728 = invoke noundef ptr @_ZN3Int9GetBase10Ev(ptr noundef nonnull align 8 dereferenceable(16) %46)
          to label %3729 unwind label %137

3729:                                             ; preds = %3727
  store ptr %3728, ptr %20, align 8, !tbaa !9
  %3730 = load i32, ptr @FLAGMATRIX, align 4, !tbaa !5
  %3731 = icmp ne i32 %3730, 0
  br i1 %3731, label %3732, label %3751

3732:                                             ; preds = %3729
  %3733 = getelementptr inbounds [2048 x i8], ptr %6, i64 0, i64 0
  %3734 = load ptr, ptr %18, align 8, !tbaa !9
  %3735 = load ptr, ptr %17, align 8, !tbaa !9
  %3736 = load ptr, ptr %20, align 8, !tbaa !9
  %3737 = load i32, ptr %38, align 4, !tbaa !5
  %3738 = icmp ne i32 %3737, 0
  br i1 %3738, label %3739, label %3741

3739:                                             ; preds = %3732
  %3740 = load i32, ptr %33, align 4, !tbaa !5
  br label %3744

3741:                                             ; preds = %3732
  %3742 = load i32, ptr %33, align 4, !tbaa !5
  %3743 = sub nsw i32 %3742, 1
  br label %3744

3744:                                             ; preds = %3741, %3739
  %3745 = phi i32 [ %3740, %3739 ], [ %3743, %3741 ]
  %3746 = sext i32 %3745 to i64
  %3747 = getelementptr inbounds [7 x ptr], ptr @str_limits_prefixs, i64 0, i64 %3746
  %3748 = load ptr, ptr %3747, align 8, !tbaa !9
  %3749 = load ptr, ptr %19, align 8, !tbaa !9
  %3750 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %3733, ptr noundef @.str.219, ptr noundef %3734, ptr noundef %3735, ptr noundef %3736, ptr noundef %3748, ptr noundef %3749) #14
  br label %3793

3751:                                             ; preds = %3729
  %3752 = load i32, ptr @THREADOUTPUT, align 4, !tbaa !5
  %3753 = icmp eq i32 %3752, 1
  br i1 %3753, label %3754, label %3773

3754:                                             ; preds = %3751
  %3755 = getelementptr inbounds [2048 x i8], ptr %6, i64 0, i64 0
  %3756 = load ptr, ptr %18, align 8, !tbaa !9
  %3757 = load ptr, ptr %17, align 8, !tbaa !9
  %3758 = load ptr, ptr %20, align 8, !tbaa !9
  %3759 = load i32, ptr %38, align 4, !tbaa !5
  %3760 = icmp ne i32 %3759, 0
  br i1 %3760, label %3761, label %3763

3761:                                             ; preds = %3754
  %3762 = load i32, ptr %33, align 4, !tbaa !5
  br label %3766

3763:                                             ; preds = %3754
  %3764 = load i32, ptr %33, align 4, !tbaa !5
  %3765 = sub nsw i32 %3764, 1
  br label %3766

3766:                                             ; preds = %3763, %3761
  %3767 = phi i32 [ %3762, %3761 ], [ %3765, %3763 ]
  %3768 = sext i32 %3767 to i64
  %3769 = getelementptr inbounds [7 x ptr], ptr @str_limits_prefixs, i64 0, i64 %3768
  %3770 = load ptr, ptr %3769, align 8, !tbaa !9
  %3771 = load ptr, ptr %19, align 8, !tbaa !9
  %3772 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %3755, ptr noundef @.str.220, ptr noundef %3756, ptr noundef %3757, ptr noundef %3758, ptr noundef %3770, ptr noundef %3771) #14
  br label %3792

3773:                                             ; preds = %3751
  %3774 = getelementptr inbounds [2048 x i8], ptr %6, i64 0, i64 0
  %3775 = load ptr, ptr %18, align 8, !tbaa !9
  %3776 = load ptr, ptr %17, align 8, !tbaa !9
  %3777 = load ptr, ptr %20, align 8, !tbaa !9
  %3778 = load i32, ptr %38, align 4, !tbaa !5
  %3779 = icmp ne i32 %3778, 0
  br i1 %3779, label %3780, label %3782

3780:                                             ; preds = %3773
  %3781 = load i32, ptr %33, align 4, !tbaa !5
  br label %3785

3782:                                             ; preds = %3773
  %3783 = load i32, ptr %33, align 4, !tbaa !5
  %3784 = sub nsw i32 %3783, 1
  br label %3785

3785:                                             ; preds = %3782, %3780
  %3786 = phi i32 [ %3781, %3780 ], [ %3784, %3782 ]
  %3787 = sext i32 %3786 to i64
  %3788 = getelementptr inbounds [7 x ptr], ptr @str_limits_prefixs, i64 0, i64 %3787
  %3789 = load ptr, ptr %3788, align 8, !tbaa !9
  %3790 = load ptr, ptr %19, align 8, !tbaa !9
  %3791 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %3774, ptr noundef @.str.220, ptr noundef %3775, ptr noundef %3776, ptr noundef %3777, ptr noundef %3789, ptr noundef %3790) #14
  br label %3792

3792:                                             ; preds = %3785, %3766
  br label %3793

3793:                                             ; preds = %3792, %3744
  %3794 = load ptr, ptr %20, align 8, !tbaa !9
  call void @free(ptr noundef %3794) #14
  br label %3795

3795:                                             ; preds = %3793, %3691
  %3796 = getelementptr inbounds [2048 x i8], ptr %6, i64 0, i64 0
  %3797 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.221, ptr noundef %3796)
          to label %3798 unwind label %137

3798:                                             ; preds = %3795
  %3799 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3800 = invoke i32 @fflush(ptr noundef %3799)
          to label %3801 unwind label %137

3801:                                             ; preds = %3798
  store i32 0, ptr @THREADOUTPUT, align 4, !tbaa !5
  %3802 = call i32 @pthread_mutex_unlock(ptr noundef @bsgs_thread) #14
  %3803 = load ptr, ptr %17, align 8, !tbaa !9
  call void @free(ptr noundef %3803) #14
  %3804 = load ptr, ptr %19, align 8, !tbaa !9
  call void @free(ptr noundef %3804) #14
  %3805 = load ptr, ptr %18, align 8, !tbaa !9
  call void @free(ptr noundef %3805) #14
  br label %3806

3806:                                             ; preds = %3801, %3629
  br label %3807

3807:                                             ; preds = %3806, %3624
  br label %3808

3808:                                             ; preds = %3807
  %3809 = load i32, ptr %35, align 4, !tbaa !5
  %3810 = icmp ne i32 %3809, 0
  br i1 %3810, label %3595, label %3811, !llvm.loop !65

3811:                                             ; preds = %3808
  %3812 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.222)
          to label %3813 unwind label %137

3813:                                             ; preds = %3811
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #14
  call void @llvm.lifetime.end.p0(i64 2048, ptr %6) #14
  %3814 = load i32, ptr %3, align 4
  ret i32 %3814

3815:                                             ; preds = %3500, %1475, %1466, %1457, %1448, %1439, %1430, %141, %137
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #14
  br label %3816

3816:                                             ; preds = %3815, %133
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #14
  br label %3817

3817:                                             ; preds = %3816, %129
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #14
  br label %3818

3818:                                             ; preds = %3817, %125
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #14
  br label %3819

3819:                                             ; preds = %3818, %121
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #14
  br label %3820

3820:                                             ; preds = %3819, %117
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #14
  br label %3821

3821:                                             ; preds = %3820, %113
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #14
  br label %3822

3822:                                             ; preds = %3821, %109
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #14
  br label %3823

3823:                                             ; preds = %3822, %105
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #14
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #14
  call void @llvm.lifetime.end.p0(i64 2048, ptr %6) #14
  br label %3824

3824:                                             ; preds = %3823
  %3825 = load ptr, ptr %42, align 8
  %3826 = load i32, ptr %43, align 4
  %3827 = insertvalue { ptr, i32 } poison, ptr %3825, 0
  %3828 = insertvalue { ptr, i32 } %3827, i32 %3826, 1
  resume { ptr, i32 } %3828
}

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

; Function Attrs: nounwind
declare i32 @pthread_mutex_init(ptr noundef, ptr noundef) #0

; Function Attrs: nounwind
declare void @srand(i32 noundef) #0

; Function Attrs: nounwind
declare i64 @time(ptr noundef) #0

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #4

declare void @_ZN9Secp256K1C1Ev(ptr noundef nonnull align 8 dereferenceable(393296)) unnamed_addr #1

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #5

declare void @_ZN9Secp256K14InitEv(ptr noundef nonnull align 8 dereferenceable(393296)) #1

declare void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #1

declare void @_Z14int_randominitv() #1

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

; Function Attrs: nounwind
declare i32 @getopt(i32 noundef, ptr noundef, ptr noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z4menuv() #6

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #0

declare noundef i32 @_Z7indexOfPcPPKci(ptr noundef, ptr noundef, i32 noundef) #1

; Function Attrs: nounwind
declare i64 @strtol(ptr noundef, ptr noundef, i32 noundef) #0

declare void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #1

declare void @_ZN3Int6ShiftLEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #1

declare noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16)) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) #7

declare noundef zeroext i1 @_ZN3Int9IsGreaterEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #1

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #8

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #9

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

; Function Attrs: nounwind
declare ptr @strncpy(ptr noundef, ptr noundef, i64 noundef) #0

; Function Attrs: nounwind willreturn memory(read)
declare noundef ptr @strchr(ptr noundef, i32 noundef) #9

declare void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #1

; Function Attrs: nounwind allocsize(0,1)
declare noalias ptr @calloc(i64 noundef, i64 noundef) #11

declare void @_Z15stringtokenizerPcP13str_tokenizer(ptr noundef, ptr noundef) #1

declare noundef ptr @_Z9nextTokenP13str_tokenizer(ptr noundef) #1

declare noundef i32 @_Z10isValidHexPc(ptr noundef) #1

declare void @_ZN3Int9SetBase10EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #1

declare noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #1

declare noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16)) #1

declare noundef ptr @_ZN3Int9GetBase10Ev(ptr noundef nonnull align 8 dereferenceable(16)) #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z19isValidBase58StringPc(ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z9addvanityPc(ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z14init_generatorv() #6

declare void @_ZN3Int6AddOneEv(ptr noundef nonnull align 8 dereferenceable(16)) #1

declare noundef zeroext i1 @_ZN3Int7IsEqualEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #1

declare noundef zeroext i1 @_ZN3Int14IsLowerOrEqualEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #1

declare void @_ZN3Int3SubEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #1

declare void @_ZN3Int8SetInt64Em(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #1

declare void @_ZN3Int4MultEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #1

declare void @_ZN3Int3ModEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #1

declare noundef i64 @_ZN3Int8GetInt64Ev(ptr noundef nonnull align 8 dereferenceable(16)) #1

declare void @_ZN3Int3DivEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z15readFileAddressPc(ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z14readFileVanityPc(ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z5_sortP13address_valuel(ptr noundef, i64 noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z17writeFileIfNeededPKc(ptr noundef) #6

declare noalias ptr @fopen(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind
declare i32 @feof(ptr noundef) #0

declare ptr @fgets(ptr noundef, i32 noundef, ptr noundef) #1

declare noundef ptr @_Z4trimPcPKc(ptr noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI5PointSaIS0_EE6resizeEmRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 8 dereferenceable(48)) #6 align 2

declare i32 @fseek(ptr noundef, i64 noundef, i32 noundef) #1

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

declare noundef zeroext i1 @_ZN9Secp256K117ParsePublicKeyHexEPcR5PointRb(ptr noundef nonnull align 8 dereferenceable(393296), ptr noundef, ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 1 dereferenceable(1)) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #7 align 2

declare void @_Z13freetokenizerP13str_tokenizer(ptr noundef) #1

declare i32 @fclose(ptr noundef) #1

declare noundef zeroext i1 @_ZN3Int7HasSqrtEv(ptr noundef nonnull align 8 dereferenceable(16)) #1

declare void @_ZN3Int7ModSqrtEv(ptr noundef nonnull align 8 dereferenceable(16)) #1

declare void @_ZN3Int4RandEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef) #1

declare void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #1

declare i32 @fflush(ptr noundef) #1

declare i32 @bloom_init2(ptr noundef, i64 noundef, x86_fp80 noundef) #1

declare void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind writable sret(%class.Point) align 8, ptr noundef nonnull align 8 dereferenceable(393296), ptr noundef) #1

declare noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) #1

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

declare void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8, ptr noundef nonnull align 8 dereferenceable(393296), ptr noundef nonnull align 8 dereferenceable(48)) #1

declare void @_ZN5PointC1ERKS_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #1

declare void @_ZN9Secp256K112DoubleDirectER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8, ptr noundef nonnull align 8 dereferenceable(393296), ptr noundef nonnull align 8 dereferenceable(48)) #1

declare void @_ZN9Secp256K19AddDirectER5PointS1_(ptr dead_on_unwind writable sret(%class.Point) align 8, ptr noundef nonnull align 8 dereferenceable(393296), ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) #1

declare void @_ZN5Point3SetERS_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) #1

declare void @_ZN5Point6ReduceEv(ptr noundef nonnull align 8 dereferenceable(48)) #1

; Function Attrs: nounwind
declare i32 @snprintf(ptr noundef, i64 noundef, ptr noundef, ...) #0

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

declare noundef i32 @_Z6sha256PKhmPh(ptr noundef, i64 noundef, ptr noundef) #1

; Function Attrs: nounwind willreturn memory(read)
declare i32 @memcmp(ptr noundef, ptr noundef, i64 noundef) #9

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

; Function Attrs: nounwind
declare i32 @pthread_create(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z21thread_bPload_2bloomsPv(ptr noundef) #6

; Function Attrs: nounwind
declare i32 @pthread_detach(i64 noundef) #0

; Function Attrs: nounwind
declare i32 @pthread_mutex_lock(ptr noundef) #0

; Function Attrs: nounwind
declare i32 @pthread_mutex_unlock(ptr noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z13thread_bPloadPv(ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z9bsgs_sortP11bsgs_xvaluel(ptr noundef, i64 noundef) #6

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z19thread_process_bsgsPv(ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z28thread_process_bsgs_backwardPv(ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z24thread_process_bsgs_bothPv(ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z26thread_process_bsgs_randomPv(ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z25thread_process_bsgs_dancePv(ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z14thread_processPv(ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z14thread_pub2rmdPv(ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z23thread_process_minikeysPv(ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z21thread_process_vanityPv(ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z8sleep_msi(i32 noundef) #6

declare void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #1

; Function Attrs: nounwind
declare i32 @sprintf(ptr noundef, ptr noundef, ...) #0

attributes #0 = { 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 #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 norecurse 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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nobuiltin 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 #6 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { nounwind allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #11 = { nounwind allocsize(0,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 #12 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #13 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #14 = { nounwind }
attributes #15 = { builtin allocsize(0) }
attributes #16 = { builtin nounwind }
attributes #17 = { noreturn nounwind }
attributes #18 = { nounwind willreturn memory(read) }
attributes #19 = { nounwind allocsize(0) }
attributes #20 = { nounwind allocsize(0,1) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15, !6, i64 4}
!15 = !{!"_ZTS13str_tokenizer", !6, i64 0, !6, i64 4, !10, i64 8}
!16 = distinct !{!16, !13}
!17 = !{!18, !18, i64 0}
!18 = !{!"long", !7, i64 0}
!19 = distinct !{!19, !13}
!20 = distinct !{!20, !13}
!21 = distinct !{!21, !13}
!22 = !{!23, !18, i64 16}
!23 = !{!"_ZTS5bloom", !18, i64 0, !18, i64 8, !18, i64 16, !7, i64 24, !24, i64 32, !7, i64 48, !7, i64 49, !7, i64 50, !25, i64 56, !10, i64 64}
!24 = !{!"long double", !7, i64 0}
!25 = !{!"double", !7, i64 0}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = !{!23, !10, i64 64}
!33 = distinct !{!33, !13}
!34 = distinct !{!34, !13}
!35 = distinct !{!35, !13}
!36 = distinct !{!36, !13}
!37 = distinct !{!37, !13}
!38 = !{!39, !18, i64 8}
!39 = !{!"_ZTS6bPload", !6, i64 0, !18, i64 8, !18, i64 16, !18, i64 24, !18, i64 32, !6, i64 40, !6, i64 44}
!40 = !{!39, !6, i64 0}
!41 = !{!39, !6, i64 44}
!42 = !{!39, !18, i64 16}
!43 = !{!39, !18, i64 32}
!44 = distinct !{!44, !13}
!45 = distinct !{!45, !13}
!46 = distinct !{!46, !13}
!47 = distinct !{!47, !13}
!48 = distinct !{!48, !13}
!49 = distinct !{!49, !13}
!50 = distinct !{!50, !13}
!51 = distinct !{!51, !13}
!52 = distinct !{!52, !13}
!53 = distinct !{!53, !13}
!54 = distinct !{!54, !13}
!55 = distinct !{!55, !13}
!56 = distinct !{!56, !13}
!57 = !{!58, !6, i64 0}
!58 = !{!"_ZTS8tothread", !6, i64 0, !10, i64 8, !10, i64 16}
!59 = distinct !{!59, !13}
!60 = distinct !{!60, !13}
!61 = distinct !{!61, !13}
!62 = distinct !{!62, !13}
!63 = distinct !{!63, !13}
!64 = distinct !{!64, !13}
!65 = distinct !{!65, !13}


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

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Point, std::allocator<Point>>::_Vector_impl" }
%"struct.std::_Vector_base<Point, std::allocator<Point>>::_Vector_impl" = type { %"struct.std::_Vector_base<Point, std::allocator<Point>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Point, std::allocator<Point>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.Point = type { %class.Int, %class.Int, %class.Int }
%class.Int = type { [1 x %struct.__mpz_struct] }
%struct.__mpz_struct = type { i32, i32, ptr }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%struct.oldbloom = type { i64, i64, i64, i8, x86_fp80, i8, i8, i8, double, [32 x i8], [32 x i8], ptr, %union.pthread_mutex_t }
%struct.str_tokenizer = type { i32, i32, ptr }
%struct.bloom = type { i64, i64, i64, i8, x86_fp80, i8, i8, i8, double, ptr }
%struct.checksumsha256 = type { [32 x i8], [32 x i8] }
%struct.bPload = type { i32, i64, i64, i64, i64, i32, i32 }

@THREADBPWORKLOAD = external dso_local local_unnamed_addr global i32, align 4
@Ccoinbuffer = external dso_local local_unnamed_addr global ptr, align 8
@str_baseminikey = external dso_local local_unnamed_addr global ptr, align 8
@raw_baseminikey = external dso_local local_unnamed_addr global ptr, align 8
@minikeyN = external dso_local local_unnamed_addr global ptr, align 8
@minikey_n_limit = external dso_local local_unnamed_addr global i32, align 4
@version = external dso_local local_unnamed_addr global ptr, align 8
@GSn = external dso_local global %"class.std::vector", align 8
@_2GSn = external dso_local global %class.Point, align 8
@THREADOUTPUT = external dso_local local_unnamed_addr global i32, align 4
@bit_range_str_min = external dso_local local_unnamed_addr global ptr, align 8
@bit_range_str_max = external dso_local local_unnamed_addr global ptr, align 8
@bsgs_modes = external dso_local global [5 x ptr], align 16
@modes = external dso_local global [7 x ptr], align 16
@cryptos = external dso_local global [3 x ptr], align 16
@publicsearch = external dso_local global [3 x ptr], align 16
@default_fileName = external dso_local local_unnamed_addr global ptr, align 8
@tid = external dso_local local_unnamed_addr global ptr, align 8
@write_keys = external dso_local global %union.pthread_mutex_t, align 8
@write_random = external dso_local global %union.pthread_mutex_t, align 8
@bsgs_thread = external dso_local global %union.pthread_mutex_t, align 8
@bPload_mutex = external dso_local local_unnamed_addr global ptr, align 8
@FINISHED_THREADS_COUNTER = external dso_local local_unnamed_addr global i64, align 8
@FINISHED_THREADS_BP = external dso_local local_unnamed_addr global i64, align 8
@THREADCYCLES = external dso_local local_unnamed_addr global i64, align 8
@THREADCOUNTER = external dso_local local_unnamed_addr global i64, align 8
@FINISHED_ITEMS = external dso_local local_unnamed_addr global i64, align 8
@OLDFINISHED_ITEMS = external dso_local local_unnamed_addr global i64, align 8
@vanity_bloom = external dso_local local_unnamed_addr global ptr, align 8
@steps = external dso_local local_unnamed_addr global ptr, align 8
@ends = external dso_local local_unnamed_addr global ptr, align 8
@N = external dso_local local_unnamed_addr global i64, align 8
@N_SEQUENTIAL_MAX = external dso_local local_unnamed_addr global i64, align 8
@DEBUGCOUNT = external dso_local local_unnamed_addr global i64, align 8
@OUTPUTSECONDS = external dso_local global %class.Int, align 8
@FLAGSKIPCHECKSUM = external dso_local local_unnamed_addr global i32, align 4
@FLAGENDOMORPHISM = external dso_local local_unnamed_addr global i32, align 4
@FLAGBLOOMMULTIPLIER = external dso_local local_unnamed_addr global i32, align 4
@FLAGVANITY = external dso_local local_unnamed_addr global i32, align 4
@FLAGBASEMINIKEY = external dso_local local_unnamed_addr global i32, align 4
@FLAGBSGSMODE = external dso_local local_unnamed_addr global i32, align 4
@FLAGDEBUG = external dso_local local_unnamed_addr global i32, align 4
@FLAGQUIET = external dso_local local_unnamed_addr global i32, align 4
@FLAGMATRIX = external dso_local local_unnamed_addr global i32, align 4
@KFACTOR = external dso_local local_unnamed_addr global i32, align 4
@NTHREADS = external dso_local local_unnamed_addr global i32, align 4
@FLAGSAVEREADFILE = external dso_local local_unnamed_addr global i32, align 4
@FLAGREADEDFILE1 = external dso_local local_unnamed_addr global i32, align 4
@FLAGREADEDFILE2 = external dso_local local_unnamed_addr global i32, align 4
@FLAGREADEDFILE3 = external dso_local local_unnamed_addr global i32, align 4
@FLAGREADEDFILE4 = external dso_local local_unnamed_addr global i32, align 4
@FLAGUPDATEFILE1 = external dso_local local_unnamed_addr global i32, align 4
@FLAGSTRIDE = external dso_local local_unnamed_addr global i32, align 4
@FLAGSEARCH = external dso_local local_unnamed_addr global i32, align 4
@FLAGBITRANGE = external dso_local local_unnamed_addr global i32, align 4
@FLAGRANGE = external dso_local local_unnamed_addr global i32, align 4
@FLAGFILE = external dso_local local_unnamed_addr global i32, align 4
@FLAGMODE = external dso_local local_unnamed_addr global i32, align 4
@FLAGCRYPTO = external dso_local local_unnamed_addr global i32, align 4
@FLAGRANDOM = external dso_local local_unnamed_addr global i32, align 4
@FLAG_N = external dso_local local_unnamed_addr global i32, align 4
@bitrange = external dso_local local_unnamed_addr global i32, align 4
@str_N = external dso_local local_unnamed_addr global ptr, align 8
@range_start = external dso_local local_unnamed_addr global ptr, align 8
@range_end = external dso_local local_unnamed_addr global ptr, align 8
@str_stride = external dso_local local_unnamed_addr global ptr, align 8
@stride = external dso_local global %class.Int, align 8
@bsgs_found = external dso_local local_unnamed_addr global ptr, align 8
@OriginalPointsBSGS = external dso_local global %"class.std::vector", align 8
@OriginalPointsBSGScompressed = external dso_local local_unnamed_addr global ptr, align 8
@bytes = external dso_local local_unnamed_addr global i64, align 8
@checksum = external dso_local global [32 x i8], align 16
@checksum_backup = external dso_local global [32 x i8], align 16
@buffer_bloom_file = external dso_local global [1024 x i8], align 16
@bPtable = external dso_local local_unnamed_addr global ptr, align 8
@addressTable = external dso_local local_unnamed_addr global ptr, align 8
@oldbloom_bP = external dso_local global %struct.oldbloom, align 16
@bloom_bP = external dso_local local_unnamed_addr global ptr, align 8
@bloom_bPx2nd = external dso_local local_unnamed_addr global ptr, align 8
@bloom_bPx3rd = external dso_local local_unnamed_addr global ptr, align 8
@bloom_bP_checksums = external dso_local local_unnamed_addr global ptr, align 8
@bloom_bPx2nd_checksums = external dso_local local_unnamed_addr global ptr, align 8
@bloom_bPx3rd_checksums = external dso_local local_unnamed_addr global ptr, align 8
@bloom_bP_mutex = external dso_local local_unnamed_addr global ptr, align 8
@bloom_bPx2nd_mutex = external dso_local local_unnamed_addr global ptr, align 8
@bloom_bPx3rd_mutex = external dso_local local_unnamed_addr global ptr, align 8
@bloom_bP_totalbytes = external dso_local local_unnamed_addr global i64, align 8
@bloom_bP2_totalbytes = external dso_local local_unnamed_addr global i64, align 8
@bloom_bP3_totalbytes = external dso_local local_unnamed_addr global i64, align 8
@bsgs_m = external dso_local local_unnamed_addr global i64, align 8
@bsgs_m2 = external dso_local local_unnamed_addr global i64, align 8
@bsgs_m3 = external dso_local local_unnamed_addr global i64, align 8
@bsgs_aux = external dso_local local_unnamed_addr global i64, align 8
@bsgs_point_number = external dso_local local_unnamed_addr global i32, align 4
@str_limits_prefixs = external dso_local local_unnamed_addr global [7 x ptr], align 16
@str_limits = external dso_local local_unnamed_addr global [7 x ptr], align 16
@int_limits = external dso_local global [7 x %class.Int], align 16
@BSGS_GROUP_SIZE = external dso_local global %class.Int, align 8
@BSGS_CURRENT = external dso_local global %class.Int, align 8
@BSGS_R = external dso_local global %class.Int, align 8
@BSGS_AUX = external dso_local global %class.Int, align 8
@BSGS_N = external dso_local global %class.Int, align 8
@BSGS_N_double = external dso_local global %class.Int, align 8
@BSGS_M = external dso_local global %class.Int, align 8
@BSGS_M_double = external dso_local global %class.Int, align 8
@BSGS_M2 = external dso_local global %class.Int, align 8
@BSGS_M2_double = external dso_local global %class.Int, align 8
@BSGS_M3 = external dso_local global %class.Int, align 8
@BSGS_M3_double = external dso_local global %class.Int, align 8
@ONE = external dso_local global %class.Int, align 8
@ZERO = external dso_local global %class.Int, align 8
@MPZAUX = external dso_local global %class.Int, align 8
@BSGS_MP = external dso_local global %class.Point, align 8
@BSGS_MP2 = external dso_local global %class.Point, align 8
@BSGS_MP3 = external dso_local global %class.Point, align 8
@BSGS_MP_double = external dso_local global %class.Point, align 8
@BSGS_MP2_double = external dso_local global %class.Point, align 8
@BSGS_MP3_double = external dso_local global %class.Point, align 8
@BSGS_AMP2 = external dso_local global %"class.std::vector", align 8
@BSGS_AMP3 = external dso_local global %"class.std::vector", align 8
@point_temp = external dso_local global %class.Point, align 8
@n_range_start = external dso_local global %class.Int, align 8
@n_range_end = external dso_local global %class.Int, align 8
@n_range_diff = external dso_local global %class.Int, align 8
@n_range_aux = external dso_local global %class.Int, align 8
@lambda = external dso_local global %class.Int, align 8
@lambda2 = external dso_local global %class.Int, align 8
@beta = external dso_local global %class.Int, align 8
@beta2 = external dso_local global %class.Int, align 8
@secp = external dso_local local_unnamed_addr global ptr, align 8
@.str.76 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [49 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.78 = external hidden unnamed_addr constant [33 x i8], align 1
@optarg = external local_unnamed_addr global ptr, align 8
@.str.79 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.165 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.166 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [15 x i8], align 1
@stdout = external local_unnamed_addr global ptr, align 8
@.str.168 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.169 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.170 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.176 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.177 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.178 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.180 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.181 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.182 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.183 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.184 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.185 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.186 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.187 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.188 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.189 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.190 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.191 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.192 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.193 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.194 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.195 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.196 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.197 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.198 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.199 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.200 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.201 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.202 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.203 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.204 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.205 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.206 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.207 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.208 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.210 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.211 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.212 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.213 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.214 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.215 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.216 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.217 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.218 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.219 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.220 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.221 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.222 = external hidden unnamed_addr constant [6 x i8], align 1
@switch.table.main = private unnamed_addr constant [5 x ptr] [ptr @_Z19thread_process_bsgsPv, ptr @_Z28thread_process_bsgs_backwardPv, ptr @_Z24thread_process_bsgs_bothPv, ptr @_Z26thread_process_bsgs_randomPv, ptr @_Z25thread_process_bsgs_dancePv], align 8
@switch.table.main.1 = private unnamed_addr constant [7 x ptr] [ptr @_Z14thread_processPv, ptr @_Z14thread_processPv, ptr @_Z14thread_processPv, ptr @_Z14thread_processPv, ptr @_Z14thread_pub2rmdPv, ptr @_Z23thread_process_minikeysPv, ptr @_Z21thread_process_vanityPv], align 8

; Function Attrs: nounwind
declare void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #0

declare void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1

; Function Attrs: nounwind
declare void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr noundef %1) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %3 = alloca [2048 x i8], align 16
  %4 = alloca [32 x i8], align 16
  %5 = alloca %struct.str_tokenizer, align 8
  %6 = alloca %struct.str_tokenizer, align 8
  %7 = alloca %class.Int, align 8
  %8 = alloca %class.Int, align 8
  %9 = alloca %class.Int, align 8
  %10 = alloca %class.Int, align 8
  %11 = alloca %class.Int, align 8
  %12 = alloca %class.Int, align 8
  %13 = alloca %class.Int, align 8
  %14 = alloca %class.Int, align 8
  %15 = alloca %class.Int, align 8
  %16 = alloca %class.Point, align 8
  %17 = alloca %class.Point, align 8
  %18 = alloca %class.Point, align 8
  %19 = alloca %class.Point, align 8
  %20 = alloca %class.Point, align 8
  %21 = alloca %class.Point, align 8
  %22 = alloca %class.Point, align 8
  %23 = alloca %class.Point, align 8
  %24 = alloca %class.Point, align 8
  %25 = alloca %class.Point, align 8
  %26 = alloca %class.Point, align 8
  %27 = alloca %class.Point, align 8
  %28 = alloca %class.Point, align 8
  %29 = alloca %class.Point, align 8
  %30 = alloca %class.Point, align 8
  %31 = alloca %class.Point, align 8
  %32 = alloca %class.Point, align 8
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %3) #20
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #20
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #20
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #20
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #20
  call void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %7)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #20
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %33 unwind label %60

33:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #20
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %34 unwind label %62

34:                                               ; preds = %33
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #20
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %35 unwind label %64

35:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #20
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %11)
          to label %36 unwind label %66

36:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #20
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %37 unwind label %68

37:                                               ; preds = %36
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #20
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %38 unwind label %70

38:                                               ; preds = %37
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #20
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %14)
          to label %39 unwind label %72

39:                                               ; preds = %38
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #20
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %40 unwind label %74

40:                                               ; preds = %39
  %41 = call i32 @pthread_mutex_init(ptr noundef nonnull @write_keys, ptr noundef null) #20
  %42 = call i32 @pthread_mutex_init(ptr noundef nonnull @write_random, ptr noundef null) #20
  %43 = call i32 @pthread_mutex_init(ptr noundef nonnull @bsgs_thread, ptr noundef null) #20
  %44 = call i64 @time(ptr noundef null) #20
  %45 = trunc i64 %44 to i32
  call void @srand(i32 noundef %45) #20
  %46 = invoke noalias noundef nonnull dereferenceable(393296) ptr @_Znwm(i64 noundef 393296) #21
          to label %47 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

47:                                               ; preds = %40
  invoke void @_ZN9Secp256K1C1Ev(ptr noundef nonnull align 8 dereferenceable(393296) %46)
          to label %48 unwind label %76

48:                                               ; preds = %47
  store ptr %46, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K14InitEv(ptr noundef nonnull align 8 dereferenceable(393296) %46)
          to label %49 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

49:                                               ; preds = %48
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @OUTPUTSECONDS, i32 noundef 30)
          to label %50 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

50:                                               ; preds = %49
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @ZERO, i32 noundef 0)
          to label %51 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

51:                                               ; preds = %50
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @ONE, i32 noundef 1)
          to label %52 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

52:                                               ; preds = %51
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_GROUP_SIZE, i32 noundef 1024)
          to label %53 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

53:                                               ; preds = %52
  invoke void @_Z14int_randominitv()
          to label %54 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

54:                                               ; preds = %53
  %55 = load ptr, ptr @version, align 8, !tbaa !5
  %56 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.76, ptr noundef %55)
  %57 = getelementptr inbounds i8, ptr %5, i64 4
  br label %58

58:                                               ; preds = %.loopexit860, %54
  %.0595 = phi ptr [ null, %54 ], [ %.1596, %.loopexit860 ]
  %59 = call i32 @getopt(i32 noundef %0, ptr noundef %1, ptr noundef nonnull @.str.77) #20
  switch i32 %59, label %326 [
    i32 -1, label %329
    i32 104, label %78
    i32 54, label %79
    i32 66, label %82
    i32 98, label %91
    i32 99, label %120
    i32 67, label %131
    i32 100, label %163
    i32 101, label %165
    i32 102, label %170
    i32 73, label %172
    i32 107, label %174
    i32 108, label %179
    i32 77, label %189
    i32 109, label %191
    i32 110, label %216
    i32 113, label %218
    i32 82, label %220
    i32 114, label %222
    i32 115, label %267
    i32 83, label %282
    i32 116, label %283
    i32 118, label %290
    i32 56, label %312
    i32 122, label %321
  ]

60:                                               ; preds = %2
  %61 = landingpad { ptr, i32 }
          cleanup
  br label %2068

62:                                               ; preds = %33
  %63 = landingpad { ptr, i32 }
          cleanup
  br label %2067

64:                                               ; preds = %34
  %65 = landingpad { ptr, i32 }
          cleanup
  br label %2066

66:                                               ; preds = %35
  %67 = landingpad { ptr, i32 }
          cleanup
  br label %2065

68:                                               ; preds = %36
  %69 = landingpad { ptr, i32 }
          cleanup
  br label %2064

70:                                               ; preds = %37
  %71 = landingpad { ptr, i32 }
          cleanup
  br label %2063

72:                                               ; preds = %38
  %73 = landingpad { ptr, i32 }
          cleanup
  br label %2062

74:                                               ; preds = %39
  %75 = landingpad { ptr, i32 }
          cleanup
  br label %2061

.loopexit:                                        ; preds = %.preheader
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit:                      ; preds = %2005, %2001, %.lr.ph957
  %lpad.loopexit798 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit:    ; preds = %.invoke, %.preheader802, %1979, %._crit_edge954, %1993, %1994, %1995, %1998, %2018, %2020, %2021, %2023, %2025, %2027, %2042, %2043, %2046
  %lpad.loopexit803 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %1973, %1971, %1969, %1967, %1965, %1963, %.loopexit808
  %lpad.loopexit805 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %826
  %lpad.loopexit841 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %797
  %lpad.loopexit844 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %768
  %lpad.loopexit847 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %616, %599, %586, %582, %581, %576
  %lpad.loopexit850 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %549
  %lpad.loopexit853 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %493, %492, %488, %486, %485, %484, %483, %.preheader856
  %lpad.loopexit857 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %78, %82, %96, %97, %100, %102, %103, %105, %110, %113, %120, %165, %167, %168, %169, %179, %191, %224, %227, %229, %232, %241, %243, %245, %249, %254, %267, %269, %272, %273, %278, %298
  %lpad.loopexit861 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke1177, %.invoke1154, %40, %48, %49, %50, %51, %52, %53, %353, %355, %356, %360, %361, %383, %385, %388, %389, %391, %394, %399, %404, %407, %410, %411, %412, %413, %418, %426, %427, %431, %433, %468, %476, %478, %480, %506, %508, %.thread788, %518, %529, %533, %563, %622, %627, %628, %640, %642, %643, %644, %647, %648, %652, %653, %654, %657, %662, %670, %672, %674, %675, %681, %682, %685, %686, %691, %692, %698, %701, %702, %703, %704, %705, %706, %709, %710, %711, %712, %713, %714, %715, %716, %717, %718, %721, %722, %723, %724, %726, %728, %729, %730, %731, %732, %735, %736, %737, %739, %741, %742, %743, %1975, %1976, %1977, %1978
  %lpad.loopexit.split-lp862 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

76:                                               ; preds = %47
  %77 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %46, i64 noundef 393296) #22
  br label %.loopexit.split-lp

78:                                               ; preds = %58
  invoke void @_Z4menuv()
          to label %.loopexit860 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

79:                                               ; preds = %58
  store i32 1, ptr @FLAGSKIPCHECKSUM, align 4, !tbaa !9
  %80 = load ptr, ptr @stderr, align 8, !tbaa !5
  %81 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %80, ptr noundef nonnull @.str.78) #23
  br label %.loopexit860

82:                                               ; preds = %58
  %83 = load ptr, ptr @optarg, align 8, !tbaa !5
  %84 = invoke noundef i32 @_Z7indexOfPcPPKci(ptr noundef %83, ptr noundef nonnull @bsgs_modes, i32 noundef 5)
          to label %85 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

85:                                               ; preds = %82
  %or.cond = icmp ult i32 %84, 5
  br i1 %or.cond, label %86, label %87

86:                                               ; preds = %85
  store i32 %84, ptr @FLAGBSGSMODE, align 4, !tbaa !9
  br label %.loopexit860

87:                                               ; preds = %85
  %88 = load ptr, ptr @stderr, align 8, !tbaa !5
  %89 = load ptr, ptr @optarg, align 8, !tbaa !5
  %90 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %88, ptr noundef nonnull @.str.79, ptr noundef %89) #23
  br label %.loopexit860

91:                                               ; preds = %58
  %92 = load ptr, ptr @optarg, align 8, !tbaa !5
  %93 = call i64 @strtol(ptr nocapture noundef %92, ptr noundef null, i32 noundef 10) #20
  %94 = trunc i64 %93 to i32
  store i32 %94, ptr @bitrange, align 4, !tbaa !9
  %95 = add i32 %94, -1
  %or.cond3 = icmp ult i32 %95, 256
  br i1 %or.cond3, label %96, label %116

96:                                               ; preds = %91
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX, ptr noundef nonnull @ONE)
          to label %97 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

97:                                               ; preds = %96
  %98 = load i32, ptr @bitrange, align 4, !tbaa !9
  %99 = add nsw i32 %98, -1
  invoke void @_ZN3Int6ShiftLEj(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX, i32 noundef %99)
          to label %100 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

100:                                              ; preds = %97
  %101 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX)
          to label %102 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

102:                                              ; preds = %100
  store ptr %101, ptr @bit_range_str_min, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %101, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.82, i32 noundef 516)
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX, ptr noundef nonnull @ONE)
          to label %103 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

103:                                              ; preds = %102
  %104 = load i32, ptr @bitrange, align 4, !tbaa !9
  invoke void @_ZN3Int6ShiftLEj(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX, i32 noundef %104)
          to label %105 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

105:                                              ; preds = %103
  %106 = load ptr, ptr @secp, align 8, !tbaa !5
  %107 = getelementptr inbounds i8, ptr %106, i64 64
  %108 = invoke noundef zeroext i1 @_ZN3Int9IsGreaterEPS_(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX, ptr noundef nonnull %107)
          to label %109 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

109:                                              ; preds = %105
  br i1 %108, label %110, label %113

110:                                              ; preds = %109
  %111 = load ptr, ptr @secp, align 8, !tbaa !5
  %112 = getelementptr inbounds i8, ptr %111, i64 64
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX, ptr noundef nonnull %112)
          to label %113 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

113:                                              ; preds = %110, %109
  %114 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX)
          to label %115 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

115:                                              ; preds = %113
  store ptr %114, ptr @bit_range_str_max, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %114, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.82, i32 noundef 523)
  store i32 1, ptr @FLAGBITRANGE, align 4, !tbaa !9
  br label %.loopexit860

116:                                              ; preds = %91
  %117 = load ptr, ptr @stderr, align 8, !tbaa !5
  %118 = load ptr, ptr @optarg, align 8, !tbaa !5
  %119 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %117, ptr noundef nonnull @.str.83, ptr noundef %118) #23
  br label %.loopexit860

120:                                              ; preds = %58
  %121 = load ptr, ptr @optarg, align 8, !tbaa !5
  %122 = invoke noundef i32 @_Z7indexOfPcPPKci(ptr noundef %121, ptr noundef nonnull @cryptos, i32 noundef 3)
          to label %123 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

123:                                              ; preds = %120
  switch i32 %122, label %127 [
    i32 0, label %124
    i32 1, label %125
  ]

124:                                              ; preds = %123
  store i32 1, ptr @FLAGCRYPTO, align 4, !tbaa !9
  br label %.loopexit860

125:                                              ; preds = %123
  store i32 2, ptr @FLAGCRYPTO, align 4, !tbaa !9
  %126 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.84)
  br label %.loopexit860

127:                                              ; preds = %123
  store i32 0, ptr @FLAGCRYPTO, align 4, !tbaa !9
  %128 = load ptr, ptr @stderr, align 8, !tbaa !5
  %129 = load ptr, ptr @optarg, align 8, !tbaa !5
  %130 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %128, ptr noundef nonnull @.str.85, ptr noundef %129) #23
  call void @exit(i32 noundef 1) #24
  unreachable

131:                                              ; preds = %58
  %132 = load ptr, ptr @optarg, align 8, !tbaa !5
  %133 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %132) #25
  %134 = icmp eq i64 %133, 22
  br i1 %134, label %135, label %160

135:                                              ; preds = %131
  store i32 1, ptr @FLAGBASEMINIKEY, align 4, !tbaa !9
  %136 = call noalias dereferenceable_or_null(23) ptr @malloc(i64 noundef 23) #26
  store ptr %136, ptr @str_baseminikey, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %136, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.86, i32 noundef 556)
  %137 = call noalias dereferenceable_or_null(23) ptr @malloc(i64 noundef 23) #26
  store ptr %137, ptr @raw_baseminikey, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %137, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.87, i32 noundef 558)
  %138 = load ptr, ptr @str_baseminikey, align 8, !tbaa !5
  %139 = load ptr, ptr @optarg, align 8, !tbaa !5
  %140 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %138, ptr noundef nonnull dereferenceable(1) %139, i64 noundef 22) #20
  br label %141

141:                                              ; preds = %135, %148
  %indvars.iv = phi i64 [ 0, %135 ], [ %indvars.iv.next, %148 ]
  %142 = load ptr, ptr @Ccoinbuffer, align 8, !tbaa !5
  %143 = load ptr, ptr @str_baseminikey, align 8, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %144 = getelementptr inbounds i8, ptr %143, i64 %indvars.iv.next
  %145 = load i8, ptr %144, align 1, !tbaa !11
  %146 = sext i8 %145 to i32
  %147 = call noundef ptr @strchr(ptr noundef nonnull dereferenceable(1) %142, i32 noundef %146) #25
  %.not767 = icmp eq ptr %147, null
  br i1 %.not767, label %157, label %148

148:                                              ; preds = %141
  %149 = ptrtoint ptr %147 to i64
  %150 = ptrtoint ptr %142 to i64
  %151 = sub i64 %149, %150
  %152 = trunc i64 %151 to i32
  %153 = srem i32 %152, 58
  %154 = trunc nsw i32 %153 to i8
  %155 = load ptr, ptr @raw_baseminikey, align 8, !tbaa !5
  %156 = getelementptr inbounds i8, ptr %155, i64 %indvars.iv
  store i8 %154, ptr %156, align 1, !tbaa !11
  %exitcond.not = icmp eq i64 %indvars.iv.next, 21
  br i1 %exitcond.not, label %.loopexit860, label %141, !llvm.loop !12

157:                                              ; preds = %141
  %158 = load ptr, ptr @stderr, align 8, !tbaa !5
  %159 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %158, ptr noundef nonnull @.str.88) #23
  call void @exit(i32 noundef 1) #24
  unreachable

160:                                              ; preds = %131
  %161 = load ptr, ptr @stderr, align 8, !tbaa !5
  %162 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %161, ptr noundef nonnull @.str.89, i64 noundef %133, ptr noundef %132) #23
  call void @exit(i32 noundef 1) #24
  unreachable

163:                                              ; preds = %58
  store i32 1, ptr @FLAGDEBUG, align 4, !tbaa !9
  %164 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.90)
  br label %.loopexit860

165:                                              ; preds = %58
  store i32 1, ptr @FLAGENDOMORPHISM, align 4, !tbaa !9
  %166 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.91)
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @lambda, ptr noundef nonnull @.str.92)
          to label %167 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

167:                                              ; preds = %165
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @lambda2, ptr noundef nonnull @.str.93)
          to label %168 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

168:                                              ; preds = %167
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @beta, ptr noundef nonnull @.str.94)
          to label %169 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

169:                                              ; preds = %168
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @beta2, ptr noundef nonnull @.str.95)
          to label %.loopexit860 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

170:                                              ; preds = %58
  store i32 1, ptr @FLAGFILE, align 4, !tbaa !9
  %171 = load ptr, ptr @optarg, align 8, !tbaa !5
  br label %.loopexit860

172:                                              ; preds = %58
  store i32 1, ptr @FLAGSTRIDE, align 4, !tbaa !9
  %173 = load ptr, ptr @optarg, align 8, !tbaa !5
  store ptr %173, ptr @str_stride, align 8, !tbaa !5
  br label %.loopexit860

174:                                              ; preds = %58
  %175 = load ptr, ptr @optarg, align 8, !tbaa !5
  %176 = call i64 @strtol(ptr nocapture noundef %175, ptr noundef null, i32 noundef 10) #20
  %177 = trunc i64 %176 to i32
  %spec.store.select = call i32 @llvm.smax.i32(i32 %177, i32 1)
  store i32 %spec.store.select, ptr @KFACTOR, align 4
  %178 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.96, i32 noundef %spec.store.select)
  br label %.loopexit860

179:                                              ; preds = %58
  %180 = load ptr, ptr @optarg, align 8, !tbaa !5
  %181 = invoke noundef i32 @_Z7indexOfPcPPKci(ptr noundef %180, ptr noundef nonnull @publicsearch, i32 noundef 3)
          to label %182 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

182:                                              ; preds = %179
  switch i32 %181, label %.loopexit860 [
    i32 0, label %183
    i32 1, label %185
    i32 2, label %187
  ]

183:                                              ; preds = %182
  store i32 0, ptr @FLAGSEARCH, align 4, !tbaa !9
  %184 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.97)
  br label %.loopexit860

185:                                              ; preds = %182
  store i32 1, ptr @FLAGSEARCH, align 4, !tbaa !9
  %186 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.98)
  br label %.loopexit860

187:                                              ; preds = %182
  store i32 2, ptr @FLAGSEARCH, align 4, !tbaa !9
  %188 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.99)
  br label %.loopexit860

189:                                              ; preds = %58
  store i32 1, ptr @FLAGMATRIX, align 4, !tbaa !9
  %190 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.100)
  br label %.loopexit860

191:                                              ; preds = %58
  %192 = load ptr, ptr @optarg, align 8, !tbaa !5
  %193 = invoke noundef i32 @_Z7indexOfPcPPKci(ptr noundef %192, ptr noundef nonnull @modes, i32 noundef 7)
          to label %194 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

194:                                              ; preds = %191
  switch i32 %193, label %212 [
    i32 0, label %195
    i32 1, label %197
    i32 2, label %199
    i32 3, label %200
    i32 4, label %202
    i32 5, label %204
    i32 6, label %206
  ]

195:                                              ; preds = %194
  store i32 0, ptr @FLAGMODE, align 4, !tbaa !9
  %196 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.101)
  br label %.loopexit860

197:                                              ; preds = %194
  store i32 1, ptr @FLAGMODE, align 4, !tbaa !9
  %198 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.102)
  br label %.loopexit860

199:                                              ; preds = %194
  store i32 2, ptr @FLAGMODE, align 4, !tbaa !9
  br label %.loopexit860

200:                                              ; preds = %194
  store i32 3, ptr @FLAGMODE, align 4, !tbaa !9
  store i32 1, ptr @FLAGCRYPTO, align 4, !tbaa !9
  %201 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.103)
  br label %.loopexit860

202:                                              ; preds = %194
  store i32 4, ptr @FLAGMODE, align 4, !tbaa !9
  %203 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.104)
  br label %.loopexit860

204:                                              ; preds = %194
  store i32 5, ptr @FLAGMODE, align 4, !tbaa !9
  %205 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.105)
  br label %.loopexit860

206:                                              ; preds = %194
  store i32 6, ptr @FLAGMODE, align 4, !tbaa !9
  %207 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.106)
  %208 = load ptr, ptr @vanity_bloom, align 8, !tbaa !5
  %209 = icmp eq ptr %208, null
  br i1 %209, label %210, label %.loopexit860

210:                                              ; preds = %206
  %211 = call noalias dereferenceable_or_null(80) ptr @calloc(i64 noundef 1, i64 noundef 80) #27
  store ptr %211, ptr @vanity_bloom, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %211, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.108, i32 noundef 657)
  br label %.loopexit860

212:                                              ; preds = %194
  %213 = load ptr, ptr @stderr, align 8, !tbaa !5
  %214 = load ptr, ptr @optarg, align 8, !tbaa !5
  %215 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %213, ptr noundef nonnull @.str.109, ptr noundef %214) #23
  call void @exit(i32 noundef 1) #24
  unreachable

216:                                              ; preds = %58
  store i32 1, ptr @FLAG_N, align 4, !tbaa !9
  %217 = load ptr, ptr @optarg, align 8, !tbaa !5
  store ptr %217, ptr @str_N, align 8, !tbaa !5
  br label %.loopexit860

218:                                              ; preds = %58
  store i32 1, ptr @FLAGQUIET, align 4, !tbaa !9
  %219 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.110)
  br label %.loopexit860

220:                                              ; preds = %58
  %221 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.111)
  store i32 1, ptr @FLAGRANDOM, align 4, !tbaa !9
  store i32 3, ptr @FLAGBSGSMODE, align 4, !tbaa !9
  br label %.loopexit860

222:                                              ; preds = %58
  %223 = load ptr, ptr @optarg, align 8, !tbaa !5
  %.not762 = icmp eq ptr %223, null
  br i1 %.not762, label %.loopexit860, label %224

224:                                              ; preds = %222
  invoke void @_Z15stringtokenizerPcP13str_tokenizer(ptr noundef nonnull %223, ptr noundef nonnull %5)
          to label %225 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

225:                                              ; preds = %224
  %226 = load i32, ptr %57, align 4, !tbaa !14
  switch i32 %226, label %265 [
    i32 1, label %227
    i32 2, label %241
  ]

227:                                              ; preds = %225
  %228 = invoke noundef ptr @_Z9nextTokenP13str_tokenizer(ptr noundef nonnull %5)
          to label %229 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

229:                                              ; preds = %227
  store ptr %228, ptr @range_start, align 8, !tbaa !5
  %230 = invoke noundef i32 @_Z10isValidHexPc(ptr noundef %228)
          to label %231 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

231:                                              ; preds = %229
  %.not766 = icmp eq i32 %230, 0
  br i1 %.not766, label %237, label %232

232:                                              ; preds = %231
  store i32 1, ptr @FLAGRANGE, align 4, !tbaa !9
  %233 = load ptr, ptr @secp, align 8, !tbaa !5
  %234 = getelementptr inbounds i8, ptr %233, i64 64
  %235 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16) %234)
          to label %236 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

236:                                              ; preds = %232
  store ptr %235, ptr @range_end, align 8, !tbaa !5
  br label %.loopexit860

237:                                              ; preds = %231
  %238 = load ptr, ptr @stderr, align 8, !tbaa !5
  %239 = load ptr, ptr @range_start, align 8, !tbaa !5
  %240 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %238, ptr noundef nonnull @.str.112, ptr noundef %239) #23
  br label %.loopexit860

241:                                              ; preds = %225
  %242 = invoke noundef ptr @_Z9nextTokenP13str_tokenizer(ptr noundef nonnull %5)
          to label %243 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

243:                                              ; preds = %241
  store ptr %242, ptr @range_start, align 8, !tbaa !5
  %244 = invoke noundef ptr @_Z9nextTokenP13str_tokenizer(ptr noundef nonnull %5)
          to label %245 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

245:                                              ; preds = %243
  store ptr %244, ptr @range_end, align 8, !tbaa !5
  %246 = load ptr, ptr @range_start, align 8, !tbaa !5
  %247 = invoke noundef i32 @_Z10isValidHexPc(ptr noundef %246)
          to label %248 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

248:                                              ; preds = %245
  %.not763 = icmp eq i32 %247, 0
  br i1 %.not763, label %254, label %249

249:                                              ; preds = %248
  %250 = load ptr, ptr @range_end, align 8, !tbaa !5
  %251 = invoke noundef i32 @_Z10isValidHexPc(ptr noundef %250)
          to label %252 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

252:                                              ; preds = %249
  %.not764 = icmp eq i32 %251, 0
  br i1 %.not764, label %254, label %253

253:                                              ; preds = %252
  store i32 1, ptr @FLAGRANGE, align 4, !tbaa !9
  br label %.loopexit860

254:                                              ; preds = %252, %248
  %255 = load ptr, ptr @range_start, align 8, !tbaa !5
  %256 = invoke noundef i32 @_Z10isValidHexPc(ptr noundef %255)
          to label %257 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

257:                                              ; preds = %254
  %.not765 = icmp eq i32 %256, 0
  %258 = load ptr, ptr @stderr, align 8, !tbaa !5
  br i1 %.not765, label %262, label %259

259:                                              ; preds = %257
  %260 = load ptr, ptr @range_start, align 8, !tbaa !5
  %261 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %258, ptr noundef nonnull @.str.113, ptr noundef %260) #23
  br label %.loopexit860

262:                                              ; preds = %257
  %263 = load ptr, ptr @range_end, align 8, !tbaa !5
  %264 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %258, ptr noundef nonnull @.str.113, ptr noundef %263) #23
  br label %.loopexit860

265:                                              ; preds = %225
  %266 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.114, i32 noundef %226)
  br label %.loopexit860

267:                                              ; preds = %58
  %268 = load ptr, ptr @optarg, align 8, !tbaa !5
  invoke void @_ZN3Int9SetBase10EPKc(ptr noundef nonnull align 8 dereferenceable(16) @OUTPUTSECONDS, ptr noundef %268)
          to label %269 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

269:                                              ; preds = %267
  %270 = invoke noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(16) @OUTPUTSECONDS, ptr noundef nonnull @ZERO)
          to label %271 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

271:                                              ; preds = %269
  br i1 %270, label %272, label %273

272:                                              ; preds = %271
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @OUTPUTSECONDS, i32 noundef 30)
          to label %273 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

273:                                              ; preds = %272, %271
  %274 = invoke noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16) @OUTPUTSECONDS)
          to label %275 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

275:                                              ; preds = %273
  br i1 %274, label %276, label %278

276:                                              ; preds = %275
  %277 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.115)
  br label %.loopexit860

278:                                              ; preds = %275
  %279 = invoke noundef ptr @_ZN3Int9GetBase10Ev(ptr noundef nonnull align 8 dereferenceable(16) @OUTPUTSECONDS)
          to label %280 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

280:                                              ; preds = %278
  %281 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.116, ptr noundef %279)
  call void @free(ptr noundef %279) #20
  br label %.loopexit860

282:                                              ; preds = %58
  store i32 1, ptr @FLAGSAVEREADFILE, align 4, !tbaa !9
  br label %.loopexit860

283:                                              ; preds = %58
  %284 = load ptr, ptr @optarg, align 8, !tbaa !5
  %285 = call i64 @strtol(ptr nocapture noundef %284, ptr noundef null, i32 noundef 10) #20
  %286 = trunc i64 %285 to i32
  %spec.store.select4 = call i32 @llvm.smax.i32(i32 %286, i32 1)
  store i32 %spec.store.select4, ptr @NTHREADS, align 4
  %287 = icmp sgt i32 %286, 1
  %288 = select i1 %287, ptr @.str.117, ptr @.str.118
  %289 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %288, i32 noundef %spec.store.select4)
  br label %.loopexit860

290:                                              ; preds = %58
  store i32 1, ptr @FLAGVANITY, align 4, !tbaa !9
  %291 = load ptr, ptr @vanity_bloom, align 8, !tbaa !5
  %292 = icmp eq ptr %291, null
  br i1 %292, label %293, label %295

293:                                              ; preds = %290
  %294 = call noalias dereferenceable_or_null(80) ptr @calloc(i64 noundef 1, i64 noundef 80) #27
  store ptr %294, ptr @vanity_bloom, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %294, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.108, i32 noundef 742)
  br label %295

295:                                              ; preds = %293, %290
  %296 = load ptr, ptr @optarg, align 8, !tbaa !5
  %297 = call noundef zeroext i1 @_Z19isValidBase58StringPc(ptr noundef %296)
  br i1 %297, label %298, label %308

298:                                              ; preds = %295
  %299 = load ptr, ptr @optarg, align 8, !tbaa !5
  %300 = invoke noundef i32 @_Z9addvanityPc(ptr noundef %299)
          to label %301 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

301:                                              ; preds = %298
  %302 = icmp sgt i32 %300, 0
  %303 = load ptr, ptr @optarg, align 8, !tbaa !5
  br i1 %302, label %304, label %306

304:                                              ; preds = %301
  %305 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.119, ptr noundef %303)
  br label %.loopexit860

306:                                              ; preds = %301
  %307 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.120, ptr noundef %303)
  br label %.loopexit860

308:                                              ; preds = %295
  %309 = load ptr, ptr @stderr, align 8, !tbaa !5
  %310 = load ptr, ptr @optarg, align 8, !tbaa !5
  %311 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %309, ptr noundef nonnull @.str.121, ptr noundef %310) #23
  br label %.loopexit860

312:                                              ; preds = %58
  %313 = load ptr, ptr @optarg, align 8, !tbaa !5
  %314 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %313) #25
  %315 = icmp eq i64 %314, 58
  br i1 %315, label %316, label %318

316:                                              ; preds = %312
  store ptr %313, ptr @Ccoinbuffer, align 8, !tbaa !5
  %317 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.122, ptr noundef %313)
  br label %.loopexit860

318:                                              ; preds = %312
  %319 = load ptr, ptr @stderr, align 8, !tbaa !5
  %320 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %319, ptr noundef nonnull @.str.123) #23
  call void @exit(i32 noundef 1) #24
  unreachable

321:                                              ; preds = %58
  %322 = load ptr, ptr @optarg, align 8, !tbaa !5
  %323 = call i64 @strtol(ptr nocapture noundef %322, ptr noundef null, i32 noundef 10) #20
  %324 = trunc i64 %323 to i32
  %spec.store.select5 = call i32 @llvm.smax.i32(i32 %324, i32 1)
  store i32 %spec.store.select5, ptr @FLAGBLOOMMULTIPLIER, align 4
  %325 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.124, i32 noundef %spec.store.select5)
  br label %.loopexit860

326:                                              ; preds = %58
  %327 = load ptr, ptr @stderr, align 8, !tbaa !5
  %328 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %327, ptr noundef nonnull @.str.125, i32 noundef %59) #23
  call void @exit(i32 noundef 1) #24
  unreachable

.loopexit860:                                     ; preds = %148, %308, %306, %304, %276, %280, %222, %253, %262, %259, %236, %237, %265, %195, %197, %199, %200, %202, %204, %210, %206, %182, %183, %185, %187, %169, %124, %125, %115, %116, %86, %87, %78, %321, %316, %283, %282, %220, %218, %216, %189, %174, %172, %170, %163, %79
  %.1596 = phi ptr [ %.0595, %321 ], [ %.0595, %316 ], [ %.0595, %304 ], [ %.0595, %306 ], [ %.0595, %308 ], [ %.0595, %283 ], [ %.0595, %282 ], [ %.0595, %276 ], [ %.0595, %280 ], [ %.0595, %265 ], [ %.0595, %253 ], [ %.0595, %259 ], [ %.0595, %262 ], [ %.0595, %236 ], [ %.0595, %237 ], [ %.0595, %222 ], [ %.0595, %220 ], [ %.0595, %218 ], [ %.0595, %216 ], [ %.0595, %210 ], [ %.0595, %206 ], [ %.0595, %204 ], [ %.0595, %202 ], [ %.0595, %200 ], [ %.0595, %199 ], [ %.0595, %197 ], [ %.0595, %195 ], [ %.0595, %189 ], [ %.0595, %182 ], [ %.0595, %187 ], [ %.0595, %185 ], [ %.0595, %183 ], [ %.0595, %174 ], [ %.0595, %172 ], [ %171, %170 ], [ %.0595, %169 ], [ %.0595, %163 ], [ %.0595, %125 ], [ %.0595, %124 ], [ %.0595, %115 ], [ %.0595, %116 ], [ %.0595, %86 ], [ %.0595, %87 ], [ %.0595, %79 ], [ %.0595, %78 ], [ %.0595, %148 ]
  br label %58, !llvm.loop !16

329:                                              ; preds = %58
  %330 = load i32, ptr @FLAGBSGSMODE, align 4
  %331 = icmp eq i32 %330, 2
  %332 = load i32, ptr @FLAGENDOMORPHISM, align 4
  %333 = icmp ne i32 %332, 0
  %or.cond7 = select i1 %331, i1 %333, i1 false
  br i1 %or.cond7, label %334, label %337

334:                                              ; preds = %329
  %335 = load ptr, ptr @stderr, align 8, !tbaa !5
  %336 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %335, ptr noundef nonnull @.str.126) #23
  call void @exit(i32 noundef 1) #24
  unreachable

337:                                              ; preds = %329
  %338 = icmp eq i32 %330, 4
  %or.cond9 = or i1 %331, %338
  %339 = load i32, ptr @FLAGSTRIDE, align 4
  %340 = icmp ne i32 %339, 0
  %or.cond11 = select i1 %or.cond9, i1 %340, i1 false
  br i1 %or.cond11, label %341, label %344

341:                                              ; preds = %337
  %342 = load ptr, ptr @stderr, align 8, !tbaa !5
  %343 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %342, ptr noundef nonnull @.str.127) #23
  call void @exit(i32 noundef 1) #24
  unreachable

344:                                              ; preds = %337
  br i1 %340, label %345, label %360

345:                                              ; preds = %344
  %346 = load ptr, ptr @str_stride, align 8, !tbaa !5
  %347 = load i8, ptr %346, align 1, !tbaa !11
  %348 = icmp eq i8 %347, 48
  br i1 %348, label %349, label %355

349:                                              ; preds = %345
  %350 = getelementptr inbounds i8, ptr %346, i64 1
  %351 = load i8, ptr %350, align 1, !tbaa !11
  %352 = icmp eq i8 %351, 120
  br i1 %352, label %353, label %355

353:                                              ; preds = %349
  %354 = getelementptr inbounds i8, ptr %346, i64 2
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @stride, ptr noundef nonnull %354)
          to label %356 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

355:                                              ; preds = %349, %345
  invoke void @_ZN3Int9SetBase10EPKc(ptr noundef nonnull align 8 dereferenceable(16) @stride, ptr noundef nonnull %346)
          to label %356 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

356:                                              ; preds = %355, %353
  %357 = invoke noundef ptr @_ZN3Int9GetBase10Ev(ptr noundef nonnull align 8 dereferenceable(16) @stride)
          to label %358 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

358:                                              ; preds = %356
  %359 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.128, ptr noundef %357)
  br label %361

360:                                              ; preds = %344
  store i32 1, ptr @FLAGSTRIDE, align 4, !tbaa !9
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @stride, ptr noundef nonnull @ONE)
          to label %361 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

361:                                              ; preds = %360, %358
  invoke void @_Z14init_generatorv()
          to label %362 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

362:                                              ; preds = %361
  %363 = load i32, ptr @FLAGMODE, align 4, !tbaa !9
  %364 = icmp eq i32 %363, 2
  br i1 %364, label %365, label %371

365:                                              ; preds = %362
  %366 = load i32, ptr @FLAGBSGSMODE, align 4, !tbaa !9
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds [5 x ptr], ptr @bsgs_modes, i64 0, i64 %367
  %369 = load ptr, ptr %368, align 8, !tbaa !5
  %370 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.129, ptr noundef %369)
  %.pre = load i32, ptr @FLAGMODE, align 4, !tbaa !9
  br label %371

371:                                              ; preds = %365, %362
  %372 = phi i32 [ %.pre, %365 ], [ %363, %362 ]
  %373 = load i32, ptr @FLAGFILE, align 4, !tbaa !9
  %374 = icmp eq i32 %373, 0
  %375 = load ptr, ptr @default_fileName, align 8
  %spec.select = select i1 %374, ptr %375, ptr %.0595
  %376 = icmp eq i32 %372, 1
  %377 = load i32, ptr @FLAGCRYPTO, align 4
  %378 = icmp eq i32 %377, 0
  %or.cond13 = select i1 %376, i1 %378, i1 false
  br i1 %or.cond13, label %379, label %381

379:                                              ; preds = %371
  store i32 1, ptr @FLAGCRYPTO, align 4, !tbaa !9
  %380 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.130)
  br label %381

381:                                              ; preds = %379, %371
  %382 = load i32, ptr @FLAGRANGE, align 4, !tbaa !9
  %.not628 = icmp eq i32 %382, 0
  br i1 %.not628, label %416, label %383

383:                                              ; preds = %381
  %384 = load ptr, ptr @range_start, align 8, !tbaa !5
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef %384)
          to label %385 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

385:                                              ; preds = %383
  %386 = invoke noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start)
          to label %387 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

387:                                              ; preds = %385
  br i1 %386, label %388, label %389

388:                                              ; preds = %387
  invoke void @_ZN3Int6AddOneEv(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start)
          to label %389 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

389:                                              ; preds = %388, %387
  %390 = load ptr, ptr @range_end, align 8, !tbaa !5
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @n_range_end, ptr noundef %390)
          to label %391 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

391:                                              ; preds = %389
  %392 = invoke noundef zeroext i1 @_ZN3Int7IsEqualEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef nonnull @n_range_end)
          to label %393 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

393:                                              ; preds = %391
  br i1 %392, label %.sink.split, label %394

394:                                              ; preds = %393
  %395 = load ptr, ptr @secp, align 8, !tbaa !5
  %396 = getelementptr inbounds i8, ptr %395, i64 64
  %397 = invoke noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef nonnull %396)
          to label %398 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

398:                                              ; preds = %394
  br i1 %397, label %399, label %.sink.split

399:                                              ; preds = %398
  %400 = load ptr, ptr @secp, align 8, !tbaa !5
  %401 = getelementptr inbounds i8, ptr %400, i64 64
  %402 = invoke noundef zeroext i1 @_ZN3Int14IsLowerOrEqualEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_end, ptr noundef nonnull %401)
          to label %403 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

403:                                              ; preds = %399
  br i1 %402, label %404, label %.sink.split

404:                                              ; preds = %403
  %405 = invoke noundef zeroext i1 @_ZN3Int9IsGreaterEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef nonnull @n_range_end)
          to label %406 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

406:                                              ; preds = %404
  br i1 %405, label %407, label %412

407:                                              ; preds = %406
  %408 = load ptr, ptr @stderr, align 8, !tbaa !5
  %409 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %408, ptr noundef nonnull @.str.131) #23
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_aux, ptr noundef nonnull @n_range_start)
          to label %410 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

410:                                              ; preds = %407
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef nonnull @n_range_end)
          to label %411 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

411:                                              ; preds = %410
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_end, ptr noundef nonnull @n_range_aux)
          to label %412 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

412:                                              ; preds = %411, %406
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef nonnull @n_range_end)
          to label %413 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

413:                                              ; preds = %412
  invoke void @_ZN3Int3SubEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef nonnull @n_range_start)
          to label %416 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

.sink.split:                                      ; preds = %393, %398, %403
  %.str.133.sink = phi ptr [ @.str.132, %403 ], [ @.str.132, %398 ], [ @.str.133, %393 ]
  %414 = load ptr, ptr @stderr, align 8, !tbaa !5
  %415 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %414, ptr noundef nonnull %.str.133.sink) #23
  store i32 0, ptr @FLAGRANGE, align 4, !tbaa !9
  br label %416

416:                                              ; preds = %.sink.split, %413, %381
  %417 = load i32, ptr @FLAGMODE, align 4
  switch i32 %417, label %418 [
    i32 5, label %439
    i32 2, label %439
  ]

418:                                              ; preds = %416
  %419 = load i64, ptr @DEBUGCOUNT, align 8, !tbaa !17
  %420 = trunc i64 %419 to i32
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N, i32 noundef %420)
          to label %421 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

421:                                              ; preds = %418
  %422 = load i32, ptr @FLAGRANGE, align 4, !tbaa !9
  %423 = icmp eq i32 %422, 0
  %424 = load i32, ptr @FLAGBITRANGE, align 4
  %425 = icmp eq i32 %424, 0
  %or.cond17 = select i1 %423, i1 %425, i1 false
  br i1 %or.cond17, label %426, label %430

426:                                              ; preds = %421
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, i32 noundef 1)
          to label %427 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

427:                                              ; preds = %426
  %428 = load ptr, ptr @secp, align 8, !tbaa !5
  %429 = getelementptr inbounds i8, ptr %428, i64 64
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_end, ptr noundef nonnull %429)
          to label %.invoke1177 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

.invoke1177:                                      ; preds = %433, %427
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef nonnull @n_range_end)
          to label %.invoke1154 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

.invoke1154:                                      ; preds = %.invoke1177
  invoke void @_ZN3Int3SubEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef nonnull @n_range_start)
          to label %thread-pre-split unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

430:                                              ; preds = %421
  br i1 %425, label %435, label %431

431:                                              ; preds = %430
  %432 = load ptr, ptr @bit_range_str_min, align 8, !tbaa !5
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef %432)
          to label %433 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

433:                                              ; preds = %431
  %434 = load ptr, ptr @bit_range_str_max, align 8, !tbaa !5
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @n_range_end, ptr noundef %434)
          to label %.invoke1177 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

435:                                              ; preds = %430
  br i1 %423, label %436, label %thread-pre-split

436:                                              ; preds = %435
  %437 = load ptr, ptr @stderr, align 8, !tbaa !5
  %438 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %437, ptr noundef nonnull @.str.134) #23
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %.invoke1154, %436, %435
  %.pr = load i32, ptr @FLAGMODE, align 4, !tbaa !9
  br label %439

439:                                              ; preds = %thread-pre-split, %416, %416
  %440 = phi i32 [ %.pr, %thread-pre-split ], [ %417, %416 ], [ %417, %416 ]
  store i64 0, ptr @N, align 8, !tbaa !17
  %.not630 = icmp eq i32 %440, 2
  br i1 %.not630, label %thread-pre-split789.thread, label %441

441:                                              ; preds = %439
  %442 = load i32, ptr @FLAG_N, align 4, !tbaa !9
  %.not631 = icmp eq i32 %442, 0
  br i1 %.not631, label %._crit_edge1092, label %443

._crit_edge1092:                                  ; preds = %441
  %.pre1093 = load i64, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !17
  br label %462

443:                                              ; preds = %441
  %444 = load ptr, ptr @str_N, align 8, !tbaa !5
  %445 = load i8, ptr %444, align 1, !tbaa !11
  %446 = icmp eq i8 %445, 48
  br i1 %446, label %447, label %451

447:                                              ; preds = %443
  %448 = getelementptr inbounds i8, ptr %444, i64 1
  %449 = load i8, ptr %448, align 1, !tbaa !11
  %450 = icmp eq i8 %449, 120
  br i1 %450, label %452, label %451

451:                                              ; preds = %447, %443
  br label %452

452:                                              ; preds = %447, %451
  %.sink1156 = phi i32 [ 10, %451 ], [ 16, %447 ]
  %453 = call i64 @strtol(ptr nocapture noundef nonnull %444, ptr noundef null, i32 noundef %.sink1156) #20
  store i64 %453, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !17
  %454 = icmp ult i64 %453, 1024
  br i1 %454, label %.thread1109, label %457

.thread1109:                                      ; preds = %452
  %455 = load ptr, ptr @stderr, align 8, !tbaa !5
  %456 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %455, ptr noundef nonnull @.str.135) #23
  store i32 0, ptr @FLAG_N, align 4, !tbaa !9
  store i64 4294967296, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !17
  br label %462

457:                                              ; preds = %452
  %458 = and i64 %453, 1023
  %.not632 = icmp eq i64 %458, 0
  br i1 %.not632, label %462, label %459

459:                                              ; preds = %457
  %460 = load ptr, ptr @stderr, align 8, !tbaa !5
  %461 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %460, ptr noundef nonnull @.str.136) #23
  store i32 0, ptr @FLAG_N, align 4, !tbaa !9
  store i64 4294967296, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !17
  br label %462

462:                                              ; preds = %.thread1109, %._crit_edge1092, %457, %459
  %463 = phi i64 [ %.pre1093, %._crit_edge1092 ], [ %453, %457 ], [ 4294967296, %459 ], [ 4294967296, %.thread1109 ]
  %464 = inttoptr i64 %463 to ptr
  %465 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.137, ptr noundef %464)
  %466 = load i32, ptr @FLAGMODE, align 4, !tbaa !9
  %467 = icmp eq i32 %466, 5
  br i1 %467, label %468, label %497

468:                                              ; preds = %462
  %469 = load i64, ptr @DEBUGCOUNT, align 8, !tbaa !17
  %470 = trunc i64 %469 to i32
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N, i32 noundef %470)
          to label %471 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

471:                                              ; preds = %468
  %472 = load i32, ptr @FLAGBASEMINIKEY, align 4, !tbaa !9
  %.not634 = icmp eq i32 %472, 0
  br i1 %.not634, label %476, label %473

473:                                              ; preds = %471
  %474 = load ptr, ptr @str_baseminikey, align 8, !tbaa !5
  %475 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.138, ptr noundef %474)
  br label %476

476:                                              ; preds = %473, %471
  %477 = call noalias dereferenceable_or_null(22) ptr @malloc(i64 noundef 22) #26
  store ptr %477, ptr @minikeyN, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %477, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.139, i32 noundef 898)
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %15, i32 noundef 58)
          to label %478 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

478:                                              ; preds = %476
  %479 = load i64, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !17
  invoke void @_ZN3Int8SetInt64Em(ptr noundef nonnull align 8 dereferenceable(16) %12, i64 noundef %479)
          to label %480 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

480:                                              ; preds = %478
  invoke void @_ZN3Int4MultEm(ptr noundef nonnull align 8 dereferenceable(16) %12, i64 noundef 253)
          to label %.preheader856 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

.preheader856:                                    ; preds = %480, %494
  %indvars.iv988 = phi i64 [ %indvars.iv.next989, %494 ], [ 20, %480 ]
  %481 = invoke noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %482 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

482:                                              ; preds = %.preheader856
  br i1 %481, label %.thread.split.loop.exit, label %483

483:                                              ; preds = %482
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull %12)
          to label %484 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

484:                                              ; preds = %483
  invoke void @_ZN3Int3ModEPS_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull %15)
          to label %485 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

485:                                              ; preds = %484
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull %12)
          to label %486 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

486:                                              ; preds = %485
  %487 = invoke noundef i64 @_ZN3Int8GetInt64Ev(ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %488 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

488:                                              ; preds = %486
  %489 = trunc i64 %487 to i8
  %490 = load ptr, ptr @minikeyN, align 8, !tbaa !5
  %491 = getelementptr inbounds i8, ptr %490, i64 %indvars.iv988
  store i8 %489, ptr %491, align 1, !tbaa !11
  invoke void @_ZN3Int3SubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull %13)
          to label %492 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

492:                                              ; preds = %488
  invoke void @_ZN3Int3DivEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull %15, ptr noundef null)
          to label %493 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

493:                                              ; preds = %492
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull %14)
          to label %494 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

494:                                              ; preds = %493
  %indvars.iv.next989 = add nsw i64 %indvars.iv988, -1
  %.not = icmp eq i64 %indvars.iv.next989, 0
  br i1 %.not, label %.thread, label %.preheader856, !llvm.loop !19

.thread.split.loop.exit:                          ; preds = %482
  %495 = trunc nuw nsw i64 %indvars.iv988 to i32
  br label %.thread

.thread:                                          ; preds = %494, %.thread.split.loop.exit
  %.2560786 = phi i32 [ %495, %.thread.split.loop.exit ], [ 0, %494 ]
  %496 = sub nsw i32 21, %.2560786
  store i32 %496, ptr @minikey_n_limit, align 4, !tbaa !9
  br label %504

497:                                              ; preds = %462
  %498 = load i32, ptr @FLAGBITRANGE, align 4, !tbaa !9
  %.not633 = icmp eq i32 %498, 0
  br i1 %.not633, label %502, label %499

499:                                              ; preds = %497
  %500 = load i32, ptr @bitrange, align 4, !tbaa !9
  %501 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.140, i32 noundef %500)
  br label %504

502:                                              ; preds = %497
  %503 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.141)
  br label %504

504:                                              ; preds = %499, %502, %.thread
  %505 = load i32, ptr @FLAGMODE, align 4, !tbaa !9
  %.not636 = icmp eq i32 %505, 5
  br i1 %.not636, label %.thread788, label %506

506:                                              ; preds = %504
  %507 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start)
          to label %508 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

508:                                              ; preds = %506
  %509 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.142, ptr noundef %507)
  call void @free(ptr noundef %507) #20
  %510 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16) @n_range_end)
          to label %511 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

511:                                              ; preds = %508
  %512 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.143, ptr noundef %510)
  call void @free(ptr noundef %510) #20
  %.pr787 = load i32, ptr @FLAGMODE, align 4, !tbaa !9
  switch i32 %.pr787, label %524 [
    i32 5, label %.thread788
    i32 4, label %.thread788
    i32 3, label %.thread788
    i32 1, label %.thread788
    i32 0, label %.thread788
    i32 6, label %518
  ]

.thread788:                                       ; preds = %504, %511, %511, %511, %511, %511
  %513 = invoke noundef zeroext i1 @_Z15readFileAddressPc(ptr noundef %spec.select)
          to label %514 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

514:                                              ; preds = %.thread788
  br i1 %513, label %524, label %515

515:                                              ; preds = %514
  %516 = load ptr, ptr @stderr, align 8, !tbaa !5
  %517 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %516, ptr noundef nonnull @.str.144) #23
  call void @exit(i32 noundef 1) #24
  unreachable

518:                                              ; preds = %511
  %519 = invoke noundef zeroext i1 @_Z14readFileVanityPc(ptr noundef %spec.select)
          to label %520 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

520:                                              ; preds = %518
  br i1 %519, label %524, label %521

521:                                              ; preds = %520
  %522 = load ptr, ptr @stderr, align 8, !tbaa !5
  %523 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %522, ptr noundef nonnull @.str.144) #23
  call void @exit(i32 noundef 1) #24
  unreachable

524:                                              ; preds = %520, %514, %511
  %525 = load i32, ptr @FLAGMODE, align 4, !tbaa !9
  %526 = icmp eq i32 %525, 6
  %527 = load i32, ptr @FLAGREADEDFILE1, align 4
  %528 = icmp ne i32 %527, 0
  %or.cond19 = select i1 %526, i1 true, i1 %528
  br i1 %or.cond19, label %thread-pre-split789, label %529

529:                                              ; preds = %524
  %530 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.145)
  %531 = load ptr, ptr @addressTable, align 8, !tbaa !5
  %532 = load i64, ptr @N, align 8, !tbaa !17
  invoke void @_Z5_sortP13address_valuel(ptr noundef %531, i64 noundef %532)
          to label %533 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

533:                                              ; preds = %529
  %534 = load i64, ptr @N, align 8, !tbaa !17
  %535 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.146, i64 noundef %534)
  invoke void @_Z17writeFileIfNeededPKc(ptr noundef %spec.select)
          to label %.thread-pre-split789_crit_edge unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

.thread-pre-split789_crit_edge:                   ; preds = %533
  %.pr790.pre = load i32, ptr @FLAGMODE, align 4, !tbaa !9
  br label %thread-pre-split789

thread-pre-split789:                              ; preds = %.thread-pre-split789_crit_edge, %524
  %536 = phi i32 [ %525, %524 ], [ %.pr790.pre, %.thread-pre-split789_crit_edge ]
  %537 = icmp eq i32 %536, 2
  br i1 %537, label %thread-pre-split789.thread, label %.thread1113

thread-pre-split789.thread:                       ; preds = %439, %thread-pre-split789
  %538 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.147, ptr noundef %spec.select)
  %539 = call noalias ptr @fopen(ptr noundef %spec.select, ptr noundef nonnull @.str.148)
  %540 = icmp eq ptr %539, null
  br i1 %540, label %541, label %544

541:                                              ; preds = %thread-pre-split789.thread
  %542 = load ptr, ptr @stderr, align 8, !tbaa !5
  %543 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %542, ptr noundef nonnull @.str.149, ptr noundef %spec.select) #23
  call void @exit(i32 noundef 1) #24
  unreachable

544:                                              ; preds = %thread-pre-split789.thread
  %545 = call noalias dereferenceable_or_null(1024) ptr @malloc(i64 noundef 1024) #26
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %545, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.150, i32 noundef 975)
  %546 = call i32 @feof(ptr noundef nonnull %539) #20
  %.not637892 = icmp eq i32 %546, 0
  br i1 %.not637892, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %544, %556
  %547 = call ptr @fgets(ptr noundef %545, i32 noundef 1022, ptr noundef nonnull %539)
  %548 = icmp eq ptr %547, %545
  br i1 %548, label %549, label %556

549:                                              ; preds = %.lr.ph
  %550 = invoke noundef ptr @_Z4trimPcPKc(ptr noundef %545, ptr noundef nonnull @.str.151)
          to label %551 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

551:                                              ; preds = %549
  %552 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %545) #25
  %553 = icmp ugt i64 %552, 65
  br i1 %553, label %.sink.split1157, label %556

.sink.split1157:                                  ; preds = %551
  %554 = load i64, ptr @N, align 8, !tbaa !17
  %555 = add i64 %554, 1
  store i64 %555, ptr @N, align 8, !tbaa !17
  br label %556

556:                                              ; preds = %551, %.sink.split1157, %.lr.ph
  %557 = call i32 @feof(ptr noundef nonnull %539) #20
  %.not637 = icmp eq i32 %557, 0
  br i1 %.not637, label %.lr.ph, label %._crit_edge, !llvm.loop !20

._crit_edge:                                      ; preds = %556, %544
  %558 = load i64, ptr @N, align 8, !tbaa !17
  %559 = icmp eq i64 %558, 0
  br i1 %559, label %560, label %563

560:                                              ; preds = %._crit_edge
  %561 = load ptr, ptr @stderr, align 8, !tbaa !5
  %562 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %561, ptr noundef nonnull @.str.152) #23
  call void @exit(i32 noundef 1) #24
  unreachable

563:                                              ; preds = %._crit_edge
  %564 = call noalias ptr @calloc(i64 noundef %558, i64 noundef 4) #27
  store ptr %564, ptr @bsgs_found, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %564, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.153, i32 noundef 993)
  %565 = load i64, ptr @N, align 8, !tbaa !17
  %566 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZNSt6vectorI5PointSaIS0_EE6resizeEmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) @OriginalPointsBSGS, i64 noundef %565, ptr noundef nonnull align 8 dereferenceable(48) %566)
          to label %567 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

567:                                              ; preds = %563
  %568 = load i64, ptr @N, align 8, !tbaa !17
  %569 = call noalias ptr @malloc(i64 noundef %568) #26
  store ptr %569, ptr @OriginalPointsBSGScompressed, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %569, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.154, i32 noundef 996)
  %570 = call noalias dereferenceable_or_null(65) ptr @malloc(i64 noundef 65) #26
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %570, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.155, i32 noundef 998)
  %571 = call noalias dereferenceable_or_null(65) ptr @malloc(i64 noundef 65) #26
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %571, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.156, i32 noundef 1000)
  %572 = call i32 @fseek(ptr noundef nonnull %539, i64 noundef 0, i32 noundef 0)
  %573 = call i32 @feof(ptr noundef nonnull %539) #20
  %.not638893 = icmp eq i32 %573, 0
  br i1 %.not638893, label %.lr.ph896, label %._crit_edge897

.lr.ph896:                                        ; preds = %567, %617
  %.3561894 = phi i32 [ %.5563, %617 ], [ 0, %567 ]
  %574 = call ptr @fgets(ptr noundef %545, i32 noundef 1022, ptr noundef nonnull %539)
  %575 = icmp eq ptr %574, %545
  br i1 %575, label %576, label %617

576:                                              ; preds = %.lr.ph896
  %577 = invoke noundef ptr @_Z4trimPcPKc(ptr noundef %545, ptr noundef nonnull @.str.151)
          to label %578 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

578:                                              ; preds = %576
  %579 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %545) #25
  %580 = icmp ugt i64 %579, 65
  br i1 %580, label %581, label %617

581:                                              ; preds = %578
  invoke void @_Z15stringtokenizerPcP13str_tokenizer(ptr noundef %545, ptr noundef nonnull %6)
          to label %582 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

582:                                              ; preds = %581
  %583 = invoke noundef ptr @_Z9nextTokenP13str_tokenizer(ptr noundef nonnull %6)
          to label %584 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

584:                                              ; preds = %582
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(65) %570, i8 0, i64 65, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(65) %571, i8 0, i64 65, i1 false)
  %585 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %583) #25
  switch i64 %585, label %612 [
    i64 66, label %586
    i64 130, label %599
  ]

586:                                              ; preds = %584
  %587 = load ptr, ptr @secp, align 8, !tbaa !5
  %588 = sext i32 %.3561894 to i64
  %589 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @OriginalPointsBSGS, i64 noundef %588) #20
  %590 = load ptr, ptr @OriginalPointsBSGScompressed, align 8, !tbaa !5
  %591 = getelementptr inbounds i8, ptr %590, i64 %588
  %592 = invoke noundef zeroext i1 @_ZN9Secp256K117ParsePublicKeyHexEPcR5PointRb(ptr noundef nonnull align 8 dereferenceable(393296) %587, ptr noundef %583, ptr noundef nonnull align 8 dereferenceable(48) %589, ptr noundef nonnull align 1 dereferenceable(1) %591)
          to label %593 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

593:                                              ; preds = %586
  br i1 %592, label %594, label %596

594:                                              ; preds = %593
  %595 = add nsw i32 %.3561894, 1
  br label %616

596:                                              ; preds = %593
  %597 = load i64, ptr @N, align 8, !tbaa !17
  %598 = add i64 %597, -1
  store i64 %598, ptr @N, align 8, !tbaa !17
  br label %616

599:                                              ; preds = %584
  %600 = load ptr, ptr @secp, align 8, !tbaa !5
  %601 = sext i32 %.3561894 to i64
  %602 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @OriginalPointsBSGS, i64 noundef %601) #20
  %603 = load ptr, ptr @OriginalPointsBSGScompressed, align 8, !tbaa !5
  %604 = getelementptr inbounds i8, ptr %603, i64 %601
  %605 = invoke noundef zeroext i1 @_ZN9Secp256K117ParsePublicKeyHexEPcR5PointRb(ptr noundef nonnull align 8 dereferenceable(393296) %600, ptr noundef %583, ptr noundef nonnull align 8 dereferenceable(48) %602, ptr noundef nonnull align 1 dereferenceable(1) %604)
          to label %606 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

606:                                              ; preds = %599
  br i1 %605, label %607, label %609

607:                                              ; preds = %606
  %608 = add nsw i32 %.3561894, 1
  br label %616

609:                                              ; preds = %606
  %610 = load i64, ptr @N, align 8, !tbaa !17
  %611 = add i64 %610, -1
  store i64 %611, ptr @N, align 8, !tbaa !17
  br label %616

612:                                              ; preds = %584
  %613 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.157, ptr noundef %583)
  %614 = load i64, ptr @N, align 8, !tbaa !17
  %615 = add i64 %614, -1
  store i64 %615, ptr @N, align 8, !tbaa !17
  br label %616

616:                                              ; preds = %607, %609, %594, %596, %612
  %.4562 = phi i32 [ %.3561894, %612 ], [ %608, %607 ], [ %.3561894, %609 ], [ %595, %594 ], [ %.3561894, %596 ]
  invoke void @_Z13freetokenizerP13str_tokenizer(ptr noundef nonnull %6)
          to label %617 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

617:                                              ; preds = %578, %616, %.lr.ph896
  %.5563 = phi i32 [ %.4562, %616 ], [ %.3561894, %578 ], [ %.3561894, %.lr.ph896 ]
  %618 = call i32 @feof(ptr noundef nonnull %539) #20
  %.not638 = icmp eq i32 %618, 0
  br i1 %.not638, label %.lr.ph896, label %._crit_edge897, !llvm.loop !21

._crit_edge897:                                   ; preds = %617, %567
  %619 = call i32 @fclose(ptr noundef nonnull %539)
  %620 = load i64, ptr @N, align 8, !tbaa !17
  %621 = trunc i64 %620 to i32
  store i32 %621, ptr @bsgs_point_number, align 4, !tbaa !9
  %.not639 = icmp eq i32 %621, 0
  br i1 %.not639, label %624, label %622

622:                                              ; preds = %._crit_edge897
  %623 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.158, i32 noundef %621)
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N, i32 noundef 0)
          to label %627 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

624:                                              ; preds = %._crit_edge897
  %625 = load ptr, ptr @stderr, align 8, !tbaa !5
  %626 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %625, ptr noundef nonnull @.str.159) #23
  call void @exit(i32 noundef 1) #24
  unreachable

627:                                              ; preds = %622
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M, i32 noundef 0)
          to label %628 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

628:                                              ; preds = %627
  %629 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  invoke void @_ZN3Int8SetInt64Em(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M, i64 noundef %629)
          to label %630 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

630:                                              ; preds = %628
  %631 = load i32, ptr @FLAG_N, align 4, !tbaa !9
  %.not640 = icmp eq i32 %631, 0
  br i1 %.not640, label %643, label %632

632:                                              ; preds = %630
  %633 = load ptr, ptr @str_N, align 8, !tbaa !5
  %634 = load i8, ptr %633, align 1, !tbaa !11
  %635 = icmp eq i8 %634, 48
  br i1 %635, label %636, label %642

636:                                              ; preds = %632
  %637 = getelementptr inbounds i8, ptr %633, i64 1
  %638 = load i8, ptr %637, align 1, !tbaa !11
  %639 = icmp eq i8 %638, 120
  br i1 %639, label %640, label %642

640:                                              ; preds = %636
  %641 = getelementptr inbounds i8, ptr %633, i64 2
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N, ptr noundef nonnull %641)
          to label %644 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

642:                                              ; preds = %636, %632
  invoke void @_ZN3Int9SetBase10EPKc(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N, ptr noundef nonnull %633)
          to label %644 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

643:                                              ; preds = %630
  invoke void @_ZN3Int8SetInt64Em(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N, i64 noundef 17592186044416)
          to label %644 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

644:                                              ; preds = %643, %640, %642
  %645 = invoke noundef zeroext i1 @_ZN3Int7HasSqrtEv(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N)
          to label %646 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

646:                                              ; preds = %644
  br i1 %645, label %647, label %649

647:                                              ; preds = %646
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M, ptr noundef nonnull @BSGS_N)
          to label %648 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

648:                                              ; preds = %647
  invoke void @_ZN3Int7ModSqrtEv(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M)
          to label %652 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

649:                                              ; preds = %646
  %650 = load ptr, ptr @stderr, align 8, !tbaa !5
  %651 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %650, ptr noundef nonnull @.str.160) #23
  call void @exit(i32 noundef 1) #24
  unreachable

652:                                              ; preds = %648
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_AUX, ptr noundef nonnull @BSGS_M)
          to label %653 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

653:                                              ; preds = %652
  invoke void @_ZN3Int3ModEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_AUX, ptr noundef nonnull @BSGS_GROUP_SIZE)
          to label %654 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

654:                                              ; preds = %653
  %655 = invoke noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_AUX)
          to label %656 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

656:                                              ; preds = %654
  br i1 %655, label %662, label %657

657:                                              ; preds = %656
  %658 = invoke noundef ptr @_ZN3Int9GetBase10Ev(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_GROUP_SIZE)
          to label %659 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

659:                                              ; preds = %657
  %660 = load ptr, ptr @stderr, align 8, !tbaa !5
  %661 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %660, ptr noundef nonnull @.str.161, ptr noundef %658) #23
  call void @exit(i32 noundef 1) #24
  unreachable

662:                                              ; preds = %656
  %663 = invoke noundef i64 @_ZN3Int8GetInt64Ev(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M)
          to label %664 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

664:                                              ; preds = %662
  store i64 %663, ptr @bsgs_m, align 8, !tbaa !17
  %665 = load i32, ptr @FLAGRANGE, align 4, !tbaa !9
  %666 = icmp ne i32 %665, 0
  %667 = load i32, ptr @FLAGBITRANGE, align 4
  %668 = icmp ne i32 %667, 0
  %or.cond21 = select i1 %666, i1 true, i1 %668
  br i1 %or.cond21, label %669, label %681

669:                                              ; preds = %664
  br i1 %668, label %670, label %679

670:                                              ; preds = %669
  %671 = load ptr, ptr @bit_range_str_min, align 8, !tbaa !5
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef %671)
          to label %672 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

672:                                              ; preds = %670
  %673 = load ptr, ptr @bit_range_str_max, align 8, !tbaa !5
  invoke void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16) @n_range_end, ptr noundef %673)
          to label %674 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

674:                                              ; preds = %672
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef nonnull @n_range_end)
          to label %675 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

675:                                              ; preds = %674
  invoke void @_ZN3Int3SubEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef nonnull @n_range_start)
          to label %676 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

676:                                              ; preds = %675
  %677 = load i32, ptr @bitrange, align 4, !tbaa !9
  %678 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.140, i32 noundef %677)
  br label %.sink.split1160

679:                                              ; preds = %669
  %680 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.141)
  br label %.sink.split1160

681:                                              ; preds = %664
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, i32 noundef 1)
          to label %682 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

682:                                              ; preds = %681
  %683 = load ptr, ptr @secp, align 8, !tbaa !5
  %684 = getelementptr inbounds i8, ptr %683, i64 64
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_end, ptr noundef nonnull %684)
          to label %685 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

685:                                              ; preds = %682
  invoke void @_ZN3Int4RandEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef nonnull @n_range_start, ptr noundef nonnull @n_range_end)
          to label %686 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

686:                                              ; preds = %685
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef nonnull @n_range_diff)
          to label %691 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

.sink.split1160:                                  ; preds = %679, %676
  %bit_range_str_min.sink = phi ptr [ @bit_range_str_min, %676 ], [ @range_start, %679 ]
  %bit_range_str_max.sink = phi ptr [ @bit_range_str_max, %676 ], [ @range_end, %679 ]
  %687 = load ptr, ptr %bit_range_str_min.sink, align 8, !tbaa !5
  %688 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.142, ptr noundef %687)
  %689 = load ptr, ptr %bit_range_str_max.sink, align 8, !tbaa !5
  %690 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.143, ptr noundef %689)
  br label %691

691:                                              ; preds = %.sink.split1160, %686
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_CURRENT, ptr noundef nonnull @n_range_start)
          to label %692 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

692:                                              ; preds = %691
  %693 = invoke noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_diff, ptr noundef nonnull @BSGS_N)
          to label %694 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

694:                                              ; preds = %692
  br i1 %693, label %695, label %698

695:                                              ; preds = %694
  %696 = load ptr, ptr @stderr, align 8, !tbaa !5
  %697 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %696, ptr noundef nonnull @.str.162) #23
  call void @exit(i32 noundef 1) #24
  unreachable

698:                                              ; preds = %694
  %699 = load i32, ptr @KFACTOR, align 4, !tbaa !9
  %700 = sext i32 %699 to i64
  invoke void @_ZN3Int4MultEm(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M, i64 noundef %700)
          to label %701 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

701:                                              ; preds = %698
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_AUX, i32 noundef 32)
          to label %702 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

702:                                              ; preds = %701
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R, ptr noundef nonnull @BSGS_M)
          to label %703 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

703:                                              ; preds = %702
  invoke void @_ZN3Int3ModEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R, ptr noundef nonnull @BSGS_AUX)
          to label %704 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

704:                                              ; preds = %703
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M2, ptr noundef nonnull @BSGS_M)
          to label %705 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

705:                                              ; preds = %704
  invoke void @_ZN3Int3DivEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M2, ptr noundef nonnull @BSGS_AUX, ptr noundef null)
          to label %706 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

706:                                              ; preds = %705
  %707 = invoke noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R)
          to label %708 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

708:                                              ; preds = %706
  br i1 %707, label %710, label %709

709:                                              ; preds = %708
  invoke void @_ZN3Int6AddOneEv(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M2)
          to label %710 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

710:                                              ; preds = %709, %708
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M_double, i32 noundef 2)
          to label %711 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

711:                                              ; preds = %710
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M_double, ptr noundef nonnull @BSGS_M)
          to label %712 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

712:                                              ; preds = %711
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M2_double, i32 noundef 2)
          to label %713 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

713:                                              ; preds = %712
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M2_double, ptr noundef nonnull @BSGS_M2)
          to label %714 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

714:                                              ; preds = %713
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R, ptr noundef nonnull @BSGS_M2)
          to label %715 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

715:                                              ; preds = %714
  invoke void @_ZN3Int3ModEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R, ptr noundef nonnull @BSGS_AUX)
          to label %716 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

716:                                              ; preds = %715
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M3, ptr noundef nonnull @BSGS_M2)
          to label %717 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

717:                                              ; preds = %716
  invoke void @_ZN3Int3DivEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M3, ptr noundef nonnull @BSGS_AUX, ptr noundef null)
          to label %718 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

718:                                              ; preds = %717
  %719 = invoke noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R)
          to label %720 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

720:                                              ; preds = %718
  br i1 %719, label %722, label %721

721:                                              ; preds = %720
  invoke void @_ZN3Int6AddOneEv(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M3)
          to label %722 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

722:                                              ; preds = %721, %720
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M3_double, i32 noundef 2)
          to label %723 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

723:                                              ; preds = %722
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M3_double, ptr noundef nonnull @BSGS_M3)
          to label %724 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

724:                                              ; preds = %723
  %725 = invoke noundef i64 @_ZN3Int8GetInt64Ev(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M2)
          to label %726 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

726:                                              ; preds = %724
  store i64 %725, ptr @bsgs_m2, align 8, !tbaa !17
  %727 = invoke noundef i64 @_ZN3Int8GetInt64Ev(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M3)
          to label %728 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

728:                                              ; preds = %726
  store i64 %727, ptr @bsgs_m3, align 8, !tbaa !17
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_AUX, ptr noundef nonnull @BSGS_N)
          to label %729 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

729:                                              ; preds = %728
  invoke void @_ZN3Int3DivEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_AUX, ptr noundef nonnull @BSGS_M, ptr noundef null)
          to label %730 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

730:                                              ; preds = %729
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R, ptr noundef nonnull @BSGS_N)
          to label %731 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

731:                                              ; preds = %730
  invoke void @_ZN3Int3ModEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R, ptr noundef nonnull @BSGS_M)
          to label %732 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

732:                                              ; preds = %731
  %733 = invoke noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_R)
          to label %734 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

734:                                              ; preds = %732
  br i1 %733, label %737, label %735

735:                                              ; preds = %734
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N, ptr noundef nonnull @BSGS_M)
          to label %736 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

736:                                              ; preds = %735
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N, ptr noundef nonnull @BSGS_AUX)
          to label %737 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

737:                                              ; preds = %736, %734
  %738 = invoke noundef i64 @_ZN3Int8GetInt64Ev(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_M)
          to label %739 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

739:                                              ; preds = %737
  store i64 %738, ptr @bsgs_m, align 8, !tbaa !17
  %740 = invoke noundef i64 @_ZN3Int8GetInt64Ev(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_AUX)
          to label %741 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

741:                                              ; preds = %739
  store i64 %740, ptr @bsgs_aux, align 8, !tbaa !17
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N_double, i32 noundef 2)
          to label %742 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

742:                                              ; preds = %741
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N_double, ptr noundef nonnull @BSGS_N)
          to label %743 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

743:                                              ; preds = %742
  %744 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16) @BSGS_N)
          to label %745 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

745:                                              ; preds = %743
  %746 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.163, ptr noundef %744)
  call void @free(ptr noundef %744) #20
  %747 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %748 = lshr i64 %747, 8
  %749 = icmp ugt i64 %747, 2560255
  %750 = and i64 %747, 255
  %.not641 = icmp ne i64 %750, 0
  %751 = zext i1 %.not641 to i64
  %spec.select778 = add nuw nsw i64 %748, %751
  %.0588 = select i1 %749, i64 %spec.select778, i64 1000
  %752 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %753 = lshr i64 %752, 8
  %754 = icmp ugt i64 %752, 256255
  %755 = and i64 %752, 255
  %.not642 = icmp ne i64 %755, 0
  %756 = zext i1 %.not642 to i64
  %spec.select779 = add nuw nsw i64 %753, %756
  %.0587 = select i1 %754, i64 %spec.select779, i64 1000
  %757 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %758 = lshr i64 %757, 8
  %759 = icmp ugt i64 %757, 256255
  %760 = and i64 %757, 255
  %.not643 = icmp ne i64 %760, 0
  %761 = zext i1 %.not643 to i64
  %spec.select780 = add nuw nsw i64 %758, %761
  %.0586 = select i1 %759, i64 %spec.select780, i64 1000
  %762 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.164, i64 noundef %747)
  %763 = call noalias dereferenceable_or_null(20480) ptr @calloc(i64 noundef 256, i64 noundef 80) #27
  store ptr %763, ptr @bloom_bP, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %763, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.165, i32 noundef 1220)
  %764 = call noalias dereferenceable_or_null(16384) ptr @calloc(i64 noundef 256, i64 noundef 64) #27
  store ptr %764, ptr @bloom_bP_checksums, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %764, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.166, i32 noundef 1222)
  %765 = call noalias dereferenceable_or_null(10240) ptr @calloc(i64 noundef 256, i64 noundef 40) #27
  store ptr %765, ptr @bloom_bP_mutex, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %765, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.167, i32 noundef 1230)
  %766 = load ptr, ptr @stdout, align 8, !tbaa !5
  %767 = call i32 @fflush(ptr noundef %766)
  store i64 0, ptr @bloom_bP_totalbytes, align 8, !tbaa !17
  br label %768

768:                                              ; preds = %745, %781
  %indvars.iv991 = phi i64 [ 0, %745 ], [ %indvars.iv.next992, %781 ]
  %769 = load ptr, ptr @bloom_bP_mutex, align 8, !tbaa !5
  %770 = getelementptr inbounds %union.pthread_mutex_t, ptr %769, i64 %indvars.iv991
  %771 = call i32 @pthread_mutex_init(ptr noundef %770, ptr noundef null) #20
  %772 = load ptr, ptr @bloom_bP, align 8, !tbaa !5
  %773 = getelementptr inbounds %struct.bloom, ptr %772, i64 %indvars.iv991
  %774 = invoke i32 @bloom_init2(ptr noundef %773, i64 noundef %.0588, x86_fp80 noundef 0xK3FEB8637BD05AF6C6800)
          to label %775 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

775:                                              ; preds = %768
  %776 = icmp eq i32 %774, 1
  br i1 %776, label %777, label %781

777:                                              ; preds = %775
  %778 = trunc nuw nsw i64 %indvars.iv991 to i32
  %779 = load ptr, ptr @stderr, align 8, !tbaa !5
  %780 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %779, ptr noundef nonnull @.str.168, i32 noundef %778) #23
  call void @exit(i32 noundef 1) #24
  unreachable

781:                                              ; preds = %775
  %782 = load ptr, ptr @bloom_bP, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.bloom, ptr %782, i64 %indvars.iv991, i32 2
  %784 = load i64, ptr %783, align 16, !tbaa !22
  %785 = load i64, ptr @bloom_bP_totalbytes, align 8, !tbaa !17
  %786 = add i64 %785, %784
  store i64 %786, ptr @bloom_bP_totalbytes, align 8, !tbaa !17
  %indvars.iv.next992 = add nuw nsw i64 %indvars.iv991, 1
  %exitcond994.not = icmp eq i64 %indvars.iv.next992, 256
  br i1 %exitcond994.not, label %787, label %768, !llvm.loop !26

787:                                              ; preds = %781
  %788 = uitofp i64 %786 to float
  %789 = fmul float %788, 0x3EB0000000000000
  %790 = fpext float %789 to double
  %791 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.169, double noundef %790)
  %792 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %793 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.164, i64 noundef %792)
  %794 = call noalias dereferenceable_or_null(10240) ptr @calloc(i64 noundef 256, i64 noundef 40) #27
  store ptr %794, ptr @bloom_bPx2nd_mutex, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %794, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.170, i32 noundef 1258)
  %795 = call noalias dereferenceable_or_null(20480) ptr @calloc(i64 noundef 256, i64 noundef 80) #27
  store ptr %795, ptr @bloom_bPx2nd, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %795, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.171, i32 noundef 1260)
  %796 = call noalias dereferenceable_or_null(16384) ptr @calloc(i64 noundef 256, i64 noundef 64) #27
  store ptr %796, ptr @bloom_bPx2nd_checksums, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %796, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.172, i32 noundef 1262)
  store i64 0, ptr @bloom_bP2_totalbytes, align 8, !tbaa !17
  br label %797

797:                                              ; preds = %787, %810
  %indvars.iv995 = phi i64 [ 0, %787 ], [ %indvars.iv.next996, %810 ]
  %798 = load ptr, ptr @bloom_bPx2nd_mutex, align 8, !tbaa !5
  %799 = getelementptr inbounds %union.pthread_mutex_t, ptr %798, i64 %indvars.iv995
  %800 = call i32 @pthread_mutex_init(ptr noundef %799, ptr noundef null) #20
  %801 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.bloom, ptr %801, i64 %indvars.iv995
  %803 = invoke i32 @bloom_init2(ptr noundef %802, i64 noundef %.0587, x86_fp80 noundef 0xK3FEB8637BD05AF6C6800)
          to label %804 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

804:                                              ; preds = %797
  %805 = icmp eq i32 %803, 1
  br i1 %805, label %806, label %810

806:                                              ; preds = %804
  %807 = trunc nuw nsw i64 %indvars.iv995 to i32
  %808 = load ptr, ptr @stderr, align 8, !tbaa !5
  %809 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %808, ptr noundef nonnull @.str.168, i32 noundef %807) #23
  call void @exit(i32 noundef 1) #24
  unreachable

810:                                              ; preds = %804
  %811 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !5
  %812 = getelementptr inbounds %struct.bloom, ptr %811, i64 %indvars.iv995, i32 2
  %813 = load i64, ptr %812, align 16, !tbaa !22
  %814 = load i64, ptr @bloom_bP2_totalbytes, align 8, !tbaa !17
  %815 = add i64 %814, %813
  store i64 %815, ptr @bloom_bP2_totalbytes, align 8, !tbaa !17
  %indvars.iv.next996 = add nuw nsw i64 %indvars.iv995, 1
  %exitcond998.not = icmp eq i64 %indvars.iv.next996, 256
  br i1 %exitcond998.not, label %816, label %797, !llvm.loop !27

816:                                              ; preds = %810
  %817 = uitofp i64 %815 to float
  %818 = fmul float %817, 0x3EB0000000000000
  %819 = fpext float %818 to double
  %820 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.169, double noundef %819)
  %821 = call noalias dereferenceable_or_null(10240) ptr @calloc(i64 noundef 256, i64 noundef 40) #27
  store ptr %821, ptr @bloom_bPx3rd_mutex, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %821, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.173, i32 noundef 1285)
  %822 = call noalias dereferenceable_or_null(20480) ptr @calloc(i64 noundef 256, i64 noundef 80) #27
  store ptr %822, ptr @bloom_bPx3rd, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %822, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.174, i32 noundef 1287)
  %823 = call noalias dereferenceable_or_null(16384) ptr @calloc(i64 noundef 256, i64 noundef 64) #27
  store ptr %823, ptr @bloom_bPx3rd_checksums, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %823, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.175, i32 noundef 1289)
  %824 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %825 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.164, i64 noundef %824)
  store i64 0, ptr @bloom_bP3_totalbytes, align 8, !tbaa !17
  br label %826

826:                                              ; preds = %816, %839
  %indvars.iv999 = phi i64 [ 0, %816 ], [ %indvars.iv.next1000, %839 ]
  %827 = load ptr, ptr @bloom_bPx3rd_mutex, align 8, !tbaa !5
  %828 = getelementptr inbounds %union.pthread_mutex_t, ptr %827, i64 %indvars.iv999
  %829 = call i32 @pthread_mutex_init(ptr noundef %828, ptr noundef null) #20
  %830 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.bloom, ptr %830, i64 %indvars.iv999
  %832 = invoke i32 @bloom_init2(ptr noundef %831, i64 noundef %.0586, x86_fp80 noundef 0xK3FEB8637BD05AF6C6800)
          to label %833 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

833:                                              ; preds = %826
  %834 = icmp eq i32 %832, 1
  br i1 %834, label %835, label %839

835:                                              ; preds = %833
  %836 = trunc nuw nsw i64 %indvars.iv999 to i32
  %837 = load ptr, ptr @stderr, align 8, !tbaa !5
  %838 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %837, ptr noundef nonnull @.str.176, i32 noundef %836) #23
  call void @exit(i32 noundef 1) #24
  unreachable

839:                                              ; preds = %833
  %840 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.bloom, ptr %840, i64 %indvars.iv999, i32 2
  %842 = load i64, ptr %841, align 16, !tbaa !22
  %843 = load i64, ptr @bloom_bP3_totalbytes, align 8, !tbaa !17
  %844 = add i64 %843, %842
  store i64 %844, ptr @bloom_bP3_totalbytes, align 8, !tbaa !17
  %indvars.iv.next1000 = add nuw nsw i64 %indvars.iv999, 1
  %exitcond1002.not = icmp eq i64 %indvars.iv.next1000, 256
  br i1 %exitcond1002.not, label %845, label %826, !llvm.loop !28

845:                                              ; preds = %839
  %846 = uitofp i64 %844 to float
  %847 = fmul float %846, 0x3EB0000000000000
  %848 = fpext float %847 to double
  %849 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.169, double noundef %848)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %16) #20
  %850 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %16, ptr noundef nonnull align 8 dereferenceable(393296) %850, ptr noundef nonnull @BSGS_M)
          to label %851 unwind label %892

851:                                              ; preds = %845
  %852 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP, ptr noundef nonnull align 8 dereferenceable(48) %16)
          to label %853 unwind label %894

853:                                              ; preds = %851
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #20
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #20
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %17) #20
  %854 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %17, ptr noundef nonnull align 8 dereferenceable(393296) %854, ptr noundef nonnull @BSGS_M_double)
          to label %855 unwind label %897

855:                                              ; preds = %853
  %856 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP_double, ptr noundef nonnull align 8 dereferenceable(48) %17)
          to label %857 unwind label %899

857:                                              ; preds = %855
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %17) #20
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17) #20
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %18) #20
  %858 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %18, ptr noundef nonnull align 8 dereferenceable(393296) %858, ptr noundef nonnull @BSGS_M2)
          to label %859 unwind label %902

859:                                              ; preds = %857
  %860 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP2, ptr noundef nonnull align 8 dereferenceable(48) %18)
          to label %861 unwind label %904

861:                                              ; preds = %859
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #20
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %18) #20
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %19) #20
  %862 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %19, ptr noundef nonnull align 8 dereferenceable(393296) %862, ptr noundef nonnull @BSGS_M2_double)
          to label %863 unwind label %907

863:                                              ; preds = %861
  %864 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP2_double, ptr noundef nonnull align 8 dereferenceable(48) %19)
          to label %865 unwind label %909

865:                                              ; preds = %863
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %19) #20
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %19) #20
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %20) #20
  %866 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %20, ptr noundef nonnull align 8 dereferenceable(393296) %866, ptr noundef nonnull @BSGS_M3)
          to label %867 unwind label %912

867:                                              ; preds = %865
  %868 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP3, ptr noundef nonnull align 8 dereferenceable(48) %20)
          to label %869 unwind label %914

869:                                              ; preds = %867
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %20) #20
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %20) #20
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %21) #20
  %870 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %21, ptr noundef nonnull align 8 dereferenceable(393296) %870, ptr noundef nonnull @BSGS_M3_double)
          to label %871 unwind label %917

871:                                              ; preds = %869
  %872 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP3_double, ptr noundef nonnull align 8 dereferenceable(48) %21)
          to label %873 unwind label %919

873:                                              ; preds = %871
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %21) #20
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %21) #20
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %22) #20
  %874 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %22, ptr noundef nonnull align 8 dereferenceable(393296) %874, ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP_double)
          to label %875 unwind label %922

875:                                              ; preds = %873
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %23) #20
  invoke void @_ZN5PointC1ERKS_(ptr noundef nonnull align 8 dereferenceable(48) %23, ptr noundef nonnull align 8 dereferenceable(48) %22)
          to label %876 unwind label %924

876:                                              ; preds = %875
  invoke void @_ZNSt6vectorI5PointSaIS0_EE6resizeEmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) @GSn, i64 noundef 512, ptr noundef nonnull align 8 dereferenceable(48) %23)
          to label %877 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

877:                                              ; preds = %876
  invoke void @_ZNSt6vectorI5PointSaIS0_EE6resizeEmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP2, i64 noundef 32, ptr noundef nonnull align 8 dereferenceable(48) %23)
          to label %878 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

878:                                              ; preds = %877
  invoke void @_ZNSt6vectorI5PointSaIS0_EE6resizeEmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP3, i64 noundef 32, ptr noundef nonnull align 8 dereferenceable(48) %23)
          to label %879 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

879:                                              ; preds = %878
  %880 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @GSn, i64 noundef 0) #20
  %881 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %880, ptr noundef nonnull align 8 dereferenceable(48) %23)
          to label %882 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

882:                                              ; preds = %879
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %24) #20
  %883 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K112DoubleDirectER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %24, ptr noundef nonnull align 8 dereferenceable(393296) %883, ptr noundef nonnull align 8 dereferenceable(48) %23)
          to label %884 unwind label %926

884:                                              ; preds = %882
  %885 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %23, ptr noundef nonnull align 8 dereferenceable(48) %24)
          to label %886 unwind label %928

886:                                              ; preds = %884
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %24) #20
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %24) #20
  %887 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @GSn, i64 noundef 1) #20
  %888 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %887, ptr noundef nonnull align 8 dereferenceable(48) %23)
          to label %.preheader840 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

889:                                              ; preds = %937
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %26) #20
  %890 = load ptr, ptr @secp, align 8, !tbaa !5
  %891 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @GSn, i64 noundef 511) #20
  invoke void @_ZN9Secp256K112DoubleDirectER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %26, ptr noundef nonnull align 8 dereferenceable(393296) %890, ptr noundef nonnull align 8 dereferenceable(48) %891)
          to label %945 unwind label %970

892:                                              ; preds = %845
  %893 = landingpad { ptr, i32 }
          cleanup
  br label %896

894:                                              ; preds = %851
  %895 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #20
  br label %896

896:                                              ; preds = %894, %892
  %.pn = phi { ptr, i32 } [ %895, %894 ], [ %893, %892 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #20
  br label %.loopexit.split-lp

897:                                              ; preds = %853
  %898 = landingpad { ptr, i32 }
          cleanup
  br label %901

899:                                              ; preds = %855
  %900 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %17) #20
  br label %901

901:                                              ; preds = %899, %897
  %.pn645 = phi { ptr, i32 } [ %900, %899 ], [ %898, %897 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17) #20
  br label %.loopexit.split-lp

902:                                              ; preds = %857
  %903 = landingpad { ptr, i32 }
          cleanup
  br label %906

904:                                              ; preds = %859
  %905 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #20
  br label %906

906:                                              ; preds = %904, %902
  %.pn647 = phi { ptr, i32 } [ %905, %904 ], [ %903, %902 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %18) #20
  br label %.loopexit.split-lp

907:                                              ; preds = %861
  %908 = landingpad { ptr, i32 }
          cleanup
  br label %911

909:                                              ; preds = %863
  %910 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %19) #20
  br label %911

911:                                              ; preds = %909, %907
  %.pn649 = phi { ptr, i32 } [ %910, %909 ], [ %908, %907 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %19) #20
  br label %.loopexit.split-lp

912:                                              ; preds = %865
  %913 = landingpad { ptr, i32 }
          cleanup
  br label %916

914:                                              ; preds = %867
  %915 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %20) #20
  br label %916

916:                                              ; preds = %914, %912
  %.pn651 = phi { ptr, i32 } [ %915, %914 ], [ %913, %912 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %20) #20
  br label %.loopexit.split-lp

917:                                              ; preds = %869
  %918 = landingpad { ptr, i32 }
          cleanup
  br label %921

919:                                              ; preds = %871
  %920 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %21) #20
  br label %921

921:                                              ; preds = %919, %917
  %.pn653 = phi { ptr, i32 } [ %920, %919 ], [ %918, %917 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %21) #20
  br label %.loopexit.split-lp

922:                                              ; preds = %873
  %923 = landingpad { ptr, i32 }
          cleanup
  br label %1934

924:                                              ; preds = %875
  %925 = landingpad { ptr, i32 }
          cleanup
  br label %1933

.loopexit810:                                     ; preds = %.preheader809
  %lpad.loopexit812 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp811

.loopexit.split-lp811.loopexit:                   ; preds = %.preheader814
  %lpad.loopexit815 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp811

.loopexit.split-lp811.loopexit.split-lp.loopexit: ; preds = %.preheader818
  %lpad.loopexit819 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp811

.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %1341
  %lpad.loopexit823 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp811

.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %1225
  %lpad.loopexit826 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp811

.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %1155
  %lpad.loopexit828 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp811

.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %1082
  %lpad.loopexit831 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp811

.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %1010
  %lpad.loopexit834 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp811

.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %967
  %lpad.loopexit838 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp811

.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %876, %877, %878, %879, %886, %947, %953, %955, %960, %990, %996, %998, %1003, %1287, %1697, %1704
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp811

926:                                              ; preds = %882
  %927 = landingpad { ptr, i32 }
          cleanup
  br label %930

928:                                              ; preds = %884
  %929 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %24) #20
  br label %930

930:                                              ; preds = %928, %926
  %.pn655 = phi { ptr, i32 } [ %929, %928 ], [ %927, %926 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %24) #20
  br label %.loopexit.split-lp811

.preheader840:                                    ; preds = %886, %937
  %indvars.iv1003 = phi i64 [ %indvars.iv.next1004, %937 ], [ 2, %886 ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %25) #20
  %931 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K19AddDirectER5PointS1_(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %25, ptr noundef nonnull align 8 dereferenceable(393296) %931, ptr noundef nonnull align 8 dereferenceable(48) %23, ptr noundef nonnull align 8 dereferenceable(48) %22)
          to label %932 unwind label %938

932:                                              ; preds = %.preheader840
  %933 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %23, ptr noundef nonnull align 8 dereferenceable(48) %25)
          to label %934 unwind label %940

934:                                              ; preds = %932
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %25) #20
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %25) #20
  %935 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @GSn, i64 noundef %indvars.iv1003) #20
  %936 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %935, ptr noundef nonnull align 8 dereferenceable(48) %23)
          to label %937 unwind label %943

937:                                              ; preds = %934
  %indvars.iv.next1004 = add nuw nsw i64 %indvars.iv1003, 1
  %exitcond1006.not = icmp eq i64 %indvars.iv.next1004, 512
  br i1 %exitcond1006.not, label %889, label %.preheader840, !llvm.loop !29

938:                                              ; preds = %.preheader840
  %939 = landingpad { ptr, i32 }
          cleanup
  br label %942

940:                                              ; preds = %932
  %941 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %25) #20
  br label %942

942:                                              ; preds = %940, %938
  %.pn755 = phi { ptr, i32 } [ %941, %940 ], [ %939, %938 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %25) #20
  br label %.loopexit.split-lp811

943:                                              ; preds = %934
  %944 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp811

945:                                              ; preds = %889
  %946 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @_2GSn, ptr noundef nonnull align 8 dereferenceable(48) %26)
          to label %947 unwind label %972

947:                                              ; preds = %945
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #20
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %26) #20
  invoke void @_ZN5Point3SetERS_(ptr noundef nonnull align 8 dereferenceable(48) @point_temp, ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP2)
          to label %948 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

948:                                              ; preds = %947
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %27) #20
  %949 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %27, ptr noundef nonnull align 8 dereferenceable(393296) %949, ptr noundef nonnull align 8 dereferenceable(48) @point_temp)
          to label %950 unwind label %975

950:                                              ; preds = %948
  %951 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP2, i64 noundef 0) #20
  %952 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %951, ptr noundef nonnull align 8 dereferenceable(48) %27)
          to label %953 unwind label %977

953:                                              ; preds = %950
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %27) #20
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %27) #20
  %954 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP2, i64 noundef 0) #20
  invoke void @_ZN5Point6ReduceEv(ptr noundef nonnull align 8 dereferenceable(48) %954)
          to label %955 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

955:                                              ; preds = %953
  invoke void @_ZN5Point3SetERS_(ptr noundef nonnull align 8 dereferenceable(48) @point_temp, ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP2_double)
          to label %956 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

956:                                              ; preds = %955
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %28) #20
  %957 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %28, ptr noundef nonnull align 8 dereferenceable(393296) %957, ptr noundef nonnull align 8 dereferenceable(48) @point_temp)
          to label %958 unwind label %980

958:                                              ; preds = %956
  %959 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @point_temp, ptr noundef nonnull align 8 dereferenceable(48) %28)
          to label %960 unwind label %982

960:                                              ; preds = %958
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #20
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28) #20
  invoke void @_ZN5Point6ReduceEv(ptr noundef nonnull align 8 dereferenceable(48) @point_temp)
          to label %.preheader837 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

.preheader837:                                    ; preds = %960, %969
  %indvars.iv1007 = phi i64 [ %indvars.iv.next1008, %969 ], [ 1, %960 ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %29) #20
  %961 = load ptr, ptr @secp, align 8, !tbaa !5
  %962 = add nsw i64 %indvars.iv1007, -1
  %963 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP2, i64 noundef %962) #20
  invoke void @_ZN9Secp256K19AddDirectER5PointS1_(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %29, ptr noundef nonnull align 8 dereferenceable(393296) %961, ptr noundef nonnull align 8 dereferenceable(48) %963, ptr noundef nonnull align 8 dereferenceable(48) @point_temp)
          to label %964 unwind label %985

964:                                              ; preds = %.preheader837
  %965 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP2, i64 noundef %indvars.iv1007) #20
  %966 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %965, ptr noundef nonnull align 8 dereferenceable(48) %29)
          to label %967 unwind label %987

967:                                              ; preds = %964
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %29) #20
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %29) #20
  %968 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP2, i64 noundef %indvars.iv1007) #20
  invoke void @_ZN5Point6ReduceEv(ptr noundef nonnull align 8 dereferenceable(48) %968)
          to label %969 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

969:                                              ; preds = %967
  %indvars.iv.next1008 = add nuw nsw i64 %indvars.iv1007, 1
  %exitcond1010.not = icmp eq i64 %indvars.iv.next1008, 32
  br i1 %exitcond1010.not, label %990, label %.preheader837, !llvm.loop !30

970:                                              ; preds = %889
  %971 = landingpad { ptr, i32 }
          cleanup
  br label %974

972:                                              ; preds = %945
  %973 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #20
  br label %974

974:                                              ; preds = %972, %970
  %.pn657 = phi { ptr, i32 } [ %973, %972 ], [ %971, %970 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %26) #20
  br label %.loopexit.split-lp811

975:                                              ; preds = %948
  %976 = landingpad { ptr, i32 }
          cleanup
  br label %979

977:                                              ; preds = %950
  %978 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %27) #20
  br label %979

979:                                              ; preds = %977, %975
  %.pn659 = phi { ptr, i32 } [ %978, %977 ], [ %976, %975 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %27) #20
  br label %.loopexit.split-lp811

980:                                              ; preds = %956
  %981 = landingpad { ptr, i32 }
          cleanup
  br label %984

982:                                              ; preds = %958
  %983 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #20
  br label %984

984:                                              ; preds = %982, %980
  %.pn661 = phi { ptr, i32 } [ %983, %982 ], [ %981, %980 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28) #20
  br label %.loopexit.split-lp811

985:                                              ; preds = %.preheader837
  %986 = landingpad { ptr, i32 }
          cleanup
  br label %989

987:                                              ; preds = %964
  %988 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %29) #20
  br label %989

989:                                              ; preds = %987, %985
  %.pn753 = phi { ptr, i32 } [ %988, %987 ], [ %986, %985 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %29) #20
  br label %.loopexit.split-lp811

990:                                              ; preds = %969
  invoke void @_ZN5Point3SetERS_(ptr noundef nonnull align 8 dereferenceable(48) @point_temp, ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP3)
          to label %991 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

991:                                              ; preds = %990
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %30) #20
  %992 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %30, ptr noundef nonnull align 8 dereferenceable(393296) %992, ptr noundef nonnull align 8 dereferenceable(48) @point_temp)
          to label %993 unwind label %1013

993:                                              ; preds = %991
  %994 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP3, i64 noundef 0) #20
  %995 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %994, ptr noundef nonnull align 8 dereferenceable(48) %30)
          to label %996 unwind label %1015

996:                                              ; preds = %993
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #20
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %30) #20
  %997 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP3, i64 noundef 0) #20
  invoke void @_ZN5Point6ReduceEv(ptr noundef nonnull align 8 dereferenceable(48) %997)
          to label %998 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

998:                                              ; preds = %996
  invoke void @_ZN5Point3SetERS_(ptr noundef nonnull align 8 dereferenceable(48) @point_temp, ptr noundef nonnull align 8 dereferenceable(48) @BSGS_MP3_double)
          to label %999 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

999:                                              ; preds = %998
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %31) #20
  %1000 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %31, ptr noundef nonnull align 8 dereferenceable(393296) %1000, ptr noundef nonnull align 8 dereferenceable(48) @point_temp)
          to label %1001 unwind label %1018

1001:                                             ; preds = %999
  %1002 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) @point_temp, ptr noundef nonnull align 8 dereferenceable(48) %31)
          to label %1003 unwind label %1020

1003:                                             ; preds = %1001
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %31) #20
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %31) #20
  invoke void @_ZN5Point6ReduceEv(ptr noundef nonnull align 8 dereferenceable(48) @point_temp)
          to label %.preheader833 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

.preheader833:                                    ; preds = %1003, %1012
  %indvars.iv1011 = phi i64 [ %indvars.iv.next1012, %1012 ], [ 1, %1003 ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %32) #20
  %1004 = load ptr, ptr @secp, align 8, !tbaa !5
  %1005 = add nsw i64 %indvars.iv1011, -1
  %1006 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP3, i64 noundef %1005) #20
  invoke void @_ZN9Secp256K19AddDirectER5PointS1_(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %32, ptr noundef nonnull align 8 dereferenceable(393296) %1004, ptr noundef nonnull align 8 dereferenceable(48) %1006, ptr noundef nonnull align 8 dereferenceable(48) @point_temp)
          to label %1007 unwind label %1023

1007:                                             ; preds = %.preheader833
  %1008 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP3, i64 noundef %indvars.iv1011) #20
  %1009 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %1008, ptr noundef nonnull align 8 dereferenceable(48) %32)
          to label %1010 unwind label %1025

1010:                                             ; preds = %1007
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %32) #20
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %32) #20
  %1011 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @BSGS_AMP3, i64 noundef %indvars.iv1011) #20
  invoke void @_ZN5Point6ReduceEv(ptr noundef nonnull align 8 dereferenceable(48) %1011)
          to label %1012 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

1012:                                             ; preds = %1010
  %indvars.iv.next1012 = add nuw nsw i64 %indvars.iv1011, 1
  %exitcond1014.not = icmp eq i64 %indvars.iv.next1012, 32
  br i1 %exitcond1014.not, label %1028, label %.preheader833, !llvm.loop !31

1013:                                             ; preds = %991
  %1014 = landingpad { ptr, i32 }
          cleanup
  br label %1017

1015:                                             ; preds = %993
  %1016 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #20
  br label %1017

1017:                                             ; preds = %1015, %1013
  %.pn663 = phi { ptr, i32 } [ %1016, %1015 ], [ %1014, %1013 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %30) #20
  br label %.loopexit.split-lp811

1018:                                             ; preds = %999
  %1019 = landingpad { ptr, i32 }
          cleanup
  br label %1022

1020:                                             ; preds = %1001
  %1021 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %31) #20
  br label %1022

1022:                                             ; preds = %1020, %1018
  %.pn665 = phi { ptr, i32 } [ %1021, %1020 ], [ %1019, %1018 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %31) #20
  br label %.loopexit.split-lp811

1023:                                             ; preds = %.preheader833
  %1024 = landingpad { ptr, i32 }
          cleanup
  br label %1027

1025:                                             ; preds = %1007
  %1026 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %32) #20
  br label %1027

1027:                                             ; preds = %1025, %1023
  %.pn751 = phi { ptr, i32 } [ %1026, %1025 ], [ %1024, %1023 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %32) #20
  br label %.loopexit.split-lp811

1028:                                             ; preds = %1012
  %1029 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %1030 = shl i64 %1029, 4
  store i64 %1030, ptr @bytes, align 8, !tbaa !17
  %1031 = lshr i64 %1030, 20
  %1032 = uitofp nneg i64 %1031 to double
  %1033 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.177, double noundef %1032, i64 noundef %1029)
  %1034 = load i64, ptr @bytes, align 8, !tbaa !17
  %1035 = call noalias ptr @malloc(i64 noundef %1034) #26
  store ptr %1035, ptr @bPtable, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1035, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.178, i32 noundef 1369)
  %1036 = load ptr, ptr @bPtable, align 8, !tbaa !5
  %1037 = load i64, ptr @bytes, align 8, !tbaa !17
  call void @llvm.memset.p0.i64(ptr align 8 %1036, i8 0, i64 %1037, i1 false)
  %1038 = load i32, ptr @FLAGSAVEREADFILE, align 4, !tbaa !9
  %.not667 = icmp eq i32 %1038, 0
  br i1 %.not667, label %._crit_edge1095, label %1039

._crit_edge1095:                                  ; preds = %1028
  %.pre1096 = load i32, ptr @FLAGREADEDFILE4, align 4
  br label %1369

1039:                                             ; preds = %1028
  %1040 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %1041 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) @buffer_bloom_file, i64 noundef 1024, ptr noundef nonnull @.str.179, i64 noundef %1040) #20
  %1042 = call noalias ptr @fopen(ptr noundef nonnull @buffer_bloom_file, ptr noundef nonnull @.str.148)
  %.not668 = icmp eq ptr %1042, null
  br i1 %.not668, label %1115, label %1043

1043:                                             ; preds = %1039
  %1044 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.180, ptr noundef nonnull @buffer_bloom_file)
  %1045 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1046 = call i32 @fflush(ptr noundef %1045)
  br label %1047

1047:                                             ; preds = %1043, %1105
  %indvars.iv1015 = phi i64 [ 0, %1043 ], [ %indvars.iv.next1016, %1105 ]
  %1048 = load ptr, ptr @bloom_bP, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.bloom, ptr %1048, i64 %indvars.iv1015
  %1050 = getelementptr inbounds i8, ptr %1049, i64 64
  %1051 = load ptr, ptr %1050, align 16, !tbaa !32
  %1052 = call i64 @fread(ptr noundef %1049, i64 noundef 80, i64 noundef 1, ptr noundef nonnull %1042)
  %1053 = and i64 %1052, 4294967295
  %.not744 = icmp eq i64 %1053, 1
  br i1 %.not744, label %1057, label %1054

1054:                                             ; preds = %1047
  %1055 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1056 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1055, ptr noundef nonnull @.str.181, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1057:                                             ; preds = %1047
  %1058 = load ptr, ptr @bloom_bP, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.bloom, ptr %1058, i64 %indvars.iv1015, i32 9
  store ptr %1051, ptr %1059, align 16, !tbaa !32
  %1060 = load ptr, ptr @bloom_bP, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.bloom, ptr %1060, i64 %indvars.iv1015
  %1062 = getelementptr inbounds i8, ptr %1061, i64 64
  %1063 = load ptr, ptr %1062, align 16, !tbaa !32
  %1064 = getelementptr inbounds i8, ptr %1061, i64 16
  %1065 = load i64, ptr %1064, align 16, !tbaa !22
  %1066 = call i64 @fread(ptr noundef %1063, i64 noundef %1065, i64 noundef 1, ptr noundef nonnull %1042)
  %1067 = and i64 %1066, 4294967295
  %.not745 = icmp eq i64 %1067, 1
  br i1 %.not745, label %1071, label %1068

1068:                                             ; preds = %1057
  %1069 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1070 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1069, ptr noundef nonnull @.str.181, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1071:                                             ; preds = %1057
  %1072 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.checksumsha256, ptr %1072, i64 %indvars.iv1015
  %1074 = call i64 @fread(ptr noundef %1073, i64 noundef 64, i64 noundef 1, ptr noundef nonnull %1042)
  %1075 = and i64 %1074, 4294967295
  %.not746 = icmp eq i64 %1075, 1
  br i1 %.not746, label %1079, label %1076

1076:                                             ; preds = %1071
  %1077 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1078 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1077, ptr noundef nonnull @.str.181, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1079:                                             ; preds = %1071
  %1080 = load i32, ptr @FLAGSKIPCHECKSUM, align 4, !tbaa !9
  %1081 = icmp eq i32 %1080, 0
  br i1 %1081, label %1082, label %1098

1082:                                             ; preds = %1079
  %1083 = load ptr, ptr @bloom_bP, align 8, !tbaa !5
  %1084 = getelementptr inbounds %struct.bloom, ptr %1083, i64 %indvars.iv1015
  %1085 = getelementptr inbounds i8, ptr %1084, i64 64
  %1086 = load ptr, ptr %1085, align 16, !tbaa !32
  %1087 = getelementptr inbounds i8, ptr %1084, i64 16
  %1088 = load i64, ptr %1087, align 16, !tbaa !22
  %1089 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %1086, i64 noundef %1088, ptr noundef nonnull %4)
          to label %1090 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

1090:                                             ; preds = %1082
  %1091 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.checksumsha256, ptr %1091, i64 %indvars.iv1015
  %bcmp747 = call i32 @bcmp(ptr noundef nonnull dereferenceable(32) %1092, ptr noundef nonnull dereferenceable(32) %4, i64 32)
  %.not748 = icmp eq i32 %bcmp747, 0
  br i1 %.not748, label %1093, label %1095

1093:                                             ; preds = %1090
  %1094 = getelementptr inbounds i8, ptr %1092, i64 32
  %bcmp749 = call i32 @bcmp(ptr noundef nonnull dereferenceable(32) %1094, ptr noundef nonnull dereferenceable(32) %4, i64 32)
  %.not750 = icmp eq i32 %bcmp749, 0
  br i1 %.not750, label %1098, label %1095

1095:                                             ; preds = %1093, %1090
  %1096 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1097 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1096, ptr noundef nonnull @.str.182, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1098:                                             ; preds = %1093, %1079
  %1099 = and i64 %indvars.iv1015, 63
  %1100 = icmp eq i64 %1099, 0
  br i1 %1100, label %1101, label %1105

1101:                                             ; preds = %1098
  %1102 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.183)
  %1103 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1104 = call i32 @fflush(ptr noundef %1103)
  br label %1105

1105:                                             ; preds = %1098, %1101
  %indvars.iv.next1016 = add nuw nsw i64 %indvars.iv1015, 1
  %exitcond1018.not = icmp eq i64 %indvars.iv.next1016, 256
  br i1 %exitcond1018.not, label %1106, label %1047, !llvm.loop !33

1106:                                             ; preds = %1105
  %1107 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.184)
  %1108 = call i32 @fclose(ptr noundef nonnull %1042)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buffer_bloom_file, i8 0, i64 1024, i1 false)
  %1109 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %1110 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) @buffer_bloom_file, i64 noundef 1024, ptr noundef nonnull @.str.185, i64 noundef %1109) #20
  %1111 = call noalias ptr @fopen(ptr noundef nonnull @buffer_bloom_file, ptr noundef nonnull @.str.148)
  %.not675 = icmp eq ptr %1111, null
  br i1 %.not675, label %1182, label %1112

1112:                                             ; preds = %1106
  %1113 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.186, ptr noundef nonnull @buffer_bloom_file)
  %1114 = call i32 @fclose(ptr noundef nonnull %1111)
  br label %1182

1115:                                             ; preds = %1039
  %1116 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %1117 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) @buffer_bloom_file, i64 noundef 1024, ptr noundef nonnull @.str.185, i64 noundef %1116) #20
  %1118 = call noalias ptr @fopen(ptr noundef nonnull @buffer_bloom_file, ptr noundef nonnull @.str.148)
  %.not669 = icmp eq ptr %1118, null
  br i1 %.not669, label %1182, label %1119

1119:                                             ; preds = %1115
  %1120 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.180, ptr noundef nonnull @buffer_bloom_file)
  %1121 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1122 = call i32 @fflush(ptr noundef %1121)
  br label %1123

1123:                                             ; preds = %1119, %1178
  %indvars.iv1019 = phi i64 [ 0, %1119 ], [ %indvars.iv.next1020, %1178 ]
  %1124 = load ptr, ptr @bloom_bP, align 8, !tbaa !5
  %1125 = getelementptr inbounds %struct.bloom, ptr %1124, i64 %indvars.iv1019, i32 9
  %1126 = load ptr, ptr %1125, align 16, !tbaa !32
  %1127 = call i64 @fread(ptr noundef nonnull @oldbloom_bP, i64 noundef 176, i64 noundef 1, ptr noundef nonnull %1118)
  %1128 = and i64 %1127, 4294967295
  %.not670 = icmp eq i64 %1128, 1
  br i1 %.not670, label %1132, label %1129

1129:                                             ; preds = %1123
  %1130 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1131 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1130, ptr noundef nonnull @.str.181, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1132:                                             ; preds = %1123
  %1133 = load ptr, ptr @bloom_bP, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.bloom, ptr %1133, i64 %indvars.iv1019
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(80) %1134, ptr noundef nonnull align 16 dereferenceable(80) @oldbloom_bP, i64 80, i1 false)
  %1135 = load ptr, ptr @bloom_bP, align 8, !tbaa !5
  %1136 = getelementptr inbounds %struct.bloom, ptr %1135, i64 %indvars.iv1019, i32 9
  store ptr %1126, ptr %1136, align 16, !tbaa !32
  %1137 = load ptr, ptr @bloom_bP, align 8, !tbaa !5
  %1138 = getelementptr inbounds %struct.bloom, ptr %1137, i64 %indvars.iv1019
  %1139 = getelementptr inbounds i8, ptr %1138, i64 64
  %1140 = load ptr, ptr %1139, align 16, !tbaa !32
  %1141 = getelementptr inbounds i8, ptr %1138, i64 16
  %1142 = load i64, ptr %1141, align 16, !tbaa !22
  %1143 = call i64 @fread(ptr noundef %1140, i64 noundef %1142, i64 noundef 1, ptr noundef nonnull %1118)
  %1144 = and i64 %1143, 4294967295
  %.not671 = icmp eq i64 %1144, 1
  br i1 %.not671, label %1148, label %1145

1145:                                             ; preds = %1132
  %1146 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1147 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1146, ptr noundef nonnull @.str.181, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1148:                                             ; preds = %1132
  %1149 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.checksumsha256, ptr %1149, i64 %indvars.iv1019
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %1150, ptr noundef nonnull align 16 dereferenceable(32) getelementptr inbounds (i8, ptr @oldbloom_bP, i64 64), i64 32, i1 false)
  %1151 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !5
  %1152 = getelementptr inbounds %struct.checksumsha256, ptr %1151, i64 %indvars.iv1019, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %1152, ptr noundef nonnull align 16 dereferenceable(32) getelementptr inbounds (i8, ptr @oldbloom_bP, i64 96), i64 32, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %4, i8 0, i64 32, i1 false)
  %1153 = load i32, ptr @FLAGSKIPCHECKSUM, align 4, !tbaa !9
  %1154 = icmp eq i32 %1153, 0
  br i1 %1154, label %1155, label %1171

1155:                                             ; preds = %1148
  %1156 = load ptr, ptr @bloom_bP, align 8, !tbaa !5
  %1157 = getelementptr inbounds %struct.bloom, ptr %1156, i64 %indvars.iv1019
  %1158 = getelementptr inbounds i8, ptr %1157, i64 64
  %1159 = load ptr, ptr %1158, align 16, !tbaa !32
  %1160 = getelementptr inbounds i8, ptr %1157, i64 16
  %1161 = load i64, ptr %1160, align 16, !tbaa !22
  %1162 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %1159, i64 noundef %1161, ptr noundef nonnull %4)
          to label %1163 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

1163:                                             ; preds = %1155
  %1164 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !5
  %1165 = getelementptr inbounds %struct.checksumsha256, ptr %1164, i64 %indvars.iv1019
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(32) %1165, ptr noundef nonnull dereferenceable(32) %4, i64 32)
  %.not672 = icmp eq i32 %bcmp, 0
  br i1 %.not672, label %1166, label %1168

1166:                                             ; preds = %1163
  %1167 = getelementptr inbounds i8, ptr %1165, i64 32
  %bcmp673 = call i32 @bcmp(ptr noundef nonnull dereferenceable(32) %1167, ptr noundef nonnull dereferenceable(32) %4, i64 32)
  %.not674 = icmp eq i32 %bcmp673, 0
  br i1 %.not674, label %1171, label %1168

1168:                                             ; preds = %1166, %1163
  %1169 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1170 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1169, ptr noundef nonnull @.str.182, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1171:                                             ; preds = %1166, %1148
  %1172 = and i64 %indvars.iv1019, 31
  %1173 = icmp eq i64 %1172, 0
  br i1 %1173, label %1174, label %1178

1174:                                             ; preds = %1171
  %1175 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.183)
  %1176 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1177 = call i32 @fflush(ptr noundef %1176)
  br label %1178

1178:                                             ; preds = %1171, %1174
  %indvars.iv.next1020 = add nuw nsw i64 %indvars.iv1019, 1
  %exitcond1022.not = icmp eq i64 %indvars.iv.next1020, 256
  br i1 %exitcond1022.not, label %1179, label %1123, !llvm.loop !34

1179:                                             ; preds = %1178
  %1180 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.184)
  %1181 = call i32 @fclose(ptr noundef nonnull %1118)
  store i32 1, ptr @FLAGUPDATEFILE1, align 4, !tbaa !9
  br label %1182

1182:                                             ; preds = %1115, %1106, %1112, %1179
  %.sink1163 = phi i32 [ 1, %1179 ], [ 1, %1112 ], [ 1, %1106 ], [ 0, %1115 ]
  store i32 %.sink1163, ptr @FLAGREADEDFILE1, align 4, !tbaa !9
  %1183 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %1184 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) @buffer_bloom_file, i64 noundef 1024, ptr noundef nonnull @.str.187, i64 noundef %1183) #20
  %1185 = call noalias ptr @fopen(ptr noundef nonnull @buffer_bloom_file, ptr noundef nonnull @.str.148)
  %.not676 = icmp eq ptr %1185, null
  br i1 %.not676, label %1265, label %1186

1186:                                             ; preds = %1182
  %1187 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.180, ptr noundef nonnull @buffer_bloom_file)
  %1188 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1189 = call i32 @fflush(ptr noundef %1188)
  br label %1190

1190:                                             ; preds = %1186, %1248
  %indvars.iv1023 = phi i64 [ 0, %1186 ], [ %indvars.iv.next1024, %1248 ]
  %1191 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.bloom, ptr %1191, i64 %indvars.iv1023
  %1193 = getelementptr inbounds i8, ptr %1192, i64 64
  %1194 = load ptr, ptr %1193, align 16, !tbaa !32
  %1195 = call i64 @fread(ptr noundef %1192, i64 noundef 80, i64 noundef 1, ptr noundef nonnull %1185)
  %1196 = and i64 %1195, 4294967295
  %.not737 = icmp eq i64 %1196, 1
  br i1 %.not737, label %1200, label %1197

1197:                                             ; preds = %1190
  %1198 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1199 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1198, ptr noundef nonnull @.str.181, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1200:                                             ; preds = %1190
  %1201 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !5
  %1202 = getelementptr inbounds %struct.bloom, ptr %1201, i64 %indvars.iv1023, i32 9
  store ptr %1194, ptr %1202, align 16, !tbaa !32
  %1203 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !5
  %1204 = getelementptr inbounds %struct.bloom, ptr %1203, i64 %indvars.iv1023
  %1205 = getelementptr inbounds i8, ptr %1204, i64 64
  %1206 = load ptr, ptr %1205, align 16, !tbaa !32
  %1207 = getelementptr inbounds i8, ptr %1204, i64 16
  %1208 = load i64, ptr %1207, align 16, !tbaa !22
  %1209 = call i64 @fread(ptr noundef %1206, i64 noundef %1208, i64 noundef 1, ptr noundef nonnull %1185)
  %1210 = and i64 %1209, 4294967295
  %.not738 = icmp eq i64 %1210, 1
  br i1 %.not738, label %1214, label %1211

1211:                                             ; preds = %1200
  %1212 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1213 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1212, ptr noundef nonnull @.str.181, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1214:                                             ; preds = %1200
  %1215 = load ptr, ptr @bloom_bPx2nd_checksums, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.checksumsha256, ptr %1215, i64 %indvars.iv1023
  %1217 = call i64 @fread(ptr noundef %1216, i64 noundef 64, i64 noundef 1, ptr noundef nonnull %1185)
  %1218 = and i64 %1217, 4294967295
  %.not739 = icmp eq i64 %1218, 1
  br i1 %.not739, label %1222, label %1219

1219:                                             ; preds = %1214
  %1220 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1221 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1220, ptr noundef nonnull @.str.181, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1222:                                             ; preds = %1214
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %4, i8 0, i64 32, i1 false)
  %1223 = load i32, ptr @FLAGSKIPCHECKSUM, align 4, !tbaa !9
  %1224 = icmp eq i32 %1223, 0
  br i1 %1224, label %1225, label %1241

1225:                                             ; preds = %1222
  %1226 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !5
  %1227 = getelementptr inbounds %struct.bloom, ptr %1226, i64 %indvars.iv1023
  %1228 = getelementptr inbounds i8, ptr %1227, i64 64
  %1229 = load ptr, ptr %1228, align 16, !tbaa !32
  %1230 = getelementptr inbounds i8, ptr %1227, i64 16
  %1231 = load i64, ptr %1230, align 16, !tbaa !22
  %1232 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %1229, i64 noundef %1231, ptr noundef nonnull %4)
          to label %1233 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

1233:                                             ; preds = %1225
  %1234 = load ptr, ptr @bloom_bPx2nd_checksums, align 8, !tbaa !5
  %1235 = getelementptr inbounds %struct.checksumsha256, ptr %1234, i64 %indvars.iv1023
  %bcmp740 = call i32 @bcmp(ptr noundef nonnull dereferenceable(32) %1235, ptr noundef nonnull dereferenceable(32) %4, i64 32)
  %.not741 = icmp eq i32 %bcmp740, 0
  br i1 %.not741, label %1236, label %1238

1236:                                             ; preds = %1233
  %1237 = getelementptr inbounds i8, ptr %1235, i64 32
  %bcmp742 = call i32 @bcmp(ptr noundef nonnull dereferenceable(32) %1237, ptr noundef nonnull dereferenceable(32) %4, i64 32)
  %.not743 = icmp eq i32 %bcmp742, 0
  br i1 %.not743, label %1241, label %1238

1238:                                             ; preds = %1236, %1233
  %1239 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1240 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1239, ptr noundef nonnull @.str.182, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1241:                                             ; preds = %1236, %1222
  %1242 = and i64 %indvars.iv1023, 63
  %1243 = icmp eq i64 %1242, 0
  br i1 %1243, label %1244, label %1248

1244:                                             ; preds = %1241
  %1245 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.183)
  %1246 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1247 = call i32 @fflush(ptr noundef %1246)
  br label %1248

1248:                                             ; preds = %1241, %1244
  %indvars.iv.next1024 = add nuw nsw i64 %indvars.iv1023, 1
  %exitcond1026.not = icmp eq i64 %indvars.iv.next1024, 256
  br i1 %exitcond1026.not, label %1249, label %1190, !llvm.loop !35

1249:                                             ; preds = %1248
  %1250 = call i32 @fclose(ptr noundef nonnull %1185)
  %1251 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.184)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buffer_bloom_file, i8 0, i64 1024, i1 false)
  %1252 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %1253 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) @buffer_bloom_file, i64 noundef 1024, ptr noundef nonnull @.str.188, i64 noundef %1252) #20
  %1254 = call noalias ptr @fopen(ptr noundef nonnull @buffer_bloom_file, ptr noundef nonnull @.str.148)
  %.not678 = icmp eq ptr %1254, null
  br i1 %.not678, label %1258, label %1255

1255:                                             ; preds = %1249
  %1256 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.186, ptr noundef nonnull @buffer_bloom_file)
  %1257 = call i32 @fclose(ptr noundef nonnull %1254)
  br label %1258

1258:                                             ; preds = %1255, %1249
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buffer_bloom_file, i8 0, i64 1024, i1 false)
  %1259 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %1260 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) @buffer_bloom_file, i64 noundef 1024, ptr noundef nonnull @.str.189, i64 noundef %1259) #20
  %1261 = call noalias ptr @fopen(ptr noundef nonnull @buffer_bloom_file, ptr noundef nonnull @.str.148)
  %.not679 = icmp eq ptr %1261, null
  br i1 %.not679, label %1265, label %1262

1262:                                             ; preds = %1258
  %1263 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.186, ptr noundef nonnull @buffer_bloom_file)
  %1264 = call i32 @fclose(ptr noundef nonnull %1261)
  br label %1265

1265:                                             ; preds = %1182, %1258, %1262
  %storemerge677 = phi i32 [ 1, %1262 ], [ 1, %1258 ], [ 0, %1182 ]
  store i32 %storemerge677, ptr @FLAGREADEDFILE2, align 4, !tbaa !9
  %1266 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %1267 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) @buffer_bloom_file, i64 noundef 1024, ptr noundef nonnull @.str.190, i64 noundef %1266) #20
  %1268 = call noalias ptr @fopen(ptr noundef nonnull @buffer_bloom_file, ptr noundef nonnull @.str.148)
  %.not680 = icmp eq ptr %1268, null
  br i1 %.not680, label %1298, label %1269

1269:                                             ; preds = %1265
  %1270 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.191, ptr noundef nonnull @buffer_bloom_file)
  %1271 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1272 = call i32 @fflush(ptr noundef %1271)
  %1273 = load ptr, ptr @bPtable, align 8, !tbaa !5
  %1274 = load i64, ptr @bytes, align 8, !tbaa !17
  %1275 = call i64 @fread(ptr noundef %1273, i64 noundef %1274, i64 noundef 1, ptr noundef nonnull %1268)
  %.not682 = icmp eq i64 %1275, 1
  br i1 %.not682, label %1279, label %1276

1276:                                             ; preds = %1269
  %1277 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1278 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1277, ptr noundef nonnull @.str.181, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1279:                                             ; preds = %1269
  %1280 = call i64 @fread(ptr noundef nonnull @checksum, i64 noundef 32, i64 noundef 1, ptr noundef nonnull %1268)
  %.not683 = icmp eq i64 %1280, 1
  br i1 %.not683, label %1284, label %1281

1281:                                             ; preds = %1279
  %1282 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1283 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1282, ptr noundef nonnull @.str.181, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1284:                                             ; preds = %1279
  %1285 = load i32, ptr @FLAGSKIPCHECKSUM, align 4, !tbaa !9
  %1286 = icmp eq i32 %1285, 0
  br i1 %1286, label %1287, label %1295

1287:                                             ; preds = %1284
  %1288 = load ptr, ptr @bPtable, align 8, !tbaa !5
  %1289 = load i64, ptr @bytes, align 8, !tbaa !17
  %1290 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %1288, i64 noundef %1289, ptr noundef nonnull @checksum_backup)
          to label %1291 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

1291:                                             ; preds = %1287
  %bcmp684 = call i32 @bcmp(ptr noundef nonnull dereferenceable(32) @checksum, ptr noundef nonnull dereferenceable(32) @checksum_backup, i64 32)
  %.not685 = icmp eq i32 %bcmp684, 0
  br i1 %.not685, label %1295, label %1292

1292:                                             ; preds = %1291
  %1293 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1294 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1293, ptr noundef nonnull @.str.182, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1295:                                             ; preds = %1291, %1284
  %1296 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.192)
  %1297 = call i32 @fclose(ptr noundef nonnull %1268)
  br label %1298

1298:                                             ; preds = %1265, %1295
  %storemerge681 = phi i32 [ 1, %1295 ], [ 0, %1265 ]
  store i32 %storemerge681, ptr @FLAGREADEDFILE3, align 4, !tbaa !9
  %1299 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %1300 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) @buffer_bloom_file, i64 noundef 1024, ptr noundef nonnull @.str.193, i64 noundef %1299) #20
  %1301 = call noalias ptr @fopen(ptr noundef nonnull @buffer_bloom_file, ptr noundef nonnull @.str.148)
  %.not686 = icmp eq ptr %1301, null
  br i1 %.not686, label %1368, label %1302

1302:                                             ; preds = %1298
  %1303 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.180, ptr noundef nonnull @buffer_bloom_file)
  %1304 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1305 = call i32 @fflush(ptr noundef %1304)
  br label %1306

1306:                                             ; preds = %1302, %1364
  %indvars.iv1027 = phi i64 [ 0, %1302 ], [ %indvars.iv.next1028, %1364 ]
  %1307 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !5
  %1308 = getelementptr inbounds %struct.bloom, ptr %1307, i64 %indvars.iv1027
  %1309 = getelementptr inbounds i8, ptr %1308, i64 64
  %1310 = load ptr, ptr %1309, align 16, !tbaa !32
  %1311 = call i64 @fread(ptr noundef %1308, i64 noundef 80, i64 noundef 1, ptr noundef nonnull %1301)
  %1312 = and i64 %1311, 4294967295
  %.not730 = icmp eq i64 %1312, 1
  br i1 %.not730, label %1316, label %1313

1313:                                             ; preds = %1306
  %1314 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1315 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1314, ptr noundef nonnull @.str.181, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1316:                                             ; preds = %1306
  %1317 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !5
  %1318 = getelementptr inbounds %struct.bloom, ptr %1317, i64 %indvars.iv1027, i32 9
  store ptr %1310, ptr %1318, align 16, !tbaa !32
  %1319 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !5
  %1320 = getelementptr inbounds %struct.bloom, ptr %1319, i64 %indvars.iv1027
  %1321 = getelementptr inbounds i8, ptr %1320, i64 64
  %1322 = load ptr, ptr %1321, align 16, !tbaa !32
  %1323 = getelementptr inbounds i8, ptr %1320, i64 16
  %1324 = load i64, ptr %1323, align 16, !tbaa !22
  %1325 = call i64 @fread(ptr noundef %1322, i64 noundef %1324, i64 noundef 1, ptr noundef nonnull %1301)
  %1326 = and i64 %1325, 4294967295
  %.not731 = icmp eq i64 %1326, 1
  br i1 %.not731, label %1330, label %1327

1327:                                             ; preds = %1316
  %1328 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1329 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1328, ptr noundef nonnull @.str.181, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1330:                                             ; preds = %1316
  %1331 = load ptr, ptr @bloom_bPx3rd_checksums, align 8, !tbaa !5
  %1332 = getelementptr inbounds %struct.checksumsha256, ptr %1331, i64 %indvars.iv1027
  %1333 = call i64 @fread(ptr noundef %1332, i64 noundef 64, i64 noundef 1, ptr noundef nonnull %1301)
  %1334 = and i64 %1333, 4294967295
  %.not732 = icmp eq i64 %1334, 1
  br i1 %.not732, label %1338, label %1335

1335:                                             ; preds = %1330
  %1336 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1337 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1336, ptr noundef nonnull @.str.181, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1338:                                             ; preds = %1330
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %4, i8 0, i64 32, i1 false)
  %1339 = load i32, ptr @FLAGSKIPCHECKSUM, align 4, !tbaa !9
  %1340 = icmp eq i32 %1339, 0
  br i1 %1340, label %1341, label %1357

1341:                                             ; preds = %1338
  %1342 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !5
  %1343 = getelementptr inbounds %struct.bloom, ptr %1342, i64 %indvars.iv1027
  %1344 = getelementptr inbounds i8, ptr %1343, i64 64
  %1345 = load ptr, ptr %1344, align 16, !tbaa !32
  %1346 = getelementptr inbounds i8, ptr %1343, i64 16
  %1347 = load i64, ptr %1346, align 16, !tbaa !22
  %1348 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %1345, i64 noundef %1347, ptr noundef nonnull %4)
          to label %1349 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit

1349:                                             ; preds = %1341
  %1350 = load ptr, ptr @bloom_bPx3rd_checksums, align 8, !tbaa !5
  %1351 = getelementptr inbounds %struct.checksumsha256, ptr %1350, i64 %indvars.iv1027
  %bcmp733 = call i32 @bcmp(ptr noundef nonnull dereferenceable(32) %1351, ptr noundef nonnull dereferenceable(32) %4, i64 32)
  %.not734 = icmp eq i32 %bcmp733, 0
  br i1 %.not734, label %1352, label %1354

1352:                                             ; preds = %1349
  %1353 = getelementptr inbounds i8, ptr %1351, i64 32
  %bcmp735 = call i32 @bcmp(ptr noundef nonnull dereferenceable(32) %1353, ptr noundef nonnull dereferenceable(32) %4, i64 32)
  %.not736 = icmp eq i32 %bcmp735, 0
  br i1 %.not736, label %1357, label %1354

1354:                                             ; preds = %1352, %1349
  %1355 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1356 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1355, ptr noundef nonnull @.str.182, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1357:                                             ; preds = %1352, %1338
  %1358 = and i64 %indvars.iv1027, 63
  %1359 = icmp eq i64 %1358, 0
  br i1 %1359, label %1360, label %1364

1360:                                             ; preds = %1357
  %1361 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.183)
  %1362 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1363 = call i32 @fflush(ptr noundef %1362)
  br label %1364

1364:                                             ; preds = %1357, %1360
  %indvars.iv.next1028 = add nuw nsw i64 %indvars.iv1027, 1
  %exitcond1030.not = icmp eq i64 %indvars.iv.next1028, 256
  br i1 %exitcond1030.not, label %1365, label %1306, !llvm.loop !36

1365:                                             ; preds = %1364
  %1366 = call i32 @fclose(ptr noundef nonnull %1301)
  %1367 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.184)
  store i32 1, ptr @FLAGREADEDFILE4, align 4, !tbaa !9
  br label %1369

1368:                                             ; preds = %1298
  store i32 0, ptr @FLAGREADEDFILE4, align 4, !tbaa !9
  br label %1369

1369:                                             ; preds = %._crit_edge1095, %1365, %1368
  %1370 = phi i32 [ %.pre1096, %._crit_edge1095 ], [ 1, %1365 ], [ 0, %1368 ]
  %1371 = load i32, ptr @FLAGREADEDFILE1, align 4, !tbaa !9
  %1372 = icmp ne i32 %1371, 0
  %1373 = load i32, ptr @FLAGREADEDFILE2, align 4
  %1374 = icmp ne i32 %1373, 0
  %or.cond23 = select i1 %1372, i1 %1374, i1 false
  %1375 = load i32, ptr @FLAGREADEDFILE3, align 4
  %1376 = icmp ne i32 %1375, 0
  %or.cond25 = select i1 %or.cond23, i1 %1376, i1 false
  %1377 = icmp ne i32 %1370, 0
  %or.cond27 = select i1 %or.cond25, i1 %1377, i1 false
  br i1 %or.cond27, label %1625, label %1378

1378:                                             ; preds = %1369
  %1379 = icmp eq i32 %1371, 1
  br i1 %1379, label %1380, label %1501

1380:                                             ; preds = %1378
  %1381 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.194)
  store i64 0, ptr @FINISHED_THREADS_COUNTER, align 8, !tbaa !17
  store i64 0, ptr @FINISHED_THREADS_BP, align 8, !tbaa !17
  store i64 0, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  store i64 0, ptr @THREADCOUNTER, align 8, !tbaa !17
  %1382 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !9
  %1383 = zext i32 %1382 to i64
  %1384 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %.not693 = icmp ugt i64 %1384, %1383
  br i1 %.not693, label %1387, label %1385

1385:                                             ; preds = %1380
  %1386 = trunc nuw i64 %1384 to i32
  store i32 %1386, ptr @THREADBPWORKLOAD, align 4, !tbaa !9
  br label %1387

1387:                                             ; preds = %1385, %1380
  %.pre-phi = phi i64 [ %1384, %1385 ], [ %1383, %1380 ]
  %1388 = udiv i64 %1384, %.pre-phi
  %1389 = urem i64 %1384, %.pre-phi
  %.not694 = icmp ne i64 %1389, 0
  %1390 = zext i1 %.not694 to i64
  %spec.select781 = add i64 %1388, %1390
  store i64 %spec.select781, ptr @THREADCYCLES, align 8, !tbaa !17
  %1391 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %1392 = uitofp i64 %1391 to double
  %1393 = fdiv double 0.000000e+00, %1392
  %1394 = fmul double %1393, 1.000000e+02
  %1395 = fptosi double %1394 to i32
  %1396 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.195, i64 noundef 0, i64 noundef %1391, i32 noundef %1395)
  %1397 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1398 = call i32 @fflush(ptr noundef %1397)
  %1399 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1400 = sext i32 %1399 to i64
  %1401 = call noalias ptr @calloc(i64 noundef %1400, i64 noundef 8) #27
  store ptr %1401, ptr @tid, align 8, !tbaa !5
  %1402 = call noalias ptr @calloc(i64 noundef %1400, i64 noundef 40) #27
  store ptr %1402, ptr @bPload_mutex, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1402, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.196, i32 noundef 1649)
  %1403 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1404 = sext i32 %1403 to i64
  %1405 = call noalias ptr @calloc(i64 noundef %1404, i64 noundef 48) #27
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1405, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.197, i32 noundef 1651)
  %1406 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1407 = sext i32 %1406 to i64
  %1408 = call noalias ptr @calloc(i64 noundef %1407, i64 noundef 1) #27
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1408, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.198, i32 noundef 1653)
  %1409 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1410 = sext i32 %1409 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %1408, i8 1, i64 %1410, i1 false)
  %1411 = icmp sgt i32 %1409, 0
  br i1 %1411, label %.lr.ph924, label %.preheader821.preheader

.lr.ph924:                                        ; preds = %1387, %.lr.ph924
  %indvars.iv1040 = phi i64 [ %indvars.iv.next1041, %.lr.ph924 ], [ 0, %1387 ]
  %1412 = load ptr, ptr @bPload_mutex, align 8, !tbaa !5
  %1413 = getelementptr inbounds %union.pthread_mutex_t, ptr %1412, i64 %indvars.iv1040
  %1414 = call i32 @pthread_mutex_init(ptr noundef %1413, ptr noundef null) #20
  %indvars.iv.next1041 = add nuw nsw i64 %indvars.iv1040, 1
  %1415 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1416 = sext i32 %1415 to i64
  %1417 = icmp slt i64 %indvars.iv.next1041, %1416
  br i1 %1417, label %.lr.ph924, label %.preheader821.preheader, !llvm.loop !37

.preheader821.preheader:                          ; preds = %.lr.ph924, %1387
  %.ph = phi i32 [ %1409, %1387 ], [ %1415, %.lr.ph924 ]
  br label %.preheader821

.preheader821:                                    ; preds = %.preheader821.preheader, %._crit_edge936
  %1418 = phi i32 [ %1497, %._crit_edge936 ], [ %.ph, %.preheader821.preheader ]
  %.0589 = phi i64 [ %.1590.lcssa, %._crit_edge936 ], [ 0, %.preheader821.preheader ]
  %.2545 = phi i32 [ %.3546.lcssa, %._crit_edge936 ], [ 0, %.preheader821.preheader ]
  %1419 = icmp sgt i32 %1418, 0
  %.not696925 = icmp eq i32 %.2545, 0
  %1420 = select i1 %1419, i1 %.not696925, i1 false
  br i1 %1420, label %.lr.ph929, label %._crit_edge930

.lr.ph929:                                        ; preds = %.preheader821, %1453
  %1421 = phi i32 [ %1454, %1453 ], [ %1418, %.preheader821 ]
  %1422 = phi i32 [ %1455, %1453 ], [ %1418, %.preheader821 ]
  %indvars.iv1043 = phi i64 [ %indvars.iv.next1044, %1453 ], [ 0, %.preheader821 ]
  %.1590926 = phi i64 [ %.2591, %1453 ], [ %.0589, %.preheader821 ]
  %1423 = getelementptr inbounds i8, ptr %1408, i64 %indvars.iv1043
  %1424 = load i8, ptr %1423, align 1, !tbaa !11
  %1425 = icmp eq i8 %1424, 0
  br i1 %1425, label %1453, label %1426

1426:                                             ; preds = %.lr.ph929
  store i8 0, ptr %1423, align 1, !tbaa !11
  %1427 = getelementptr inbounds %struct.bPload, ptr %1405, i64 %indvars.iv1043
  %1428 = getelementptr inbounds i8, ptr %1427, i64 8
  store i64 %.1590926, ptr %1428, align 8, !tbaa !38
  %1429 = trunc nuw nsw i64 %indvars.iv1043 to i32
  store i32 %1429, ptr %1427, align 8, !tbaa !40
  %1430 = getelementptr inbounds i8, ptr %1427, i64 44
  store i32 0, ptr %1430, align 4, !tbaa !41
  %1431 = load i64, ptr @THREADCOUNTER, align 8, !tbaa !17
  %1432 = load i64, ptr @THREADCYCLES, align 8, !tbaa !17
  %1433 = add i64 %1432, -1
  %1434 = icmp uge i64 %1431, %1433
  %1435 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !9
  %1436 = zext i32 %1435 to i64
  %1437 = select i1 %1434, i64 %1389, i64 0
  %.sink1089.v = add i64 %.1590926, %1437
  %.sink1089 = add i64 %.sink1089.v, %1436
  %1438 = select i1 %1434, i64 %1389, i64 0
  %.sink = add nuw nsw i64 %1438, %1436
  %.4547 = zext i1 %1434 to i32
  %1439 = getelementptr inbounds i8, ptr %1427, i64 16
  store i64 %.sink1089, ptr %1439, align 8
  %1440 = getelementptr inbounds i8, ptr %1427, i64 32
  store i64 %.sink, ptr %1440, align 8
  %1441 = load ptr, ptr @tid, align 8, !tbaa !5
  %1442 = getelementptr inbounds i64, ptr %1441, i64 %indvars.iv1043
  %1443 = call i32 @pthread_create(ptr noundef %1442, ptr noundef null, ptr noundef nonnull @_Z21thread_bPload_2bloomsPv, ptr noundef nonnull %1427) #20
  %1444 = load ptr, ptr @tid, align 8, !tbaa !5
  %1445 = getelementptr inbounds i64, ptr %1444, i64 %indvars.iv1043
  %1446 = load i64, ptr %1445, align 8, !tbaa !17
  %1447 = call i32 @pthread_detach(i64 noundef %1446) #20
  %1448 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !9
  %1449 = zext i32 %1448 to i64
  %1450 = add i64 %.1590926, %1449
  %1451 = load i64, ptr @THREADCOUNTER, align 8, !tbaa !17
  %1452 = add i64 %1451, 1
  store i64 %1452, ptr @THREADCOUNTER, align 8, !tbaa !17
  %.pre1099 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  br label %1453

1453:                                             ; preds = %.lr.ph929, %1426
  %1454 = phi i32 [ %1421, %.lr.ph929 ], [ %.pre1099, %1426 ]
  %1455 = phi i32 [ %1422, %.lr.ph929 ], [ %.pre1099, %1426 ]
  %.2591 = phi i64 [ %.1590926, %.lr.ph929 ], [ %1450, %1426 ]
  %.5548 = phi i32 [ 0, %.lr.ph929 ], [ %.4547, %1426 ]
  %indvars.iv.next1044 = add nuw nsw i64 %indvars.iv1043, 1
  %1456 = sext i32 %1455 to i64
  %1457 = icmp slt i64 %indvars.iv.next1044, %1456
  %.not696 = icmp eq i32 %.5548, 0
  %1458 = and i1 %1457, %.not696
  br i1 %1458, label %.lr.ph929, label %._crit_edge930, !llvm.loop !42

._crit_edge930:                                   ; preds = %1453, %.preheader821
  %1459 = phi i32 [ %1418, %.preheader821 ], [ %1454, %1453 ]
  %.1590.lcssa = phi i64 [ %.0589, %.preheader821 ], [ %.2591, %1453 ]
  %.3546.lcssa = phi i32 [ %.2545, %.preheader821 ], [ %.5548, %1453 ]
  %1460 = load i64, ptr @OLDFINISHED_ITEMS, align 8, !tbaa !17
  %1461 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %.not697 = icmp eq i64 %1460, %1461
  br i1 %.not697, label %1473, label %1462

1462:                                             ; preds = %._crit_edge930
  %1463 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %1464 = uitofp i64 %1461 to double
  %1465 = uitofp i64 %1463 to double
  %1466 = fdiv double %1464, %1465
  %1467 = fmul double %1466, 1.000000e+02
  %1468 = fptosi double %1467 to i32
  %1469 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.195, i64 noundef %1461, i64 noundef %1463, i32 noundef %1468)
  %1470 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1471 = call i32 @fflush(ptr noundef %1470)
  %1472 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  store i64 %1472, ptr @OLDFINISHED_ITEMS, align 8, !tbaa !17
  %.pre1100 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  br label %1473

1473:                                             ; preds = %1462, %._crit_edge930
  %1474 = phi i32 [ %.pre1100, %1462 ], [ %1459, %._crit_edge930 ]
  %1475 = icmp sgt i32 %1474, 0
  br i1 %1475, label %.lr.ph935, label %._crit_edge936

.lr.ph935:                                        ; preds = %1473, %1493
  %indvars.iv1046 = phi i64 [ %indvars.iv.next1047, %1493 ], [ 0, %1473 ]
  %1476 = load ptr, ptr @bPload_mutex, align 8, !tbaa !5
  %1477 = getelementptr inbounds %union.pthread_mutex_t, ptr %1476, i64 %indvars.iv1046
  %1478 = call i32 @pthread_mutex_lock(ptr noundef %1477) #20
  %1479 = getelementptr inbounds %struct.bPload, ptr %1405, i64 %indvars.iv1046
  %1480 = getelementptr inbounds i8, ptr %1479, i64 44
  %1481 = load i32, ptr %1480, align 4, !tbaa !41
  %1482 = load ptr, ptr @bPload_mutex, align 8, !tbaa !5
  %1483 = getelementptr inbounds %union.pthread_mutex_t, ptr %1482, i64 %indvars.iv1046
  %1484 = call i32 @pthread_mutex_unlock(ptr noundef %1483) #20
  %.not698 = icmp eq i32 %1481, 0
  br i1 %.not698, label %1493, label %1485

1485:                                             ; preds = %.lr.ph935
  store i32 0, ptr %1480, align 4, !tbaa !41
  %1486 = getelementptr inbounds i8, ptr %1408, i64 %indvars.iv1046
  store i8 1, ptr %1486, align 1, !tbaa !11
  %1487 = getelementptr inbounds i8, ptr %1479, i64 32
  %1488 = load i64, ptr %1487, align 8, !tbaa !43
  %1489 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %1490 = add i64 %1489, %1488
  store i64 %1490, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %1491 = load i64, ptr @FINISHED_THREADS_COUNTER, align 8, !tbaa !17
  %1492 = add i64 %1491, 1
  store i64 %1492, ptr @FINISHED_THREADS_COUNTER, align 8, !tbaa !17
  br label %1493

1493:                                             ; preds = %.lr.ph935, %1485
  %indvars.iv.next1047 = add nuw nsw i64 %indvars.iv1046, 1
  %1494 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1495 = sext i32 %1494 to i64
  %1496 = icmp slt i64 %indvars.iv.next1047, %1495
  br i1 %1496, label %.lr.ph935, label %._crit_edge936, !llvm.loop !44

._crit_edge936:                                   ; preds = %1493, %1473
  %1497 = phi i32 [ %1474, %1473 ], [ %1494, %1493 ]
  %1498 = load i64, ptr @FINISHED_THREADS_COUNTER, align 8, !tbaa !17
  %1499 = load i64, ptr @THREADCYCLES, align 8, !tbaa !17
  %1500 = icmp ult i64 %1498, %1499
  br i1 %1500, label %.preheader821, label %.sink.split1164, !llvm.loop !45

1501:                                             ; preds = %1378
  store i64 0, ptr @FINISHED_THREADS_COUNTER, align 8, !tbaa !17
  store i64 0, ptr @FINISHED_THREADS_BP, align 8, !tbaa !17
  store i64 0, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  store i64 0, ptr @THREADCOUNTER, align 8, !tbaa !17
  %1502 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !9
  %1503 = zext i32 %1502 to i64
  %1504 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %.not687 = icmp ugt i64 %1504, %1503
  br i1 %.not687, label %1507, label %1505

1505:                                             ; preds = %1501
  %1506 = trunc nuw i64 %1504 to i32
  store i32 %1506, ptr @THREADBPWORKLOAD, align 4, !tbaa !9
  br label %1507

1507:                                             ; preds = %1505, %1501
  %.pre-phi1106 = phi i64 [ %1504, %1505 ], [ %1503, %1501 ]
  %1508 = udiv i64 %1504, %.pre-phi1106
  %1509 = urem i64 %1504, %.pre-phi1106
  %.not688 = icmp ne i64 %1509, 0
  %1510 = zext i1 %.not688 to i64
  %spec.select782 = add i64 %1508, %1510
  store i64 %spec.select782, ptr @THREADCYCLES, align 8, !tbaa !17
  %1511 = uitofp i64 %1504 to double
  %1512 = fdiv double 0.000000e+00, %1511
  %1513 = fmul double %1512, 1.000000e+02
  %1514 = fptosi double %1513 to i32
  %1515 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.195, i64 noundef 0, i64 noundef %1504, i32 noundef %1514)
  %1516 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1517 = call i32 @fflush(ptr noundef %1516)
  %1518 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1519 = sext i32 %1518 to i64
  %1520 = call noalias ptr @calloc(i64 noundef %1519, i64 noundef 8) #27
  store ptr %1520, ptr @tid, align 8, !tbaa !5
  %1521 = call noalias ptr @calloc(i64 noundef %1519, i64 noundef 40) #27
  store ptr %1521, ptr @bPload_mutex, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1520, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.200, i32 noundef 1762)
  %1522 = load ptr, ptr @bPload_mutex, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1522, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.196, i32 noundef 1763)
  %1523 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1524 = sext i32 %1523 to i64
  %1525 = call noalias ptr @calloc(i64 noundef %1524, i64 noundef 48) #27
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1525, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.197, i32 noundef 1766)
  %1526 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1527 = sext i32 %1526 to i64
  %1528 = call noalias ptr @calloc(i64 noundef %1527, i64 noundef 1) #27
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1528, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.198, i32 noundef 1768)
  %1529 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1530 = sext i32 %1529 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %1528, i8 1, i64 %1530, i1 false)
  %1531 = icmp sgt i32 %1529, 0
  br i1 %1531, label %.lr.ph910, label %.preheader822.preheader

.lr.ph910:                                        ; preds = %1507, %.lr.ph910
  %indvars.iv1031 = phi i64 [ %indvars.iv.next1032, %.lr.ph910 ], [ 0, %1507 ]
  %1532 = load ptr, ptr @bPload_mutex, align 8, !tbaa !5
  %1533 = getelementptr inbounds %union.pthread_mutex_t, ptr %1532, i64 %indvars.iv1031
  %1534 = call i32 @pthread_mutex_init(ptr noundef %1533, ptr noundef null) #20
  %indvars.iv.next1032 = add nuw nsw i64 %indvars.iv1031, 1
  %1535 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1536 = sext i32 %1535 to i64
  %1537 = icmp slt i64 %indvars.iv.next1032, %1536
  br i1 %1537, label %.lr.ph910, label %.preheader822.preheader, !llvm.loop !46

.preheader822.preheader:                          ; preds = %.lr.ph910, %1507
  %.ph1227 = phi i32 [ %1529, %1507 ], [ %1535, %.lr.ph910 ]
  br label %.preheader822

.preheader822:                                    ; preds = %.preheader822.preheader, %._crit_edge921
  %1538 = phi i32 [ %1617, %._crit_edge921 ], [ %.ph1227, %.preheader822.preheader ]
  %.3592 = phi i64 [ %.4593.lcssa, %._crit_edge921 ], [ 0, %.preheader822.preheader ]
  %.6549 = phi i32 [ %.7550.lcssa, %._crit_edge921 ], [ 0, %.preheader822.preheader ]
  %1539 = icmp sgt i32 %1538, 0
  %.not690911 = icmp eq i32 %.6549, 0
  %1540 = select i1 %1539, i1 %.not690911, i1 false
  br i1 %1540, label %.lr.ph915, label %._crit_edge916

.lr.ph915:                                        ; preds = %.preheader822, %1573
  %1541 = phi i32 [ %1574, %1573 ], [ %1538, %.preheader822 ]
  %1542 = phi i32 [ %1575, %1573 ], [ %1538, %.preheader822 ]
  %indvars.iv1034 = phi i64 [ %indvars.iv.next1035, %1573 ], [ 0, %.preheader822 ]
  %.4593912 = phi i64 [ %.5594, %1573 ], [ %.3592, %.preheader822 ]
  %1543 = getelementptr inbounds i8, ptr %1528, i64 %indvars.iv1034
  %1544 = load i8, ptr %1543, align 1, !tbaa !11
  %1545 = icmp eq i8 %1544, 0
  br i1 %1545, label %1573, label %1546

1546:                                             ; preds = %.lr.ph915
  store i8 0, ptr %1543, align 1, !tbaa !11
  %1547 = getelementptr inbounds %struct.bPload, ptr %1525, i64 %indvars.iv1034
  %1548 = getelementptr inbounds i8, ptr %1547, i64 8
  store i64 %.4593912, ptr %1548, align 8, !tbaa !38
  %1549 = trunc nuw nsw i64 %indvars.iv1034 to i32
  store i32 %1549, ptr %1547, align 8, !tbaa !40
  %1550 = getelementptr inbounds i8, ptr %1547, i64 44
  store i32 0, ptr %1550, align 4, !tbaa !41
  %1551 = load i64, ptr @THREADCOUNTER, align 8, !tbaa !17
  %1552 = load i64, ptr @THREADCYCLES, align 8, !tbaa !17
  %1553 = add i64 %1552, -1
  %1554 = icmp uge i64 %1551, %1553
  %1555 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !9
  %1556 = zext i32 %1555 to i64
  %1557 = select i1 %1554, i64 %1509, i64 0
  %.sink1091.v = add i64 %.4593912, %1557
  %.sink1091 = add i64 %.sink1091.v, %1556
  %1558 = select i1 %1554, i64 %1509, i64 0
  %.sink1090 = add nuw nsw i64 %1558, %1556
  %.8551 = zext i1 %1554 to i32
  %1559 = getelementptr inbounds i8, ptr %1547, i64 16
  store i64 %.sink1091, ptr %1559, align 8
  %1560 = getelementptr inbounds i8, ptr %1547, i64 32
  store i64 %.sink1090, ptr %1560, align 8
  %1561 = load ptr, ptr @tid, align 8, !tbaa !5
  %1562 = getelementptr inbounds i64, ptr %1561, i64 %indvars.iv1034
  %1563 = call i32 @pthread_create(ptr noundef %1562, ptr noundef null, ptr noundef nonnull @_Z13thread_bPloadPv, ptr noundef nonnull %1547) #20
  %1564 = load ptr, ptr @tid, align 8, !tbaa !5
  %1565 = getelementptr inbounds i64, ptr %1564, i64 %indvars.iv1034
  %1566 = load i64, ptr %1565, align 8, !tbaa !17
  %1567 = call i32 @pthread_detach(i64 noundef %1566) #20
  %1568 = load i32, ptr @THREADBPWORKLOAD, align 4, !tbaa !9
  %1569 = zext i32 %1568 to i64
  %1570 = add i64 %.4593912, %1569
  %1571 = load i64, ptr @THREADCOUNTER, align 8, !tbaa !17
  %1572 = add i64 %1571, 1
  store i64 %1572, ptr @THREADCOUNTER, align 8, !tbaa !17
  %.pre1097 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  br label %1573

1573:                                             ; preds = %.lr.ph915, %1546
  %1574 = phi i32 [ %1541, %.lr.ph915 ], [ %.pre1097, %1546 ]
  %1575 = phi i32 [ %1542, %.lr.ph915 ], [ %.pre1097, %1546 ]
  %.5594 = phi i64 [ %.4593912, %.lr.ph915 ], [ %1570, %1546 ]
  %.9552 = phi i32 [ 0, %.lr.ph915 ], [ %.8551, %1546 ]
  %indvars.iv.next1035 = add nuw nsw i64 %indvars.iv1034, 1
  %1576 = sext i32 %1575 to i64
  %1577 = icmp slt i64 %indvars.iv.next1035, %1576
  %.not690 = icmp eq i32 %.9552, 0
  %1578 = and i1 %1577, %.not690
  br i1 %1578, label %.lr.ph915, label %._crit_edge916, !llvm.loop !47

._crit_edge916:                                   ; preds = %1573, %.preheader822
  %1579 = phi i32 [ %1538, %.preheader822 ], [ %1574, %1573 ]
  %.4593.lcssa = phi i64 [ %.3592, %.preheader822 ], [ %.5594, %1573 ]
  %.7550.lcssa = phi i32 [ %.6549, %.preheader822 ], [ %.9552, %1573 ]
  %1580 = load i64, ptr @OLDFINISHED_ITEMS, align 8, !tbaa !17
  %1581 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %.not691 = icmp eq i64 %1580, %1581
  br i1 %.not691, label %1593, label %1582

1582:                                             ; preds = %._crit_edge916
  %1583 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %1584 = uitofp i64 %1581 to double
  %1585 = uitofp i64 %1583 to double
  %1586 = fdiv double %1584, %1585
  %1587 = fmul double %1586, 1.000000e+02
  %1588 = fptosi double %1587 to i32
  %1589 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.195, i64 noundef %1581, i64 noundef %1583, i32 noundef %1588)
  %1590 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1591 = call i32 @fflush(ptr noundef %1590)
  %1592 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  store i64 %1592, ptr @OLDFINISHED_ITEMS, align 8, !tbaa !17
  %.pre1098 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  br label %1593

1593:                                             ; preds = %1582, %._crit_edge916
  %1594 = phi i32 [ %.pre1098, %1582 ], [ %1579, %._crit_edge916 ]
  %1595 = icmp sgt i32 %1594, 0
  br i1 %1595, label %.lr.ph920, label %._crit_edge921

.lr.ph920:                                        ; preds = %1593, %1613
  %indvars.iv1037 = phi i64 [ %indvars.iv.next1038, %1613 ], [ 0, %1593 ]
  %1596 = load ptr, ptr @bPload_mutex, align 8, !tbaa !5
  %1597 = getelementptr inbounds %union.pthread_mutex_t, ptr %1596, i64 %indvars.iv1037
  %1598 = call i32 @pthread_mutex_lock(ptr noundef %1597) #20
  %1599 = getelementptr inbounds %struct.bPload, ptr %1525, i64 %indvars.iv1037
  %1600 = getelementptr inbounds i8, ptr %1599, i64 44
  %1601 = load i32, ptr %1600, align 4, !tbaa !41
  %1602 = load ptr, ptr @bPload_mutex, align 8, !tbaa !5
  %1603 = getelementptr inbounds %union.pthread_mutex_t, ptr %1602, i64 %indvars.iv1037
  %1604 = call i32 @pthread_mutex_unlock(ptr noundef %1603) #20
  %.not692 = icmp eq i32 %1601, 0
  br i1 %.not692, label %1613, label %1605

1605:                                             ; preds = %.lr.ph920
  store i32 0, ptr %1600, align 4, !tbaa !41
  %1606 = getelementptr inbounds i8, ptr %1528, i64 %indvars.iv1037
  store i8 1, ptr %1606, align 1, !tbaa !11
  %1607 = getelementptr inbounds i8, ptr %1599, i64 32
  %1608 = load i64, ptr %1607, align 8, !tbaa !43
  %1609 = load i64, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %1610 = add i64 %1609, %1608
  store i64 %1610, ptr @FINISHED_ITEMS, align 8, !tbaa !17
  %1611 = load i64, ptr @FINISHED_THREADS_COUNTER, align 8, !tbaa !17
  %1612 = add i64 %1611, 1
  store i64 %1612, ptr @FINISHED_THREADS_COUNTER, align 8, !tbaa !17
  br label %1613

1613:                                             ; preds = %.lr.ph920, %1605
  %indvars.iv.next1038 = add nuw nsw i64 %indvars.iv1037, 1
  %1614 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1615 = sext i32 %1614 to i64
  %1616 = icmp slt i64 %indvars.iv.next1038, %1615
  br i1 %1616, label %.lr.ph920, label %._crit_edge921, !llvm.loop !48

._crit_edge921:                                   ; preds = %1613, %1593
  %1617 = phi i32 [ %1594, %1593 ], [ %1614, %1613 ]
  %1618 = load i64, ptr @FINISHED_THREADS_COUNTER, align 8, !tbaa !17
  %1619 = load i64, ptr @THREADCYCLES, align 8, !tbaa !17
  %1620 = icmp ult i64 %1618, %1619
  br i1 %1620, label %.preheader822, label %.sink.split1164, !llvm.loop !49

.sink.split1164:                                  ; preds = %._crit_edge921, %._crit_edge936
  %bsgs_m2.sink = phi ptr [ @bsgs_m2, %._crit_edge936 ], [ @bsgs_m, %._crit_edge921 ]
  %.sink1166 = phi ptr [ %1405, %._crit_edge936 ], [ %1525, %._crit_edge921 ]
  %.sink1165 = phi ptr [ %1408, %._crit_edge936 ], [ %1528, %._crit_edge921 ]
  %1621 = load i64, ptr %bsgs_m2.sink, align 8, !tbaa !17
  %1622 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.199, i64 noundef %1621, i64 noundef %1621)
  %1623 = load ptr, ptr @tid, align 8, !tbaa !5
  call void @free(ptr noundef %1623) #20
  %1624 = load ptr, ptr @bPload_mutex, align 8, !tbaa !5
  call void @free(ptr noundef %1624) #20
  call void @free(ptr noundef %.sink1166) #20
  call void @free(ptr noundef %.sink1165) #20
  br label %1625

1625:                                             ; preds = %.sink.split1164, %1369
  %1626 = load i32, ptr @FLAGREADEDFILE1, align 4, !tbaa !9
  %1627 = icmp ne i32 %1626, 0
  %1628 = load i32, ptr @FLAGREADEDFILE2, align 4
  %1629 = icmp ne i32 %1628, 0
  %or.cond33 = select i1 %1627, i1 %1629, i1 false
  %1630 = load i32, ptr @FLAGREADEDFILE4, align 4
  %1631 = icmp ne i32 %1630, 0
  %or.cond35 = select i1 %or.cond33, i1 %1631, i1 false
  br i1 %or.cond35, label %.thread1111, label %1632

1632:                                             ; preds = %1625
  %1633 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.201)
  %1634 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1635 = call i32 @fflush(ptr noundef %1634)
  %.pre1101 = load i32, ptr @FLAGREADEDFILE1, align 4, !tbaa !9
  %.not699 = icmp eq i32 %.pre1101, 0
  br i1 %.not699, label %.preheader818, label %.thread1111

.preheader818:                                    ; preds = %1632, %1645
  %indvars.iv1049 = phi i64 [ %indvars.iv.next1050, %1645 ], [ 0, %1632 ]
  %1636 = load ptr, ptr @bloom_bP, align 8, !tbaa !5
  %1637 = getelementptr inbounds %struct.bloom, ptr %1636, i64 %indvars.iv1049
  %1638 = getelementptr inbounds i8, ptr %1637, i64 64
  %1639 = load ptr, ptr %1638, align 16, !tbaa !32
  %1640 = getelementptr inbounds i8, ptr %1637, i64 16
  %1641 = load i64, ptr %1640, align 16, !tbaa !22
  %1642 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !5
  %1643 = getelementptr inbounds %struct.checksumsha256, ptr %1642, i64 %indvars.iv1049
  %1644 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %1639, i64 noundef %1641, ptr noundef %1643)
          to label %1645 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit

1645:                                             ; preds = %.preheader818
  %1646 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !5
  %1647 = getelementptr inbounds %struct.checksumsha256, ptr %1646, i64 %indvars.iv1049
  %1648 = getelementptr inbounds i8, ptr %1647, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %1648, ptr noundef nonnull align 1 dereferenceable(32) %1647, i64 32, i1 false)
  %indvars.iv.next1050 = add nuw nsw i64 %indvars.iv1049, 1
  %exitcond1052.not = icmp eq i64 %indvars.iv.next1050, 256
  br i1 %exitcond1052.not, label %1649, label %.preheader818, !llvm.loop !50

1649:                                             ; preds = %1645
  %1650 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.183)
  br label %.thread1111

.thread1111:                                      ; preds = %1625, %1649, %1632
  %1651 = load i32, ptr @FLAGREADEDFILE2, align 4, !tbaa !9
  %.not700 = icmp eq i32 %1651, 0
  br i1 %.not700, label %.preheader814, label %1667

.preheader814:                                    ; preds = %.thread1111, %1661
  %indvars.iv1053 = phi i64 [ %indvars.iv.next1054, %1661 ], [ 0, %.thread1111 ]
  %1652 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !5
  %1653 = getelementptr inbounds %struct.bloom, ptr %1652, i64 %indvars.iv1053
  %1654 = getelementptr inbounds i8, ptr %1653, i64 64
  %1655 = load ptr, ptr %1654, align 16, !tbaa !32
  %1656 = getelementptr inbounds i8, ptr %1653, i64 16
  %1657 = load i64, ptr %1656, align 16, !tbaa !22
  %1658 = load ptr, ptr @bloom_bPx2nd_checksums, align 8, !tbaa !5
  %1659 = getelementptr inbounds %struct.checksumsha256, ptr %1658, i64 %indvars.iv1053
  %1660 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %1655, i64 noundef %1657, ptr noundef %1659)
          to label %1661 unwind label %.loopexit.split-lp811.loopexit

1661:                                             ; preds = %.preheader814
  %1662 = load ptr, ptr @bloom_bPx2nd_checksums, align 8, !tbaa !5
  %1663 = getelementptr inbounds %struct.checksumsha256, ptr %1662, i64 %indvars.iv1053
  %1664 = getelementptr inbounds i8, ptr %1663, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %1664, ptr noundef nonnull align 1 dereferenceable(32) %1663, i64 32, i1 false)
  %indvars.iv.next1054 = add nuw nsw i64 %indvars.iv1053, 1
  %exitcond1056.not = icmp eq i64 %indvars.iv.next1054, 256
  br i1 %exitcond1056.not, label %1665, label %.preheader814, !llvm.loop !51

1665:                                             ; preds = %1661
  %1666 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.183)
  br label %1667

1667:                                             ; preds = %1665, %.thread1111
  %1668 = load i32, ptr @FLAGREADEDFILE4, align 4
  %.not701 = icmp eq i32 %1668, 0
  br i1 %.not701, label %.preheader809, label %1684

.preheader809:                                    ; preds = %1667, %1678
  %indvars.iv1057 = phi i64 [ %indvars.iv.next1058, %1678 ], [ 0, %1667 ]
  %1669 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !5
  %1670 = getelementptr inbounds %struct.bloom, ptr %1669, i64 %indvars.iv1057
  %1671 = getelementptr inbounds i8, ptr %1670, i64 64
  %1672 = load ptr, ptr %1671, align 16, !tbaa !32
  %1673 = getelementptr inbounds i8, ptr %1670, i64 16
  %1674 = load i64, ptr %1673, align 16, !tbaa !22
  %1675 = load ptr, ptr @bloom_bPx3rd_checksums, align 8, !tbaa !5
  %1676 = getelementptr inbounds %struct.checksumsha256, ptr %1675, i64 %indvars.iv1057
  %1677 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %1672, i64 noundef %1674, ptr noundef %1676)
          to label %1678 unwind label %.loopexit810

1678:                                             ; preds = %.preheader809
  %1679 = load ptr, ptr @bloom_bPx3rd_checksums, align 8, !tbaa !5
  %1680 = getelementptr inbounds %struct.checksumsha256, ptr %1679, i64 %indvars.iv1057
  %1681 = getelementptr inbounds i8, ptr %1680, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %1681, ptr noundef nonnull align 1 dereferenceable(32) %1680, i64 32, i1 false)
  %indvars.iv.next1058 = add nuw nsw i64 %indvars.iv1057, 1
  %exitcond1060.not = icmp eq i64 %indvars.iv.next1058, 256
  br i1 %exitcond1060.not, label %1682, label %.preheader809, !llvm.loop !52

1682:                                             ; preds = %1678
  %1683 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.183)
  %.pre1102 = load i32, ptr @FLAGREADEDFILE4, align 4
  br label %1684

1684:                                             ; preds = %1682, %1667
  %1685 = phi i32 [ %.pre1102, %1682 ], [ %1668, %1667 ]
  %1686 = load i32, ptr @FLAGREADEDFILE1, align 4, !tbaa !9
  %1687 = icmp ne i32 %1686, 0
  %1688 = load i32, ptr @FLAGREADEDFILE2, align 4
  %1689 = icmp ne i32 %1688, 0
  %or.cond37 = select i1 %1687, i1 %1689, i1 false
  %1690 = icmp ne i32 %1685, 0
  %or.cond39 = select i1 %or.cond37, i1 %1690, i1 false
  br i1 %or.cond39, label %1695, label %1691

1691:                                             ; preds = %1684
  %1692 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.202)
  %1693 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1694 = call i32 @fflush(ptr noundef %1693)
  br label %1695

1695:                                             ; preds = %1684, %1691
  %1696 = load i32, ptr @FLAGREADEDFILE3, align 4, !tbaa !9
  %.not702 = icmp eq i32 %1696, 0
  br i1 %.not702, label %1697, label %1712

1697:                                             ; preds = %1695
  %1698 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %1699 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.203, i64 noundef %1698)
  %1700 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1701 = call i32 @fflush(ptr noundef %1700)
  %1702 = load ptr, ptr @bPtable, align 8, !tbaa !5
  %1703 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  invoke void @_Z9bsgs_sortP11bsgs_xvaluel(ptr noundef %1702, i64 noundef %1703)
          to label %1704 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

1704:                                             ; preds = %1697
  %1705 = load ptr, ptr @bPtable, align 8, !tbaa !5
  %1706 = load i64, ptr @bytes, align 8, !tbaa !17
  %1707 = invoke noundef i32 @_Z6sha256PKhmPh(ptr noundef %1705, i64 noundef %1706, ptr noundef nonnull @checksum)
          to label %1708 unwind label %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

1708:                                             ; preds = %1704
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) @checksum_backup, ptr noundef nonnull align 16 dereferenceable(32) @checksum, i64 32, i1 false)
  %1709 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.204)
  %1710 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1711 = call i32 @fflush(ptr noundef %1710)
  br label %1712

1712:                                             ; preds = %1708, %1695
  %1713 = load i32, ptr @FLAGSAVEREADFILE, align 4, !tbaa !9
  %1714 = icmp ne i32 %1713, 0
  %1715 = load i32, ptr @FLAGUPDATEFILE1, align 4
  %1716 = icmp ne i32 %1715, 0
  %or.cond41 = select i1 %1714, i1 true, i1 %1716
  br i1 %or.cond41, label %1717, label %1907

1717:                                             ; preds = %1712
  %1718 = load i32, ptr @FLAGREADEDFILE1, align 4, !tbaa !9
  %1719 = icmp eq i32 %1718, 0
  %or.cond43 = select i1 %1719, i1 true, i1 %1716
  br i1 %or.cond43, label %1720, label %1774

1720:                                             ; preds = %1717
  %1721 = load i64, ptr @bsgs_m, align 8, !tbaa !17
  %1722 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) @buffer_bloom_file, i64 noundef 1024, ptr noundef nonnull @.str.179, i64 noundef %1721) #20
  %1723 = load i32, ptr @FLAGUPDATEFILE1, align 4, !tbaa !9
  %.not703 = icmp eq i32 %1723, 0
  br i1 %.not703, label %1726, label %1724

1724:                                             ; preds = %1720
  %1725 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.205)
  br label %1726

1726:                                             ; preds = %1724, %1720
  %1727 = call noalias ptr @fopen(ptr noundef nonnull @buffer_bloom_file, ptr noundef nonnull @.str.206)
  %.not704 = icmp eq ptr %1727, null
  br i1 %.not704, label %1771, label %1728

1728:                                             ; preds = %1726
  %1729 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.207, ptr noundef nonnull @buffer_bloom_file)
  %1730 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1731 = call i32 @fflush(ptr noundef %1730)
  br label %1732

1732:                                             ; preds = %1728, %1767
  %indvars.iv1061 = phi i64 [ 0, %1728 ], [ %indvars.iv.next1062, %1767 ]
  %1733 = load ptr, ptr @bloom_bP, align 8, !tbaa !5
  %1734 = getelementptr inbounds %struct.bloom, ptr %1733, i64 %indvars.iv1061
  %1735 = call i64 @fwrite(ptr noundef %1734, i64 noundef 80, i64 noundef 1, ptr noundef nonnull %1727)
  %1736 = and i64 %1735, 4294967295
  %.not727 = icmp eq i64 %1736, 1
  br i1 %.not727, label %1740, label %1737

1737:                                             ; preds = %1732
  %1738 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1739 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1738, ptr noundef nonnull @.str.208, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1740:                                             ; preds = %1732
  %1741 = load ptr, ptr @bloom_bP, align 8, !tbaa !5
  %1742 = getelementptr inbounds %struct.bloom, ptr %1741, i64 %indvars.iv1061
  %1743 = getelementptr inbounds i8, ptr %1742, i64 64
  %1744 = load ptr, ptr %1743, align 16, !tbaa !32
  %1745 = getelementptr inbounds i8, ptr %1742, i64 16
  %1746 = load i64, ptr %1745, align 16, !tbaa !22
  %1747 = call i64 @fwrite(ptr noundef %1744, i64 noundef %1746, i64 noundef 1, ptr noundef nonnull %1727)
  %1748 = and i64 %1747, 4294967295
  %.not728 = icmp eq i64 %1748, 1
  br i1 %.not728, label %1752, label %1749

1749:                                             ; preds = %1740
  %1750 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1751 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1750, ptr noundef nonnull @.str.208, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1752:                                             ; preds = %1740
  %1753 = load ptr, ptr @bloom_bP_checksums, align 8, !tbaa !5
  %1754 = getelementptr inbounds %struct.checksumsha256, ptr %1753, i64 %indvars.iv1061
  %1755 = call i64 @fwrite(ptr noundef %1754, i64 noundef 64, i64 noundef 1, ptr noundef nonnull %1727)
  %1756 = and i64 %1755, 4294967295
  %.not729 = icmp eq i64 %1756, 1
  br i1 %.not729, label %1760, label %1757

1757:                                             ; preds = %1752
  %1758 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1759 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1758, ptr noundef nonnull @.str.208, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1760:                                             ; preds = %1752
  %1761 = and i64 %indvars.iv1061, 63
  %1762 = icmp eq i64 %1761, 0
  br i1 %1762, label %1763, label %1767

1763:                                             ; preds = %1760
  %1764 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.183)
  %1765 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1766 = call i32 @fflush(ptr noundef %1765)
  br label %1767

1767:                                             ; preds = %1760, %1763
  %indvars.iv.next1062 = add nuw nsw i64 %indvars.iv1061, 1
  %exitcond1064.not = icmp eq i64 %indvars.iv.next1062, 256
  br i1 %exitcond1064.not, label %1768, label %1732, !llvm.loop !53

1768:                                             ; preds = %1767
  %1769 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.184)
  %1770 = call i32 @fclose(ptr noundef nonnull %1727)
  br label %1774

1771:                                             ; preds = %1726
  %1772 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1773 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1772, ptr noundef nonnull @.str.209, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1774:                                             ; preds = %1717, %1768
  %1775 = load i32, ptr @FLAGREADEDFILE2, align 4, !tbaa !9
  %.not705 = icmp eq i32 %1775, 0
  br i1 %.not705, label %1776, label %1826

1776:                                             ; preds = %1774
  %1777 = load i64, ptr @bsgs_m2, align 8, !tbaa !17
  %1778 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) @buffer_bloom_file, i64 noundef 1024, ptr noundef nonnull @.str.187, i64 noundef %1777) #20
  %1779 = call noalias ptr @fopen(ptr noundef nonnull @buffer_bloom_file, ptr noundef nonnull @.str.206)
  %.not706 = icmp eq ptr %1779, null
  br i1 %.not706, label %1823, label %1780

1780:                                             ; preds = %1776
  %1781 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.207, ptr noundef nonnull @buffer_bloom_file)
  %1782 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1783 = call i32 @fflush(ptr noundef %1782)
  br label %1784

1784:                                             ; preds = %1780, %1819
  %indvars.iv1065 = phi i64 [ 0, %1780 ], [ %indvars.iv.next1066, %1819 ]
  %1785 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !5
  %1786 = getelementptr inbounds %struct.bloom, ptr %1785, i64 %indvars.iv1065
  %1787 = call i64 @fwrite(ptr noundef %1786, i64 noundef 80, i64 noundef 1, ptr noundef nonnull %1779)
  %1788 = and i64 %1787, 4294967295
  %.not707 = icmp eq i64 %1788, 1
  br i1 %.not707, label %1792, label %1789

1789:                                             ; preds = %1784
  %1790 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1791 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1790, ptr noundef nonnull @.str.210, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1792:                                             ; preds = %1784
  %1793 = load ptr, ptr @bloom_bPx2nd, align 8, !tbaa !5
  %1794 = getelementptr inbounds %struct.bloom, ptr %1793, i64 %indvars.iv1065
  %1795 = getelementptr inbounds i8, ptr %1794, i64 64
  %1796 = load ptr, ptr %1795, align 16, !tbaa !32
  %1797 = getelementptr inbounds i8, ptr %1794, i64 16
  %1798 = load i64, ptr %1797, align 16, !tbaa !22
  %1799 = call i64 @fwrite(ptr noundef %1796, i64 noundef %1798, i64 noundef 1, ptr noundef nonnull %1779)
  %1800 = and i64 %1799, 4294967295
  %.not708 = icmp eq i64 %1800, 1
  br i1 %.not708, label %1804, label %1801

1801:                                             ; preds = %1792
  %1802 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1803 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1802, ptr noundef nonnull @.str.210, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1804:                                             ; preds = %1792
  %1805 = load ptr, ptr @bloom_bPx2nd_checksums, align 8, !tbaa !5
  %1806 = getelementptr inbounds %struct.checksumsha256, ptr %1805, i64 %indvars.iv1065
  %1807 = call i64 @fwrite(ptr noundef %1806, i64 noundef 64, i64 noundef 1, ptr noundef nonnull %1779)
  %1808 = and i64 %1807, 4294967295
  %.not709 = icmp eq i64 %1808, 1
  br i1 %.not709, label %1812, label %1809

1809:                                             ; preds = %1804
  %1810 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1811 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1810, ptr noundef nonnull @.str.208, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1812:                                             ; preds = %1804
  %1813 = and i64 %indvars.iv1065, 63
  %1814 = icmp eq i64 %1813, 0
  br i1 %1814, label %1815, label %1819

1815:                                             ; preds = %1812
  %1816 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.183)
  %1817 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1818 = call i32 @fflush(ptr noundef %1817)
  br label %1819

1819:                                             ; preds = %1812, %1815
  %indvars.iv.next1066 = add nuw nsw i64 %indvars.iv1065, 1
  %exitcond1068.not = icmp eq i64 %indvars.iv.next1066, 256
  br i1 %exitcond1068.not, label %1820, label %1784, !llvm.loop !54

1820:                                             ; preds = %1819
  %1821 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.184)
  %1822 = call i32 @fclose(ptr noundef nonnull %1779)
  br label %1826

1823:                                             ; preds = %1776
  %1824 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1825 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1824, ptr noundef nonnull @.str.209, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1826:                                             ; preds = %1820, %1774
  %1827 = load i32, ptr @FLAGREADEDFILE3, align 4, !tbaa !9
  %.not710 = icmp eq i32 %1827, 0
  br i1 %.not710, label %1828, label %1855

1828:                                             ; preds = %1826
  %1829 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %1830 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) @buffer_bloom_file, i64 noundef 1024, ptr noundef nonnull @.str.190, i64 noundef %1829) #20
  %1831 = call noalias ptr @fopen(ptr noundef nonnull @buffer_bloom_file, ptr noundef nonnull @.str.206)
  %.not711 = icmp eq ptr %1831, null
  br i1 %.not711, label %1852, label %1832

1832:                                             ; preds = %1828
  %1833 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.211, ptr noundef nonnull @buffer_bloom_file)
  %1834 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1835 = call i32 @fflush(ptr noundef %1834)
  %1836 = load ptr, ptr @bPtable, align 8, !tbaa !5
  %1837 = load i64, ptr @bytes, align 8, !tbaa !17
  %1838 = call i64 @fwrite(ptr noundef %1836, i64 noundef %1837, i64 noundef 1, ptr noundef nonnull %1831)
  %1839 = and i64 %1838, 4294967295
  %.not712 = icmp eq i64 %1839, 1
  br i1 %.not712, label %1843, label %1840

1840:                                             ; preds = %1832
  %1841 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1842 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1841, ptr noundef nonnull @.str.210, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1843:                                             ; preds = %1832
  %1844 = call i64 @fwrite(ptr noundef nonnull @checksum, i64 noundef 32, i64 noundef 1, ptr noundef nonnull %1831)
  %1845 = and i64 %1844, 4294967295
  %.not713 = icmp eq i64 %1845, 1
  br i1 %.not713, label %1849, label %1846

1846:                                             ; preds = %1843
  %1847 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1848 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1847, ptr noundef nonnull @.str.210, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1849:                                             ; preds = %1843
  %1850 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.204)
  %1851 = call i32 @fclose(ptr noundef nonnull %1831)
  br label %1855

1852:                                             ; preds = %1828
  %1853 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1854 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1853, ptr noundef nonnull @.str.209, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1855:                                             ; preds = %1849, %1826
  %1856 = load i32, ptr @FLAGREADEDFILE4, align 4, !tbaa !9
  %.not714 = icmp eq i32 %1856, 0
  br i1 %.not714, label %1857, label %1907

1857:                                             ; preds = %1855
  %1858 = load i64, ptr @bsgs_m3, align 8, !tbaa !17
  %1859 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) @buffer_bloom_file, i64 noundef 1024, ptr noundef nonnull @.str.193, i64 noundef %1858) #20
  %1860 = call noalias ptr @fopen(ptr noundef nonnull @buffer_bloom_file, ptr noundef nonnull @.str.206)
  %.not715 = icmp eq ptr %1860, null
  br i1 %.not715, label %1904, label %1861

1861:                                             ; preds = %1857
  %1862 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.207, ptr noundef nonnull @buffer_bloom_file)
  %1863 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1864 = call i32 @fflush(ptr noundef %1863)
  br label %1865

1865:                                             ; preds = %1861, %1900
  %indvars.iv1069 = phi i64 [ 0, %1861 ], [ %indvars.iv.next1070, %1900 ]
  %1866 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !5
  %1867 = getelementptr inbounds %struct.bloom, ptr %1866, i64 %indvars.iv1069
  %1868 = call i64 @fwrite(ptr noundef %1867, i64 noundef 80, i64 noundef 1, ptr noundef nonnull %1860)
  %1869 = and i64 %1868, 4294967295
  %.not716 = icmp eq i64 %1869, 1
  br i1 %.not716, label %1873, label %1870

1870:                                             ; preds = %1865
  %1871 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1872 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1871, ptr noundef nonnull @.str.210, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1873:                                             ; preds = %1865
  %1874 = load ptr, ptr @bloom_bPx3rd, align 8, !tbaa !5
  %1875 = getelementptr inbounds %struct.bloom, ptr %1874, i64 %indvars.iv1069
  %1876 = getelementptr inbounds i8, ptr %1875, i64 64
  %1877 = load ptr, ptr %1876, align 16, !tbaa !32
  %1878 = getelementptr inbounds i8, ptr %1875, i64 16
  %1879 = load i64, ptr %1878, align 16, !tbaa !22
  %1880 = call i64 @fwrite(ptr noundef %1877, i64 noundef %1879, i64 noundef 1, ptr noundef nonnull %1860)
  %1881 = and i64 %1880, 4294967295
  %.not717 = icmp eq i64 %1881, 1
  br i1 %.not717, label %1885, label %1882

1882:                                             ; preds = %1873
  %1883 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1884 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1883, ptr noundef nonnull @.str.210, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1885:                                             ; preds = %1873
  %1886 = load ptr, ptr @bloom_bPx3rd_checksums, align 8, !tbaa !5
  %1887 = getelementptr inbounds %struct.checksumsha256, ptr %1886, i64 %indvars.iv1069
  %1888 = call i64 @fwrite(ptr noundef %1887, i64 noundef 64, i64 noundef 1, ptr noundef nonnull %1860)
  %1889 = and i64 %1888, 4294967295
  %.not718 = icmp eq i64 %1889, 1
  br i1 %.not718, label %1893, label %1890

1890:                                             ; preds = %1885
  %1891 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1892 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1891, ptr noundef nonnull @.str.208, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1893:                                             ; preds = %1885
  %1894 = and i64 %indvars.iv1069, 63
  %1895 = icmp eq i64 %1894, 0
  br i1 %1895, label %1896, label %1900

1896:                                             ; preds = %1893
  %1897 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.183)
  %1898 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1899 = call i32 @fflush(ptr noundef %1898)
  br label %1900

1900:                                             ; preds = %1893, %1896
  %indvars.iv.next1070 = add nuw nsw i64 %indvars.iv1069, 1
  %exitcond1072.not = icmp eq i64 %indvars.iv.next1070, 256
  br i1 %exitcond1072.not, label %1901, label %1865, !llvm.loop !55

1901:                                             ; preds = %1900
  %1902 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.184)
  %1903 = call i32 @fclose(ptr noundef nonnull %1860)
  br label %1907

1904:                                             ; preds = %1857
  %1905 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1906 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1905, ptr noundef nonnull @.str.209, ptr noundef nonnull @buffer_bloom_file) #23
  call void @exit(i32 noundef 1) #24
  unreachable

1907:                                             ; preds = %1855, %1901, %1712
  %1908 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1909 = sext i32 %1908 to i64
  %1910 = call noalias ptr @calloc(i64 noundef %1909, i64 noundef 8) #27
  store ptr %1910, ptr @steps, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1910, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.212, i32 noundef 2033)
  %1911 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1912 = sext i32 %1911 to i64
  %1913 = call noalias ptr @calloc(i64 noundef %1912, i64 noundef 4) #27
  store ptr %1913, ptr @ends, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1913, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.213, i32 noundef 2035)
  %1914 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1915 = sext i32 %1914 to i64
  %1916 = call noalias ptr @calloc(i64 noundef %1915, i64 noundef 8) #27
  store ptr %1916, ptr @tid, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1916, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.200, i32 noundef 2041)
  %1917 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1918 = icmp sgt i32 %1917, 0
  br i1 %1918, label %.lr.ph946, label %.loopexit1115

.lr.ph946:                                        ; preds = %1907, %.thread791
  %indvars.iv1073 = phi i64 [ %indvars.iv.next1074, %.thread791 ], [ 0, %1907 ]
  %1919 = call noalias dereferenceable_or_null(24) ptr @malloc(i64 noundef 24) #26
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1919, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.214, i32 noundef 2045)
  %1920 = trunc nuw nsw i64 %indvars.iv1073 to i32
  store i32 %1920, ptr %1919, align 8, !tbaa !56
  %1921 = load i32, ptr @FLAGBSGSMODE, align 4, !tbaa !9
  %1922 = icmp ult i32 %1921, 5
  br i1 %1922, label %switch.lookup, label %.thread791

switch.lookup:                                    ; preds = %.lr.ph946
  %1923 = zext nneg i32 %1921 to i64
  %switch.gep = getelementptr inbounds [5 x ptr], ptr @switch.table.main, i64 0, i64 %1923
  %switch.load = load ptr, ptr %switch.gep, align 8
  %1924 = load ptr, ptr @tid, align 8, !tbaa !5
  %1925 = getelementptr inbounds i64, ptr %1924, i64 %indvars.iv1073
  %1926 = call i32 @pthread_create(ptr noundef %1925, ptr noundef null, ptr noundef nonnull %switch.load, ptr noundef nonnull %1919) #20
  %.not726 = icmp eq i32 %1926, 0
  br i1 %.not726, label %.thread791, label %1927

1927:                                             ; preds = %switch.lookup
  %1928 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1929 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1928, ptr noundef nonnull @.str.215) #23
  call void @exit(i32 noundef 1) #24
  unreachable

.thread791:                                       ; preds = %.lr.ph946, %switch.lookup
  %indvars.iv.next1074 = add nuw nsw i64 %indvars.iv1073, 1
  %1930 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1931 = sext i32 %1930 to i64
  %1932 = icmp slt i64 %indvars.iv.next1074, %1931
  br i1 %1932, label %.lr.ph946, label %.loopexit1115, !llvm.loop !58

.loopexit.split-lp811:                            ; preds = %.loopexit810, %.loopexit.split-lp811.loopexit.split-lp.loopexit, %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp811.loopexit, %942, %943, %1027, %1022, %1017, %989, %984, %979, %974, %930
  %.pn757.pn = phi { ptr, i32 } [ %.pn753, %989 ], [ %.pn751, %1027 ], [ %.pn665, %1022 ], [ %.pn663, %1017 ], [ %.pn661, %984 ], [ %.pn659, %979 ], [ %.pn657, %974 ], [ %.pn655, %930 ], [ %944, %943 ], [ %.pn755, %942 ], [ %lpad.loopexit812, %.loopexit810 ], [ %lpad.loopexit815, %.loopexit.split-lp811.loopexit ], [ %lpad.loopexit819, %.loopexit.split-lp811.loopexit.split-lp.loopexit ], [ %lpad.loopexit823, %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit826, %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit828, %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit831, %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit834, %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit838, %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp811.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %23) #20
  br label %1933

1933:                                             ; preds = %.loopexit.split-lp811, %924
  %.pn757.pn.pn = phi { ptr, i32 } [ %.pn757.pn, %.loopexit.split-lp811 ], [ %925, %924 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %23) #20
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %22) #20
  br label %1934

1934:                                             ; preds = %1933, %922
  %.pn757.pn.pn.pn = phi { ptr, i32 } [ %.pn757.pn.pn, %1933 ], [ %923, %922 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %22) #20
  br label %.loopexit.split-lp

.loopexit1115:                                    ; preds = %.thread791, %1907
  call void @free(ptr noundef %545) #20
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %23) #20
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %23) #20
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %22) #20
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %22) #20
  %.pre1103 = load i32, ptr @FLAGMODE, align 4, !tbaa !9
  %.not719 = icmp eq i32 %.pre1103, 2
  br i1 %.not719, label %.loopexit808, label %.thread1113

.thread1113:                                      ; preds = %thread-pre-split789, %.loopexit1115
  %1935 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1936 = sext i32 %1935 to i64
  %1937 = call noalias ptr @calloc(i64 noundef %1936, i64 noundef 8) #27
  store ptr %1937, ptr @steps, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1937, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.212, i32 noundef 2101)
  %1938 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1939 = sext i32 %1938 to i64
  %1940 = call noalias ptr @calloc(i64 noundef %1939, i64 noundef 4) #27
  store ptr %1940, ptr @ends, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1940, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.213, i32 noundef 2103)
  %1941 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1942 = sext i32 %1941 to i64
  %1943 = call noalias ptr @calloc(i64 noundef %1942, i64 noundef 8) #27
  store ptr %1943, ptr @tid, align 8, !tbaa !5
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1943, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.200, i32 noundef 2109)
  %1944 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1945 = icmp sgt i32 %1944, 0
  br i1 %1945, label %.lr.ph950, label %.loopexit808

.lr.ph950:                                        ; preds = %.thread1113, %.thread794
  %indvars.iv1076 = phi i64 [ %indvars.iv.next1077, %.thread794 ], [ 0, %.thread1113 ]
  %1946 = call noalias dereferenceable_or_null(24) ptr @malloc(i64 noundef 24) #26
  call void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef %1946, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.214, i32 noundef 2113)
  %1947 = trunc nuw nsw i64 %indvars.iv1076 to i32
  store i32 %1947, ptr %1946, align 8, !tbaa !56
  %1948 = load ptr, ptr @steps, align 8, !tbaa !5
  %1949 = getelementptr inbounds i64, ptr %1948, i64 %indvars.iv1076
  store i64 0, ptr %1949, align 8, !tbaa !17
  %1950 = load i32, ptr @FLAGMODE, align 4, !tbaa !9
  %1951 = icmp ult i32 %1950, 7
  br i1 %1951, label %switch.hole_check, label %.thread794

switch.hole_check:                                ; preds = %.lr.ph950
  %switch.maskindex = trunc nuw i32 %1950 to i8
  %switch.shifted = lshr i8 123, %switch.maskindex
  %switch.lobit = trunc i8 %switch.shifted to i1
  br i1 %switch.lobit, label %switch.lookup1219, label %.thread794

switch.lookup1219:                                ; preds = %switch.hole_check
  %1952 = zext nneg i32 %1950 to i64
  %switch.gep1220 = getelementptr inbounds [7 x ptr], ptr @switch.table.main.1, i64 0, i64 %1952
  %switch.load1221 = load ptr, ptr %switch.gep1220, align 8
  %1953 = load ptr, ptr @tid, align 8, !tbaa !5
  %1954 = getelementptr inbounds i64, ptr %1953, i64 %indvars.iv1076
  %1955 = call i32 @pthread_create(ptr noundef %1954, ptr noundef null, ptr noundef nonnull %switch.load1221, ptr noundef nonnull %1946) #20
  %.not725 = icmp eq i32 %1955, 0
  br i1 %.not725, label %.thread794, label %1956

1956:                                             ; preds = %switch.lookup1219
  %1957 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1958 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1957, ptr noundef nonnull @.str.216) #23
  call void @exit(i32 noundef 1) #24
  unreachable

.thread794:                                       ; preds = %switch.hole_check, %.lr.ph950, %switch.lookup1219
  %indvars.iv.next1077 = add nuw nsw i64 %indvars.iv1076, 1
  %1959 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1960 = sext i32 %1959 to i64
  %1961 = icmp slt i64 %indvars.iv.next1077, %1960
  br i1 %1961, label %.lr.ph950, label %.loopexit808, !llvm.loop !59

.loopexit808:                                     ; preds = %.thread794, %.thread1113, %.loopexit1115
  %1962 = load ptr, ptr @str_limits, align 16, !tbaa !5
  invoke void @_ZN3Int9SetBase10EPKc(ptr noundef nonnull align 8 dereferenceable(16) @int_limits, ptr noundef %1962)
          to label %1963 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

1963:                                             ; preds = %.loopexit808
  %1964 = load ptr, ptr getelementptr inbounds (i8, ptr @str_limits, i64 8), align 8, !tbaa !5
  invoke void @_ZN3Int9SetBase10EPKc(ptr noundef nonnull align 8 dereferenceable(16) getelementptr inbounds (i8, ptr @int_limits, i64 16), ptr noundef %1964)
          to label %1965 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

1965:                                             ; preds = %1963
  %1966 = load ptr, ptr getelementptr inbounds (i8, ptr @str_limits, i64 16), align 16, !tbaa !5
  invoke void @_ZN3Int9SetBase10EPKc(ptr noundef nonnull align 8 dereferenceable(16) getelementptr inbounds (i8, ptr @int_limits, i64 32), ptr noundef %1966)
          to label %1967 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

1967:                                             ; preds = %1965
  %1968 = load ptr, ptr getelementptr inbounds (i8, ptr @str_limits, i64 24), align 8, !tbaa !5
  invoke void @_ZN3Int9SetBase10EPKc(ptr noundef nonnull align 8 dereferenceable(16) getelementptr inbounds (i8, ptr @int_limits, i64 48), ptr noundef %1968)
          to label %1969 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

1969:                                             ; preds = %1967
  %1970 = load ptr, ptr getelementptr inbounds (i8, ptr @str_limits, i64 32), align 16, !tbaa !5
  invoke void @_ZN3Int9SetBase10EPKc(ptr noundef nonnull align 8 dereferenceable(16) getelementptr inbounds (i8, ptr @int_limits, i64 64), ptr noundef %1970)
          to label %1971 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

1971:                                             ; preds = %1969
  %1972 = load ptr, ptr getelementptr inbounds (i8, ptr @str_limits, i64 40), align 8, !tbaa !5
  invoke void @_ZN3Int9SetBase10EPKc(ptr noundef nonnull align 8 dereferenceable(16) getelementptr inbounds (i8, ptr @int_limits, i64 80), ptr noundef %1972)
          to label %1973 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

1973:                                             ; preds = %1971
  %1974 = load ptr, ptr getelementptr inbounds (i8, ptr @str_limits, i64 48), align 16, !tbaa !5
  invoke void @_ZN3Int9SetBase10EPKc(ptr noundef nonnull align 8 dereferenceable(16) getelementptr inbounds (i8, ptr @int_limits, i64 96), ptr noundef %1974)
          to label %1975 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

1975:                                             ; preds = %1973
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef 0)
          to label %1976 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

1976:                                             ; preds = %1975
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %8, i32 noundef 0)
          to label %1977 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

1977:                                             ; preds = %1976
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull @BSGS_N)
          to label %1978 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

1978:                                             ; preds = %1977
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef 0)
          to label %.preheader802 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

.preheader802:                                    ; preds = %1978, %2058
  invoke void @_Z8sleep_msi(i32 noundef 1000)
          to label %1979 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

1979:                                             ; preds = %.preheader802
  invoke void @_ZN3Int6AddOneEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %.preheader801 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

.preheader801:                                    ; preds = %1979
  %1980 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %1981 = icmp sgt i32 %1980, 0
  br i1 %1981, label %.lr.ph953, label %._crit_edge954

.lr.ph953:                                        ; preds = %.preheader801
  %1982 = load ptr, ptr @ends, align 8, !tbaa !5
  %1983 = zext nneg i32 %1980 to i64
  br label %1984

1984:                                             ; preds = %.lr.ph953, %1984
  %indvars.iv1083 = phi i64 [ 0, %.lr.ph953 ], [ %indvars.iv.next1084, %1984 ]
  %1985 = getelementptr inbounds i32, ptr %1982, i64 %indvars.iv1083
  %1986 = load i32, ptr %1985, align 4, !tbaa !9
  %1987 = and i32 %1986, 1
  %indvars.iv.next1084 = add nuw nsw i64 %indvars.iv1083, 1
  %1988 = icmp ult i64 %indvars.iv.next1084, %1983
  %1989 = icmp ne i32 %1987, 0
  %1990 = select i1 %1988, i1 %1989, i1 false
  br i1 %1990, label %1984, label %._crit_edge954, !llvm.loop !60

._crit_edge954:                                   ; preds = %1984, %.preheader801
  %.lcssa = phi i1 [ true, %.preheader801 ], [ %1989, %1984 ]
  %1991 = invoke noundef zeroext i1 @_ZN3Int9IsGreaterEPS_(ptr noundef nonnull align 8 dereferenceable(16) @OUTPUTSECONDS, ptr noundef nonnull @ZERO)
          to label %1992 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

1992:                                             ; preds = %._crit_edge954
  br i1 %1991, label %1993, label %2058

1993:                                             ; preds = %1992
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX, ptr noundef nonnull %10)
          to label %1994 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

1994:                                             ; preds = %1993
  invoke void @_ZN3Int3ModEPS_(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX, ptr noundef nonnull @OUTPUTSECONDS)
          to label %1995 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

1995:                                             ; preds = %1994
  %1996 = invoke noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16) @MPZAUX)
          to label %1997 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

1997:                                             ; preds = %1995
  br i1 %1996, label %1998, label %2058

1998:                                             ; preds = %1997
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef 0)
          to label %.preheader797 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

.preheader797:                                    ; preds = %1998
  %1999 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %2000 = icmp sgt i32 %1999, 0
  br i1 %2000, label %.lr.ph957, label %._crit_edge958

.lr.ph957:                                        ; preds = %.preheader797, %2006
  %indvars.iv1086 = phi i64 [ %indvars.iv.next1087, %2006 ], [ 0, %.preheader797 ]
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull %9)
          to label %2001 unwind label %.loopexit.split-lp.loopexit

2001:                                             ; preds = %.lr.ph957
  %2002 = load ptr, ptr @steps, align 8, !tbaa !5
  %2003 = getelementptr inbounds i64, ptr %2002, i64 %indvars.iv1086
  %2004 = load i64, ptr %2003, align 8, !tbaa !17
  invoke void @_ZN3Int4MultEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %2004)
          to label %2005 unwind label %.loopexit.split-lp.loopexit

2005:                                             ; preds = %2001
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull %8)
          to label %2006 unwind label %.loopexit.split-lp.loopexit

2006:                                             ; preds = %2005
  %indvars.iv.next1087 = add nuw nsw i64 %indvars.iv1086, 1
  %2007 = load i32, ptr @NTHREADS, align 4, !tbaa !9
  %2008 = sext i32 %2007 to i64
  %2009 = icmp slt i64 %indvars.iv.next1087, %2008
  br i1 %2009, label %.lr.ph957, label %._crit_edge958, !llvm.loop !61

._crit_edge958:                                   ; preds = %2006, %.preheader797
  %2010 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !9
  %.not720 = icmp eq i32 %2010, 0
  br i1 %.not720, label %2015, label %2011

2011:                                             ; preds = %._crit_edge958
  %2012 = load i32, ptr @FLAGMODE, align 4, !tbaa !9
  %2013 = icmp eq i32 %2012, 0
  %. = select i1 %2013, i64 3, i64 6
  br label %.invoke

.invoke:                                          ; preds = %2015, %2011
  %2014 = phi i64 [ %., %2011 ], [ 2, %2015 ]
  invoke void @_ZN3Int4MultEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %2014)
          to label %2018 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

2015:                                             ; preds = %._crit_edge958
  %2016 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %2017 = icmp eq i32 %2016, 1
  br i1 %2017, label %.invoke, label %2018

2018:                                             ; preds = %.invoke, %2015
  %2019 = call i32 @pthread_mutex_lock(ptr noundef nonnull @bsgs_thread) #20
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull %7)
          to label %2020 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

2020:                                             ; preds = %2018
  invoke void @_ZN3Int3DivEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull %10, ptr noundef null)
          to label %2021 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

2021:                                             ; preds = %2020
  %2022 = invoke noundef ptr @_ZN3Int9GetBase10Ev(ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %2023 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

2023:                                             ; preds = %2021
  %2024 = invoke noundef ptr @_ZN3Int9GetBase10Ev(ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %2025 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

2025:                                             ; preds = %2023
  %2026 = invoke noundef ptr @_ZN3Int9GetBase10Ev(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %2027 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

2027:                                             ; preds = %2025
  %2028 = invoke noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull @int_limits)
          to label %2029 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

2029:                                             ; preds = %2027
  br i1 %2028, label %2030, label %.preheader

2030:                                             ; preds = %2029
  %2031 = load i32, ptr @FLAGMATRIX, align 4, !tbaa !9
  %.not723 = icmp eq i32 %2031, 0
  br i1 %.not723, label %2034, label %2032

2032:                                             ; preds = %2030
  %2033 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.217, ptr noundef %2026, ptr noundef %2022, ptr noundef %2024) #20
  br label %2053

2034:                                             ; preds = %2030
  %2035 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.218, ptr noundef %2026, ptr noundef %2022, ptr noundef %2024) #20
  br label %2053

.preheader:                                       ; preds = %2029, %2040
  %.32959 = phi i32 [ %.32., %2040 ], [ 0, %2029 ]
  %2036 = add nsw i32 %.32959, 1
  %2037 = sext i32 %2036 to i64
  %2038 = getelementptr inbounds [7 x %class.Int], ptr @int_limits, i64 0, i64 %2037
  %2039 = invoke noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull %2038)
          to label %2040 unwind label %.loopexit

2040:                                             ; preds = %.preheader
  %.32. = select i1 %2039, i32 %.32959, i32 %2036
  %2041 = icmp sgt i32 %.32., 5
  %.not1108 = or i1 %2041, %2039
  br i1 %.not1108, label %2042, label %.preheader, !llvm.loop !62

2042:                                             ; preds = %2040
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull %8)
          to label %2043 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

2043:                                             ; preds = %2042
  %2044 = sext i32 %.32959 to i64
  %2045 = getelementptr inbounds [7 x %class.Int], ptr @int_limits, i64 0, i64 %2044
  invoke void @_ZN3Int3DivEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull %2045, ptr noundef null)
          to label %2046 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

2046:                                             ; preds = %2043
  %2047 = invoke noundef ptr @_ZN3Int9GetBase10Ev(ptr noundef nonnull align 8 dereferenceable(16) %11)
          to label %2048 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

2048:                                             ; preds = %2046
  %2049 = load i32, ptr @FLAGMATRIX, align 4, !tbaa !9
  %.not722 = icmp eq i32 %2049, 0
  %.str.220..str.219 = select i1 %.not722, ptr @.str.220, ptr @.str.219
  %2050 = getelementptr inbounds [7 x ptr], ptr @str_limits_prefixs, i64 0, i64 %2044
  %2051 = load ptr, ptr %2050, align 8, !tbaa !5
  %2052 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) %.str.220..str.219, ptr noundef %2026, ptr noundef %2022, ptr noundef %2047, ptr noundef %2051, ptr noundef %2024) #20
  call void @free(ptr noundef %2047) #20
  br label %2053

2053:                                             ; preds = %2032, %2034, %2048
  %2054 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.221, ptr noundef nonnull %3)
  %2055 = load ptr, ptr @stdout, align 8, !tbaa !5
  %2056 = call i32 @fflush(ptr noundef %2055)
  store i32 0, ptr @THREADOUTPUT, align 4, !tbaa !9
  %2057 = call i32 @pthread_mutex_unlock(ptr noundef nonnull @bsgs_thread) #20
  call void @free(ptr noundef %2022) #20
  call void @free(ptr noundef %2024) #20
  call void @free(ptr noundef %2026) #20
  br label %2058

2058:                                             ; preds = %1992, %2053, %1997
  br i1 %.lcssa, label %2059, label %.preheader802, !llvm.loop !63

2059:                                             ; preds = %2058
  %2060 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.222)
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #20
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #20
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #20
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #20
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #20
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #20
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #20
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #20
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #20
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #20
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #20
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #20
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #20
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #20
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #20
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #20
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #20
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #20
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #20
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #20
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #20
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %3) #20
  ret i32 0

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit, %1934, %921, %916, %911, %906, %901, %896, %76
  %.pn768 = phi { ptr, i32 } [ %.pn757.pn.pn.pn, %1934 ], [ %.pn653, %921 ], [ %.pn651, %916 ], [ %.pn649, %911 ], [ %.pn647, %906 ], [ %.pn645, %901 ], [ %.pn, %896 ], [ %77, %76 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit798, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit803, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit805, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit841, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit844, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit847, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit850, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit853, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit857, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit861, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp862, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #20
  br label %2061

2061:                                             ; preds = %.loopexit.split-lp, %74
  %.pn768.pn = phi { ptr, i32 } [ %.pn768, %.loopexit.split-lp ], [ %75, %74 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #20
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #20
  br label %2062

2062:                                             ; preds = %2061, %72
  %.pn768.pn.pn = phi { ptr, i32 } [ %.pn768.pn, %2061 ], [ %73, %72 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #20
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #20
  br label %2063

2063:                                             ; preds = %2062, %70
  %.pn768.pn.pn.pn = phi { ptr, i32 } [ %.pn768.pn.pn, %2062 ], [ %71, %70 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #20
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #20
  br label %2064

2064:                                             ; preds = %2063, %68
  %.pn768.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn768.pn.pn.pn, %2063 ], [ %69, %68 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #20
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #20
  br label %2065

2065:                                             ; preds = %2064, %66
  %.pn768.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn768.pn.pn.pn.pn, %2064 ], [ %67, %66 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #20
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #20
  br label %2066

2066:                                             ; preds = %2065, %64
  %.pn768.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn768.pn.pn.pn.pn.pn, %2065 ], [ %65, %64 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #20
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #20
  br label %2067

2067:                                             ; preds = %2066, %62
  %.pn768.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn768.pn.pn.pn.pn.pn.pn, %2066 ], [ %63, %62 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #20
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #20
  br label %2068

2068:                                             ; preds = %2067, %60
  %.pn768.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn768.pn.pn.pn.pn.pn.pn.pn, %2067 ], [ %61, %60 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #20
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #20
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #20
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #20
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #20
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #20
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %3) #20
  resume { ptr, i32 } %.pn768.pn.pn.pn.pn.pn.pn.pn.pn
}

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

; Function Attrs: nounwind
declare i32 @pthread_mutex_init(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind
declare void @srand(i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind
declare i64 @time(ptr noundef) local_unnamed_addr #0

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #4

declare void @_ZN9Secp256K1C1Ev(ptr noundef nonnull align 8 dereferenceable(393296)) unnamed_addr #1

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #5

declare void @_ZN9Secp256K14InitEv(ptr noundef nonnull align 8 dereferenceable(393296)) local_unnamed_addr #1

declare void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #1

declare void @_Z14int_randominitv() local_unnamed_addr #1

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

; Function Attrs: nounwind
declare i32 @getopt(i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z4menuv() local_unnamed_addr #7

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

declare noundef i32 @_Z7indexOfPcPPKci(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nofree nounwind willreturn
declare i64 @strtol(ptr noundef readonly, ptr nocapture noundef, i32 noundef) local_unnamed_addr #8

declare void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #1

declare void @_ZN3Int6ShiftLEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #1

declare noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z12checkpointerPvPKcS1_S1_i(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #9

declare noundef zeroext i1 @_ZN3Int9IsGreaterEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #1

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #10

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #11

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strncpy(ptr noalias noundef returned writeonly, ptr noalias nocapture noundef readonly, i64 noundef) local_unnamed_addr #13

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare noundef ptr @strchr(ptr noundef, i32 noundef) local_unnamed_addr #11

declare void @_ZN3Int9SetBase16EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #1

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

declare void @_Z15stringtokenizerPcP13str_tokenizer(ptr noundef, ptr noundef) local_unnamed_addr #1

declare noundef ptr @_Z9nextTokenP13str_tokenizer(ptr noundef) local_unnamed_addr #1

declare noundef i32 @_Z10isValidHexPc(ptr noundef) local_unnamed_addr #1

declare void @_ZN3Int9SetBase10EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #1

declare noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #1

declare noundef zeroext i1 @_ZN3Int6IsZeroEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1

declare noundef ptr @_ZN3Int9GetBase10Ev(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z19isValidBase58StringPc(ptr noundef) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z9addvanityPc(ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z14init_generatorv() local_unnamed_addr #7

declare void @_ZN3Int6AddOneEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1

declare noundef zeroext i1 @_ZN3Int7IsEqualEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #1

declare noundef zeroext i1 @_ZN3Int14IsLowerOrEqualEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #1

declare void @_ZN3Int3SubEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #1

declare void @_ZN3Int8SetInt64Em(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #1

declare void @_ZN3Int4MultEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #1

declare void @_ZN3Int3ModEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #1

declare noundef i64 @_ZN3Int8GetInt64Ev(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1

declare void @_ZN3Int3DivEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z15readFileAddressPc(ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z14readFileVanityPc(ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z5_sortP13address_valuel(ptr noundef, i64 noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z17writeFileIfNeededPKc(ptr noundef) local_unnamed_addr #7

; Function Attrs: nofree nounwind
declare noalias noundef ptr @fopen(ptr nocapture noundef readonly, ptr nocapture noundef readonly) local_unnamed_addr #6

; Function Attrs: nofree nounwind
declare noundef i32 @feof(ptr nocapture noundef) local_unnamed_addr #6

; Function Attrs: nofree nounwind
declare noundef ptr @fgets(ptr noundef, i32 noundef, ptr nocapture noundef) local_unnamed_addr #6

declare noundef ptr @_Z4trimPcPKc(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI5PointSaIS0_EE6resizeEmRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #7 align 2

; Function Attrs: nofree nounwind
declare noundef i32 @fseek(ptr nocapture noundef, i64 noundef, i32 noundef) local_unnamed_addr #6

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

declare noundef zeroext i1 @_ZN9Secp256K117ParsePublicKeyHexEPcR5PointRb(ptr noundef nonnull align 8 dereferenceable(393296), ptr noundef, ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #9 align 2

declare void @_Z13freetokenizerP13str_tokenizer(ptr noundef) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare noundef i32 @fclose(ptr nocapture noundef) local_unnamed_addr #6

declare noundef zeroext i1 @_ZN3Int7HasSqrtEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1

declare void @_ZN3Int7ModSqrtEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1

declare void @_ZN3Int4RandEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare noundef i32 @fflush(ptr nocapture noundef) local_unnamed_addr #6

declare i32 @bloom_init2(ptr noundef, i64 noundef, x86_fp80 noundef) local_unnamed_addr #1

declare void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind writable sret(%class.Point) align 8, ptr noundef nonnull align 8 dereferenceable(393296), ptr noundef) local_unnamed_addr #1

declare noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) 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) #3

declare void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8, ptr noundef nonnull align 8 dereferenceable(393296), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1

declare void @_ZN5PointC1ERKS_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #1

declare void @_ZN9Secp256K112DoubleDirectER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8, ptr noundef nonnull align 8 dereferenceable(393296), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1

declare void @_ZN9Secp256K19AddDirectER5PointS1_(ptr dead_on_unwind writable sret(%class.Point) align 8, ptr noundef nonnull align 8 dereferenceable(393296), ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1

declare void @_ZN5Point3SetERS_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1

declare void @_ZN5Point6ReduceEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare noundef i32 @snprintf(ptr noalias nocapture noundef writeonly, i64 noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #6

; Function Attrs: nofree nounwind
declare noundef i64 @fread(ptr nocapture noundef, i64 noundef, i64 noundef, ptr nocapture noundef) local_unnamed_addr #6

declare noundef i32 @_Z6sha256PKhmPh(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

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

; Function Attrs: nounwind
declare i32 @pthread_create(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z21thread_bPload_2bloomsPv(ptr noundef) #7

; Function Attrs: nounwind
declare i32 @pthread_detach(i64 noundef) local_unnamed_addr #0

; Function Attrs: nounwind
declare i32 @pthread_mutex_lock(ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind
declare i32 @pthread_mutex_unlock(ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z13thread_bPloadPv(ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z9bsgs_sortP11bsgs_xvaluel(ptr noundef, i64 noundef) local_unnamed_addr #7

; Function Attrs: nofree nounwind
declare noundef i64 @fwrite(ptr nocapture noundef, i64 noundef, i64 noundef, ptr nocapture noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z19thread_process_bsgsPv(ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z28thread_process_bsgs_backwardPv(ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z24thread_process_bsgs_bothPv(ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z26thread_process_bsgs_randomPv(ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z25thread_process_bsgs_dancePv(ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z14thread_processPv(ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z14thread_pub2rmdPv(ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z23thread_process_minikeysPv(ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z21thread_process_vanityPv(ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z8sleep_msi(i32 noundef) local_unnamed_addr #7

declare void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare noundef i32 @sprintf(ptr noalias nocapture noundef writeonly, ptr nocapture noundef readonly, ...) local_unnamed_addr #6

; Function Attrs: nofree nounwind willreturn memory(argmem: read)
declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #18

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #19

attributes #0 = { 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 #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 norecurse 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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nobuiltin 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 #6 = { 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 #7 = { 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 #8 = { mustprogress nofree nounwind willreturn "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #11 = { mustprogress nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #12 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #13 = { mustprogress nofree nounwind willreturn memory(argmem: readwrite) "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 #14 = { mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #15 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #16 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #17 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #18 = { nofree nounwind willreturn memory(argmem: read) }
attributes #19 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #20 = { nounwind }
attributes #21 = { builtin allocsize(0) }
attributes #22 = { builtin nounwind }
attributes #23 = { cold nounwind }
attributes #24 = { noreturn nounwind }
attributes #25 = { nounwind willreturn memory(read) }
attributes #26 = { nounwind allocsize(0) }
attributes #27 = { nounwind allocsize(0,1) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15, !10, i64 4}
!15 = !{!"_ZTS13str_tokenizer", !10, i64 0, !10, i64 4, !6, i64 8}
!16 = distinct !{!16, !13}
!17 = !{!18, !18, i64 0}
!18 = !{!"long", !7, i64 0}
!19 = distinct !{!19, !13}
!20 = distinct !{!20, !13}
!21 = distinct !{!21, !13}
!22 = !{!23, !18, i64 16}
!23 = !{!"_ZTS5bloom", !18, i64 0, !18, i64 8, !18, i64 16, !7, i64 24, !24, i64 32, !7, i64 48, !7, i64 49, !7, i64 50, !25, i64 56, !6, i64 64}
!24 = !{!"long double", !7, i64 0}
!25 = !{!"double", !7, i64 0}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = !{!23, !6, i64 64}
!33 = distinct !{!33, !13}
!34 = distinct !{!34, !13}
!35 = distinct !{!35, !13}
!36 = distinct !{!36, !13}
!37 = distinct !{!37, !13}
!38 = !{!39, !18, i64 8}
!39 = !{!"_ZTS6bPload", !10, i64 0, !18, i64 8, !18, i64 16, !18, i64 24, !18, i64 32, !10, i64 40, !10, i64 44}
!40 = !{!39, !10, i64 0}
!41 = !{!39, !10, i64 44}
!42 = distinct !{!42, !13}
!43 = !{!39, !18, i64 32}
!44 = distinct !{!44, !13}
!45 = distinct !{!45, !13}
!46 = distinct !{!46, !13}
!47 = distinct !{!47, !13}
!48 = distinct !{!48, !13}
!49 = distinct !{!49, !13}
!50 = distinct !{!50, !13}
!51 = distinct !{!51, !13}
!52 = distinct !{!52, !13}
!53 = distinct !{!53, !13}
!54 = distinct !{!54, !13}
!55 = distinct !{!55, !13}
!56 = !{!57, !10, i64 0}
!57 = !{!"_ZTS8tothread", !10, i64 0, !6, i64 8, !6, i64 16}
!58 = distinct !{!58, !13}
!59 = distinct !{!59, !13}
!60 = distinct !{!60, !13}
!61 = distinct !{!61, !13}
!62 = distinct !{!62, !13}
!63 = distinct !{!63, !13}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MergedLoadStoreMotionPass,ReassociatePass,SROAPass,SimplifyCFGPass