; LLVM IR from intuitive-robots/mdt_policy :: pyhash-0.9.3/src/t1ha/tests (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"

%struct._ia32_cpu_features = type { %struct.anon, %struct.anon, %struct.anon.0, %struct.anon.1 }
%struct.anon = type { i32, i32, i32 }
%struct.anon.0 = type { i32, i32 }
%struct.anon.1 = type { i32, i32 }
%struct.mera_t = type { ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.mera_bci_t = type { i32, i32, i32, i32, i32, i32, i64, i64, i32, i32, i32, i32, i32, i32, i64, i64 }

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@option_flags = external dso_local global i32, align 4
@.str.2 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [12 x i8], align 1
@disabled_option_flags = external dso_local global i32, align 4
@.str.10 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [3 x i8], align 1
@stderr = external global ptr, align 8
@.str.32 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [136 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [13 x i8], align 1
@t1ha_refval_2atonce = external constant [81 x i64], align 16
@.str.36 = external hidden unnamed_addr constant [16 x i8], align 1
@t1ha_refval_2atonce128 = external constant [81 x i64], align 16
@.str.37 = external hidden unnamed_addr constant [13 x i8], align 1
@t1ha_refval_2stream = external constant [81 x i64], align 16
@.str.38 = external hidden unnamed_addr constant [16 x i8], align 1
@t1ha_refval_2stream128 = external constant [81 x i64], align 16
@.str.39 = external hidden unnamed_addr constant [11 x i8], align 1
@t1ha_refval_64le = external constant [81 x i64], align 16
@.str.40 = external hidden unnamed_addr constant [11 x i8], align 1
@t1ha_refval_64be = external constant [81 x i64], align 16
@.str.41 = external hidden unnamed_addr constant [11 x i8], align 1
@t1ha_refval_32le = external constant [81 x i64], align 16
@.str.42 = external hidden unnamed_addr constant [11 x i8], align 1
@t1ha_refval_32be = external constant [81 x i64], align 16
@ia32_cpu_features = external global %struct._ia32_cpu_features, align 4
@.str.43 = external hidden unnamed_addr constant [20 x i8], align 1
@t1ha_refval_ia32aes_a = external constant [81 x i64], align 16
@.str.44 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [19 x i8], align 1
@t1ha_refval_ia32aes_b = external constant [81 x i64], align 16
@.str.46 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [7 x i8], align 1
@refval_StadtX = external constant [0 x i64], align 8
@.str.52 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [15 x i8], align 1
@stdin = external global ptr, align 8
@.str.62 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [43 x i8], align 1
@mera = external global %struct.mera_t, align 8
@.str.66 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [17 x i8], align 1
@mera_bci = external global %struct.mera_bci_t, align 8
@.str.78 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [73 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @usage() #0

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

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i8, align 1
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i64, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i64, align 8
  %14 = alloca double, 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
  %15 = load i32, ptr %4, align 4, !tbaa !5
  %16 = icmp sgt i32 %15, 1
  br i1 %16, label %17, label %344

17:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #7
  store i32 1, ptr %6, align 4, !tbaa !5
  br label %18

18:                                               ; preds = %319, %17
  %19 = load i32, ptr %6, align 4, !tbaa !5
  %20 = load i32, ptr %4, align 4, !tbaa !5
  %21 = icmp slt i32 %19, %20
  br i1 %21, label %23, label %22

22:                                               ; preds = %18
  store i32 2, ptr %7, align 4
  br label %322

23:                                               ; preds = %18
  %24 = load ptr, ptr %5, align 8, !tbaa !9
  %25 = load i32, ptr %6, align 4, !tbaa !5
  %26 = sext i32 %25 to i64
  %27 = getelementptr inbounds ptr, ptr %24, i64 %26
  %28 = load ptr, ptr %27, align 8, !tbaa !9
  %29 = call i32 @strcmp(ptr noundef @.str.1, ptr noundef %28) #8
  %30 = icmp eq i32 %29, 0
  br i1 %30, label %31, label %32

31:                                               ; preds = %23
  store i32 2, ptr @option_flags, align 4, !tbaa !5
  br label %319

32:                                               ; preds = %23
  %33 = load ptr, ptr %5, align 8, !tbaa !9
  %34 = load i32, ptr %6, align 4, !tbaa !5
  %35 = sext i32 %34 to i64
  %36 = getelementptr inbounds ptr, ptr %33, i64 %35
  %37 = load ptr, ptr %36, align 8, !tbaa !9
  %38 = call i32 @strcmp(ptr noundef @.str.2, ptr noundef %37) #8
  %39 = icmp eq i32 %38, 0
  br i1 %39, label %40, label %45

40:                                               ; preds = %32
  %41 = load i32, ptr @option_flags, align 4, !tbaa !5
  %42 = and i32 %41, -16711824
  %43 = or i32 %42, 2
  %44 = or i32 %43, 4
  store i32 %44, ptr @option_flags, align 4, !tbaa !5
  br label %319

45:                                               ; preds = %32
  %46 = load ptr, ptr %5, align 8, !tbaa !9
  %47 = load i32, ptr %6, align 4, !tbaa !5
  %48 = sext i32 %47 to i64
  %49 = getelementptr inbounds ptr, ptr %46, i64 %48
  %50 = load ptr, ptr %49, align 8, !tbaa !9
  %51 = call i32 @strcmp(ptr noundef @.str.3, ptr noundef %50) #8
  %52 = icmp eq i32 %51, 0
  br i1 %52, label %61, label %53

53:                                               ; preds = %45
  %54 = load ptr, ptr %5, align 8, !tbaa !9
  %55 = load i32, ptr %6, align 4, !tbaa !5
  %56 = sext i32 %55 to i64
  %57 = getelementptr inbounds ptr, ptr %54, i64 %56
  %58 = load ptr, ptr %57, align 8, !tbaa !9
  %59 = call i32 @strcmp(ptr noundef @.str.4, ptr noundef %58) #8
  %60 = icmp eq i32 %59, 0
  br i1 %60, label %61, label %64

61:                                               ; preds = %53, %45
  %62 = load i32, ptr @option_flags, align 4, !tbaa !5
  %63 = and i32 %62, 1
  store i32 %63, ptr @option_flags, align 4, !tbaa !5
  br label %319

64:                                               ; preds = %53
  %65 = load ptr, ptr %5, align 8, !tbaa !9
  %66 = load i32, ptr %6, align 4, !tbaa !5
  %67 = sext i32 %66 to i64
  %68 = getelementptr inbounds ptr, ptr %65, i64 %67
  %69 = load ptr, ptr %68, align 8, !tbaa !9
  %70 = call i32 @strcmp(ptr noundef @.str.5, ptr noundef %69) #8
  %71 = icmp eq i32 %70, 0
  br i1 %71, label %72, label %75

72:                                               ; preds = %64
  %73 = load i32, ptr @option_flags, align 4, !tbaa !5
  %74 = or i32 %73, 1
  store i32 %74, ptr @option_flags, align 4, !tbaa !5
  br label %319

75:                                               ; preds = %64
  %76 = load ptr, ptr %5, align 8, !tbaa !9
  %77 = load i32, ptr %6, align 4, !tbaa !5
  %78 = sext i32 %77 to i64
  %79 = getelementptr inbounds ptr, ptr %76, i64 %78
  %80 = load ptr, ptr %79, align 8, !tbaa !9
  %81 = call i32 @strcmp(ptr noundef @.str.6, ptr noundef %80) #8
  %82 = icmp eq i32 %81, 0
  br i1 %82, label %83, label %86

83:                                               ; preds = %75
  %84 = load i32, ptr @option_flags, align 4, !tbaa !5
  %85 = or i32 %84, 8
  store i32 %85, ptr @option_flags, align 4, !tbaa !5
  br label %319

86:                                               ; preds = %75
  %87 = load ptr, ptr %5, align 8, !tbaa !9
  %88 = load i32, ptr %6, align 4, !tbaa !5
  %89 = sext i32 %88 to i64
  %90 = getelementptr inbounds ptr, ptr %87, i64 %89
  %91 = load ptr, ptr %90, align 8, !tbaa !9
  %92 = call i32 @strcmp(ptr noundef @.str.7, ptr noundef %91) #8
  %93 = icmp eq i32 %92, 0
  br i1 %93, label %102, label %94

94:                                               ; preds = %86
  %95 = load ptr, ptr %5, align 8, !tbaa !9
  %96 = load i32, ptr %6, align 4, !tbaa !5
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds ptr, ptr %95, i64 %97
  %99 = load ptr, ptr %98, align 8, !tbaa !9
  %100 = call i32 @strcmp(ptr noundef @.str.8, ptr noundef %99) #8
  %101 = icmp eq i32 %100, 0
  br i1 %101, label %102, label %105

102:                                              ; preds = %94, %86
  %103 = load i32, ptr @option_flags, align 4, !tbaa !5
  %104 = or i32 %103, 9
  store i32 %104, ptr @option_flags, align 4, !tbaa !5
  br label %319

105:                                              ; preds = %94
  %106 = load ptr, ptr %5, align 8, !tbaa !9
  %107 = load i32, ptr %6, align 4, !tbaa !5
  %108 = sext i32 %107 to i64
  %109 = getelementptr inbounds ptr, ptr %106, i64 %108
  %110 = load ptr, ptr %109, align 8, !tbaa !9
  %111 = call i32 @strcmp(ptr noundef @.str.9, ptr noundef %110) #8
  %112 = icmp eq i32 %111, 0
  br i1 %112, label %113, label %116

113:                                              ; preds = %105
  %114 = load i32, ptr @option_flags, align 4, !tbaa !5
  %115 = or i32 %114, -10
  store i32 %115, ptr @option_flags, align 4, !tbaa !5
  store i32 0, ptr @disabled_option_flags, align 4, !tbaa !5
  br label %319

116:                                              ; preds = %105
  %117 = load ptr, ptr %5, align 8, !tbaa !9
  %118 = load i32, ptr %6, align 4, !tbaa !5
  %119 = sext i32 %118 to i64
  %120 = getelementptr inbounds ptr, ptr %117, i64 %119
  %121 = load ptr, ptr %120, align 8, !tbaa !9
  %122 = call i32 @strcmp(ptr noundef @.str.10, ptr noundef %121) #8
  %123 = icmp eq i32 %122, 0
  br i1 %123, label %124, label %129

124:                                              ; preds = %116
  %125 = load i32, ptr @option_flags, align 4, !tbaa !5
  %126 = or i32 %125, -16711824
  store i32 %126, ptr @option_flags, align 4, !tbaa !5
  %127 = load i32, ptr @disabled_option_flags, align 4, !tbaa !5
  %128 = and i32 %127, 16711823
  store i32 %128, ptr @disabled_option_flags, align 4, !tbaa !5
  br label %319

129:                                              ; preds = %116
  %130 = load ptr, ptr %5, align 8, !tbaa !9
  %131 = load i32, ptr %6, align 4, !tbaa !5
  %132 = sext i32 %131 to i64
  %133 = getelementptr inbounds ptr, ptr %130, i64 %132
  %134 = load ptr, ptr %133, align 8, !tbaa !9
  %135 = call i32 @strcmp(ptr noundef @.str.11, ptr noundef %134) #8
  %136 = icmp eq i32 %135, 0
  br i1 %136, label %137, label %142

137:                                              ; preds = %129
  %138 = load i32, ptr @option_flags, align 4, !tbaa !5
  %139 = or i32 %138, 2031616
  store i32 %139, ptr @option_flags, align 4, !tbaa !5
  %140 = load i32, ptr @disabled_option_flags, align 4, !tbaa !5
  %141 = and i32 %140, -2031617
  store i32 %141, ptr @disabled_option_flags, align 4, !tbaa !5
  br label %319

142:                                              ; preds = %129
  %143 = load ptr, ptr %5, align 8, !tbaa !9
  %144 = load i32, ptr %6, align 4, !tbaa !5
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds ptr, ptr %143, i64 %145
  %147 = load ptr, ptr %146, align 8, !tbaa !9
  %148 = call i32 @strcmp(ptr noundef @.str.12, ptr noundef %147) #8
  %149 = icmp eq i32 %148, 0
  br i1 %149, label %150, label %153

150:                                              ; preds = %142
  %151 = load i32, ptr @option_flags, align 4, !tbaa !5
  %152 = or i32 %151, -268435456
  store i32 %152, ptr @option_flags, align 4, !tbaa !5
  br label %319

153:                                              ; preds = %142
  %154 = load ptr, ptr %5, align 8, !tbaa !9
  %155 = load i32, ptr %6, align 4, !tbaa !5
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds ptr, ptr %154, i64 %156
  %158 = load ptr, ptr %157, align 8, !tbaa !9
  %159 = call i32 @strcmp(ptr noundef @.str.13, ptr noundef %158) #8
  %160 = icmp eq i32 %159, 0
  br i1 %160, label %161, label %164

161:                                              ; preds = %153
  %162 = load i32, ptr @disabled_option_flags, align 4, !tbaa !5
  %163 = or i32 %162, -268435456
  store i32 %163, ptr @disabled_option_flags, align 4, !tbaa !5
  br label %319

164:                                              ; preds = %153
  %165 = load ptr, ptr %5, align 8, !tbaa !9
  %166 = load i32, ptr %6, align 4, !tbaa !5
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds ptr, ptr %165, i64 %167
  %169 = load ptr, ptr %168, align 8, !tbaa !9
  %170 = call zeroext i1 @option(ptr noundef %169, ptr noundef @.str.14, i32 noundef 16)
  br i1 %170, label %171, label %172

171:                                              ; preds = %164
  br label %319

172:                                              ; preds = %164
  %173 = load ptr, ptr %5, align 8, !tbaa !9
  %174 = load i32, ptr %6, align 4, !tbaa !5
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds ptr, ptr %173, i64 %175
  %177 = load ptr, ptr %176, align 8, !tbaa !9
  %178 = call zeroext i1 @option(ptr noundef %177, ptr noundef @.str.15, i32 noundef 32)
  br i1 %178, label %186, label %179

179:                                              ; preds = %172
  %180 = load ptr, ptr %5, align 8, !tbaa !9
  %181 = load i32, ptr %6, align 4, !tbaa !5
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds ptr, ptr %180, i64 %182
  %184 = load ptr, ptr %183, align 8, !tbaa !9
  %185 = call zeroext i1 @option(ptr noundef %184, ptr noundef @.str.16, i32 noundef 32)
  br i1 %185, label %186, label %187

186:                                              ; preds = %179, %172
  br label %319

187:                                              ; preds = %179
  %188 = load ptr, ptr %5, align 8, !tbaa !9
  %189 = load i32, ptr %6, align 4, !tbaa !5
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds ptr, ptr %188, i64 %190
  %192 = load ptr, ptr %191, align 8, !tbaa !9
  %193 = call zeroext i1 @option(ptr noundef %192, ptr noundef @.str.17, i32 noundef 64)
  br i1 %193, label %194, label %195

194:                                              ; preds = %187
  br label %319

195:                                              ; preds = %187
  %196 = load ptr, ptr %5, align 8, !tbaa !9
  %197 = load i32, ptr %6, align 4, !tbaa !5
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds ptr, ptr %196, i64 %198
  %200 = load ptr, ptr %199, align 8, !tbaa !9
  %201 = call zeroext i1 @option(ptr noundef %200, ptr noundef @.str.18, i32 noundef 256)
  br i1 %201, label %202, label %203

202:                                              ; preds = %195
  br label %319

203:                                              ; preds = %195
  %204 = load ptr, ptr %5, align 8, !tbaa !9
  %205 = load i32, ptr %6, align 4, !tbaa !5
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds ptr, ptr %204, i64 %206
  %208 = load ptr, ptr %207, align 8, !tbaa !9
  %209 = call zeroext i1 @option(ptr noundef %208, ptr noundef @.str.19, i32 noundef 512)
  br i1 %209, label %210, label %211

210:                                              ; preds = %203
  br label %319

211:                                              ; preds = %203
  %212 = load ptr, ptr %5, align 8, !tbaa !9
  %213 = load i32, ptr %6, align 4, !tbaa !5
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds ptr, ptr %212, i64 %214
  %216 = load ptr, ptr %215, align 8, !tbaa !9
  %217 = call zeroext i1 @option(ptr noundef %216, ptr noundef @.str.20, i32 noundef 1024)
  br i1 %217, label %218, label %219

218:                                              ; preds = %211
  br label %319

219:                                              ; preds = %211
  %220 = load ptr, ptr %5, align 8, !tbaa !9
  %221 = load i32, ptr %6, align 4, !tbaa !5
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds ptr, ptr %220, i64 %222
  %224 = load ptr, ptr %223, align 8, !tbaa !9
  %225 = call zeroext i1 @option(ptr noundef %224, ptr noundef @.str.21, i32 noundef 67108864)
  br i1 %225, label %226, label %227

226:                                              ; preds = %219
  br label %319

227:                                              ; preds = %219
  %228 = load ptr, ptr %5, align 8, !tbaa !9
  %229 = load i32, ptr %6, align 4, !tbaa !5
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds ptr, ptr %228, i64 %230
  %232 = load ptr, ptr %231, align 8, !tbaa !9
  %233 = call zeroext i1 @option(ptr noundef %232, ptr noundef @.str.22, i32 noundef 134217728)
  br i1 %233, label %234, label %235

234:                                              ; preds = %227
  br label %319

235:                                              ; preds = %227
  %236 = load ptr, ptr %5, align 8, !tbaa !9
  %237 = load i32, ptr %6, align 4, !tbaa !5
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds ptr, ptr %236, i64 %238
  %240 = load ptr, ptr %239, align 8, !tbaa !9
  %241 = call zeroext i1 @option(ptr noundef %240, ptr noundef @.str.23, i32 noundef 16777216)
  br i1 %241, label %242, label %243

242:                                              ; preds = %235
  br label %319

243:                                              ; preds = %235
  %244 = load ptr, ptr %5, align 8, !tbaa !9
  %245 = load i32, ptr %6, align 4, !tbaa !5
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds ptr, ptr %244, i64 %246
  %248 = load ptr, ptr %247, align 8, !tbaa !9
  %249 = call zeroext i1 @option(ptr noundef %248, ptr noundef @.str.24, i32 noundef 33554432)
  br i1 %249, label %250, label %251

250:                                              ; preds = %243
  br label %319

251:                                              ; preds = %243
  %252 = load ptr, ptr %5, align 8, !tbaa !9
  %253 = load i32, ptr %6, align 4, !tbaa !5
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds ptr, ptr %252, i64 %254
  %256 = load ptr, ptr %255, align 8, !tbaa !9
  %257 = call zeroext i1 @option(ptr noundef %256, ptr noundef @.str.25, i32 noundef 65536)
  br i1 %257, label %258, label %259

258:                                              ; preds = %251
  br label %319

259:                                              ; preds = %251
  %260 = load ptr, ptr %5, align 8, !tbaa !9
  %261 = load i32, ptr %6, align 4, !tbaa !5
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds ptr, ptr %260, i64 %262
  %264 = load ptr, ptr %263, align 8, !tbaa !9
  %265 = call zeroext i1 @option(ptr noundef %264, ptr noundef @.str.26, i32 noundef 131072)
  br i1 %265, label %266, label %267

266:                                              ; preds = %259
  br label %319

267:                                              ; preds = %259
  %268 = load ptr, ptr %5, align 8, !tbaa !9
  %269 = load i32, ptr %6, align 4, !tbaa !5
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds ptr, ptr %268, i64 %270
  %272 = load ptr, ptr %271, align 8, !tbaa !9
  %273 = call zeroext i1 @option(ptr noundef %272, ptr noundef @.str.27, i32 noundef 262144)
  br i1 %273, label %274, label %275

274:                                              ; preds = %267
  br label %319

275:                                              ; preds = %267
  %276 = load ptr, ptr %5, align 8, !tbaa !9
  %277 = load i32, ptr %6, align 4, !tbaa !5
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds ptr, ptr %276, i64 %278
  %280 = load ptr, ptr %279, align 8, !tbaa !9
  %281 = call zeroext i1 @option(ptr noundef %280, ptr noundef @.str.28, i32 noundef 524288)
  br i1 %281, label %282, label %283

282:                                              ; preds = %275
  br label %319

283:                                              ; preds = %275
  %284 = load ptr, ptr %5, align 8, !tbaa !9
  %285 = load i32, ptr %6, align 4, !tbaa !5
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds ptr, ptr %284, i64 %286
  %288 = load ptr, ptr %287, align 8, !tbaa !9
  %289 = call zeroext i1 @option(ptr noundef %288, ptr noundef @.str.29, i32 noundef 1048576)
  br i1 %289, label %290, label %291

290:                                              ; preds = %283
  br label %319

291:                                              ; preds = %283
  %292 = load ptr, ptr %5, align 8, !tbaa !9
  %293 = load i32, ptr %6, align 4, !tbaa !5
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds ptr, ptr %292, i64 %294
  %296 = load ptr, ptr %295, align 8, !tbaa !9
  %297 = call i32 @strcmp(ptr noundef @.str.30, ptr noundef %296) #8
  %298 = icmp eq i32 %297, 0
  br i1 %298, label %307, label %299

299:                                              ; preds = %291
  %300 = load ptr, ptr %5, align 8, !tbaa !9
  %301 = load i32, ptr %6, align 4, !tbaa !5
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds ptr, ptr %300, i64 %302
  %304 = load ptr, ptr %303, align 8, !tbaa !9
  %305 = call i32 @strcmp(ptr noundef @.str.31, ptr noundef %304) #8
  %306 = icmp eq i32 %305, 0
  br i1 %306, label %307, label %308

307:                                              ; preds = %299, %291
  call void @usage()
  store i32 0, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %322

308:                                              ; preds = %299
  %309 = load ptr, ptr @stderr, align 8, !tbaa !9
  %310 = load ptr, ptr %5, align 8, !tbaa !9
  %311 = getelementptr inbounds ptr, ptr %310, i64 0
  %312 = load ptr, ptr %311, align 8, !tbaa !9
  %313 = load ptr, ptr %5, align 8, !tbaa !9
  %314 = load i32, ptr %6, align 4, !tbaa !5
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds ptr, ptr %313, i64 %315
  %317 = load ptr, ptr %316, align 8, !tbaa !9
  %318 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %309, ptr noundef @.str.32, ptr noundef %312, ptr noundef %317) #7
  call void @usage()
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %322

319:                                              ; preds = %290, %282, %274, %266, %258, %250, %242, %234, %226, %218, %210, %202, %194, %186, %171, %161, %150, %137, %124, %113, %102, %83, %72, %61, %40, %31
  %320 = load i32, ptr %6, align 4, !tbaa !5
  %321 = add nsw i32 %320, 1
  store i32 %321, ptr %6, align 4, !tbaa !5
  br label %18, !llvm.loop !11

322:                                              ; preds = %308, %307, %22
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  %323 = load i32, ptr %7, align 4
  switch i32 %323, label %706 [
    i32 2, label %324
    i32 1, label %704
  ]

324:                                              ; preds = %322
  %325 = load i32, ptr @option_flags, align 4, !tbaa !5
  %326 = and i32 %325, -16711824
  %327 = icmp eq i32 %326, 0
  br i1 %327, label %328, label %336

328:                                              ; preds = %324
  %329 = load i32, ptr @option_flags, align 4, !tbaa !5
  %330 = and i32 %329, 4
  %331 = icmp ne i32 %330, 0
  %332 = zext i1 %331 to i64
  %333 = select i1 %331, i32 1024, i32 1904
  %334 = load i32, ptr @option_flags, align 4, !tbaa !5
  %335 = or i32 %334, %333
  store i32 %335, ptr @option_flags, align 4, !tbaa !5
  br label %336

336:                                              ; preds = %328, %324
  %337 = load i32, ptr @option_flags, align 4, !tbaa !5
  %338 = and i32 %337, 2031616
  %339 = icmp eq i32 %338, 0
  br i1 %339, label %340, label %343

340:                                              ; preds = %336
  %341 = load i32, ptr @option_flags, align 4, !tbaa !5
  %342 = or i32 %341, 589824
  store i32 %342, ptr @option_flags, align 4, !tbaa !5
  br label %343

343:                                              ; preds = %340, %336
  br label %345

344:                                              ; preds = %2
  store i32 591728, ptr @option_flags, align 4, !tbaa !5
  store i32 150994944, ptr @disabled_option_flags, align 4, !tbaa !5
  br label %345

345:                                              ; preds = %344, %343
  %346 = call zeroext i1 @is_option_set(i32 noundef 2)
  br i1 %346, label %348, label %347

347:                                              ; preds = %345
  call void @print_build_info()
  br label %348

348:                                              ; preds = %347, %345
  %349 = call i32 @t1ha_selfcheck__all_enabled()
  %350 = icmp ne i32 %349, 0
  br i1 %350, label %351, label %356

351:                                              ; preds = %348
  %352 = call zeroext i1 @is_option_set(i32 noundef 2)
  br i1 %352, label %353, label %354

353:                                              ; preds = %351
  call void @print_build_info()
  br label %354

354:                                              ; preds = %353, %351
  %355 = call i32 @puts(ptr noundef @.str.33)
  store i32 1, ptr %3, align 4
  br label %704

356:                                              ; preds = %348
  %357 = call zeroext i1 @is_option_set(i32 noundef 2)
  br i1 %357, label %360, label %358

358:                                              ; preds = %356
  %359 = call i32 @puts(ptr noundef @.str.34)
  br label %360

360:                                              ; preds = %358, %356
  br label %361

361:                                              ; preds = %360
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #7
  store i8 0, ptr %8, align 1, !tbaa !13
  %362 = call zeroext i1 @verify(ptr noundef @.str.35, ptr noundef @t1ha2_atonce, ptr noundef @t1ha_refval_2atonce)
  %363 = zext i1 %362 to i32
  %364 = load i8, ptr %8, align 1, !tbaa !13, !range !15, !noundef !16
  %365 = trunc i8 %364 to i1
  %366 = zext i1 %365 to i32
  %367 = or i32 %366, %363
  %368 = icmp ne i32 %367, 0
  %369 = zext i1 %368 to i8
  store i8 %369, ptr %8, align 1, !tbaa !13
  %370 = call zeroext i1 @verify(ptr noundef @.str.36, ptr noundef @thunk_t1ha2_atonce128, ptr noundef @t1ha_refval_2atonce128)
  %371 = zext i1 %370 to i32
  %372 = load i8, ptr %8, align 1, !tbaa !13, !range !15, !noundef !16
  %373 = trunc i8 %372 to i1
  %374 = zext i1 %373 to i32
  %375 = or i32 %374, %371
  %376 = icmp ne i32 %375, 0
  %377 = zext i1 %376 to i8
  store i8 %377, ptr %8, align 1, !tbaa !13
  %378 = call zeroext i1 @verify(ptr noundef @.str.37, ptr noundef @thunk_t1ha2_stream, ptr noundef @t1ha_refval_2stream)
  %379 = zext i1 %378 to i32
  %380 = load i8, ptr %8, align 1, !tbaa !13, !range !15, !noundef !16
  %381 = trunc i8 %380 to i1
  %382 = zext i1 %381 to i32
  %383 = or i32 %382, %379
  %384 = icmp ne i32 %383, 0
  %385 = zext i1 %384 to i8
  store i8 %385, ptr %8, align 1, !tbaa !13
  %386 = call zeroext i1 @verify(ptr noundef @.str.38, ptr noundef @thunk_t1ha2_stream128, ptr noundef @t1ha_refval_2stream128)
  %387 = zext i1 %386 to i32
  %388 = load i8, ptr %8, align 1, !tbaa !13, !range !15, !noundef !16
  %389 = trunc i8 %388 to i1
  %390 = zext i1 %389 to i32
  %391 = or i32 %390, %387
  %392 = icmp ne i32 %391, 0
  %393 = zext i1 %392 to i8
  store i8 %393, ptr %8, align 1, !tbaa !13
  %394 = call zeroext i1 @verify(ptr noundef @.str.39, ptr noundef @t1ha1_le, ptr noundef @t1ha_refval_64le)
  %395 = zext i1 %394 to i32
  %396 = load i8, ptr %8, align 1, !tbaa !13, !range !15, !noundef !16
  %397 = trunc i8 %396 to i1
  %398 = zext i1 %397 to i32
  %399 = or i32 %398, %395
  %400 = icmp ne i32 %399, 0
  %401 = zext i1 %400 to i8
  store i8 %401, ptr %8, align 1, !tbaa !13
  %402 = call zeroext i1 @verify(ptr noundef @.str.40, ptr noundef @t1ha1_be, ptr noundef @t1ha_refval_64be)
  %403 = zext i1 %402 to i32
  %404 = load i8, ptr %8, align 1, !tbaa !13, !range !15, !noundef !16
  %405 = trunc i8 %404 to i1
  %406 = zext i1 %405 to i32
  %407 = or i32 %406, %403
  %408 = icmp ne i32 %407, 0
  %409 = zext i1 %408 to i8
  store i8 %409, ptr %8, align 1, !tbaa !13
  %410 = call zeroext i1 @verify(ptr noundef @.str.41, ptr noundef @t1ha0_32le, ptr noundef @t1ha_refval_32le)
  %411 = zext i1 %410 to i32
  %412 = load i8, ptr %8, align 1, !tbaa !13, !range !15, !noundef !16
  %413 = trunc i8 %412 to i1
  %414 = zext i1 %413 to i32
  %415 = or i32 %414, %411
  %416 = icmp ne i32 %415, 0
  %417 = zext i1 %416 to i8
  store i8 %417, ptr %8, align 1, !tbaa !13
  %418 = call zeroext i1 @verify(ptr noundef @.str.42, ptr noundef @t1ha0_32be, ptr noundef @t1ha_refval_32be)
  %419 = zext i1 %418 to i32
  %420 = load i8, ptr %8, align 1, !tbaa !13, !range !15, !noundef !16
  %421 = trunc i8 %420 to i1
  %422 = zext i1 %421 to i32
  %423 = or i32 %422, %419
  %424 = icmp ne i32 %423, 0
  %425 = zext i1 %424 to i8
  store i8 %425, ptr %8, align 1, !tbaa !13
  call void @ia32_fetch_cpu_features()
  %426 = load i32, ptr getelementptr inbounds (%struct.anon, ptr @ia32_cpu_features, i32 0, i32 1), align 4, !tbaa !17
  %427 = and i32 %426, 33554432
  %428 = icmp ne i32 %427, 0
  br i1 %428, label %429, label %464

429:                                              ; preds = %361
  %430 = call zeroext i1 @verify(ptr noundef @.str.43, ptr noundef @t1ha0_ia32aes_noavx, ptr noundef @t1ha_refval_ia32aes_a)
  %431 = zext i1 %430 to i32
  %432 = load i8, ptr %8, align 1, !tbaa !13, !range !15, !noundef !16
  %433 = trunc i8 %432 to i1
  %434 = zext i1 %433 to i32
  %435 = or i32 %434, %431
  %436 = icmp ne i32 %435, 0
  %437 = zext i1 %436 to i8
  store i8 %437, ptr %8, align 1, !tbaa !13
  %438 = load i32, ptr getelementptr inbounds (%struct.anon, ptr @ia32_cpu_features, i32 0, i32 1), align 4, !tbaa !17
  %439 = and i32 %438, 436207616
  %440 = icmp eq i32 %439, 436207616
  br i1 %440, label %441, label %463

441:                                              ; preds = %429
  %442 = call zeroext i1 @verify(ptr noundef @.str.44, ptr noundef @t1ha0_ia32aes_avx, ptr noundef @t1ha_refval_ia32aes_a)
  %443 = zext i1 %442 to i32
  %444 = load i8, ptr %8, align 1, !tbaa !13, !range !15, !noundef !16
  %445 = trunc i8 %444 to i1
  %446 = zext i1 %445 to i32
  %447 = or i32 %446, %443
  %448 = icmp ne i32 %447, 0
  %449 = zext i1 %448 to i8
  store i8 %449, ptr %8, align 1, !tbaa !13
  %450 = load i32, ptr getelementptr inbounds (%struct._ia32_cpu_features, ptr @ia32_cpu_features, i32 0, i32 1), align 4, !tbaa !21
  %451 = and i32 %450, 32
  %452 = icmp ne i32 %451, 0
  br i1 %452, label %453, label %462

453:                                              ; preds = %441
  %454 = call zeroext i1 @verify(ptr noundef @.str.45, ptr noundef @t1ha0_ia32aes_avx2, ptr noundef @t1ha_refval_ia32aes_b)
  %455 = zext i1 %454 to i32
  %456 = load i8, ptr %8, align 1, !tbaa !13, !range !15, !noundef !16
  %457 = trunc i8 %456 to i1
  %458 = zext i1 %457 to i32
  %459 = or i32 %458, %455
  %460 = icmp ne i32 %459, 0
  %461 = zext i1 %460 to i8
  store i8 %461, ptr %8, align 1, !tbaa !13
  br label %462

462:                                              ; preds = %453, %441
  br label %463

463:                                              ; preds = %462, %429
  br label %473

464:                                              ; preds = %361
  %465 = load i32, ptr @option_flags, align 4, !tbaa !5
  %466 = and i32 %465, -2147483648
  %467 = icmp ne i32 %466, 0
  br i1 %467, label %468, label %470

468:                                              ; preds = %464
  %469 = call i32 (ptr, ...) @printf(ptr noundef @.str.46)
  br label %470

470:                                              ; preds = %468, %464
  %471 = load i32, ptr @option_flags, align 4, !tbaa !5
  %472 = and i32 %471, -268435457
  store i32 %472, ptr @option_flags, align 4, !tbaa !5
  br label %473

473:                                              ; preds = %470, %463
  %474 = load i32, ptr getelementptr inbounds (%struct.anon, ptr @ia32_cpu_features, i32 0, i32 1), align 4, !tbaa !17
  %475 = and i32 %474, 436207616
  %476 = icmp ne i32 %475, 436207616
  br i1 %476, label %477, label %480

477:                                              ; preds = %473
  %478 = load i32, ptr @option_flags, align 4, !tbaa !5
  %479 = and i32 %478, -536870913
  store i32 %479, ptr @option_flags, align 4, !tbaa !5
  br label %480

480:                                              ; preds = %477, %473
  %481 = load i32, ptr getelementptr inbounds (%struct._ia32_cpu_features, ptr @ia32_cpu_features, i32 0, i32 1), align 4, !tbaa !21
  %482 = and i32 %481, 32
  %483 = icmp eq i32 %482, 0
  br i1 %483, label %484, label %487

484:                                              ; preds = %480
  %485 = load i32, ptr @option_flags, align 4, !tbaa !5
  %486 = and i32 %485, -1073741825
  store i32 %486, ptr @option_flags, align 4, !tbaa !5
  br label %487

487:                                              ; preds = %484, %480
  %488 = call zeroext i1 @HighwayHash64_verify(ptr noundef @HighwayHash64_pure_c, ptr noundef @.str.47)
  %489 = zext i1 %488 to i32
  %490 = load i8, ptr %8, align 1, !tbaa !13, !range !15, !noundef !16
  %491 = trunc i8 %490 to i1
  %492 = zext i1 %491 to i32
  %493 = or i32 %492, %489
  %494 = icmp ne i32 %493, 0
  %495 = zext i1 %494 to i8
  store i8 %495, ptr %8, align 1, !tbaa !13
  %496 = call zeroext i1 @HighwayHash64_verify(ptr noundef @HighwayHash64_Portable, ptr noundef @.str.48)
  %497 = zext i1 %496 to i32
  %498 = load i8, ptr %8, align 1, !tbaa !13, !range !15, !noundef !16
  %499 = trunc i8 %498 to i1
  %500 = zext i1 %499 to i32
  %501 = or i32 %500, %497
  %502 = icmp ne i32 %501, 0
  %503 = zext i1 %502 to i8
  store i8 %503, ptr %8, align 1, !tbaa !13
  %504 = load i32, ptr getelementptr inbounds (%struct.anon, ptr @ia32_cpu_features, i32 0, i32 1), align 4, !tbaa !17
  %505 = zext i32 %504 to i64
  %506 = and i64 %505, 524288
  %507 = icmp ne i64 %506, 0
  br i1 %507, label %508, label %510

508:                                              ; preds = %487
  %509 = call zeroext i1 @HighwayHash64_verify(ptr noundef @HighwayHash64_SSE41, ptr noundef @.str.49)
  br label %510

510:                                              ; preds = %508, %487
  %511 = load i32, ptr getelementptr inbounds (%struct._ia32_cpu_features, ptr @ia32_cpu_features, i32 0, i32 1), align 4, !tbaa !21
  %512 = and i32 %511, 32
  %513 = icmp ne i32 %512, 0
  br i1 %513, label %514, label %516

514:                                              ; preds = %510
  %515 = call zeroext i1 @HighwayHash64_verify(ptr noundef @HighwayHash64_AVX2, ptr noundef @.str.50)
  br label %516

516:                                              ; preds = %514, %510
  %517 = call zeroext i1 @verify(ptr noundef @.str.51, ptr noundef @thunk_StadtX, ptr noundef @refval_StadtX)
  %518 = zext i1 %517 to i32
  %519 = load i8, ptr %8, align 1, !tbaa !13, !range !15, !noundef !16
  %520 = trunc i8 %519 to i1
  %521 = zext i1 %520 to i32
  %522 = or i32 %521, %518
  %523 = icmp ne i32 %522, 0
  %524 = zext i1 %523 to i8
  store i8 %524, ptr %8, align 1, !tbaa !13
  %525 = load i8, ptr %8, align 1, !tbaa !13, !range !15, !noundef !16
  %526 = trunc i8 %525 to i1
  br i1 %526, label %527, label %528

527:                                              ; preds = %516
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %703

528:                                              ; preds = %516
  %529 = call zeroext i1 @is_option_set(i32 noundef 4)
  br i1 %529, label %530, label %623

530:                                              ; preds = %528
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  store ptr null, ptr %9, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  store ptr null, ptr %10, align 8, !tbaa !9
  %531 = call zeroext i1 @is_selected(i32 noundef 32)
  br i1 %531, label %532, label %533

532:                                              ; preds = %530
  store ptr @thunk_HighwayHash64_pure_c, ptr %9, align 8, !tbaa !9
  store ptr @.str.52, ptr %10, align 8, !tbaa !9
  br label %576

533:                                              ; preds = %530
  %534 = call zeroext i1 @is_selected(i32 noundef 33554448)
  br i1 %534, label %535, label %536

535:                                              ; preds = %533
  store ptr @XXH64, ptr %9, align 8, !tbaa !9
  store ptr @.str.53, ptr %10, align 8, !tbaa !9
  br label %575

536:                                              ; preds = %533
  %537 = call zeroext i1 @is_selected(i32 noundef 16777232)
  br i1 %537, label %538, label %539

538:                                              ; preds = %536
  store ptr @thunk_XXH32, ptr %9, align 8, !tbaa !9
  store ptr @.str.54, ptr %10, align 8, !tbaa !9
  br label %574

539:                                              ; preds = %536
  %540 = call zeroext i1 @is_selected(i32 noundef 33554496)
  br i1 %540, label %541, label %542

541:                                              ; preds = %539
  store ptr @thunk_StadtX, ptr %9, align 8, !tbaa !9
  store ptr @.str.51, ptr %10, align 8, !tbaa !9
  br label %573

542:                                              ; preds = %539
  %543 = call zeroext i1 @is_selected(i32 noundef 33555456)
  br i1 %543, label %544, label %545

544:                                              ; preds = %542
  store ptr @t1ha2_atonce, ptr %9, align 8, !tbaa !9
  store ptr @.str.35, ptr %10, align 8, !tbaa !9
  br label %572

545:                                              ; preds = %542
  %546 = call zeroext i1 @is_selected(i32 noundef 100663808)
  br i1 %546, label %547, label %548

547:                                              ; preds = %545
  store ptr @t1ha1_le, ptr %9, align 8, !tbaa !9
  store ptr @.str.55, ptr %10, align 8, !tbaa !9
  br label %571

548:                                              ; preds = %545
  %549 = call zeroext i1 @is_selected(i32 noundef 167772672)
  br i1 %549, label %550, label %551

550:                                              ; preds = %548
  store ptr @t1ha1_be, ptr %9, align 8, !tbaa !9
  store ptr @.str.56, ptr %10, align 8, !tbaa !9
  br label %570

551:                                              ; preds = %548
  %552 = call zeroext i1 @is_selected(i32 noundef 83886336)
  br i1 %552, label %553, label %554

553:                                              ; preds = %551
  store ptr @t1ha0_32le, ptr %9, align 8, !tbaa !9
  store ptr @.str.41, ptr %10, align 8, !tbaa !9
  br label %569

554:                                              ; preds = %551
  %555 = call zeroext i1 @is_selected(i32 noundef 150995200)
  br i1 %555, label %556, label %557

556:                                              ; preds = %554
  store ptr @t1ha0_32be, ptr %9, align 8, !tbaa !9
  store ptr @.str.42, ptr %10, align 8, !tbaa !9
  br label %568

557:                                              ; preds = %554
  %558 = call zeroext i1 @is_selected(i32 noundef 256)
  br i1 %558, label %559, label %560

559:                                              ; preds = %557
  store ptr @t1ha0, ptr %9, align 8, !tbaa !9
  store ptr @.str.57, ptr %10, align 8, !tbaa !9
  br label %567

560:                                              ; preds = %557
  %561 = call zeroext i1 @is_selected(i32 noundef 16)
  br i1 %561, label %562, label %563

562:                                              ; preds = %560
  store ptr @XXH64, ptr %9, align 8, !tbaa !9
  store ptr @.str.53, ptr %10, align 8, !tbaa !9
  br label %566

563:                                              ; preds = %560
  %564 = load ptr, ptr @stderr, align 8, !tbaa !9
  %565 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %564, ptr noundef @.str.58) #7
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %622

566:                                              ; preds = %562
  br label %567

567:                                              ; preds = %566, %559
  br label %568

568:                                              ; preds = %567, %556
  br label %569

569:                                              ; preds = %568, %553
  br label %570

570:                                              ; preds = %569, %550
  br label %571

571:                                              ; preds = %570, %547
  br label %572

572:                                              ; preds = %571, %544
  br label %573

573:                                              ; preds = %572, %541
  br label %574

574:                                              ; preds = %573, %538
  br label %575

575:                                              ; preds = %574, %535
  br label %576

576:                                              ; preds = %575, %532
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  store i64 2048, ptr %11, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %577 = load i64, ptr %11, align 8, !tbaa !22
  %578 = call noalias ptr @malloc(i64 noundef %577) #9
  store ptr %578, ptr %12, align 8, !tbaa !9
  %579 = load ptr, ptr %12, align 8, !tbaa !9
  %580 = icmp ne ptr %579, null
  br i1 %580, label %582, label %581

581:                                              ; preds = %576
  call void @perror(ptr noundef @.str.59)
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %621

582:                                              ; preds = %576
  %583 = load ptr, ptr %5, align 8, !tbaa !9
  %584 = getelementptr inbounds ptr, ptr %583, i64 0
  %585 = load ptr, ptr %584, align 8, !tbaa !9
  %586 = load ptr, ptr %10, align 8, !tbaa !9
  %587 = call i32 (ptr, ...) @printf(ptr noundef @.str.60, ptr noundef %585, ptr noundef %586)
  %588 = icmp sgt i32 1, %587
  br i1 %588, label %589, label %590

589:                                              ; preds = %582
  call void @perror(ptr noundef @.str.61)
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %621

590:                                              ; preds = %582
  br label %591

591:                                              ; preds = %618, %590
  %592 = load ptr, ptr @stdin, align 8, !tbaa !9
  %593 = call i32 @feof(ptr noundef %592) #7
  %594 = icmp ne i32 %593, 0
  %595 = xor i1 %594, true
  br i1 %595, label %596, label %619

596:                                              ; preds = %591
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %597 = load ptr, ptr @stdin, align 8, !tbaa !9
  %598 = call i64 @getline(ptr noundef %12, ptr noundef %11, ptr noundef %597)
  store i64 %598, ptr %13, align 8, !tbaa !22
  %599 = load i64, ptr %13, align 8, !tbaa !22
  %600 = icmp slt i64 %599, 0
  br i1 %600, label %601, label %607

601:                                              ; preds = %596
  %602 = load ptr, ptr @stdin, align 8, !tbaa !9
  %603 = call i32 @feof(ptr noundef %602) #7
  %604 = icmp ne i32 %603, 0
  br i1 %604, label %605, label %606

605:                                              ; preds = %601
  store i32 6, ptr %7, align 4
  br label %616

606:                                              ; preds = %601
  call void @perror(ptr noundef @.str.62)
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %616

607:                                              ; preds = %596
  %608 = load ptr, ptr %9, align 8, !tbaa !9
  %609 = load ptr, ptr %12, align 8, !tbaa !9
  %610 = load i64, ptr %13, align 8, !tbaa !22
  %611 = call i64 %608(ptr noundef %609, i64 noundef %610, i64 noundef 42)
  %612 = call i32 (ptr, ...) @printf(ptr noundef @.str.63, i64 noundef %611)
  %613 = icmp sgt i32 1, %612
  br i1 %613, label %614, label %615

614:                                              ; preds = %607
  call void @perror(ptr noundef @.str.61)
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %616

615:                                              ; preds = %607
  store i32 0, ptr %7, align 4
  br label %616

616:                                              ; preds = %615, %614, %606, %605
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  %617 = load i32, ptr %7, align 4
  switch i32 %617, label %621 [
    i32 0, label %618
    i32 6, label %619
  ]

618:                                              ; preds = %616
  br label %591, !llvm.loop !24

619:                                              ; preds = %616, %591
  %620 = load ptr, ptr %12, align 8, !tbaa !9
  call void @free(ptr noundef %620) #7
  store i32 0, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %621

621:                                              ; preds = %619, %616, %589, %581
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  br label %622

622:                                              ; preds = %621, %563
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  br label %703

623:                                              ; preds = %528
  %624 = call i32 (ptr, ...) @printf(ptr noundef @.str.64)
  %625 = call i32 @fflush(ptr noundef null)
  %626 = call zeroext i1 @mera_init()
  br i1 %626, label %629, label %627

627:                                              ; preds = %623
  %628 = call i32 (ptr, ...) @printf(ptr noundef @.str.65)
  store i32 0, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %703

629:                                              ; preds = %623
  %630 = load i32, ptr getelementptr inbounds (%struct.mera_t, ptr @mera, i32 0, i32 6), align 4, !tbaa !25
  %631 = icmp sge i32 %630, 0
  br i1 %631, label %632, label %635

632:                                              ; preds = %629
  %633 = load i32, ptr getelementptr inbounds (%struct.mera_t, ptr @mera, i32 0, i32 6), align 4, !tbaa !25
  %634 = call i32 (ptr, ...) @printf(ptr noundef @.str.66, i32 noundef %633)
  br label %635

635:                                              ; preds = %632, %629
  %636 = load ptr, ptr getelementptr inbounds (%struct.mera_t, ptr @mera, i32 0, i32 4), align 8, !tbaa !27
  %637 = call i32 (ptr, ...) @printf(ptr noundef @.str.67, ptr noundef %636)
  %638 = load i32, ptr getelementptr inbounds (%struct.mera_t, ptr @mera, i32 0, i32 5), align 8, !tbaa !28
  %639 = and i32 %638, 2
  %640 = icmp ne i32 %639, 0
  %641 = zext i1 %640 to i64
  %642 = select i1 %640, ptr @.str.69, ptr @.str.70
  %643 = load i32, ptr getelementptr inbounds (%struct.mera_t, ptr @mera, i32 0, i32 5), align 8, !tbaa !28
  %644 = and i32 %643, 16
  %645 = icmp ne i32 %644, 0
  %646 = zext i1 %645 to i64
  %647 = select i1 %645, ptr @.str.71, ptr @.str.72
  %648 = call i32 (ptr, ...) @printf(ptr noundef @.str.68, ptr noundef %642, ptr noundef %647)
  %649 = call i32 (ptr, ...) @printf(ptr noundef @.str.73)
  %650 = call i32 @fflush(ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %651 = call double @bench_mats()
  store double %651, ptr %14, align 8, !tbaa !29
  %652 = load double, ptr %14, align 8, !tbaa !29
  %653 = load ptr, ptr getelementptr inbounds (%struct.mera_t, ptr @mera, i32 0, i32 3), align 8, !tbaa !31
  %654 = load double, ptr %14, align 8, !tbaa !29
  %655 = fcmp ogt double %654, 1.500000e+00
  %656 = zext i1 %655 to i64
  %657 = select i1 %655, ptr @.str.75, ptr @.str.76
  %658 = load double, ptr %14, align 8, !tbaa !29
  %659 = fdiv double 1.000000e+00, %658
  %660 = load double, ptr %14, align 8, !tbaa !29
  %661 = fdiv double 1.000000e+00, %660
  %662 = fcmp ogt double %661, 1.500000e+00
  %663 = zext i1 %662 to i64
  %664 = select i1 %662, ptr @.str.75, ptr @.str.76
  %665 = load ptr, ptr getelementptr inbounds (%struct.mera_t, ptr @mera, i32 0, i32 3), align 8, !tbaa !31
  %666 = call i32 (ptr, ...) @printf(ptr noundef @.str.74, double noundef %652, ptr noundef %653, ptr noundef %657, double noundef %659, ptr noundef %664, ptr noundef %665)
  %667 = call zeroext i1 @is_option_set(i32 noundef 8)
  br i1 %667, label %668, label %686

668:                                              ; preds = %635
  %669 = call i32 (ptr, ...) @printf(ptr noundef @.str.77)
  %670 = load i32, ptr @mera_bci, align 8, !tbaa !32
  %671 = icmp ne i32 %670, 0
  br i1 %671, label %672, label %675

672:                                              ; preds = %668
  %673 = load i32, ptr @mera_bci, align 8, !tbaa !32
  %674 = call i32 (ptr, ...) @printf(ptr noundef @.str.78, i32 noundef %673)
  br label %675

675:                                              ; preds = %672, %668
  %676 = load i32, ptr getelementptr inbounds (%struct.mera_bci_t, ptr @mera_bci, i32 0, i32 1), align 4, !tbaa !34
  %677 = load i32, ptr getelementptr inbounds (%struct.mera_bci_t, ptr @mera_bci, i32 0, i32 4), align 8, !tbaa !35
  %678 = load i32, ptr getelementptr inbounds (%struct.mera_bci_t, ptr @mera_bci, i32 0, i32 5), align 4, !tbaa !36
  %679 = load i32, ptr getelementptr inbounds (%struct.mera_bci_t, ptr @mera_bci, i32 0, i32 13), align 4, !tbaa !37
  %680 = call i32 (ptr, ...) @printf(ptr noundef @.str.79, i32 noundef %676, i32 noundef %677, i32 noundef %678, i32 noundef %679)
  %681 = load i64, ptr getelementptr inbounds (%struct.mera_bci_t, ptr @mera_bci, i32 0, i32 6), align 8, !tbaa !38
  %682 = load i64, ptr getelementptr inbounds (%struct.mera_bci_t, ptr @mera_bci, i32 0, i32 7), align 8, !tbaa !39
  %683 = load i32, ptr getelementptr inbounds (%struct.mera_bci_t, ptr @mera_bci, i32 0, i32 2), align 8, !tbaa !40
  %684 = load i32, ptr getelementptr inbounds (%struct.mera_bci_t, ptr @mera_bci, i32 0, i32 3), align 4, !tbaa !41
  %685 = call i32 (ptr, ...) @printf(ptr noundef @.str.80, i64 noundef %681, i64 noundef %682, i32 noundef %683, i32 noundef %684)
  br label %686

686:                                              ; preds = %675, %635
  %687 = call i32 @fflush(ptr noundef null)
  %688 = call zeroext i1 @is_option_set(i32 noundef 65536)
  br i1 %688, label %689, label %690

689:                                              ; preds = %686
  call void @bench_size(i32 noundef 7, ptr noundef @.str.25)
  br label %690

690:                                              ; preds = %689, %686
  %691 = call zeroext i1 @is_option_set(i32 noundef 131072)
  br i1 %691, label %692, label %693

692:                                              ; preds = %690
  call void @bench_size(i32 noundef 63, ptr noundef @.str.26)
  br label %693

693:                                              ; preds = %692, %690
  %694 = call zeroext i1 @is_option_set(i32 noundef 262144)
  br i1 %694, label %695, label %696

695:                                              ; preds = %693
  call void @bench_size(i32 noundef 1024, ptr noundef @.str.27)
  br label %696

696:                                              ; preds = %695, %693
  %697 = call zeroext i1 @is_option_set(i32 noundef 524288)
  br i1 %697, label %698, label %699

698:                                              ; preds = %696
  call void @bench_size(i32 noundef 16384, ptr noundef @.str.28)
  br label %699

699:                                              ; preds = %698, %696
  %700 = call zeroext i1 @is_option_set(i32 noundef 1048576)
  br i1 %700, label %701, label %702

701:                                              ; preds = %699
  call void @bench_size(i32 noundef 262144, ptr noundef @.str.29)
  br label %702

702:                                              ; preds = %701, %699
  store i32 0, ptr %3, align 4
  store i32 1, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  br label %703

703:                                              ; preds = %702, %627, %622, %527
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #7
  br label %704

704:                                              ; preds = %703, %354, %322
  %705 = load i32, ptr %3, align 4
  ret i32 %705

706:                                              ; preds = %322
  unreachable
}

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

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare hidden zeroext i1 @option(ptr noundef, ptr noundef, i32 noundef) #0

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #4

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden zeroext i1 @is_option_set(i32 noundef) #5

; Function Attrs: nounwind uwtable
declare hidden void @print_build_info() #0

declare hidden i32 @t1ha_selfcheck__all_enabled() #1

declare i32 @puts(ptr noundef) #1

declare zeroext i1 @verify(ptr noundef, ptr noundef, ptr noundef) #1

declare hidden i64 @t1ha2_atonce(ptr noundef, i64 noundef, i64 noundef) #1

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

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

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

declare hidden i64 @t1ha1_le(ptr noundef, i64 noundef, i64 noundef) #1

declare hidden i64 @t1ha1_be(ptr noundef, i64 noundef, i64 noundef) #1

declare hidden i64 @t1ha0_32le(ptr noundef, i64 noundef, i64 noundef) #1

declare hidden i64 @t1ha0_32be(ptr noundef, i64 noundef, i64 noundef) #1

declare void @ia32_fetch_cpu_features() #1

declare hidden i64 @t1ha0_ia32aes_noavx(ptr noundef, i64 noundef, i64 noundef) #1

declare hidden i64 @t1ha0_ia32aes_avx(ptr noundef, i64 noundef, i64 noundef) #1

declare hidden i64 @t1ha0_ia32aes_avx2(ptr noundef, i64 noundef, i64 noundef) #1

declare zeroext i1 @HighwayHash64_verify(ptr noundef, ptr noundef) #1

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

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

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

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden zeroext i1 @is_selected(i32 noundef) #5

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

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

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

declare hidden i64 @t1ha0(ptr noundef, i64 noundef, i64 noundef) #1

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

declare void @perror(ptr noundef) #1

; Function Attrs: nounwind
declare i32 @feof(ptr noundef) #4

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

; Function Attrs: nounwind
declare void @free(ptr noundef) #4

declare i32 @fflush(ptr noundef) #1

declare zeroext i1 @mera_init() #1

declare double @bench_mats() #1

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !14, i64 0}
!14 = !{!"_Bool", !7, i64 0}
!15 = !{i8 0, i8 2}
!16 = !{}
!17 = !{!18, !6, i64 4}
!18 = !{!"_ia32_cpu_features", !19, i64 0, !19, i64 12, !20, i64 24, !20, i64 32}
!19 = !{!"", !6, i64 0, !6, i64 4, !6, i64 8}
!20 = !{!"", !6, i64 0, !6, i64 4}
!21 = !{!18, !6, i64 12}
!22 = !{!23, !23, i64 0}
!23 = !{!"long", !7, i64 0}
!24 = distinct !{!24, !12}
!25 = !{!26, !6, i64 44}
!26 = !{!"", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !6, i64 40, !6, i64 44}
!27 = !{!26, !10, i64 32}
!28 = !{!26, !6, i64 40}
!29 = !{!30, !30, i64 0}
!30 = !{!"double", !7, i64 0}
!31 = !{!26, !10, i64 24}
!32 = !{!33, !6, i64 0}
!33 = !{!"", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !23, i64 24, !23, i64 32, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52, !6, i64 56, !6, i64 60, !23, i64 64, !23, i64 72}
!34 = !{!33, !6, i64 4}
!35 = !{!33, !6, i64 16}
!36 = !{!33, !6, i64 20}
!37 = !{!33, !6, i64 60}
!38 = !{!33, !23, i64 24}
!39 = !{!33, !23, i64 32}
!40 = !{!33, !6, i64 8}
!41 = !{!33, !6, i64 12}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct._ia32_cpu_features = type { %struct.anon, %struct.anon, %struct.anon.0, %struct.anon.1 }
%struct.anon = type { i32, i32, i32 }
%struct.anon.0 = type { i32, i32 }
%struct.anon.1 = type { i32, i32 }
%struct.mera_t = type { ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.mera_bci_t = type { i32, i32, i32, i32, i32, i32, i64, i64, i32, i32, i32, i32, i32, i32, i64, i64 }

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@option_flags = external dso_local local_unnamed_addr global i32, align 4
@.str.2 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [12 x i8], align 1
@disabled_option_flags = external dso_local local_unnamed_addr global i32, align 4
@.str.10 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [3 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.32 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [136 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [13 x i8], align 1
@t1ha_refval_2atonce = external constant [81 x i64], align 16
@.str.36 = external hidden unnamed_addr constant [16 x i8], align 1
@t1ha_refval_2atonce128 = external constant [81 x i64], align 16
@.str.37 = external hidden unnamed_addr constant [13 x i8], align 1
@t1ha_refval_2stream = external constant [81 x i64], align 16
@.str.38 = external hidden unnamed_addr constant [16 x i8], align 1
@t1ha_refval_2stream128 = external constant [81 x i64], align 16
@.str.39 = external hidden unnamed_addr constant [11 x i8], align 1
@t1ha_refval_64le = external constant [81 x i64], align 16
@.str.40 = external hidden unnamed_addr constant [11 x i8], align 1
@t1ha_refval_64be = external constant [81 x i64], align 16
@.str.41 = external hidden unnamed_addr constant [11 x i8], align 1
@t1ha_refval_32le = external constant [81 x i64], align 16
@.str.42 = external hidden unnamed_addr constant [11 x i8], align 1
@t1ha_refval_32be = external constant [81 x i64], align 16
@ia32_cpu_features = external local_unnamed_addr global %struct._ia32_cpu_features, align 4
@.str.43 = external hidden unnamed_addr constant [20 x i8], align 1
@t1ha_refval_ia32aes_a = external constant [81 x i64], align 16
@.str.44 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [19 x i8], align 1
@t1ha_refval_ia32aes_b = external constant [81 x i64], align 16
@.str.46 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [7 x i8], align 1
@refval_StadtX = external constant [0 x i64], align 8
@.str.52 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [15 x i8], align 1
@stdin = external local_unnamed_addr global ptr, align 8
@.str.62 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [43 x i8], align 1
@mera = external local_unnamed_addr global %struct.mera_t, align 8
@.str.66 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [17 x i8], align 1
@mera_bci = external local_unnamed_addr global %struct.mera_bci_t, align 8
@.str.78 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [73 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @usage() local_unnamed_addr #0

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

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @main(i32 noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #0 {
  %3 = alloca i64, align 8
  %4 = alloca ptr, align 8
  %5 = icmp sgt i32 %0, 1
  br i1 %5, label %.preheader129.preheader, label %156

.preheader129.preheader:                          ; preds = %2
  %wide.trip.count = zext nneg i32 %0 to i64
  br label %.preheader129

.preheader129:                                    ; preds = %.preheader129.preheader, %141
  %indvars.iv = phi i64 [ 1, %.preheader129.preheader ], [ %indvars.iv.next, %141 ]
  %6 = getelementptr inbounds ptr, ptr %1, i64 %indvars.iv
  %7 = load ptr, ptr %6, align 8, !tbaa !5
  %8 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.1, ptr noundef nonnull dereferenceable(1) %7) #8
  %9 = icmp eq i32 %8, 0
  br i1 %9, label %10, label %11

10:                                               ; preds = %.preheader129
  store i32 2, ptr @option_flags, align 4, !tbaa !9
  br label %141

11:                                               ; preds = %.preheader129
  %12 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef nonnull dereferenceable(1) %7) #8
  %13 = icmp eq i32 %12, 0
  br i1 %13, label %14, label %18

14:                                               ; preds = %11
  %15 = load i32, ptr @option_flags, align 4, !tbaa !9
  %16 = and i32 %15, -16711824
  %17 = or disjoint i32 %16, 6
  store i32 %17, ptr @option_flags, align 4, !tbaa !9
  br label %141

18:                                               ; preds = %11
  %19 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.3, ptr noundef nonnull dereferenceable(1) %7) #8
  %20 = icmp eq i32 %19, 0
  br i1 %20, label %24, label %21

21:                                               ; preds = %18
  %22 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.4, ptr noundef nonnull dereferenceable(1) %7) #8
  %23 = icmp eq i32 %22, 0
  br i1 %23, label %24, label %27

24:                                               ; preds = %21, %18
  %25 = load i32, ptr @option_flags, align 4, !tbaa !9
  %26 = and i32 %25, 1
  store i32 %26, ptr @option_flags, align 4, !tbaa !9
  br label %141

27:                                               ; preds = %21
  %28 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.5, ptr noundef nonnull dereferenceable(1) %7) #8
  %29 = icmp eq i32 %28, 0
  br i1 %29, label %30, label %33

30:                                               ; preds = %27
  %31 = load i32, ptr @option_flags, align 4, !tbaa !9
  %32 = or i32 %31, 1
  store i32 %32, ptr @option_flags, align 4, !tbaa !9
  br label %141

33:                                               ; preds = %27
  %34 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.6, ptr noundef nonnull dereferenceable(1) %7) #8
  %35 = icmp eq i32 %34, 0
  br i1 %35, label %36, label %39

36:                                               ; preds = %33
  %37 = load i32, ptr @option_flags, align 4, !tbaa !9
  %38 = or i32 %37, 8
  store i32 %38, ptr @option_flags, align 4, !tbaa !9
  br label %141

39:                                               ; preds = %33
  %40 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.7, ptr noundef nonnull dereferenceable(1) %7) #8
  %41 = icmp eq i32 %40, 0
  br i1 %41, label %45, label %42

42:                                               ; preds = %39
  %43 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.8, ptr noundef nonnull dereferenceable(1) %7) #8
  %44 = icmp eq i32 %43, 0
  br i1 %44, label %45, label %48

45:                                               ; preds = %42, %39
  %46 = load i32, ptr @option_flags, align 4, !tbaa !9
  %47 = or i32 %46, 9
  store i32 %47, ptr @option_flags, align 4, !tbaa !9
  br label %141

48:                                               ; preds = %42
  %49 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.9, ptr noundef nonnull dereferenceable(1) %7) #8
  %50 = icmp eq i32 %49, 0
  br i1 %50, label %51, label %54

51:                                               ; preds = %48
  %52 = load i32, ptr @option_flags, align 4, !tbaa !9
  %53 = or i32 %52, -10
  store i32 %53, ptr @option_flags, align 4, !tbaa !9
  store i32 0, ptr @disabled_option_flags, align 4, !tbaa !9
  br label %141

54:                                               ; preds = %48
  %55 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.10, ptr noundef nonnull dereferenceable(1) %7) #8
  %56 = icmp eq i32 %55, 0
  br i1 %56, label %57, label %62

57:                                               ; preds = %54
  %58 = load i32, ptr @option_flags, align 4, !tbaa !9
  %59 = or i32 %58, -16711824
  store i32 %59, ptr @option_flags, align 4, !tbaa !9
  %60 = load i32, ptr @disabled_option_flags, align 4, !tbaa !9
  %61 = and i32 %60, 16711823
  store i32 %61, ptr @disabled_option_flags, align 4, !tbaa !9
  br label %141

62:                                               ; preds = %54
  %63 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.11, ptr noundef nonnull dereferenceable(1) %7) #8
  %64 = icmp eq i32 %63, 0
  br i1 %64, label %65, label %70

65:                                               ; preds = %62
  %66 = load i32, ptr @option_flags, align 4, !tbaa !9
  %67 = or i32 %66, 2031616
  store i32 %67, ptr @option_flags, align 4, !tbaa !9
  %68 = load i32, ptr @disabled_option_flags, align 4, !tbaa !9
  %69 = and i32 %68, -2031617
  store i32 %69, ptr @disabled_option_flags, align 4, !tbaa !9
  br label %141

70:                                               ; preds = %62
  %71 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.12, ptr noundef nonnull dereferenceable(1) %7) #8
  %72 = icmp eq i32 %71, 0
  br i1 %72, label %73, label %76

73:                                               ; preds = %70
  %74 = load i32, ptr @option_flags, align 4, !tbaa !9
  %75 = or i32 %74, -268435456
  store i32 %75, ptr @option_flags, align 4, !tbaa !9
  br label %141

76:                                               ; preds = %70
  %77 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.13, ptr noundef nonnull dereferenceable(1) %7) #8
  %78 = icmp eq i32 %77, 0
  br i1 %78, label %79, label %82

79:                                               ; preds = %76
  %80 = load i32, ptr @disabled_option_flags, align 4, !tbaa !9
  %81 = or i32 %80, -268435456
  store i32 %81, ptr @disabled_option_flags, align 4, !tbaa !9
  br label %141

82:                                               ; preds = %76
  %83 = tail call zeroext i1 @option(ptr noundef %7, ptr noundef nonnull @.str.14, i32 noundef 16)
  br i1 %83, label %141, label %84

84:                                               ; preds = %82
  %85 = load ptr, ptr %6, align 8, !tbaa !5
  %86 = tail call zeroext i1 @option(ptr noundef %85, ptr noundef nonnull @.str.15, i32 noundef 32)
  br i1 %86, label %141, label %87

87:                                               ; preds = %84
  %88 = load ptr, ptr %6, align 8, !tbaa !5
  %89 = tail call zeroext i1 @option(ptr noundef %88, ptr noundef nonnull @.str.16, i32 noundef 32)
  br i1 %89, label %141, label %90

90:                                               ; preds = %87
  %91 = load ptr, ptr %6, align 8, !tbaa !5
  %92 = tail call zeroext i1 @option(ptr noundef %91, ptr noundef nonnull @.str.17, i32 noundef 64)
  br i1 %92, label %141, label %93

93:                                               ; preds = %90
  %94 = load ptr, ptr %6, align 8, !tbaa !5
  %95 = tail call zeroext i1 @option(ptr noundef %94, ptr noundef nonnull @.str.18, i32 noundef 256)
  br i1 %95, label %141, label %96

96:                                               ; preds = %93
  %97 = load ptr, ptr %6, align 8, !tbaa !5
  %98 = tail call zeroext i1 @option(ptr noundef %97, ptr noundef nonnull @.str.19, i32 noundef 512)
  br i1 %98, label %141, label %99

99:                                               ; preds = %96
  %100 = load ptr, ptr %6, align 8, !tbaa !5
  %101 = tail call zeroext i1 @option(ptr noundef %100, ptr noundef nonnull @.str.20, i32 noundef 1024)
  br i1 %101, label %141, label %102

102:                                              ; preds = %99
  %103 = load ptr, ptr %6, align 8, !tbaa !5
  %104 = tail call zeroext i1 @option(ptr noundef %103, ptr noundef nonnull @.str.21, i32 noundef 67108864)
  br i1 %104, label %141, label %105

105:                                              ; preds = %102
  %106 = load ptr, ptr %6, align 8, !tbaa !5
  %107 = tail call zeroext i1 @option(ptr noundef %106, ptr noundef nonnull @.str.22, i32 noundef 134217728)
  br i1 %107, label %141, label %108

108:                                              ; preds = %105
  %109 = load ptr, ptr %6, align 8, !tbaa !5
  %110 = tail call zeroext i1 @option(ptr noundef %109, ptr noundef nonnull @.str.23, i32 noundef 16777216)
  br i1 %110, label %141, label %111

111:                                              ; preds = %108
  %112 = load ptr, ptr %6, align 8, !tbaa !5
  %113 = tail call zeroext i1 @option(ptr noundef %112, ptr noundef nonnull @.str.24, i32 noundef 33554432)
  br i1 %113, label %141, label %114

114:                                              ; preds = %111
  %115 = load ptr, ptr %6, align 8, !tbaa !5
  %116 = tail call zeroext i1 @option(ptr noundef %115, ptr noundef nonnull @.str.25, i32 noundef 65536)
  br i1 %116, label %141, label %117

117:                                              ; preds = %114
  %118 = load ptr, ptr %6, align 8, !tbaa !5
  %119 = tail call zeroext i1 @option(ptr noundef %118, ptr noundef nonnull @.str.26, i32 noundef 131072)
  br i1 %119, label %141, label %120

120:                                              ; preds = %117
  %121 = load ptr, ptr %6, align 8, !tbaa !5
  %122 = tail call zeroext i1 @option(ptr noundef %121, ptr noundef nonnull @.str.27, i32 noundef 262144)
  br i1 %122, label %141, label %123

123:                                              ; preds = %120
  %124 = load ptr, ptr %6, align 8, !tbaa !5
  %125 = tail call zeroext i1 @option(ptr noundef %124, ptr noundef nonnull @.str.28, i32 noundef 524288)
  br i1 %125, label %141, label %126

126:                                              ; preds = %123
  %127 = load ptr, ptr %6, align 8, !tbaa !5
  %128 = tail call zeroext i1 @option(ptr noundef %127, ptr noundef nonnull @.str.29, i32 noundef 1048576)
  br i1 %128, label %141, label %129

129:                                              ; preds = %126
  %130 = load ptr, ptr %6, align 8, !tbaa !5
  %131 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.30, ptr noundef nonnull dereferenceable(1) %130) #8
  %132 = icmp eq i32 %131, 0
  br i1 %132, label %136, label %133

133:                                              ; preds = %129
  %134 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull dereferenceable(1) %130) #8
  %135 = icmp eq i32 %134, 0
  br i1 %135, label %136, label %137

136:                                              ; preds = %133, %129
  tail call void @usage()
  br label %.thread

137:                                              ; preds = %133
  %138 = load ptr, ptr @stderr, align 8, !tbaa !5
  %139 = load ptr, ptr %1, align 8, !tbaa !5
  %140 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %138, ptr noundef nonnull @.str.32, ptr noundef %139, ptr noundef %130) #9
  tail call void @usage()
  br label %.thread

141:                                              ; preds = %126, %123, %120, %117, %114, %111, %108, %105, %102, %99, %96, %93, %90, %84, %87, %82, %79, %73, %65, %57, %51, %45, %36, %30, %24, %14, %10
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %142, label %.preheader129, !llvm.loop !11

142:                                              ; preds = %141
  %143 = load i32, ptr @option_flags, align 4, !tbaa !9
  %144 = and i32 %143, -16711824
  %145 = icmp eq i32 %144, 0
  br i1 %145, label %146, label %150

146:                                              ; preds = %142
  %147 = and i32 %143, 4
  %.not = icmp eq i32 %147, 0
  %148 = select i1 %.not, i32 1904, i32 1024
  %149 = or disjoint i32 %148, %143
  store i32 %149, ptr @option_flags, align 4, !tbaa !9
  br label %150

150:                                              ; preds = %146, %142
  %151 = phi i32 [ %149, %146 ], [ %143, %142 ]
  %152 = and i32 %151, 2031616
  %153 = icmp eq i32 %152, 0
  br i1 %153, label %154, label %157

154:                                              ; preds = %150
  %155 = or disjoint i32 %151, 589824
  store i32 %155, ptr @option_flags, align 4, !tbaa !9
  br label %157

156:                                              ; preds = %2
  store i32 591728, ptr @option_flags, align 4, !tbaa !9
  store i32 150994944, ptr @disabled_option_flags, align 4, !tbaa !9
  br label %157

157:                                              ; preds = %150, %154, %156
  %158 = tail call zeroext i1 @is_option_set(i32 noundef 2)
  br i1 %158, label %160, label %159

159:                                              ; preds = %157
  tail call void @print_build_info()
  br label %160

160:                                              ; preds = %159, %157
  %161 = tail call i32 @t1ha_selfcheck__all_enabled() #10
  %.not105 = icmp eq i32 %161, 0
  %162 = tail call zeroext i1 @is_option_set(i32 noundef 2)
  br i1 %.not105, label %167, label %163

163:                                              ; preds = %160
  br i1 %162, label %164, label %165

164:                                              ; preds = %163
  tail call void @print_build_info()
  br label %165

165:                                              ; preds = %164, %163
  %166 = tail call i32 @puts(ptr noundef nonnull dereferenceable(1) @.str.33)
  br label %.thread

167:                                              ; preds = %160
  br i1 %162, label %170, label %168

168:                                              ; preds = %167
  %169 = tail call i32 @puts(ptr noundef nonnull dereferenceable(1) @.str.34)
  br label %170

170:                                              ; preds = %167, %168
  %171 = tail call zeroext i1 @verify(ptr noundef nonnull @.str.35, ptr noundef nonnull @t1ha2_atonce, ptr noundef nonnull @t1ha_refval_2atonce) #10
  %172 = tail call zeroext i1 @verify(ptr noundef nonnull @.str.36, ptr noundef nonnull @thunk_t1ha2_atonce128, ptr noundef nonnull @t1ha_refval_2atonce128) #10
  %173 = or i1 %171, %172
  %174 = tail call zeroext i1 @verify(ptr noundef nonnull @.str.37, ptr noundef nonnull @thunk_t1ha2_stream, ptr noundef nonnull @t1ha_refval_2stream) #10
  %175 = or i1 %173, %174
  %176 = tail call zeroext i1 @verify(ptr noundef nonnull @.str.38, ptr noundef nonnull @thunk_t1ha2_stream128, ptr noundef nonnull @t1ha_refval_2stream128) #10
  %177 = or i1 %175, %176
  %178 = tail call zeroext i1 @verify(ptr noundef nonnull @.str.39, ptr noundef nonnull @t1ha1_le, ptr noundef nonnull @t1ha_refval_64le) #10
  %179 = or i1 %177, %178
  %180 = tail call zeroext i1 @verify(ptr noundef nonnull @.str.40, ptr noundef nonnull @t1ha1_be, ptr noundef nonnull @t1ha_refval_64be) #10
  %181 = or i1 %179, %180
  %182 = tail call zeroext i1 @verify(ptr noundef nonnull @.str.41, ptr noundef nonnull @t1ha0_32le, ptr noundef nonnull @t1ha_refval_32le) #10
  %183 = or i1 %181, %182
  %184 = tail call zeroext i1 @verify(ptr noundef nonnull @.str.42, ptr noundef nonnull @t1ha0_32be, ptr noundef nonnull @t1ha_refval_32be) #10
  %185 = or i1 %183, %184
  tail call void @ia32_fetch_cpu_features() #10
  %186 = load i32, ptr getelementptr inbounds (i8, ptr @ia32_cpu_features, i64 4), align 4, !tbaa !13
  %187 = and i32 %186, 33554432
  %.not106 = icmp eq i32 %187, 0
  br i1 %.not106, label %202, label %188

188:                                              ; preds = %170
  %189 = tail call zeroext i1 @verify(ptr noundef nonnull @.str.43, ptr noundef nonnull @t1ha0_ia32aes_noavx, ptr noundef nonnull @t1ha_refval_ia32aes_a) #10
  %190 = or i1 %185, %189
  %191 = load i32, ptr getelementptr inbounds (i8, ptr @ia32_cpu_features, i64 4), align 4, !tbaa !13
  %192 = and i32 %191, 436207616
  %193 = icmp eq i32 %192, 436207616
  br i1 %193, label %194, label %209

194:                                              ; preds = %188
  %195 = tail call zeroext i1 @verify(ptr noundef nonnull @.str.44, ptr noundef nonnull @t1ha0_ia32aes_avx, ptr noundef nonnull @t1ha_refval_ia32aes_a) #10
  %196 = or i1 %190, %195
  %197 = load i32, ptr getelementptr inbounds (i8, ptr @ia32_cpu_features, i64 12), align 4, !tbaa !17
  %198 = and i32 %197, 32
  %.not108 = icmp eq i32 %198, 0
  br i1 %.not108, label %209, label %199

199:                                              ; preds = %194
  %200 = tail call zeroext i1 @verify(ptr noundef nonnull @.str.45, ptr noundef nonnull @t1ha0_ia32aes_avx2, ptr noundef nonnull @t1ha_refval_ia32aes_b) #10
  %201 = or i1 %196, %200
  br label %209

202:                                              ; preds = %170
  %203 = load i32, ptr @option_flags, align 4, !tbaa !9
  %.not107 = icmp sgt i32 %203, -1
  br i1 %.not107, label %206, label %204

204:                                              ; preds = %202
  %205 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.46)
  %.pre = load i32, ptr @option_flags, align 4, !tbaa !9
  br label %206

206:                                              ; preds = %204, %202
  %207 = phi i32 [ %.pre, %204 ], [ %203, %202 ]
  %208 = and i32 %207, -268435457
  store i32 %208, ptr @option_flags, align 4, !tbaa !9
  br label %209

209:                                              ; preds = %188, %199, %194, %206
  %.098.in = phi i1 [ %201, %199 ], [ %196, %194 ], [ %190, %188 ], [ %185, %206 ]
  %210 = load i32, ptr getelementptr inbounds (i8, ptr @ia32_cpu_features, i64 4), align 4, !tbaa !13
  %211 = and i32 %210, 436207616
  %.not109 = icmp eq i32 %211, 436207616
  br i1 %.not109, label %215, label %212

212:                                              ; preds = %209
  %213 = load i32, ptr @option_flags, align 4, !tbaa !9
  %214 = and i32 %213, -536870913
  store i32 %214, ptr @option_flags, align 4, !tbaa !9
  br label %215

215:                                              ; preds = %212, %209
  %216 = load i32, ptr getelementptr inbounds (i8, ptr @ia32_cpu_features, i64 12), align 4, !tbaa !17
  %217 = and i32 %216, 32
  %218 = icmp eq i32 %217, 0
  br i1 %218, label %219, label %222

219:                                              ; preds = %215
  %220 = load i32, ptr @option_flags, align 4, !tbaa !9
  %221 = and i32 %220, -1073741825
  store i32 %221, ptr @option_flags, align 4, !tbaa !9
  br label %222

222:                                              ; preds = %219, %215
  %223 = tail call zeroext i1 @HighwayHash64_verify(ptr noundef nonnull @HighwayHash64_pure_c, ptr noundef nonnull @.str.47) #10
  %224 = or i1 %.098.in, %223
  %225 = tail call zeroext i1 @HighwayHash64_verify(ptr noundef nonnull @HighwayHash64_Portable, ptr noundef nonnull @.str.48) #10
  %226 = or i1 %224, %225
  %227 = load i32, ptr getelementptr inbounds (i8, ptr @ia32_cpu_features, i64 4), align 4, !tbaa !13
  %228 = and i32 %227, 524288
  %.not110 = icmp eq i32 %228, 0
  br i1 %.not110, label %231, label %229

229:                                              ; preds = %222
  %230 = tail call zeroext i1 @HighwayHash64_verify(ptr noundef nonnull @HighwayHash64_SSE41, ptr noundef nonnull @.str.49) #10
  br label %231

231:                                              ; preds = %229, %222
  %232 = load i32, ptr getelementptr inbounds (i8, ptr @ia32_cpu_features, i64 12), align 4, !tbaa !17
  %233 = and i32 %232, 32
  %.not111 = icmp eq i32 %233, 0
  br i1 %.not111, label %236, label %234

234:                                              ; preds = %231
  %235 = tail call zeroext i1 @HighwayHash64_verify(ptr noundef nonnull @HighwayHash64_AVX2, ptr noundef nonnull @.str.50) #10
  br label %236

236:                                              ; preds = %234, %231
  %237 = tail call zeroext i1 @verify(ptr noundef nonnull @.str.51, ptr noundef nonnull @thunk_StadtX, ptr noundef nonnull @refval_StadtX) #10
  %238 = or i1 %226, %237
  br i1 %238, label %.thread, label %239

239:                                              ; preds = %236
  %240 = tail call zeroext i1 @is_option_set(i32 noundef 4)
  br i1 %240, label %241, label %291

241:                                              ; preds = %239
  %242 = tail call zeroext i1 @is_selected(i32 noundef 32)
  br i1 %242, label %266, label %243

243:                                              ; preds = %241
  %244 = tail call zeroext i1 @is_selected(i32 noundef 33554448)
  br i1 %244, label %266, label %245

245:                                              ; preds = %243
  %246 = tail call zeroext i1 @is_selected(i32 noundef 16777232)
  br i1 %246, label %266, label %247

247:                                              ; preds = %245
  %248 = tail call zeroext i1 @is_selected(i32 noundef 33554496)
  br i1 %248, label %266, label %249

249:                                              ; preds = %247
  %250 = tail call zeroext i1 @is_selected(i32 noundef 33555456)
  br i1 %250, label %266, label %251

251:                                              ; preds = %249
  %252 = tail call zeroext i1 @is_selected(i32 noundef 100663808)
  br i1 %252, label %266, label %253

253:                                              ; preds = %251
  %254 = tail call zeroext i1 @is_selected(i32 noundef 167772672)
  br i1 %254, label %266, label %255

255:                                              ; preds = %253
  %256 = tail call zeroext i1 @is_selected(i32 noundef 83886336)
  br i1 %256, label %266, label %257

257:                                              ; preds = %255
  %258 = tail call zeroext i1 @is_selected(i32 noundef 150995200)
  br i1 %258, label %266, label %259

259:                                              ; preds = %257
  %260 = tail call zeroext i1 @is_selected(i32 noundef 256)
  br i1 %260, label %266, label %261

261:                                              ; preds = %259
  %262 = tail call zeroext i1 @is_selected(i32 noundef 16)
  br i1 %262, label %266, label %263

263:                                              ; preds = %261
  %264 = load ptr, ptr @stderr, align 8, !tbaa !5
  %265 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %264, ptr noundef nonnull @.str.58) #9
  br label %.thread

266:                                              ; preds = %261, %259, %257, %255, %253, %251, %249, %247, %245, %243, %241
  %.097 = phi ptr [ @thunk_HighwayHash64_pure_c, %241 ], [ @XXH64, %243 ], [ @thunk_XXH32, %245 ], [ @thunk_StadtX, %247 ], [ @t1ha2_atonce, %249 ], [ @t1ha1_le, %251 ], [ @t1ha1_be, %253 ], [ @t1ha0_32le, %255 ], [ @t1ha0_32be, %257 ], [ @t1ha0, %259 ], [ @XXH64, %261 ]
  %.096 = phi ptr [ @.str.52, %241 ], [ @.str.53, %243 ], [ @.str.54, %245 ], [ @.str.51, %247 ], [ @.str.35, %249 ], [ @.str.55, %251 ], [ @.str.56, %253 ], [ @.str.41, %255 ], [ @.str.42, %257 ], [ @.str.57, %259 ], [ @.str.53, %261 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #10
  store i64 2048, ptr %3, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #10
  %267 = tail call noalias dereferenceable_or_null(2048) ptr @malloc(i64 noundef 2048) #11
  store ptr %267, ptr %4, align 8, !tbaa !5
  %.not115 = icmp eq ptr %267, null
  br i1 %.not115, label %268, label %269

268:                                              ; preds = %266
  tail call void @perror(ptr noundef nonnull @.str.59) #12
  br label %.thread123

269:                                              ; preds = %266
  %270 = load ptr, ptr %1, align 8, !tbaa !5
  %271 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.60, ptr noundef %270, ptr noundef nonnull %.096)
  %272 = icmp slt i32 %271, 1
  br i1 %272, label %273, label %.preheader

273:                                              ; preds = %269
  tail call void @perror(ptr noundef nonnull @.str.61) #12
  br label %.thread123

.preheader:                                       ; preds = %269, %284
  %274 = load ptr, ptr @stdin, align 8, !tbaa !5
  %275 = call i32 @feof(ptr noundef %274) #10
  %.not116 = icmp eq i32 %275, 0
  br i1 %.not116, label %276, label %.thread126

276:                                              ; preds = %.preheader
  %277 = load ptr, ptr @stdin, align 8, !tbaa !5
  %278 = call i64 @getline(ptr noundef nonnull %4, ptr noundef nonnull %3, ptr noundef %277) #10
  %279 = icmp slt i64 %278, 0
  br i1 %279, label %280, label %284

280:                                              ; preds = %276
  %281 = load ptr, ptr @stdin, align 8, !tbaa !5
  %282 = call i32 @feof(ptr noundef %281) #10
  %.not117 = icmp eq i32 %282, 0
  br i1 %.not117, label %283, label %.thread126

283:                                              ; preds = %280
  call void @perror(ptr noundef nonnull @.str.62) #12
  br label %.thread123

284:                                              ; preds = %276
  %285 = load ptr, ptr %4, align 8, !tbaa !5
  %286 = call i64 %.097(ptr noundef %285, i64 noundef %278, i64 noundef 42) #10
  %287 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.63, i64 noundef %286)
  %288 = icmp slt i32 %287, 1
  br i1 %288, label %289, label %.preheader

289:                                              ; preds = %284
  call void @perror(ptr noundef nonnull @.str.61) #12
  br label %.thread123

.thread126:                                       ; preds = %.preheader, %280
  %290 = load ptr, ptr %4, align 8, !tbaa !5
  call void @free(ptr noundef %290) #10
  br label %.thread123

.thread123:                                       ; preds = %289, %283, %.thread126, %273, %268
  %.4 = phi i32 [ 1, %273 ], [ 0, %.thread126 ], [ 1, %268 ], [ 1, %283 ], [ 1, %289 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  br label %.thread

291:                                              ; preds = %239
  %292 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.64)
  %293 = tail call i32 @fflush(ptr noundef null)
  %294 = tail call zeroext i1 @mera_init() #10
  br i1 %294, label %297, label %295

295:                                              ; preds = %291
  %296 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.65)
  br label %.thread

297:                                              ; preds = %291
  %298 = load i32, ptr getelementptr inbounds (i8, ptr @mera, i64 44), align 4, !tbaa !20
  %299 = icmp sgt i32 %298, -1
  br i1 %299, label %300, label %302

300:                                              ; preds = %297
  %301 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.66, i32 noundef %298)
  br label %302

302:                                              ; preds = %300, %297
  %303 = load ptr, ptr getelementptr inbounds (i8, ptr @mera, i64 32), align 8, !tbaa !22
  %304 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.67, ptr noundef %303)
  %305 = load i32, ptr getelementptr inbounds (i8, ptr @mera, i64 40), align 8, !tbaa !23
  %306 = and i32 %305, 2
  %.not112 = icmp eq i32 %306, 0
  %307 = select i1 %.not112, ptr @.str.70, ptr @.str.69
  %308 = and i32 %305, 16
  %.not113 = icmp eq i32 %308, 0
  %309 = select i1 %.not113, ptr @.str.72, ptr @.str.71
  %310 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.68, ptr noundef nonnull %307, ptr noundef nonnull %309)
  %311 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.73)
  %312 = tail call i32 @fflush(ptr noundef null)
  %313 = tail call double @bench_mats() #10
  %314 = load ptr, ptr getelementptr inbounds (i8, ptr @mera, i64 24), align 8, !tbaa !24
  %315 = fcmp ogt double %313, 1.500000e+00
  %316 = select i1 %315, ptr @.str.75, ptr @.str.76
  %317 = fdiv double 1.000000e+00, %313
  %318 = fcmp ogt double %317, 1.500000e+00
  %319 = select i1 %318, ptr @.str.75, ptr @.str.76
  %320 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.74, double noundef %313, ptr noundef %314, ptr noundef nonnull %316, double noundef %317, ptr noundef nonnull %319, ptr noundef %314)
  %321 = tail call zeroext i1 @is_option_set(i32 noundef 8)
  br i1 %321, label %322, label %338

322:                                              ; preds = %302
  %323 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.77)
  %324 = load i32, ptr @mera_bci, align 8, !tbaa !25
  %.not114 = icmp eq i32 %324, 0
  br i1 %.not114, label %327, label %325

325:                                              ; preds = %322
  %326 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.78, i32 noundef %324)
  br label %327

327:                                              ; preds = %325, %322
  %328 = load i32, ptr getelementptr inbounds (i8, ptr @mera_bci, i64 4), align 4, !tbaa !27
  %329 = load i32, ptr getelementptr inbounds (i8, ptr @mera_bci, i64 16), align 8, !tbaa !28
  %330 = load i32, ptr getelementptr inbounds (i8, ptr @mera_bci, i64 20), align 4, !tbaa !29
  %331 = load i32, ptr getelementptr inbounds (i8, ptr @mera_bci, i64 60), align 4, !tbaa !30
  %332 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.79, i32 noundef %328, i32 noundef %329, i32 noundef %330, i32 noundef %331)
  %333 = load i64, ptr getelementptr inbounds (i8, ptr @mera_bci, i64 24), align 8, !tbaa !31
  %334 = load i64, ptr getelementptr inbounds (i8, ptr @mera_bci, i64 32), align 8, !tbaa !32
  %335 = load i32, ptr getelementptr inbounds (i8, ptr @mera_bci, i64 8), align 8, !tbaa !33
  %336 = load i32, ptr getelementptr inbounds (i8, ptr @mera_bci, i64 12), align 4, !tbaa !34
  %337 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.80, i64 noundef %333, i64 noundef %334, i32 noundef %335, i32 noundef %336)
  br label %338

338:                                              ; preds = %327, %302
  %339 = tail call i32 @fflush(ptr noundef null)
  %340 = tail call zeroext i1 @is_option_set(i32 noundef 65536)
  br i1 %340, label %341, label %342

341:                                              ; preds = %338
  tail call void @bench_size(i32 noundef 7, ptr noundef nonnull @.str.25) #10
  br label %342

342:                                              ; preds = %341, %338
  %343 = tail call zeroext i1 @is_option_set(i32 noundef 131072)
  br i1 %343, label %344, label %345

344:                                              ; preds = %342
  tail call void @bench_size(i32 noundef 63, ptr noundef nonnull @.str.26) #10
  br label %345

345:                                              ; preds = %344, %342
  %346 = tail call zeroext i1 @is_option_set(i32 noundef 262144)
  br i1 %346, label %347, label %348

347:                                              ; preds = %345
  tail call void @bench_size(i32 noundef 1024, ptr noundef nonnull @.str.27) #10
  br label %348

348:                                              ; preds = %347, %345
  %349 = tail call zeroext i1 @is_option_set(i32 noundef 524288)
  br i1 %349, label %350, label %351

350:                                              ; preds = %348
  tail call void @bench_size(i32 noundef 16384, ptr noundef nonnull @.str.28) #10
  br label %351

351:                                              ; preds = %350, %348
  %352 = tail call zeroext i1 @is_option_set(i32 noundef 1048576)
  br i1 %352, label %353, label %.thread

353:                                              ; preds = %351
  tail call void @bench_size(i32 noundef 262144, ptr noundef nonnull @.str.29) #10
  br label %.thread

.thread:                                          ; preds = %137, %136, %295, %236, %.thread123, %263, %353, %351, %165
  %.7 = phi i32 [ 1, %165 ], [ 0, %295 ], [ 1, %236 ], [ %.4, %.thread123 ], [ 1, %263 ], [ 0, %353 ], [ 0, %351 ], [ 1, %137 ], [ 0, %136 ]
  ret i32 %.7
}

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare hidden zeroext i1 @option(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden zeroext i1 @is_option_set(i32 noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare hidden void @print_build_info() local_unnamed_addr #0

declare hidden i32 @t1ha_selfcheck__all_enabled() local_unnamed_addr #5

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

declare zeroext i1 @verify(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare hidden i64 @t1ha2_atonce(ptr noundef, i64 noundef, i64 noundef) #5

declare i64 @thunk_t1ha2_atonce128(ptr noundef, i64 noundef, i64 noundef) #5

declare i64 @thunk_t1ha2_stream(ptr noundef, i64 noundef, i64 noundef) #5

declare i64 @thunk_t1ha2_stream128(ptr noundef, i64 noundef, i64 noundef) #5

declare hidden i64 @t1ha1_le(ptr noundef, i64 noundef, i64 noundef) #5

declare hidden i64 @t1ha1_be(ptr noundef, i64 noundef, i64 noundef) #5

declare hidden i64 @t1ha0_32le(ptr noundef, i64 noundef, i64 noundef) #5

declare hidden i64 @t1ha0_32be(ptr noundef, i64 noundef, i64 noundef) #5

declare void @ia32_fetch_cpu_features() local_unnamed_addr #5

declare hidden i64 @t1ha0_ia32aes_noavx(ptr noundef, i64 noundef, i64 noundef) #5

declare hidden i64 @t1ha0_ia32aes_avx(ptr noundef, i64 noundef, i64 noundef) #5

declare hidden i64 @t1ha0_ia32aes_avx2(ptr noundef, i64 noundef, i64 noundef) #5

declare zeroext i1 @HighwayHash64_verify(ptr noundef, ptr noundef) local_unnamed_addr #5

declare i64 @HighwayHash64_pure_c(ptr noundef, ptr noundef, i64 noundef) #5

declare i64 @HighwayHash64_Portable(ptr noundef, ptr noundef, i64 noundef) #5

declare i64 @HighwayHash64_SSE41(ptr noundef, ptr noundef, i64 noundef) #5

declare i64 @HighwayHash64_AVX2(ptr noundef, ptr noundef, i64 noundef) #5

declare i64 @thunk_StadtX(ptr noundef, i64 noundef, i64 noundef) #5

; Function Attrs: inlinehint nounwind uwtable
declare hidden zeroext i1 @is_selected(i32 noundef) local_unnamed_addr #4

declare i64 @thunk_HighwayHash64_pure_c(ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #5

declare i64 @XXH64(ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #5

declare i64 @thunk_XXH32(ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #5

declare hidden i64 @t1ha0(ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #5

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

; Function Attrs: nofree nounwind
declare void @perror(ptr nocapture noundef readonly) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare noundef i32 @feof(ptr nocapture noundef) local_unnamed_addr #1

declare i64 @getline(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #7

; Function Attrs: nofree nounwind
declare noundef i32 @fflush(ptr nocapture noundef) local_unnamed_addr #1

declare zeroext i1 @mera_init() local_unnamed_addr #5

declare double @bench_mats() local_unnamed_addr #5

declare void @bench_size(i32 noundef, ptr noundef) local_unnamed_addr #5

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

!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/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !10, i64 4}
!14 = !{!"_ia32_cpu_features", !15, i64 0, !15, i64 12, !16, i64 24, !16, i64 32}
!15 = !{!"", !10, i64 0, !10, i64 4, !10, i64 8}
!16 = !{!"", !10, i64 0, !10, i64 4}
!17 = !{!14, !10, i64 12}
!18 = !{!19, !19, i64 0}
!19 = !{!"long", !7, i64 0}
!20 = !{!21, !10, i64 44}
!21 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44}
!22 = !{!21, !6, i64 32}
!23 = !{!21, !10, i64 40}
!24 = !{!21, !6, i64 24}
!25 = !{!26, !10, i64 0}
!26 = !{!"", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !19, i64 24, !19, i64 32, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !19, i64 64, !19, i64 72}
!27 = !{!26, !10, i64 4}
!28 = !{!26, !10, i64 16}
!29 = !{!26, !10, i64 20}
!30 = !{!26, !10, i64 60}
!31 = !{!26, !19, i64 24}
!32 = !{!26, !19, i64 32}
!33 = !{!26, !10, i64 8}
!34 = !{!26, !10, i64 12}


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