; LLVM IR from square/subzero :: core/external-crypto/aes (modetest)

; 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.aes_crypt_ctx = type { [60 x i32], %union.aes_inf, [12 x i8] }
%union.aes_inf = type { i32 }
%struct.cpu_set_t = type { [16 x i64] }

@.str.14 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [3 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @ECBenc(ptr noundef, i32 noundef, ptr noundef) #0

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @ECBdec(ptr noundef, i32 noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @CBCenc(ptr noundef, i32 noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

; Function Attrs: nounwind uwtable
declare dso_local void @CBCdec(ptr noundef, i32 noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @CFBenc(ptr noundef, i32 noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @CFBdec(ptr noundef, i32 noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @OFBenc(ptr noundef, i32 noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @OFBdec(ptr noundef, i32 noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @CTRcry(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_base(ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_ecb_enc(i32 noundef, i32 noundef, ptr noundef, ptr noundef) #0

declare void @block_rndfill(ptr noundef, i64 noundef) #3

declare i32 @aes_encrypt_key(ptr noundef, i32 noundef, ptr noundef) #3

declare i32 @aes_ecb_encrypt(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #3

; Function Attrs: nounwind willreturn memory(read)
declare i32 @memcmp(ptr noundef, ptr noundef, i64 noundef) #4

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_ecb_dec(i32 noundef, i32 noundef, ptr noundef, ptr noundef) #0

declare i32 @aes_decrypt_key(ptr noundef, i32 noundef, ptr noundef) #3

declare i32 @aes_ecb_decrypt(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_cbc_enc(i32 noundef, i32 noundef, ptr noundef, ptr noundef) #0

declare i32 @aes_cbc_encrypt(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_cbc_dec(i32 noundef, i32 noundef, ptr noundef, ptr noundef) #0

declare i32 @aes_cbc_decrypt(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_cfb_enc(i32 noundef, i32 noundef, ptr noundef, ptr noundef) #0

declare i32 @aes_cfb_encrypt(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_cfb_dec(i32 noundef, i32 noundef, ptr noundef, ptr noundef) #0

declare i32 @aes_cfb_decrypt(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_ofb_enc(i32 noundef, i32 noundef, ptr noundef, ptr noundef) #0

declare i32 @aes_ofb_crypt(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_ctr_crypt(i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) #0

declare i32 @aes_ctr_crypt(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local void @ctr_inc(ptr noundef) #0

; Function Attrs: nounwind uwtable
define dso_local i32 @main() #0 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca [16000 x i8], align 16
  %13 = alloca [16000 x i8], align 16
  %14 = alloca [16 x i8], align 16
  %15 = alloca [16 x i8], align 16
  %16 = alloca [32 x i8], align 16
  %17 = alloca [1 x %struct.aes_crypt_ctx], align 16
  %18 = alloca [1 x %struct.aes_crypt_ctx], align 16
  %19 = alloca [16000 x i8], align 16
  %20 = alloca [16 x i8], align 16
  %21 = alloca [1 x %struct.aes_crypt_ctx], align 16
  %22 = alloca [1 x %struct.aes_crypt_ctx], align 16
  %23 = alloca %struct.cpu_set_t, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i32, align 4
  store i32 0, ptr %1, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 16000, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 16000, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #7
  call void @llvm.lifetime.start.p0(i64 256, ptr %17) #7
  call void @llvm.lifetime.start.p0(i64 256, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 16000, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 256, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 256, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 128, ptr %23) #7
  br label %27

27:                                               ; preds = %0
  call void @llvm.memset.p0.i64(ptr align 8 %23, i8 0, i64 128, i1 false)
  br label %28

28:                                               ; preds = %27
  br label %29

29:                                               ; preds = %28
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  store i64 0, ptr %24, align 8, !tbaa !5
  %30 = load i64, ptr %24, align 8, !tbaa !5
  %31 = udiv i64 %30, 8
  %32 = icmp ult i64 %31, 128
  br i1 %32, label %33, label %44

33:                                               ; preds = %29
  %34 = load i64, ptr %24, align 8, !tbaa !5
  %35 = urem i64 %34, 64
  %36 = shl i64 1, %35
  %37 = getelementptr inbounds %struct.cpu_set_t, ptr %23, i32 0, i32 0
  %38 = getelementptr inbounds [16 x i64], ptr %37, i64 0, i64 0
  %39 = load i64, ptr %24, align 8, !tbaa !5
  %40 = udiv i64 %39, 64
  %41 = getelementptr inbounds i64, ptr %38, i64 %40
  %42 = load i64, ptr %41, align 8, !tbaa !5
  %43 = or i64 %42, %36
  store i64 %43, ptr %41, align 8, !tbaa !5
  br label %45

44:                                               ; preds = %29
  br label %45

45:                                               ; preds = %44, %33
  %46 = phi i64 [ %43, %33 ], [ 0, %44 ]
  store i64 %46, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  %47 = load i64, ptr %25, align 8, !tbaa !5
  %48 = call i32 @sched_setaffinity(i32 noundef 0, i64 noundef 128, ptr noundef %23) #7
  %49 = icmp eq i32 %48, -1
  br i1 %49, label %50, label %51

50:                                               ; preds = %45
  call void @perror(ptr noundef @.str.14)
  store i32 -1, ptr %1, align 4
  store i32 1, ptr %26, align 4
  br label %1380

51:                                               ; preds = %45
  %52 = call i32 @aes_test_alignment_detection(i32 noundef 16)
  %53 = icmp ne i32 %52, 0
  br i1 %53, label %54, label %55

54:                                               ; preds = %51
  store i32 -1, ptr %1, align 4
  store i32 1, ptr %26, align 4
  br label %1380

55:                                               ; preds = %51
  %56 = call i32 (ptr, ...) @printf(ptr noundef @.str.15)
  store i32 128, ptr %3, align 4, !tbaa !9
  br label %57

57:                                               ; preds = %1101, %55
  %58 = load i32, ptr %3, align 4, !tbaa !9
  %59 = icmp sle i32 %58, 256
  br i1 %59, label %60, label %1104

60:                                               ; preds = %57
  %61 = load i32, ptr %3, align 4, !tbaa !9
  %62 = call i32 (ptr, ...) @printf(ptr noundef @.str.16, i32 noundef %61)
  store i32 0, ptr %4, align 4, !tbaa !9
  store i32 0, ptr %2, align 4, !tbaa !9
  br label %63

63:                                               ; preds = %179, %60
  %64 = load i32, ptr %2, align 4, !tbaa !9
  %65 = icmp slt i32 %64, 100
  br i1 %65, label %66, label %182

66:                                               ; preds = %63
  %67 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  call void @block_rndfill(ptr noundef %67, i64 noundef 32)
  %68 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %69 = load i32, ptr %3, align 4, !tbaa !9
  %70 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  %71 = call i32 @aes_encrypt_key(ptr noundef %68, i32 noundef %69, ptr noundef %70)
  %72 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %73 = load i32, ptr %3, align 4, !tbaa !9
  %74 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %75 = call i32 @aes_encrypt_key(ptr noundef %72, i32 noundef %73, ptr noundef %74)
  %76 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %77 = load i32, ptr %3, align 4, !tbaa !9
  %78 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %18, i64 0, i64 0
  %79 = call i32 @aes_decrypt_key(ptr noundef %76, i32 noundef %77, ptr noundef %78)
  %80 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %81 = load i32, ptr %3, align 4, !tbaa !9
  %82 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %22, i64 0, i64 0
  %83 = call i32 @aes_decrypt_key(ptr noundef %80, i32 noundef %81, ptr noundef %82)
  %84 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  call void @block_rndfill(ptr noundef %84, i64 noundef 16000)
  %85 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %86 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %85, ptr align 16 %86, i64 16000, i1 false)
  %87 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %88 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %87, ptr align 16 %88, i64 16000, i1 false)
  %89 = call i32 @rand32()
  %90 = uitofp i32 %89 to double
  %91 = fdiv double %90, 0x41EFFFFFFFE00000
  store double %91, ptr %11, align 8, !tbaa !11
  %92 = load double, ptr %11, align 8, !tbaa !11
  %93 = fadd double 1.000000e+00, %92
  %94 = fmul double 8.000000e+03, %93
  %95 = fptoui double %94 to i32
  store i32 %95, ptr %6, align 4, !tbaa !9
  %96 = load i32, ptr %6, align 4, !tbaa !9
  %97 = sdiv i32 %96, 16
  %98 = mul nsw i32 16, %97
  store i32 %98, ptr %6, align 4, !tbaa !9
  %99 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %100 = load i32, ptr %6, align 4, !tbaa !9
  %101 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  call void @ECBenc(ptr noundef %99, i32 noundef %100, ptr noundef %101)
  %102 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %103 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %104 = load i32, ptr %6, align 4, !tbaa !9
  %105 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %106 = call i32 @aes_ecb_encrypt(ptr noundef %102, ptr noundef %103, i32 noundef %104, ptr noundef %105)
  %107 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %108 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %109 = load i32, ptr %6, align 4, !tbaa !9
  %110 = sext i32 %109 to i64
  %111 = call i32 @memcmp(ptr noundef %107, ptr noundef %108, i64 noundef %110) #8
  %112 = icmp ne i32 %111, 0
  br i1 %112, label %113, label %116

113:                                              ; preds = %66
  %114 = load i32, ptr %4, align 4, !tbaa !9
  %115 = or i32 %114, 1
  store i32 %115, ptr %4, align 4, !tbaa !9
  br label %116

116:                                              ; preds = %113, %66
  %117 = load i32, ptr %4, align 4, !tbaa !9
  %118 = and i32 %117, 1
  %119 = icmp ne i32 %118, 0
  br i1 %119, label %120, label %126

120:                                              ; preds = %116
  %121 = load i32, ptr %4, align 4, !tbaa !9
  %122 = and i32 %121, 256
  %123 = icmp ne i32 %122, 0
  br i1 %123, label %126, label %124

124:                                              ; preds = %120
  %125 = call i32 (ptr, ...) @printf(ptr noundef @.str.17)
  br label %126

126:                                              ; preds = %124, %120, %116
  %127 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %128 = load i32, ptr %6, align 4, !tbaa !9
  %129 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %18, i64 0, i64 0
  call void @ECBdec(ptr noundef %127, i32 noundef %128, ptr noundef %129)
  %130 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %131 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %132 = load i32, ptr %6, align 4, !tbaa !9
  %133 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %22, i64 0, i64 0
  %134 = call i32 @aes_ecb_decrypt(ptr noundef %130, ptr noundef %131, i32 noundef %132, ptr noundef %133)
  %135 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  %136 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %137 = load i32, ptr %6, align 4, !tbaa !9
  %138 = sext i32 %137 to i64
  %139 = call i32 @memcmp(ptr noundef %135, ptr noundef %136, i64 noundef %138) #8
  %140 = icmp ne i32 %139, 0
  br i1 %140, label %141, label %144

141:                                              ; preds = %126
  %142 = load i32, ptr %4, align 4, !tbaa !9
  %143 = or i32 %142, 2
  store i32 %143, ptr %4, align 4, !tbaa !9
  br label %144

144:                                              ; preds = %141, %126
  %145 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  %146 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %147 = load i32, ptr %6, align 4, !tbaa !9
  %148 = sext i32 %147 to i64
  %149 = call i32 @memcmp(ptr noundef %145, ptr noundef %146, i64 noundef %148) #8
  %150 = icmp ne i32 %149, 0
  br i1 %150, label %151, label %154

151:                                              ; preds = %144
  %152 = load i32, ptr %4, align 4, !tbaa !9
  %153 = or i32 %152, 4
  store i32 %153, ptr %4, align 4, !tbaa !9
  br label %154

154:                                              ; preds = %151, %144
  %155 = load i32, ptr %4, align 4, !tbaa !9
  %156 = and i32 %155, 4
  %157 = icmp ne i32 %156, 0
  br i1 %157, label %158, label %164

158:                                              ; preds = %154
  %159 = load i32, ptr %4, align 4, !tbaa !9
  %160 = and i32 %159, 512
  %161 = icmp ne i32 %160, 0
  br i1 %161, label %164, label %162

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

164:                                              ; preds = %162, %158, %154
  %165 = load i32, ptr %4, align 4, !tbaa !9
  %166 = and i32 %165, 1
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %168, label %171

168:                                              ; preds = %164
  %169 = load i32, ptr %4, align 4, !tbaa !9
  %170 = or i32 %169, 256
  store i32 %170, ptr %4, align 4, !tbaa !9
  br label %171

171:                                              ; preds = %168, %164
  %172 = load i32, ptr %4, align 4, !tbaa !9
  %173 = and i32 %172, 4
  %174 = icmp ne i32 %173, 0
  br i1 %174, label %175, label %178

175:                                              ; preds = %171
  %176 = load i32, ptr %4, align 4, !tbaa !9
  %177 = or i32 %176, 512
  store i32 %177, ptr %4, align 4, !tbaa !9
  br label %178

178:                                              ; preds = %175, %171
  br label %179

179:                                              ; preds = %178
  %180 = load i32, ptr %2, align 4, !tbaa !9
  %181 = add nsw i32 %180, 1
  store i32 %181, ptr %2, align 4, !tbaa !9
  br label %63, !llvm.loop !13

182:                                              ; preds = %63
  %183 = load i32, ptr %4, align 4, !tbaa !9
  %184 = icmp ne i32 %183, 0
  br i1 %184, label %187, label %185

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

187:                                              ; preds = %185, %182
  store i32 0, ptr %4, align 4, !tbaa !9
  store i32 0, ptr %2, align 4, !tbaa !9
  br label %188

188:                                              ; preds = %343, %187
  %189 = load i32, ptr %2, align 4, !tbaa !9
  %190 = icmp slt i32 %189, 100
  br i1 %190, label %191, label %346

191:                                              ; preds = %188
  %192 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  call void @block_rndfill(ptr noundef %192, i64 noundef 32)
  %193 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %194 = load i32, ptr %3, align 4, !tbaa !9
  %195 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  %196 = call i32 @aes_encrypt_key(ptr noundef %193, i32 noundef %194, ptr noundef %195)
  %197 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %198 = load i32, ptr %3, align 4, !tbaa !9
  %199 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %200 = call i32 @aes_encrypt_key(ptr noundef %197, i32 noundef %198, ptr noundef %199)
  %201 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %202 = load i32, ptr %3, align 4, !tbaa !9
  %203 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %18, i64 0, i64 0
  %204 = call i32 @aes_decrypt_key(ptr noundef %201, i32 noundef %202, ptr noundef %203)
  %205 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %206 = load i32, ptr %3, align 4, !tbaa !9
  %207 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %22, i64 0, i64 0
  %208 = call i32 @aes_decrypt_key(ptr noundef %205, i32 noundef %206, ptr noundef %207)
  %209 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @block_rndfill(ptr noundef %209, i64 noundef 16)
  %210 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %211 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %210, ptr align 16 %211, i64 16, i1 false)
  %212 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %213 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %212, ptr align 16 %213, i64 16, i1 false)
  %214 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  call void @block_rndfill(ptr noundef %214, i64 noundef 16000)
  %215 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %216 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %215, ptr align 16 %216, i64 16000, i1 false)
  %217 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %218 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %217, ptr align 16 %218, i64 16000, i1 false)
  %219 = call i32 @rand32()
  %220 = uitofp i32 %219 to double
  %221 = fdiv double %220, 0x41EFFFFFFFE00000
  store double %221, ptr %11, align 8, !tbaa !11
  %222 = load double, ptr %11, align 8, !tbaa !11
  %223 = fadd double 1.000000e+00, %222
  %224 = fmul double 8.000000e+03, %223
  %225 = fptoui double %224 to i32
  store i32 %225, ptr %6, align 4, !tbaa !9
  %226 = load i32, ptr %6, align 4, !tbaa !9
  %227 = sdiv i32 %226, 16
  %228 = mul nsw i32 16, %227
  store i32 %228, ptr %6, align 4, !tbaa !9
  %229 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %230 = load i32, ptr %6, align 4, !tbaa !9
  %231 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %232 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  call void @CBCenc(ptr noundef %229, i32 noundef %230, ptr noundef %231, ptr noundef %232)
  %233 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %234 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %235 = load i32, ptr %6, align 4, !tbaa !9
  %236 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %237 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %238 = call i32 @aes_cbc_encrypt(ptr noundef %233, ptr noundef %234, i32 noundef %235, ptr noundef %236, ptr noundef %237)
  %239 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %240 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %241 = load i32, ptr %6, align 4, !tbaa !9
  %242 = sext i32 %241 to i64
  %243 = call i32 @memcmp(ptr noundef %239, ptr noundef %240, i64 noundef %242) #8
  %244 = icmp ne i32 %243, 0
  br i1 %244, label %245, label %248

245:                                              ; preds = %191
  %246 = load i32, ptr %4, align 4, !tbaa !9
  %247 = or i32 %246, 1
  store i32 %247, ptr %4, align 4, !tbaa !9
  br label %248

248:                                              ; preds = %245, %191
  %249 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %250 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %251 = call i32 @memcmp(ptr noundef %249, ptr noundef %250, i64 noundef 16) #8
  %252 = icmp ne i32 %251, 0
  br i1 %252, label %253, label %256

253:                                              ; preds = %248
  %254 = load i32, ptr %4, align 4, !tbaa !9
  %255 = or i32 %254, 2
  store i32 %255, ptr %4, align 4, !tbaa !9
  br label %256

256:                                              ; preds = %253, %248
  %257 = load i32, ptr %4, align 4, !tbaa !9
  %258 = and i32 %257, 1
  %259 = icmp ne i32 %258, 0
  br i1 %259, label %260, label %266

260:                                              ; preds = %256
  %261 = load i32, ptr %4, align 4, !tbaa !9
  %262 = and i32 %261, 256
  %263 = icmp ne i32 %262, 0
  br i1 %263, label %266, label %264

264:                                              ; preds = %260
  %265 = call i32 (ptr, ...) @printf(ptr noundef @.str.20)
  br label %266

266:                                              ; preds = %264, %260, %256
  %267 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %268 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %267, ptr align 16 %268, i64 16, i1 false)
  %269 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %270 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %269, ptr align 16 %270, i64 16, i1 false)
  %271 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %272 = load i32, ptr %6, align 4, !tbaa !9
  %273 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %274 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %18, i64 0, i64 0
  call void @CBCdec(ptr noundef %271, i32 noundef %272, ptr noundef %273, ptr noundef %274)
  %275 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %276 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %277 = load i32, ptr %6, align 4, !tbaa !9
  %278 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %279 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %22, i64 0, i64 0
  %280 = call i32 @aes_cbc_decrypt(ptr noundef %275, ptr noundef %276, i32 noundef %277, ptr noundef %278, ptr noundef %279)
  %281 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  %282 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %283 = load i32, ptr %6, align 4, !tbaa !9
  %284 = sext i32 %283 to i64
  %285 = call i32 @memcmp(ptr noundef %281, ptr noundef %282, i64 noundef %284) #8
  %286 = icmp ne i32 %285, 0
  br i1 %286, label %287, label %290

287:                                              ; preds = %266
  %288 = load i32, ptr %4, align 4, !tbaa !9
  %289 = or i32 %288, 4
  store i32 %289, ptr %4, align 4, !tbaa !9
  br label %290

290:                                              ; preds = %287, %266
  %291 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  %292 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %293 = load i32, ptr %6, align 4, !tbaa !9
  %294 = sext i32 %293 to i64
  %295 = call i32 @memcmp(ptr noundef %291, ptr noundef %292, i64 noundef %294) #8
  %296 = icmp ne i32 %295, 0
  br i1 %296, label %297, label %300

297:                                              ; preds = %290
  %298 = load i32, ptr %4, align 4, !tbaa !9
  %299 = or i32 %298, 8
  store i32 %299, ptr %4, align 4, !tbaa !9
  br label %300

300:                                              ; preds = %297, %290
  %301 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %302 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %303 = load i32, ptr %6, align 4, !tbaa !9
  %304 = sext i32 %303 to i64
  %305 = call i32 @memcmp(ptr noundef %301, ptr noundef %302, i64 noundef %304) #8
  %306 = icmp ne i32 %305, 0
  br i1 %306, label %307, label %310

307:                                              ; preds = %300
  %308 = load i32, ptr %4, align 4, !tbaa !9
  %309 = or i32 %308, 16
  store i32 %309, ptr %4, align 4, !tbaa !9
  br label %310

310:                                              ; preds = %307, %300
  %311 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %312 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %313 = call i32 @memcmp(ptr noundef %311, ptr noundef %312, i64 noundef 16) #8
  %314 = icmp ne i32 %313, 0
  br i1 %314, label %315, label %318

315:                                              ; preds = %310
  %316 = load i32, ptr %4, align 4, !tbaa !9
  %317 = or i32 %316, 32
  store i32 %317, ptr %4, align 4, !tbaa !9
  br label %318

318:                                              ; preds = %315, %310
  %319 = load i32, ptr %4, align 4, !tbaa !9
  %320 = and i32 %319, 16
  %321 = icmp ne i32 %320, 0
  br i1 %321, label %322, label %328

322:                                              ; preds = %318
  %323 = load i32, ptr %4, align 4, !tbaa !9
  %324 = and i32 %323, 512
  %325 = icmp ne i32 %324, 0
  br i1 %325, label %328, label %326

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

328:                                              ; preds = %326, %322, %318
  %329 = load i32, ptr %4, align 4, !tbaa !9
  %330 = and i32 %329, 1
  %331 = icmp ne i32 %330, 0
  br i1 %331, label %332, label %335

332:                                              ; preds = %328
  %333 = load i32, ptr %4, align 4, !tbaa !9
  %334 = or i32 %333, 256
  store i32 %334, ptr %4, align 4, !tbaa !9
  br label %335

335:                                              ; preds = %332, %328
  %336 = load i32, ptr %4, align 4, !tbaa !9
  %337 = and i32 %336, 16
  %338 = icmp ne i32 %337, 0
  br i1 %338, label %339, label %342

339:                                              ; preds = %335
  %340 = load i32, ptr %4, align 4, !tbaa !9
  %341 = or i32 %340, 512
  store i32 %341, ptr %4, align 4, !tbaa !9
  br label %342

342:                                              ; preds = %339, %335
  br label %343

343:                                              ; preds = %342
  %344 = load i32, ptr %2, align 4, !tbaa !9
  %345 = add nsw i32 %344, 1
  store i32 %345, ptr %2, align 4, !tbaa !9
  br label %188, !llvm.loop !15

346:                                              ; preds = %188
  %347 = load i32, ptr %4, align 4, !tbaa !9
  %348 = and i32 %347, -55
  %349 = icmp ne i32 %348, 0
  br i1 %349, label %352, label %350

350:                                              ; preds = %346
  %351 = call i32 (ptr, ...) @printf(ptr noundef @.str.22)
  br label %352

352:                                              ; preds = %350, %346
  %353 = load i32, ptr %4, align 4, !tbaa !9
  %354 = and i32 %353, 34
  %355 = icmp ne i32 %354, 0
  br i1 %355, label %356, label %377

356:                                              ; preds = %352
  %357 = call i32 (ptr, ...) @printf(ptr noundef @.str.23)
  %358 = load i32, ptr %4, align 4, !tbaa !9
  %359 = and i32 %358, 2
  %360 = icmp ne i32 %359, 0
  br i1 %360, label %361, label %363

361:                                              ; preds = %356
  %362 = call i32 (ptr, ...) @printf(ptr noundef @.str.24)
  br label %363

363:                                              ; preds = %361, %356
  %364 = load i32, ptr %4, align 4, !tbaa !9
  %365 = and i32 %364, 34
  %366 = icmp eq i32 %365, 34
  br i1 %366, label %367, label %369

367:                                              ; preds = %363
  %368 = call i32 (ptr, ...) @printf(ptr noundef @.str.25)
  br label %369

369:                                              ; preds = %367, %363
  %370 = load i32, ptr %4, align 4, !tbaa !9
  %371 = and i32 %370, 32
  %372 = icmp ne i32 %371, 0
  br i1 %372, label %373, label %375

373:                                              ; preds = %369
  %374 = call i32 (ptr, ...) @printf(ptr noundef @.str.26)
  br label %375

375:                                              ; preds = %373, %369
  %376 = call i32 (ptr, ...) @printf(ptr noundef @.str.27)
  br label %377

377:                                              ; preds = %375, %352
  store i32 0, ptr %4, align 4, !tbaa !9
  store i32 0, ptr %2, align 4, !tbaa !9
  br label %378

378:                                              ; preds = %584, %377
  %379 = load i32, ptr %2, align 4, !tbaa !9
  %380 = icmp slt i32 %379, 100
  br i1 %380, label %381, label %587

381:                                              ; preds = %378
  %382 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  call void @block_rndfill(ptr noundef %382, i64 noundef 32)
  %383 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %384 = load i32, ptr %3, align 4, !tbaa !9
  %385 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  %386 = call i32 @aes_encrypt_key(ptr noundef %383, i32 noundef %384, ptr noundef %385)
  %387 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %388 = load i32, ptr %3, align 4, !tbaa !9
  %389 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %390 = call i32 @aes_encrypt_key(ptr noundef %387, i32 noundef %388, ptr noundef %389)
  %391 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %392 = load i32, ptr %3, align 4, !tbaa !9
  %393 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %18, i64 0, i64 0
  %394 = call i32 @aes_decrypt_key(ptr noundef %391, i32 noundef %392, ptr noundef %393)
  %395 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %396 = load i32, ptr %3, align 4, !tbaa !9
  %397 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %22, i64 0, i64 0
  %398 = call i32 @aes_decrypt_key(ptr noundef %395, i32 noundef %396, ptr noundef %397)
  %399 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @block_rndfill(ptr noundef %399, i64 noundef 16)
  %400 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %401 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %400, ptr align 16 %401, i64 16, i1 false)
  %402 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %403 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %402, ptr align 16 %403, i64 16, i1 false)
  %404 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  call void @block_rndfill(ptr noundef %404, i64 noundef 16000)
  %405 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %406 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %405, ptr align 16 %406, i64 16000, i1 false)
  %407 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %408 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %407, ptr align 16 %408, i64 16000, i1 false)
  %409 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  %410 = getelementptr inbounds %struct.aes_crypt_ctx, ptr %409, i32 0, i32 1
  %411 = getelementptr inbounds [4 x i8], ptr %410, i64 0, i64 2
  store i8 0, ptr %411, align 2, !tbaa !16
  %412 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %413 = call i32 @aes_mode_reset(ptr noundef %412)
  %414 = call i32 @rand32()
  %415 = uitofp i32 %414 to double
  %416 = fdiv double %415, 0x41EFFFFFFFE00000
  store double %416, ptr %11, align 8, !tbaa !11
  %417 = load double, ptr %11, align 8, !tbaa !11
  %418 = fadd double 1.000000e+00, %417
  %419 = fmul double 8.000000e+03, %418
  %420 = fptoui double %419 to i32
  store i32 %420, ptr %6, align 4, !tbaa !9
  %421 = call i32 @rand32()
  %422 = uitofp i32 %421 to double
  %423 = fdiv double %422, 0x41EFFFFFFFE00000
  store double %423, ptr %11, align 8, !tbaa !11
  %424 = load double, ptr %11, align 8, !tbaa !11
  %425 = load i32, ptr %6, align 4, !tbaa !9
  %426 = sitofp i32 %425 to double
  %427 = fmul double %424, %426
  %428 = fptoui double %427 to i32
  store i32 %428, ptr %7, align 4, !tbaa !9
  %429 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %430 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %431 = load i32, ptr %7, align 4, !tbaa !9
  %432 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %433 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %434 = call i32 @aes_cfb_encrypt(ptr noundef %429, ptr noundef %430, i32 noundef %431, ptr noundef %432, ptr noundef %433)
  %435 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %436 = load i32, ptr %7, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds i8, ptr %435, i64 %437
  %439 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %440 = load i32, ptr %7, align 4, !tbaa !9
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds i8, ptr %439, i64 %441
  %443 = load i32, ptr %6, align 4, !tbaa !9
  %444 = load i32, ptr %7, align 4, !tbaa !9
  %445 = sub nsw i32 %443, %444
  %446 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %447 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %448 = call i32 @aes_cfb_encrypt(ptr noundef %438, ptr noundef %442, i32 noundef %445, ptr noundef %446, ptr noundef %447)
  %449 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %450 = load i32, ptr %6, align 4, !tbaa !9
  %451 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %452 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  call void @CFBenc(ptr noundef %449, i32 noundef %450, ptr noundef %451, ptr noundef %452)
  %453 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %454 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %455 = load i32, ptr %6, align 4, !tbaa !9
  %456 = sext i32 %455 to i64
  %457 = call i32 @memcmp(ptr noundef %453, ptr noundef %454, i64 noundef %456) #8
  %458 = icmp ne i32 %457, 0
  br i1 %458, label %459, label %462

459:                                              ; preds = %381
  %460 = load i32, ptr %4, align 4, !tbaa !9
  %461 = or i32 %460, 1
  store i32 %461, ptr %4, align 4, !tbaa !9
  br label %462

462:                                              ; preds = %459, %381
  %463 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %464 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %465 = call i32 @memcmp(ptr noundef %463, ptr noundef %464, i64 noundef 16) #8
  %466 = icmp ne i32 %465, 0
  br i1 %466, label %467, label %470

467:                                              ; preds = %462
  %468 = load i32, ptr %4, align 4, !tbaa !9
  %469 = or i32 %468, 2
  store i32 %469, ptr %4, align 4, !tbaa !9
  br label %470

470:                                              ; preds = %467, %462
  %471 = load i32, ptr %4, align 4, !tbaa !9
  %472 = and i32 %471, 1
  %473 = icmp ne i32 %472, 0
  br i1 %473, label %474, label %480

474:                                              ; preds = %470
  %475 = load i32, ptr %4, align 4, !tbaa !9
  %476 = and i32 %475, 256
  %477 = icmp ne i32 %476, 0
  br i1 %477, label %480, label %478

478:                                              ; preds = %474
  %479 = call i32 (ptr, ...) @printf(ptr noundef @.str.28)
  br label %480

480:                                              ; preds = %478, %474, %470
  %481 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %482 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %481, ptr align 16 %482, i64 16, i1 false)
  %483 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %484 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %483, ptr align 16 %484, i64 16, i1 false)
  %485 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  %486 = getelementptr inbounds %struct.aes_crypt_ctx, ptr %485, i32 0, i32 1
  %487 = getelementptr inbounds [4 x i8], ptr %486, i64 0, i64 2
  store i8 0, ptr %487, align 2, !tbaa !16
  %488 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %489 = call i32 @aes_mode_reset(ptr noundef %488)
  %490 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %491 = load i32, ptr %6, align 4, !tbaa !9
  %492 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %493 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  call void @CFBdec(ptr noundef %490, i32 noundef %491, ptr noundef %492, ptr noundef %493)
  %494 = call i32 @rand32()
  %495 = uitofp i32 %494 to double
  %496 = fdiv double %495, 0x41EFFFFFFFE00000
  store double %496, ptr %11, align 8, !tbaa !11
  %497 = load double, ptr %11, align 8, !tbaa !11
  %498 = load i32, ptr %6, align 4, !tbaa !9
  %499 = sitofp i32 %498 to double
  %500 = fmul double %497, %499
  %501 = fptoui double %500 to i32
  store i32 %501, ptr %7, align 4, !tbaa !9
  %502 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %503 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %504 = load i32, ptr %7, align 4, !tbaa !9
  %505 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %506 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %507 = call i32 @aes_cfb_decrypt(ptr noundef %502, ptr noundef %503, i32 noundef %504, ptr noundef %505, ptr noundef %506)
  %508 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %509 = load i32, ptr %7, align 4, !tbaa !9
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds i8, ptr %508, i64 %510
  %512 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %513 = load i32, ptr %7, align 4, !tbaa !9
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds i8, ptr %512, i64 %514
  %516 = load i32, ptr %6, align 4, !tbaa !9
  %517 = load i32, ptr %7, align 4, !tbaa !9
  %518 = sub nsw i32 %516, %517
  %519 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %520 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %521 = call i32 @aes_cfb_decrypt(ptr noundef %511, ptr noundef %515, i32 noundef %518, ptr noundef %519, ptr noundef %520)
  %522 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  %523 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %524 = load i32, ptr %6, align 4, !tbaa !9
  %525 = sext i32 %524 to i64
  %526 = call i32 @memcmp(ptr noundef %522, ptr noundef %523, i64 noundef %525) #8
  %527 = icmp ne i32 %526, 0
  br i1 %527, label %528, label %531

528:                                              ; preds = %480
  %529 = load i32, ptr %4, align 4, !tbaa !9
  %530 = or i32 %529, 4
  store i32 %530, ptr %4, align 4, !tbaa !9
  br label %531

531:                                              ; preds = %528, %480
  %532 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  %533 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %534 = load i32, ptr %6, align 4, !tbaa !9
  %535 = sext i32 %534 to i64
  %536 = call i32 @memcmp(ptr noundef %532, ptr noundef %533, i64 noundef %535) #8
  %537 = icmp ne i32 %536, 0
  br i1 %537, label %538, label %541

538:                                              ; preds = %531
  %539 = load i32, ptr %4, align 4, !tbaa !9
  %540 = or i32 %539, 8
  store i32 %540, ptr %4, align 4, !tbaa !9
  br label %541

541:                                              ; preds = %538, %531
  %542 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %543 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %544 = load i32, ptr %6, align 4, !tbaa !9
  %545 = sext i32 %544 to i64
  %546 = call i32 @memcmp(ptr noundef %542, ptr noundef %543, i64 noundef %545) #8
  %547 = icmp ne i32 %546, 0
  br i1 %547, label %548, label %551

548:                                              ; preds = %541
  %549 = load i32, ptr %4, align 4, !tbaa !9
  %550 = or i32 %549, 16
  store i32 %550, ptr %4, align 4, !tbaa !9
  br label %551

551:                                              ; preds = %548, %541
  %552 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %553 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %554 = call i32 @memcmp(ptr noundef %552, ptr noundef %553, i64 noundef 16) #8
  %555 = icmp ne i32 %554, 0
  br i1 %555, label %556, label %559

556:                                              ; preds = %551
  %557 = load i32, ptr %4, align 4, !tbaa !9
  %558 = or i32 %557, 32
  store i32 %558, ptr %4, align 4, !tbaa !9
  br label %559

559:                                              ; preds = %556, %551
  %560 = load i32, ptr %4, align 4, !tbaa !9
  %561 = and i32 %560, 16
  %562 = icmp ne i32 %561, 0
  br i1 %562, label %563, label %569

563:                                              ; preds = %559
  %564 = load i32, ptr %4, align 4, !tbaa !9
  %565 = and i32 %564, 512
  %566 = icmp ne i32 %565, 0
  br i1 %566, label %569, label %567

567:                                              ; preds = %563
  %568 = call i32 (ptr, ...) @printf(ptr noundef @.str.29)
  br label %569

569:                                              ; preds = %567, %563, %559
  %570 = load i32, ptr %4, align 4, !tbaa !9
  %571 = and i32 %570, 1
  %572 = icmp ne i32 %571, 0
  br i1 %572, label %573, label %576

573:                                              ; preds = %569
  %574 = load i32, ptr %4, align 4, !tbaa !9
  %575 = or i32 %574, 256
  store i32 %575, ptr %4, align 4, !tbaa !9
  br label %576

576:                                              ; preds = %573, %569
  %577 = load i32, ptr %4, align 4, !tbaa !9
  %578 = and i32 %577, 16
  %579 = icmp ne i32 %578, 0
  br i1 %579, label %580, label %583

580:                                              ; preds = %576
  %581 = load i32, ptr %4, align 4, !tbaa !9
  %582 = or i32 %581, 512
  store i32 %582, ptr %4, align 4, !tbaa !9
  br label %583

583:                                              ; preds = %580, %576
  br label %584

584:                                              ; preds = %583
  %585 = load i32, ptr %2, align 4, !tbaa !9
  %586 = add nsw i32 %585, 1
  store i32 %586, ptr %2, align 4, !tbaa !9
  br label %378, !llvm.loop !17

587:                                              ; preds = %378
  %588 = load i32, ptr %4, align 4, !tbaa !9
  %589 = and i32 %588, -55
  %590 = icmp ne i32 %589, 0
  br i1 %590, label %593, label %591

591:                                              ; preds = %587
  %592 = call i32 (ptr, ...) @printf(ptr noundef @.str.30)
  br label %593

593:                                              ; preds = %591, %587
  %594 = load i32, ptr %4, align 4, !tbaa !9
  %595 = and i32 %594, 34
  %596 = icmp ne i32 %595, 0
  br i1 %596, label %597, label %618

597:                                              ; preds = %593
  %598 = call i32 (ptr, ...) @printf(ptr noundef @.str.23)
  %599 = load i32, ptr %4, align 4, !tbaa !9
  %600 = and i32 %599, 2
  %601 = icmp ne i32 %600, 0
  br i1 %601, label %602, label %604

602:                                              ; preds = %597
  %603 = call i32 (ptr, ...) @printf(ptr noundef @.str.24)
  br label %604

604:                                              ; preds = %602, %597
  %605 = load i32, ptr %4, align 4, !tbaa !9
  %606 = and i32 %605, 34
  %607 = icmp eq i32 %606, 34
  br i1 %607, label %608, label %610

608:                                              ; preds = %604
  %609 = call i32 (ptr, ...) @printf(ptr noundef @.str.25)
  br label %610

610:                                              ; preds = %608, %604
  %611 = load i32, ptr %4, align 4, !tbaa !9
  %612 = and i32 %611, 32
  %613 = icmp ne i32 %612, 0
  br i1 %613, label %614, label %616

614:                                              ; preds = %610
  %615 = call i32 (ptr, ...) @printf(ptr noundef @.str.26)
  br label %616

616:                                              ; preds = %614, %610
  %617 = call i32 (ptr, ...) @printf(ptr noundef @.str.27)
  br label %618

618:                                              ; preds = %616, %593
  store i32 0, ptr %4, align 4, !tbaa !9
  store i32 0, ptr %2, align 4, !tbaa !9
  br label %619

619:                                              ; preds = %825, %618
  %620 = load i32, ptr %2, align 4, !tbaa !9
  %621 = icmp slt i32 %620, 100
  br i1 %621, label %622, label %828

622:                                              ; preds = %619
  %623 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  call void @block_rndfill(ptr noundef %623, i64 noundef 32)
  %624 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %625 = load i32, ptr %3, align 4, !tbaa !9
  %626 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  %627 = call i32 @aes_encrypt_key(ptr noundef %624, i32 noundef %625, ptr noundef %626)
  %628 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %629 = load i32, ptr %3, align 4, !tbaa !9
  %630 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %631 = call i32 @aes_encrypt_key(ptr noundef %628, i32 noundef %629, ptr noundef %630)
  %632 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %633 = load i32, ptr %3, align 4, !tbaa !9
  %634 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %18, i64 0, i64 0
  %635 = call i32 @aes_decrypt_key(ptr noundef %632, i32 noundef %633, ptr noundef %634)
  %636 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %637 = load i32, ptr %3, align 4, !tbaa !9
  %638 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %22, i64 0, i64 0
  %639 = call i32 @aes_decrypt_key(ptr noundef %636, i32 noundef %637, ptr noundef %638)
  %640 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @block_rndfill(ptr noundef %640, i64 noundef 16)
  %641 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %642 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %641, ptr align 16 %642, i64 16, i1 false)
  %643 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %644 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %643, ptr align 16 %644, i64 16, i1 false)
  %645 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  call void @block_rndfill(ptr noundef %645, i64 noundef 16000)
  %646 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %647 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %646, ptr align 16 %647, i64 16000, i1 false)
  %648 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %649 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %648, ptr align 16 %649, i64 16000, i1 false)
  %650 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  %651 = getelementptr inbounds %struct.aes_crypt_ctx, ptr %650, i32 0, i32 1
  %652 = getelementptr inbounds [4 x i8], ptr %651, i64 0, i64 2
  store i8 0, ptr %652, align 2, !tbaa !16
  %653 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %654 = call i32 @aes_mode_reset(ptr noundef %653)
  %655 = call i32 @rand32()
  %656 = uitofp i32 %655 to double
  %657 = fdiv double %656, 0x41EFFFFFFFE00000
  store double %657, ptr %11, align 8, !tbaa !11
  %658 = load double, ptr %11, align 8, !tbaa !11
  %659 = fadd double 1.000000e+00, %658
  %660 = fmul double 8.000000e+03, %659
  %661 = fptoui double %660 to i32
  store i32 %661, ptr %6, align 4, !tbaa !9
  %662 = call i32 @rand32()
  %663 = uitofp i32 %662 to double
  %664 = fdiv double %663, 0x41EFFFFFFFE00000
  store double %664, ptr %11, align 8, !tbaa !11
  %665 = load double, ptr %11, align 8, !tbaa !11
  %666 = load i32, ptr %6, align 4, !tbaa !9
  %667 = sitofp i32 %666 to double
  %668 = fmul double %665, %667
  %669 = fptoui double %668 to i32
  store i32 %669, ptr %7, align 4, !tbaa !9
  %670 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %671 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %672 = load i32, ptr %7, align 4, !tbaa !9
  %673 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %674 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %675 = call i32 @aes_ofb_crypt(ptr noundef %670, ptr noundef %671, i32 noundef %672, ptr noundef %673, ptr noundef %674)
  %676 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %677 = load i32, ptr %7, align 4, !tbaa !9
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds i8, ptr %676, i64 %678
  %680 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %681 = load i32, ptr %7, align 4, !tbaa !9
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds i8, ptr %680, i64 %682
  %684 = load i32, ptr %6, align 4, !tbaa !9
  %685 = load i32, ptr %7, align 4, !tbaa !9
  %686 = sub nsw i32 %684, %685
  %687 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %688 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %689 = call i32 @aes_ofb_crypt(ptr noundef %679, ptr noundef %683, i32 noundef %686, ptr noundef %687, ptr noundef %688)
  %690 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %691 = load i32, ptr %6, align 4, !tbaa !9
  %692 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %693 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  call void @OFBenc(ptr noundef %690, i32 noundef %691, ptr noundef %692, ptr noundef %693)
  %694 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %695 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %696 = load i32, ptr %6, align 4, !tbaa !9
  %697 = sext i32 %696 to i64
  %698 = call i32 @memcmp(ptr noundef %694, ptr noundef %695, i64 noundef %697) #8
  %699 = icmp ne i32 %698, 0
  br i1 %699, label %700, label %703

700:                                              ; preds = %622
  %701 = load i32, ptr %4, align 4, !tbaa !9
  %702 = or i32 %701, 1
  store i32 %702, ptr %4, align 4, !tbaa !9
  br label %703

703:                                              ; preds = %700, %622
  %704 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %705 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %706 = call i32 @memcmp(ptr noundef %704, ptr noundef %705, i64 noundef 16) #8
  %707 = icmp ne i32 %706, 0
  br i1 %707, label %708, label %711

708:                                              ; preds = %703
  %709 = load i32, ptr %4, align 4, !tbaa !9
  %710 = or i32 %709, 2
  store i32 %710, ptr %4, align 4, !tbaa !9
  br label %711

711:                                              ; preds = %708, %703
  %712 = load i32, ptr %4, align 4, !tbaa !9
  %713 = and i32 %712, 1
  %714 = icmp ne i32 %713, 0
  br i1 %714, label %715, label %721

715:                                              ; preds = %711
  %716 = load i32, ptr %4, align 4, !tbaa !9
  %717 = and i32 %716, 256
  %718 = icmp ne i32 %717, 0
  br i1 %718, label %721, label %719

719:                                              ; preds = %715
  %720 = call i32 (ptr, ...) @printf(ptr noundef @.str.31)
  br label %721

721:                                              ; preds = %719, %715, %711
  %722 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %723 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %722, ptr align 16 %723, i64 16, i1 false)
  %724 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %725 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %724, ptr align 16 %725, i64 16, i1 false)
  %726 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  %727 = getelementptr inbounds %struct.aes_crypt_ctx, ptr %726, i32 0, i32 1
  %728 = getelementptr inbounds [4 x i8], ptr %727, i64 0, i64 2
  store i8 0, ptr %728, align 2, !tbaa !16
  %729 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %730 = call i32 @aes_mode_reset(ptr noundef %729)
  %731 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %732 = load i32, ptr %6, align 4, !tbaa !9
  %733 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %734 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  call void @OFBdec(ptr noundef %731, i32 noundef %732, ptr noundef %733, ptr noundef %734)
  %735 = call i32 @rand32()
  %736 = uitofp i32 %735 to double
  %737 = fdiv double %736, 0x41EFFFFFFFE00000
  store double %737, ptr %11, align 8, !tbaa !11
  %738 = load double, ptr %11, align 8, !tbaa !11
  %739 = load i32, ptr %6, align 4, !tbaa !9
  %740 = sitofp i32 %739 to double
  %741 = fmul double %738, %740
  %742 = fptoui double %741 to i32
  store i32 %742, ptr %7, align 4, !tbaa !9
  %743 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %744 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %745 = load i32, ptr %7, align 4, !tbaa !9
  %746 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %747 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %748 = call i32 @aes_ofb_crypt(ptr noundef %743, ptr noundef %744, i32 noundef %745, ptr noundef %746, ptr noundef %747)
  %749 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %750 = load i32, ptr %7, align 4, !tbaa !9
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds i8, ptr %749, i64 %751
  %753 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %754 = load i32, ptr %7, align 4, !tbaa !9
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds i8, ptr %753, i64 %755
  %757 = load i32, ptr %6, align 4, !tbaa !9
  %758 = load i32, ptr %7, align 4, !tbaa !9
  %759 = sub nsw i32 %757, %758
  %760 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %761 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %762 = call i32 @aes_ofb_crypt(ptr noundef %752, ptr noundef %756, i32 noundef %759, ptr noundef %760, ptr noundef %761)
  %763 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  %764 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %765 = load i32, ptr %6, align 4, !tbaa !9
  %766 = sext i32 %765 to i64
  %767 = call i32 @memcmp(ptr noundef %763, ptr noundef %764, i64 noundef %766) #8
  %768 = icmp ne i32 %767, 0
  br i1 %768, label %769, label %772

769:                                              ; preds = %721
  %770 = load i32, ptr %4, align 4, !tbaa !9
  %771 = or i32 %770, 4
  store i32 %771, ptr %4, align 4, !tbaa !9
  br label %772

772:                                              ; preds = %769, %721
  %773 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  %774 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %775 = load i32, ptr %6, align 4, !tbaa !9
  %776 = sext i32 %775 to i64
  %777 = call i32 @memcmp(ptr noundef %773, ptr noundef %774, i64 noundef %776) #8
  %778 = icmp ne i32 %777, 0
  br i1 %778, label %779, label %782

779:                                              ; preds = %772
  %780 = load i32, ptr %4, align 4, !tbaa !9
  %781 = or i32 %780, 8
  store i32 %781, ptr %4, align 4, !tbaa !9
  br label %782

782:                                              ; preds = %779, %772
  %783 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %784 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %785 = load i32, ptr %6, align 4, !tbaa !9
  %786 = sext i32 %785 to i64
  %787 = call i32 @memcmp(ptr noundef %783, ptr noundef %784, i64 noundef %786) #8
  %788 = icmp ne i32 %787, 0
  br i1 %788, label %789, label %792

789:                                              ; preds = %782
  %790 = load i32, ptr %4, align 4, !tbaa !9
  %791 = or i32 %790, 16
  store i32 %791, ptr %4, align 4, !tbaa !9
  br label %792

792:                                              ; preds = %789, %782
  %793 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %794 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %795 = call i32 @memcmp(ptr noundef %793, ptr noundef %794, i64 noundef 16) #8
  %796 = icmp ne i32 %795, 0
  br i1 %796, label %797, label %800

797:                                              ; preds = %792
  %798 = load i32, ptr %4, align 4, !tbaa !9
  %799 = or i32 %798, 32
  store i32 %799, ptr %4, align 4, !tbaa !9
  br label %800

800:                                              ; preds = %797, %792
  %801 = load i32, ptr %4, align 4, !tbaa !9
  %802 = and i32 %801, 16
  %803 = icmp ne i32 %802, 0
  br i1 %803, label %804, label %810

804:                                              ; preds = %800
  %805 = load i32, ptr %4, align 4, !tbaa !9
  %806 = and i32 %805, 512
  %807 = icmp ne i32 %806, 0
  br i1 %807, label %810, label %808

808:                                              ; preds = %804
  %809 = call i32 (ptr, ...) @printf(ptr noundef @.str.32)
  br label %810

810:                                              ; preds = %808, %804, %800
  %811 = load i32, ptr %4, align 4, !tbaa !9
  %812 = and i32 %811, 1
  %813 = icmp ne i32 %812, 0
  br i1 %813, label %814, label %817

814:                                              ; preds = %810
  %815 = load i32, ptr %4, align 4, !tbaa !9
  %816 = or i32 %815, 256
  store i32 %816, ptr %4, align 4, !tbaa !9
  br label %817

817:                                              ; preds = %814, %810
  %818 = load i32, ptr %4, align 4, !tbaa !9
  %819 = and i32 %818, 16
  %820 = icmp ne i32 %819, 0
  br i1 %820, label %821, label %824

821:                                              ; preds = %817
  %822 = load i32, ptr %4, align 4, !tbaa !9
  %823 = or i32 %822, 512
  store i32 %823, ptr %4, align 4, !tbaa !9
  br label %824

824:                                              ; preds = %821, %817
  br label %825

825:                                              ; preds = %824
  %826 = load i32, ptr %2, align 4, !tbaa !9
  %827 = add nsw i32 %826, 1
  store i32 %827, ptr %2, align 4, !tbaa !9
  br label %619, !llvm.loop !18

828:                                              ; preds = %619
  %829 = load i32, ptr %4, align 4, !tbaa !9
  %830 = and i32 %829, -55
  %831 = icmp ne i32 %830, 0
  br i1 %831, label %834, label %832

832:                                              ; preds = %828
  %833 = call i32 (ptr, ...) @printf(ptr noundef @.str.33)
  br label %834

834:                                              ; preds = %832, %828
  %835 = load i32, ptr %4, align 4, !tbaa !9
  %836 = and i32 %835, 34
  %837 = icmp ne i32 %836, 0
  br i1 %837, label %838, label %859

838:                                              ; preds = %834
  %839 = call i32 (ptr, ...) @printf(ptr noundef @.str.23)
  %840 = load i32, ptr %4, align 4, !tbaa !9
  %841 = and i32 %840, 2
  %842 = icmp ne i32 %841, 0
  br i1 %842, label %843, label %845

843:                                              ; preds = %838
  %844 = call i32 (ptr, ...) @printf(ptr noundef @.str.24)
  br label %845

845:                                              ; preds = %843, %838
  %846 = load i32, ptr %4, align 4, !tbaa !9
  %847 = and i32 %846, 34
  %848 = icmp eq i32 %847, 34
  br i1 %848, label %849, label %851

849:                                              ; preds = %845
  %850 = call i32 (ptr, ...) @printf(ptr noundef @.str.25)
  br label %851

851:                                              ; preds = %849, %845
  %852 = load i32, ptr %4, align 4, !tbaa !9
  %853 = and i32 %852, 32
  %854 = icmp ne i32 %853, 0
  br i1 %854, label %855, label %857

855:                                              ; preds = %851
  %856 = call i32 (ptr, ...) @printf(ptr noundef @.str.26)
  br label %857

857:                                              ; preds = %855, %851
  %858 = call i32 (ptr, ...) @printf(ptr noundef @.str.27)
  br label %859

859:                                              ; preds = %857, %834
  store i32 0, ptr %4, align 4, !tbaa !9
  store i32 0, ptr %2, align 4, !tbaa !9
  br label %860

860:                                              ; preds = %1066, %859
  %861 = load i32, ptr %2, align 4, !tbaa !9
  %862 = icmp slt i32 %861, 100
  br i1 %862, label %863, label %1069

863:                                              ; preds = %860
  %864 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  call void @block_rndfill(ptr noundef %864, i64 noundef 32)
  %865 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %866 = load i32, ptr %3, align 4, !tbaa !9
  %867 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  %868 = call i32 @aes_encrypt_key(ptr noundef %865, i32 noundef %866, ptr noundef %867)
  %869 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %870 = load i32, ptr %3, align 4, !tbaa !9
  %871 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %872 = call i32 @aes_encrypt_key(ptr noundef %869, i32 noundef %870, ptr noundef %871)
  %873 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %874 = load i32, ptr %3, align 4, !tbaa !9
  %875 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %18, i64 0, i64 0
  %876 = call i32 @aes_decrypt_key(ptr noundef %873, i32 noundef %874, ptr noundef %875)
  %877 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %878 = load i32, ptr %3, align 4, !tbaa !9
  %879 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %22, i64 0, i64 0
  %880 = call i32 @aes_decrypt_key(ptr noundef %877, i32 noundef %878, ptr noundef %879)
  %881 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @block_rndfill(ptr noundef %881, i64 noundef 16)
  %882 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %883 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %882, ptr align 16 %883, i64 16, i1 false)
  %884 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %885 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %884, ptr align 16 %885, i64 16, i1 false)
  %886 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  call void @block_rndfill(ptr noundef %886, i64 noundef 16000)
  %887 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %888 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %887, ptr align 16 %888, i64 16000, i1 false)
  %889 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %890 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %889, ptr align 16 %890, i64 16000, i1 false)
  %891 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  %892 = getelementptr inbounds %struct.aes_crypt_ctx, ptr %891, i32 0, i32 1
  %893 = getelementptr inbounds [4 x i8], ptr %892, i64 0, i64 2
  store i8 0, ptr %893, align 2, !tbaa !16
  %894 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %895 = call i32 @aes_mode_reset(ptr noundef %894)
  %896 = call i32 @rand32()
  %897 = uitofp i32 %896 to double
  %898 = fdiv double %897, 0x41EFFFFFFFE00000
  store double %898, ptr %11, align 8, !tbaa !11
  %899 = load double, ptr %11, align 8, !tbaa !11
  %900 = fadd double 1.000000e+00, %899
  %901 = fmul double 8.000000e+03, %900
  %902 = fptoui double %901 to i32
  store i32 %902, ptr %6, align 4, !tbaa !9
  %903 = call i32 @rand32()
  %904 = uitofp i32 %903 to double
  %905 = fdiv double %904, 0x41EFFFFFFFE00000
  store double %905, ptr %11, align 8, !tbaa !11
  %906 = load double, ptr %11, align 8, !tbaa !11
  %907 = load i32, ptr %6, align 4, !tbaa !9
  %908 = sitofp i32 %907 to double
  %909 = fmul double %906, %908
  %910 = fptoui double %909 to i32
  store i32 %910, ptr %7, align 4, !tbaa !9
  %911 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %912 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %913 = load i32, ptr %7, align 4, !tbaa !9
  %914 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %915 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %916 = call i32 @aes_ctr_crypt(ptr noundef %911, ptr noundef %912, i32 noundef %913, ptr noundef %914, ptr noundef @ctr_inc, ptr noundef %915)
  %917 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %918 = load i32, ptr %7, align 4, !tbaa !9
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds i8, ptr %917, i64 %919
  %921 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %922 = load i32, ptr %7, align 4, !tbaa !9
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds i8, ptr %921, i64 %923
  %925 = load i32, ptr %6, align 4, !tbaa !9
  %926 = load i32, ptr %7, align 4, !tbaa !9
  %927 = sub nsw i32 %925, %926
  %928 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %929 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %930 = call i32 @aes_ctr_crypt(ptr noundef %920, ptr noundef %924, i32 noundef %927, ptr noundef %928, ptr noundef @ctr_inc, ptr noundef %929)
  %931 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %932 = load i32, ptr %6, align 4, !tbaa !9
  %933 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %934 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  call void @CTRcry(ptr noundef %931, i32 noundef %932, ptr noundef %933, ptr noundef @ctr_inc, ptr noundef %934)
  %935 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %936 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %937 = load i32, ptr %6, align 4, !tbaa !9
  %938 = sext i32 %937 to i64
  %939 = call i32 @memcmp(ptr noundef %935, ptr noundef %936, i64 noundef %938) #8
  %940 = icmp ne i32 %939, 0
  br i1 %940, label %941, label %944

941:                                              ; preds = %863
  %942 = load i32, ptr %4, align 4, !tbaa !9
  %943 = or i32 %942, 1
  store i32 %943, ptr %4, align 4, !tbaa !9
  br label %944

944:                                              ; preds = %941, %863
  %945 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %946 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %947 = call i32 @memcmp(ptr noundef %945, ptr noundef %946, i64 noundef 16) #8
  %948 = icmp ne i32 %947, 0
  br i1 %948, label %949, label %952

949:                                              ; preds = %944
  %950 = load i32, ptr %4, align 4, !tbaa !9
  %951 = or i32 %950, 2
  store i32 %951, ptr %4, align 4, !tbaa !9
  br label %952

952:                                              ; preds = %949, %944
  %953 = load i32, ptr %4, align 4, !tbaa !9
  %954 = and i32 %953, 1
  %955 = icmp ne i32 %954, 0
  br i1 %955, label %956, label %962

956:                                              ; preds = %952
  %957 = load i32, ptr %4, align 4, !tbaa !9
  %958 = and i32 %957, 256
  %959 = icmp ne i32 %958, 0
  br i1 %959, label %962, label %960

960:                                              ; preds = %956
  %961 = call i32 (ptr, ...) @printf(ptr noundef @.str.34)
  br label %962

962:                                              ; preds = %960, %956, %952
  %963 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %964 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %963, ptr align 16 %964, i64 16, i1 false)
  %965 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %966 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %965, ptr align 16 %966, i64 16, i1 false)
  %967 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  %968 = getelementptr inbounds %struct.aes_crypt_ctx, ptr %967, i32 0, i32 1
  %969 = getelementptr inbounds [4 x i8], ptr %968, i64 0, i64 2
  store i8 0, ptr %969, align 2, !tbaa !16
  %970 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %971 = call i32 @aes_mode_reset(ptr noundef %970)
  %972 = call i32 @rand32()
  %973 = uitofp i32 %972 to double
  %974 = fdiv double %973, 0x41EFFFFFFFE00000
  store double %974, ptr %11, align 8, !tbaa !11
  %975 = load double, ptr %11, align 8, !tbaa !11
  %976 = load i32, ptr %6, align 4, !tbaa !9
  %977 = sitofp i32 %976 to double
  %978 = fmul double %975, %977
  %979 = fptoui double %978 to i32
  store i32 %979, ptr %7, align 4, !tbaa !9
  %980 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %981 = load i32, ptr %6, align 4, !tbaa !9
  %982 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %983 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %17, i64 0, i64 0
  call void @CTRcry(ptr noundef %980, i32 noundef %981, ptr noundef %982, ptr noundef @ctr_inc, ptr noundef %983)
  %984 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %985 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %986 = load i32, ptr %7, align 4, !tbaa !9
  %987 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %988 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %989 = call i32 @aes_ctr_crypt(ptr noundef %984, ptr noundef %985, i32 noundef %986, ptr noundef %987, ptr noundef @ctr_inc, ptr noundef %988)
  %990 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %991 = load i32, ptr %7, align 4, !tbaa !9
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds i8, ptr %990, i64 %992
  %994 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %995 = load i32, ptr %7, align 4, !tbaa !9
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds i8, ptr %994, i64 %996
  %998 = load i32, ptr %6, align 4, !tbaa !9
  %999 = load i32, ptr %7, align 4, !tbaa !9
  %1000 = sub nsw i32 %998, %999
  %1001 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %1002 = getelementptr inbounds [1 x %struct.aes_crypt_ctx], ptr %21, i64 0, i64 0
  %1003 = call i32 @aes_ctr_crypt(ptr noundef %993, ptr noundef %997, i32 noundef %1000, ptr noundef %1001, ptr noundef @ctr_inc, ptr noundef %1002)
  %1004 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  %1005 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %1006 = load i32, ptr %6, align 4, !tbaa !9
  %1007 = sext i32 %1006 to i64
  %1008 = call i32 @memcmp(ptr noundef %1004, ptr noundef %1005, i64 noundef %1007) #8
  %1009 = icmp ne i32 %1008, 0
  br i1 %1009, label %1010, label %1013

1010:                                             ; preds = %962
  %1011 = load i32, ptr %4, align 4, !tbaa !9
  %1012 = or i32 %1011, 4
  store i32 %1012, ptr %4, align 4, !tbaa !9
  br label %1013

1013:                                             ; preds = %1010, %962
  %1014 = getelementptr inbounds [16000 x i8], ptr %12, i64 0, i64 0
  %1015 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %1016 = load i32, ptr %6, align 4, !tbaa !9
  %1017 = sext i32 %1016 to i64
  %1018 = call i32 @memcmp(ptr noundef %1014, ptr noundef %1015, i64 noundef %1017) #8
  %1019 = icmp ne i32 %1018, 0
  br i1 %1019, label %1020, label %1023

1020:                                             ; preds = %1013
  %1021 = load i32, ptr %4, align 4, !tbaa !9
  %1022 = or i32 %1021, 8
  store i32 %1022, ptr %4, align 4, !tbaa !9
  br label %1023

1023:                                             ; preds = %1020, %1013
  %1024 = getelementptr inbounds [16000 x i8], ptr %13, i64 0, i64 0
  %1025 = getelementptr inbounds [16000 x i8], ptr %19, i64 0, i64 0
  %1026 = load i32, ptr %6, align 4, !tbaa !9
  %1027 = sext i32 %1026 to i64
  %1028 = call i32 @memcmp(ptr noundef %1024, ptr noundef %1025, i64 noundef %1027) #8
  %1029 = icmp ne i32 %1028, 0
  br i1 %1029, label %1030, label %1033

1030:                                             ; preds = %1023
  %1031 = load i32, ptr %4, align 4, !tbaa !9
  %1032 = or i32 %1031, 16
  store i32 %1032, ptr %4, align 4, !tbaa !9
  br label %1033

1033:                                             ; preds = %1030, %1023
  %1034 = getelementptr inbounds [16 x i8], ptr %15, i64 0, i64 0
  %1035 = getelementptr inbounds [16 x i8], ptr %20, i64 0, i64 0
  %1036 = call i32 @memcmp(ptr noundef %1034, ptr noundef %1035, i64 noundef 16) #8
  %1037 = icmp ne i32 %1036, 0
  br i1 %1037, label %1038, label %1041

1038:                                             ; preds = %1033
  %1039 = load i32, ptr %4, align 4, !tbaa !9
  %1040 = or i32 %1039, 32
  store i32 %1040, ptr %4, align 4, !tbaa !9
  br label %1041

1041:                                             ; preds = %1038, %1033
  %1042 = load i32, ptr %4, align 4, !tbaa !9
  %1043 = and i32 %1042, 16
  %1044 = icmp ne i32 %1043, 0
  br i1 %1044, label %1045, label %1051

1045:                                             ; preds = %1041
  %1046 = load i32, ptr %4, align 4, !tbaa !9
  %1047 = and i32 %1046, 512
  %1048 = icmp ne i32 %1047, 0
  br i1 %1048, label %1051, label %1049

1049:                                             ; preds = %1045
  %1050 = call i32 (ptr, ...) @printf(ptr noundef @.str.35)
  br label %1051

1051:                                             ; preds = %1049, %1045, %1041
  %1052 = load i32, ptr %4, align 4, !tbaa !9
  %1053 = and i32 %1052, 1
  %1054 = icmp ne i32 %1053, 0
  br i1 %1054, label %1055, label %1058

1055:                                             ; preds = %1051
  %1056 = load i32, ptr %4, align 4, !tbaa !9
  %1057 = or i32 %1056, 256
  store i32 %1057, ptr %4, align 4, !tbaa !9
  br label %1058

1058:                                             ; preds = %1055, %1051
  %1059 = load i32, ptr %4, align 4, !tbaa !9
  %1060 = and i32 %1059, 16
  %1061 = icmp ne i32 %1060, 0
  br i1 %1061, label %1062, label %1065

1062:                                             ; preds = %1058
  %1063 = load i32, ptr %4, align 4, !tbaa !9
  %1064 = or i32 %1063, 512
  store i32 %1064, ptr %4, align 4, !tbaa !9
  br label %1065

1065:                                             ; preds = %1062, %1058
  br label %1066

1066:                                             ; preds = %1065
  %1067 = load i32, ptr %2, align 4, !tbaa !9
  %1068 = add nsw i32 %1067, 1
  store i32 %1068, ptr %2, align 4, !tbaa !9
  br label %860, !llvm.loop !19

1069:                                             ; preds = %860
  %1070 = load i32, ptr %4, align 4, !tbaa !9
  %1071 = and i32 %1070, -55
  %1072 = icmp ne i32 %1071, 0
  br i1 %1072, label %1075, label %1073

1073:                                             ; preds = %1069
  %1074 = call i32 (ptr, ...) @printf(ptr noundef @.str.36)
  br label %1075

1075:                                             ; preds = %1073, %1069
  %1076 = load i32, ptr %4, align 4, !tbaa !9
  %1077 = and i32 %1076, 34
  %1078 = icmp ne i32 %1077, 0
  br i1 %1078, label %1079, label %1100

1079:                                             ; preds = %1075
  %1080 = call i32 (ptr, ...) @printf(ptr noundef @.str.23)
  %1081 = load i32, ptr %4, align 4, !tbaa !9
  %1082 = and i32 %1081, 2
  %1083 = icmp ne i32 %1082, 0
  br i1 %1083, label %1084, label %1086

1084:                                             ; preds = %1079
  %1085 = call i32 (ptr, ...) @printf(ptr noundef @.str.24)
  br label %1086

1086:                                             ; preds = %1084, %1079
  %1087 = load i32, ptr %4, align 4, !tbaa !9
  %1088 = and i32 %1087, 34
  %1089 = icmp eq i32 %1088, 34
  br i1 %1089, label %1090, label %1092

1090:                                             ; preds = %1086
  %1091 = call i32 (ptr, ...) @printf(ptr noundef @.str.25)
  br label %1092

1092:                                             ; preds = %1090, %1086
  %1093 = load i32, ptr %4, align 4, !tbaa !9
  %1094 = and i32 %1093, 32
  %1095 = icmp ne i32 %1094, 0
  br i1 %1095, label %1096, label %1098

1096:                                             ; preds = %1092
  %1097 = call i32 (ptr, ...) @printf(ptr noundef @.str.26)
  br label %1098

1098:                                             ; preds = %1096, %1092
  %1099 = call i32 (ptr, ...) @printf(ptr noundef @.str.27)
  br label %1100

1100:                                             ; preds = %1098, %1075
  br label %1101

1101:                                             ; preds = %1100
  %1102 = load i32, ptr %3, align 4, !tbaa !9
  %1103 = add nsw i32 %1102, 64
  store i32 %1103, ptr %3, align 4, !tbaa !9
  br label %57, !llvm.loop !20

1104:                                             ; preds = %57
  %1105 = call i32 (ptr, ...) @printf(ptr noundef @.str.37)
  %1106 = call i32 (ptr, ...) @printf(ptr noundef @.str.38)
  %1107 = call i32 (ptr, ...) @printf(ptr noundef @.str.39)
  store i32 1, ptr %5, align 4, !tbaa !9
  br label %1108

1108:                                             ; preds = %1137, %1104
  %1109 = load i32, ptr %5, align 4, !tbaa !9
  %1110 = icmp slt i32 %1109, 10000
  br i1 %1110, label %1111, label %1140

1111:                                             ; preds = %1108
  %1112 = call i32 @time_base(ptr noundef %8, ptr noundef %10)
  %1113 = load i32, ptr %5, align 4, !tbaa !9
  %1114 = call i32 @time_ecb_enc(i32 noundef 16, i32 noundef %1113, ptr noundef %9, ptr noundef %10)
  %1115 = load double, ptr %9, align 8, !tbaa !11
  %1116 = fdiv double 1.000000e+02, %1115
  %1117 = load double, ptr %10, align 8, !tbaa !11
  %1118 = fmul double %1117, %1116
  store double %1118, ptr %10, align 8, !tbaa !11
  %1119 = load double, ptr %9, align 8, !tbaa !11
  %1120 = load double, ptr %8, align 8, !tbaa !11
  %1121 = fsub double %1119, %1120
  %1122 = fmul double 1.000000e+02, %1121
  %1123 = load i32, ptr %5, align 4, !tbaa !9
  %1124 = sitofp i32 %1123 to double
  %1125 = fmul double 1.600000e+01, %1124
  %1126 = fdiv double %1122, %1125
  %1127 = fptosi double %1126 to i32
  %1128 = sitofp i32 %1127 to double
  %1129 = fdiv double %1128, 1.000000e+02
  store double %1129, ptr %9, align 8, !tbaa !11
  %1130 = load double, ptr %10, align 8, !tbaa !11
  %1131 = fmul double 1.000000e+01, %1130
  %1132 = fptosi double %1131 to i32
  %1133 = sitofp i32 %1132 to double
  %1134 = fdiv double %1133, 1.000000e+01
  store double %1134, ptr %10, align 8, !tbaa !11
  %1135 = load double, ptr %9, align 8, !tbaa !11
  %1136 = call i32 (ptr, ...) @printf(ptr noundef @.str.40, double noundef %1135)
  br label %1137

1137:                                             ; preds = %1111
  %1138 = load i32, ptr %5, align 4, !tbaa !9
  %1139 = mul nsw i32 %1138, 10
  store i32 %1139, ptr %5, align 4, !tbaa !9
  br label %1108, !llvm.loop !21

1140:                                             ; preds = %1108
  %1141 = call i32 (ptr, ...) @printf(ptr noundef @.str.41)
  store i32 1, ptr %5, align 4, !tbaa !9
  br label %1142

1142:                                             ; preds = %1171, %1140
  %1143 = load i32, ptr %5, align 4, !tbaa !9
  %1144 = icmp slt i32 %1143, 10000
  br i1 %1144, label %1145, label %1174

1145:                                             ; preds = %1142
  %1146 = call i32 @time_base(ptr noundef %8, ptr noundef %10)
  %1147 = load i32, ptr %5, align 4, !tbaa !9
  %1148 = call i32 @time_ecb_dec(i32 noundef 16, i32 noundef %1147, ptr noundef %9, ptr noundef %10)
  %1149 = load double, ptr %9, align 8, !tbaa !11
  %1150 = fdiv double 1.000000e+02, %1149
  %1151 = load double, ptr %10, align 8, !tbaa !11
  %1152 = fmul double %1151, %1150
  store double %1152, ptr %10, align 8, !tbaa !11
  %1153 = load double, ptr %9, align 8, !tbaa !11
  %1154 = load double, ptr %8, align 8, !tbaa !11
  %1155 = fsub double %1153, %1154
  %1156 = fmul double 1.000000e+02, %1155
  %1157 = load i32, ptr %5, align 4, !tbaa !9
  %1158 = sitofp i32 %1157 to double
  %1159 = fmul double 1.600000e+01, %1158
  %1160 = fdiv double %1156, %1159
  %1161 = fptosi double %1160 to i32
  %1162 = sitofp i32 %1161 to double
  %1163 = fdiv double %1162, 1.000000e+02
  store double %1163, ptr %9, align 8, !tbaa !11
  %1164 = load double, ptr %10, align 8, !tbaa !11
  %1165 = fmul double 1.000000e+01, %1164
  %1166 = fptosi double %1165 to i32
  %1167 = sitofp i32 %1166 to double
  %1168 = fdiv double %1167, 1.000000e+01
  store double %1168, ptr %10, align 8, !tbaa !11
  %1169 = load double, ptr %9, align 8, !tbaa !11
  %1170 = call i32 (ptr, ...) @printf(ptr noundef @.str.40, double noundef %1169)
  br label %1171

1171:                                             ; preds = %1145
  %1172 = load i32, ptr %5, align 4, !tbaa !9
  %1173 = mul nsw i32 %1172, 10
  store i32 %1173, ptr %5, align 4, !tbaa !9
  br label %1142, !llvm.loop !22

1174:                                             ; preds = %1142
  %1175 = call i32 (ptr, ...) @printf(ptr noundef @.str.42)
  store i32 1, ptr %5, align 4, !tbaa !9
  br label %1176

1176:                                             ; preds = %1205, %1174
  %1177 = load i32, ptr %5, align 4, !tbaa !9
  %1178 = icmp slt i32 %1177, 10000
  br i1 %1178, label %1179, label %1208

1179:                                             ; preds = %1176
  %1180 = call i32 @time_base(ptr noundef %8, ptr noundef %10)
  %1181 = load i32, ptr %5, align 4, !tbaa !9
  %1182 = call i32 @time_cbc_enc(i32 noundef 16, i32 noundef %1181, ptr noundef %9, ptr noundef %10)
  %1183 = load double, ptr %9, align 8, !tbaa !11
  %1184 = fdiv double 1.000000e+02, %1183
  %1185 = load double, ptr %10, align 8, !tbaa !11
  %1186 = fmul double %1185, %1184
  store double %1186, ptr %10, align 8, !tbaa !11
  %1187 = load double, ptr %9, align 8, !tbaa !11
  %1188 = load double, ptr %8, align 8, !tbaa !11
  %1189 = fsub double %1187, %1188
  %1190 = fmul double 1.000000e+02, %1189
  %1191 = load i32, ptr %5, align 4, !tbaa !9
  %1192 = sitofp i32 %1191 to double
  %1193 = fmul double 1.600000e+01, %1192
  %1194 = fdiv double %1190, %1193
  %1195 = fptosi double %1194 to i32
  %1196 = sitofp i32 %1195 to double
  %1197 = fdiv double %1196, 1.000000e+02
  store double %1197, ptr %9, align 8, !tbaa !11
  %1198 = load double, ptr %10, align 8, !tbaa !11
  %1199 = fmul double 1.000000e+01, %1198
  %1200 = fptosi double %1199 to i32
  %1201 = sitofp i32 %1200 to double
  %1202 = fdiv double %1201, 1.000000e+01
  store double %1202, ptr %10, align 8, !tbaa !11
  %1203 = load double, ptr %9, align 8, !tbaa !11
  %1204 = call i32 (ptr, ...) @printf(ptr noundef @.str.40, double noundef %1203)
  br label %1205

1205:                                             ; preds = %1179
  %1206 = load i32, ptr %5, align 4, !tbaa !9
  %1207 = mul nsw i32 %1206, 10
  store i32 %1207, ptr %5, align 4, !tbaa !9
  br label %1176, !llvm.loop !23

1208:                                             ; preds = %1176
  %1209 = call i32 (ptr, ...) @printf(ptr noundef @.str.43)
  store i32 1, ptr %5, align 4, !tbaa !9
  br label %1210

1210:                                             ; preds = %1239, %1208
  %1211 = load i32, ptr %5, align 4, !tbaa !9
  %1212 = icmp slt i32 %1211, 10000
  br i1 %1212, label %1213, label %1242

1213:                                             ; preds = %1210
  %1214 = call i32 @time_base(ptr noundef %8, ptr noundef %10)
  %1215 = load i32, ptr %5, align 4, !tbaa !9
  %1216 = call i32 @time_cbc_dec(i32 noundef 16, i32 noundef %1215, ptr noundef %9, ptr noundef %10)
  %1217 = load double, ptr %9, align 8, !tbaa !11
  %1218 = fdiv double 1.000000e+02, %1217
  %1219 = load double, ptr %10, align 8, !tbaa !11
  %1220 = fmul double %1219, %1218
  store double %1220, ptr %10, align 8, !tbaa !11
  %1221 = load double, ptr %9, align 8, !tbaa !11
  %1222 = load double, ptr %8, align 8, !tbaa !11
  %1223 = fsub double %1221, %1222
  %1224 = fmul double 1.000000e+02, %1223
  %1225 = load i32, ptr %5, align 4, !tbaa !9
  %1226 = sitofp i32 %1225 to double
  %1227 = fmul double 1.600000e+01, %1226
  %1228 = fdiv double %1224, %1227
  %1229 = fptosi double %1228 to i32
  %1230 = sitofp i32 %1229 to double
  %1231 = fdiv double %1230, 1.000000e+02
  store double %1231, ptr %9, align 8, !tbaa !11
  %1232 = load double, ptr %10, align 8, !tbaa !11
  %1233 = fmul double 1.000000e+01, %1232
  %1234 = fptosi double %1233 to i32
  %1235 = sitofp i32 %1234 to double
  %1236 = fdiv double %1235, 1.000000e+01
  store double %1236, ptr %10, align 8, !tbaa !11
  %1237 = load double, ptr %9, align 8, !tbaa !11
  %1238 = call i32 (ptr, ...) @printf(ptr noundef @.str.40, double noundef %1237)
  br label %1239

1239:                                             ; preds = %1213
  %1240 = load i32, ptr %5, align 4, !tbaa !9
  %1241 = mul nsw i32 %1240, 10
  store i32 %1241, ptr %5, align 4, !tbaa !9
  br label %1210, !llvm.loop !24

1242:                                             ; preds = %1210
  %1243 = call i32 (ptr, ...) @printf(ptr noundef @.str.44)
  store i32 1, ptr %5, align 4, !tbaa !9
  br label %1244

1244:                                             ; preds = %1273, %1242
  %1245 = load i32, ptr %5, align 4, !tbaa !9
  %1246 = icmp slt i32 %1245, 10000
  br i1 %1246, label %1247, label %1276

1247:                                             ; preds = %1244
  %1248 = call i32 @time_base(ptr noundef %8, ptr noundef %10)
  %1249 = load i32, ptr %5, align 4, !tbaa !9
  %1250 = call i32 @time_cfb_enc(i32 noundef 16, i32 noundef %1249, ptr noundef %9, ptr noundef %10)
  %1251 = load double, ptr %9, align 8, !tbaa !11
  %1252 = fdiv double 1.000000e+02, %1251
  %1253 = load double, ptr %10, align 8, !tbaa !11
  %1254 = fmul double %1253, %1252
  store double %1254, ptr %10, align 8, !tbaa !11
  %1255 = load double, ptr %9, align 8, !tbaa !11
  %1256 = load double, ptr %8, align 8, !tbaa !11
  %1257 = fsub double %1255, %1256
  %1258 = fmul double 1.000000e+02, %1257
  %1259 = load i32, ptr %5, align 4, !tbaa !9
  %1260 = sitofp i32 %1259 to double
  %1261 = fmul double 1.600000e+01, %1260
  %1262 = fdiv double %1258, %1261
  %1263 = fptosi double %1262 to i32
  %1264 = sitofp i32 %1263 to double
  %1265 = fdiv double %1264, 1.000000e+02
  store double %1265, ptr %9, align 8, !tbaa !11
  %1266 = load double, ptr %10, align 8, !tbaa !11
  %1267 = fmul double 1.000000e+01, %1266
  %1268 = fptosi double %1267 to i32
  %1269 = sitofp i32 %1268 to double
  %1270 = fdiv double %1269, 1.000000e+01
  store double %1270, ptr %10, align 8, !tbaa !11
  %1271 = load double, ptr %9, align 8, !tbaa !11
  %1272 = call i32 (ptr, ...) @printf(ptr noundef @.str.40, double noundef %1271)
  br label %1273

1273:                                             ; preds = %1247
  %1274 = load i32, ptr %5, align 4, !tbaa !9
  %1275 = mul nsw i32 %1274, 10
  store i32 %1275, ptr %5, align 4, !tbaa !9
  br label %1244, !llvm.loop !25

1276:                                             ; preds = %1244
  %1277 = call i32 (ptr, ...) @printf(ptr noundef @.str.45)
  store i32 1, ptr %5, align 4, !tbaa !9
  br label %1278

1278:                                             ; preds = %1307, %1276
  %1279 = load i32, ptr %5, align 4, !tbaa !9
  %1280 = icmp slt i32 %1279, 10000
  br i1 %1280, label %1281, label %1310

1281:                                             ; preds = %1278
  %1282 = call i32 @time_base(ptr noundef %8, ptr noundef %10)
  %1283 = load i32, ptr %5, align 4, !tbaa !9
  %1284 = call i32 @time_cfb_dec(i32 noundef 16, i32 noundef %1283, ptr noundef %9, ptr noundef %10)
  %1285 = load double, ptr %9, align 8, !tbaa !11
  %1286 = fdiv double 1.000000e+02, %1285
  %1287 = load double, ptr %10, align 8, !tbaa !11
  %1288 = fmul double %1287, %1286
  store double %1288, ptr %10, align 8, !tbaa !11
  %1289 = load double, ptr %9, align 8, !tbaa !11
  %1290 = load double, ptr %8, align 8, !tbaa !11
  %1291 = fsub double %1289, %1290
  %1292 = fmul double 1.000000e+02, %1291
  %1293 = load i32, ptr %5, align 4, !tbaa !9
  %1294 = sitofp i32 %1293 to double
  %1295 = fmul double 1.600000e+01, %1294
  %1296 = fdiv double %1292, %1295
  %1297 = fptosi double %1296 to i32
  %1298 = sitofp i32 %1297 to double
  %1299 = fdiv double %1298, 1.000000e+02
  store double %1299, ptr %9, align 8, !tbaa !11
  %1300 = load double, ptr %10, align 8, !tbaa !11
  %1301 = fmul double 1.000000e+01, %1300
  %1302 = fptosi double %1301 to i32
  %1303 = sitofp i32 %1302 to double
  %1304 = fdiv double %1303, 1.000000e+01
  store double %1304, ptr %10, align 8, !tbaa !11
  %1305 = load double, ptr %9, align 8, !tbaa !11
  %1306 = call i32 (ptr, ...) @printf(ptr noundef @.str.40, double noundef %1305)
  br label %1307

1307:                                             ; preds = %1281
  %1308 = load i32, ptr %5, align 4, !tbaa !9
  %1309 = mul nsw i32 %1308, 10
  store i32 %1309, ptr %5, align 4, !tbaa !9
  br label %1278, !llvm.loop !26

1310:                                             ; preds = %1278
  %1311 = call i32 (ptr, ...) @printf(ptr noundef @.str.46)
  store i32 1, ptr %5, align 4, !tbaa !9
  br label %1312

1312:                                             ; preds = %1341, %1310
  %1313 = load i32, ptr %5, align 4, !tbaa !9
  %1314 = icmp slt i32 %1313, 10000
  br i1 %1314, label %1315, label %1344

1315:                                             ; preds = %1312
  %1316 = call i32 @time_base(ptr noundef %8, ptr noundef %10)
  %1317 = load i32, ptr %5, align 4, !tbaa !9
  %1318 = call i32 @time_ofb_enc(i32 noundef 16, i32 noundef %1317, ptr noundef %9, ptr noundef %10)
  %1319 = load double, ptr %9, align 8, !tbaa !11
  %1320 = fdiv double 1.000000e+02, %1319
  %1321 = load double, ptr %10, align 8, !tbaa !11
  %1322 = fmul double %1321, %1320
  store double %1322, ptr %10, align 8, !tbaa !11
  %1323 = load double, ptr %9, align 8, !tbaa !11
  %1324 = load double, ptr %8, align 8, !tbaa !11
  %1325 = fsub double %1323, %1324
  %1326 = fmul double 1.000000e+02, %1325
  %1327 = load i32, ptr %5, align 4, !tbaa !9
  %1328 = sitofp i32 %1327 to double
  %1329 = fmul double 1.600000e+01, %1328
  %1330 = fdiv double %1326, %1329
  %1331 = fptosi double %1330 to i32
  %1332 = sitofp i32 %1331 to double
  %1333 = fdiv double %1332, 1.000000e+02
  store double %1333, ptr %9, align 8, !tbaa !11
  %1334 = load double, ptr %10, align 8, !tbaa !11
  %1335 = fmul double 1.000000e+01, %1334
  %1336 = fptosi double %1335 to i32
  %1337 = sitofp i32 %1336 to double
  %1338 = fdiv double %1337, 1.000000e+01
  store double %1338, ptr %10, align 8, !tbaa !11
  %1339 = load double, ptr %9, align 8, !tbaa !11
  %1340 = call i32 (ptr, ...) @printf(ptr noundef @.str.40, double noundef %1339)
  br label %1341

1341:                                             ; preds = %1315
  %1342 = load i32, ptr %5, align 4, !tbaa !9
  %1343 = mul nsw i32 %1342, 10
  store i32 %1343, ptr %5, align 4, !tbaa !9
  br label %1312, !llvm.loop !27

1344:                                             ; preds = %1312
  %1345 = call i32 (ptr, ...) @printf(ptr noundef @.str.47)
  store i32 1, ptr %5, align 4, !tbaa !9
  br label %1346

1346:                                             ; preds = %1375, %1344
  %1347 = load i32, ptr %5, align 4, !tbaa !9
  %1348 = icmp slt i32 %1347, 10000
  br i1 %1348, label %1349, label %1378

1349:                                             ; preds = %1346
  %1350 = call i32 @time_base(ptr noundef %8, ptr noundef %10)
  %1351 = load i32, ptr %5, align 4, !tbaa !9
  %1352 = call i32 @time_ctr_crypt(i32 noundef 16, i32 noundef %1351, ptr noundef @ctr_inc, ptr noundef %9, ptr noundef %10)
  %1353 = load double, ptr %9, align 8, !tbaa !11
  %1354 = fdiv double 1.000000e+02, %1353
  %1355 = load double, ptr %10, align 8, !tbaa !11
  %1356 = fmul double %1355, %1354
  store double %1356, ptr %10, align 8, !tbaa !11
  %1357 = load double, ptr %9, align 8, !tbaa !11
  %1358 = load double, ptr %8, align 8, !tbaa !11
  %1359 = fsub double %1357, %1358
  %1360 = fmul double 1.000000e+02, %1359
  %1361 = load i32, ptr %5, align 4, !tbaa !9
  %1362 = sitofp i32 %1361 to double
  %1363 = fmul double 1.600000e+01, %1362
  %1364 = fdiv double %1360, %1363
  %1365 = fptosi double %1364 to i32
  %1366 = sitofp i32 %1365 to double
  %1367 = fdiv double %1366, 1.000000e+02
  store double %1367, ptr %9, align 8, !tbaa !11
  %1368 = load double, ptr %10, align 8, !tbaa !11
  %1369 = fmul double 1.000000e+01, %1368
  %1370 = fptosi double %1369 to i32
  %1371 = sitofp i32 %1370 to double
  %1372 = fdiv double %1371, 1.000000e+01
  store double %1372, ptr %10, align 8, !tbaa !11
  %1373 = load double, ptr %9, align 8, !tbaa !11
  %1374 = call i32 (ptr, ...) @printf(ptr noundef @.str.40, double noundef %1373)
  br label %1375

1375:                                             ; preds = %1349
  %1376 = load i32, ptr %5, align 4, !tbaa !9
  %1377 = mul nsw i32 %1376, 10
  store i32 %1377, ptr %5, align 4, !tbaa !9
  br label %1346, !llvm.loop !28

1378:                                             ; preds = %1346
  %1379 = call i32 (ptr, ...) @printf(ptr noundef @.str.48)
  store i32 0, ptr %1, align 4
  store i32 1, ptr %26, align 4
  br label %1380

1380:                                             ; preds = %1378, %54, %50
  call void @llvm.lifetime.end.p0(i64 128, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 256, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 256, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 16000, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 256, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 256, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 16000, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 16000, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #7
  %1381 = load i32, ptr %1, align 4
  ret i32 %1381
}

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

; Function Attrs: nounwind
declare i32 @sched_setaffinity(i32 noundef, i64 noundef, ptr noundef) #6

declare void @perror(ptr noundef) #3

declare i32 @aes_test_alignment_detection(i32 noundef) #3

declare i32 @rand32() #3

declare i32 @aes_mode_reset(ptr noundef) #3

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

!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 = !{!"long", !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 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = !{!7, !7, i64 0}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}


; 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.aes_crypt_ctx = type { [60 x i32], %union.aes_inf, [12 x i8] }
%union.aes_inf = type { i32 }
%struct.cpu_set_t = type { [16 x i64] }

@.str.14 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [3 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @ECBenc(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @ECBdec(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @CBCenc(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

; Function Attrs: nounwind uwtable
declare dso_local void @CBCdec(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @CFBenc(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @CFBdec(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @OFBenc(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @OFBdec(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @CTRcry(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_base(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_ecb_enc(i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare void @block_rndfill(ptr noundef, i64 noundef) local_unnamed_addr #3

declare i32 @aes_encrypt_key(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #3

declare i32 @aes_ecb_encrypt(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #3

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_ecb_dec(i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @aes_decrypt_key(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #3

declare i32 @aes_ecb_decrypt(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_cbc_enc(i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @aes_cbc_encrypt(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_cbc_dec(i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @aes_cbc_decrypt(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_cfb_enc(i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @aes_cfb_encrypt(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_cfb_dec(i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @aes_cfb_decrypt(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_ofb_enc(i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @aes_ofb_crypt(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @time_ctr_crypt(i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @aes_ctr_crypt(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local void @ctr_inc(ptr noundef) #0

; Function Attrs: nounwind uwtable
define dso_local range(i32 -1, 1) i32 @main() local_unnamed_addr #0 {
  %1 = alloca double, align 8
  %2 = alloca double, align 8
  %3 = alloca double, align 8
  %4 = alloca [16000 x i8], align 16
  %5 = alloca [16000 x i8], align 16
  %6 = alloca [16 x i8], align 16
  %7 = alloca [16 x i8], align 16
  %8 = alloca [32 x i8], align 16
  %9 = alloca [1 x %struct.aes_crypt_ctx], align 16
  %10 = alloca [1 x %struct.aes_crypt_ctx], align 16
  %11 = alloca [16000 x i8], align 16
  %12 = alloca [16 x i8], align 16
  %13 = alloca [1 x %struct.aes_crypt_ctx], align 16
  %14 = alloca [1 x %struct.aes_crypt_ctx], align 16
  %15 = alloca %struct.cpu_set_t, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %1) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #8
  call void @llvm.lifetime.start.p0(i64 16000, ptr nonnull %4) #8
  call void @llvm.lifetime.start.p0(i64 16000, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #8
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 16000, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #8
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %13) #8
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %14) #8
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %15) #8
  %16 = getelementptr inbounds i8, ptr %15, i64 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %16, i8 0, i64 120, i1 false)
  store i64 1, ptr %15, align 8, !tbaa !5
  %17 = call i32 @sched_setaffinity(i32 noundef 0, i64 noundef 128, ptr noundef nonnull %15) #8
  %18 = icmp eq i32 %17, -1
  br i1 %18, label %19, label %20

19:                                               ; preds = %0
  call void @perror(ptr noundef nonnull @.str.14) #9
  br label %936

20:                                               ; preds = %0
  %21 = call i32 @aes_test_alignment_detection(i32 noundef 16) #8
  %.not = icmp eq i32 %21, 0
  br i1 %.not, label %22, label %936

22:                                               ; preds = %20
  %23 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.15)
  %24 = getelementptr inbounds i8, ptr %9, i64 242
  br label %25

25:                                               ; preds = %22, %345
  %.0253391 = phi i32 [ 128, %22 ], [ %346, %345 ]
  %26 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.16, i32 noundef %.0253391)
  br label %27

27:                                               ; preds = %25, %54
  %.0239382 = phi i32 [ 0, %25 ], [ %60, %54 ]
  %.0245381 = phi i32 [ 0, %25 ], [ %.5250, %54 ]
  call void @block_rndfill(ptr noundef nonnull %8, i64 noundef 32) #8
  %28 = call i32 @aes_encrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %9) #8
  %29 = call i32 @aes_encrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %13) #8
  %30 = call i32 @aes_decrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %10) #8
  %31 = call i32 @aes_decrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %14) #8
  call void @block_rndfill(ptr noundef nonnull %4, i64 noundef 16000) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16000) %5, ptr noundef nonnull align 16 dereferenceable(16000) %4, i64 16000, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16000) %11, ptr noundef nonnull align 16 dereferenceable(16000) %4, i64 16000, i1 false)
  %32 = call i32 @rand32() #8
  %33 = uitofp i32 %32 to double
  %34 = fdiv double %33, 0x41EFFFFFFFE00000
  %35 = fadd double %34, 1.000000e+00
  %36 = fmul double %35, 8.000000e+03
  %37 = fptoui double %36 to i32
  %38 = sdiv i32 %37, 16
  %39 = shl nsw i32 %38, 4
  call void @ECBenc(ptr noundef nonnull %5, i32 noundef %39, ptr noundef nonnull %9)
  %40 = call i32 @aes_ecb_encrypt(ptr noundef nonnull %11, ptr noundef nonnull %11, i32 noundef %39, ptr noundef nonnull %13) #8
  %41 = sext i32 %39 to i64
  %bcmp346 = call i32 @bcmp(ptr nonnull %5, ptr nonnull %11, i64 %41)
  %.not347 = icmp ne i32 %bcmp346, 0
  %42 = zext i1 %.not347 to i32
  %spec.select = or i32 %.0245381, %42
  %43 = and i32 %spec.select, 1
  %.not348 = icmp ne i32 %43, 0
  %44 = and i32 %.0245381, 256
  %.not349 = icmp eq i32 %44, 0
  %or.cond = and i1 %.not349, %.not348
  br i1 %or.cond, label %45, label %47

45:                                               ; preds = %27
  %46 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17)
  br label %47

47:                                               ; preds = %45, %27
  call void @ECBdec(ptr noundef nonnull %5, i32 noundef %39, ptr noundef nonnull %10)
  %48 = call i32 @aes_ecb_decrypt(ptr noundef nonnull %11, ptr noundef nonnull %11, i32 noundef %39, ptr noundef nonnull %14) #8
  %bcmp350 = call i32 @bcmp(ptr nonnull %4, ptr nonnull %5, i64 %41)
  %.not351 = icmp eq i32 %bcmp350, 0
  %49 = or i32 %spec.select, 2
  %spec.select358 = select i1 %.not351, i32 %spec.select, i32 %49
  %bcmp352 = call i32 @bcmp(ptr nonnull %4, ptr nonnull %11, i64 %41)
  %.not353 = icmp eq i32 %bcmp352, 0
  %50 = or i32 %spec.select358, 4
  %.3248 = select i1 %.not353, i32 %spec.select358, i32 %50
  %51 = and i32 %.3248, 516
  %or.cond359 = icmp eq i32 %51, 4
  br i1 %or.cond359, label %52, label %54

52:                                               ; preds = %47
  %53 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.18)
  br label %54

54:                                               ; preds = %52, %47
  %55 = shl nuw nsw i32 %.3248, 8
  %56 = and i32 %55, 256
  %57 = shl nuw nsw i32 %.3248, 7
  %58 = and i32 %57, 512
  %59 = or disjoint i32 %58, %56
  %.5250 = or i32 %59, %.3248
  %60 = add nuw nsw i32 %.0239382, 1
  %exitcond.not = icmp eq i32 %60, 100
  br i1 %exitcond.not, label %61, label %27, !llvm.loop !9

61:                                               ; preds = %54
  %.not258 = icmp eq i32 %.5250, 0
  br i1 %.not258, label %62, label %.preheader406

62:                                               ; preds = %61
  %63 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.19)
  br label %.preheader406

.preheader406:                                    ; preds = %62, %61
  br label %64

64:                                               ; preds = %.preheader406, %92
  %.1384 = phi i32 [ %98, %92 ], [ 0, %.preheader406 ]
  %.6251383 = phi i32 [ %.14, %92 ], [ 0, %.preheader406 ]
  call void @block_rndfill(ptr noundef nonnull %8, i64 noundef 32) #8
  %65 = call i32 @aes_encrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %9) #8
  %66 = call i32 @aes_encrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %13) #8
  %67 = call i32 @aes_decrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %10) #8
  %68 = call i32 @aes_decrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %14) #8
  call void @block_rndfill(ptr noundef nonnull %6, i64 noundef 16) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %6, i64 16, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %12, ptr noundef nonnull align 16 dereferenceable(16) %6, i64 16, i1 false)
  call void @block_rndfill(ptr noundef nonnull %4, i64 noundef 16000) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16000) %5, ptr noundef nonnull align 16 dereferenceable(16000) %4, i64 16000, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16000) %11, ptr noundef nonnull align 16 dereferenceable(16000) %4, i64 16000, i1 false)
  %69 = call i32 @rand32() #8
  %70 = uitofp i32 %69 to double
  %71 = fdiv double %70, 0x41EFFFFFFFE00000
  %72 = fadd double %71, 1.000000e+00
  %73 = fmul double %72, 8.000000e+03
  %74 = fptoui double %73 to i32
  %75 = sdiv i32 %74, 16
  %76 = shl nsw i32 %75, 4
  call void @CBCenc(ptr noundef nonnull %5, i32 noundef %76, ptr noundef nonnull %7, ptr noundef nonnull %9)
  %77 = call i32 @aes_cbc_encrypt(ptr noundef nonnull %11, ptr noundef nonnull %11, i32 noundef %76, ptr noundef nonnull %12, ptr noundef nonnull %13) #8
  %78 = sext i32 %76 to i64
  %bcmp328 = call i32 @bcmp(ptr nonnull %5, ptr nonnull %11, i64 %78)
  %.not329 = icmp ne i32 %bcmp328, 0
  %79 = zext i1 %.not329 to i32
  %spec.select361 = or i32 %.6251383, %79
  %bcmp330 = call i32 @bcmp(ptr noundef nonnull dereferenceable(16) %7, ptr noundef nonnull dereferenceable(16) %12, i64 16)
  %.not331 = icmp eq i32 %bcmp330, 0
  %80 = or i32 %spec.select361, 2
  %.8 = select i1 %.not331, i32 %spec.select361, i32 %80
  %81 = and i32 %.8, 257
  %or.cond362 = icmp eq i32 %81, 1
  br i1 %or.cond362, label %82, label %84

82:                                               ; preds = %64
  %83 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.20)
  br label %84

84:                                               ; preds = %82, %64
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %6, i64 16, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %12, ptr noundef nonnull align 16 dereferenceable(16) %6, i64 16, i1 false)
  call void @CBCdec(ptr noundef nonnull %5, i32 noundef %76, ptr noundef nonnull %7, ptr noundef nonnull %10)
  %85 = call i32 @aes_cbc_decrypt(ptr noundef nonnull %11, ptr noundef nonnull %11, i32 noundef %76, ptr noundef nonnull %12, ptr noundef nonnull %14) #8
  %bcmp336 = call i32 @bcmp(ptr nonnull %4, ptr nonnull %11, i64 %78)
  %.not337 = icmp eq i32 %bcmp336, 0
  %86 = or i32 %.8, 8
  %.10 = select i1 %.not337, i32 %.8, i32 %86
  %bcmp338 = call i32 @bcmp(ptr nonnull %5, ptr nonnull %11, i64 %78)
  %.not339 = icmp eq i32 %bcmp338, 0
  %87 = or i32 %.10, 16
  %.11 = select i1 %.not339, i32 %.10, i32 %87
  %bcmp340 = call i32 @bcmp(ptr noundef nonnull dereferenceable(16) %7, ptr noundef nonnull dereferenceable(16) %12, i64 16)
  %.not341 = icmp eq i32 %bcmp340, 0
  %88 = or i32 %.11, 32
  %.12 = select i1 %.not341, i32 %.11, i32 %88
  %89 = and i32 %.12, 528
  %or.cond364 = icmp eq i32 %89, 16
  br i1 %or.cond364, label %90, label %92

90:                                               ; preds = %84
  %91 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.21)
  br label %92

92:                                               ; preds = %90, %84
  %93 = shl i32 %.12, 8
  %94 = and i32 %93, 256
  %95 = shl i32 %.12, 5
  %96 = and i32 %95, 512
  %97 = or disjoint i32 %96, %94
  %.14 = or i32 %97, %.12
  %98 = add nuw nsw i32 %.1384, 1
  %exitcond400.not = icmp eq i32 %98, 100
  br i1 %exitcond400.not, label %99, label %64, !llvm.loop !11

99:                                               ; preds = %92
  %100 = and i32 %.14, -55
  %.not259 = icmp eq i32 %100, 0
  br i1 %.not259, label %101, label %103

101:                                              ; preds = %99
  %102 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.22)
  br label %103

103:                                              ; preds = %101, %99
  %104 = and i32 %.12, 34
  %.not260 = icmp eq i32 %104, 0
  br i1 %.not260, label %.preheader405, label %105

105:                                              ; preds = %103
  %106 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.23)
  %107 = and i32 %.12, 2
  %.not261 = icmp eq i32 %107, 0
  br i1 %.not261, label %110, label %108

108:                                              ; preds = %105
  %109 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.24)
  br label %110

110:                                              ; preds = %108, %105
  %111 = icmp eq i32 %104, 34
  br i1 %111, label %112, label %114

112:                                              ; preds = %110
  %113 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.25)
  br label %114

114:                                              ; preds = %112, %110
  %115 = and i32 %.12, 32
  %.not262 = icmp eq i32 %115, 0
  br i1 %.not262, label %118, label %116

116:                                              ; preds = %114
  %117 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.26)
  br label %118

118:                                              ; preds = %116, %114
  %119 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.27)
  br label %.preheader405

.preheader405:                                    ; preds = %118, %103
  br label %120

120:                                              ; preds = %.preheader405, %167
  %.2386 = phi i32 [ %173, %167 ], [ 0, %.preheader405 ]
  %.15385 = phi i32 [ %.23, %167 ], [ 0, %.preheader405 ]
  call void @block_rndfill(ptr noundef nonnull %8, i64 noundef 32) #8
  %121 = call i32 @aes_encrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %9) #8
  %122 = call i32 @aes_encrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %13) #8
  %123 = call i32 @aes_decrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %10) #8
  %124 = call i32 @aes_decrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %14) #8
  call void @block_rndfill(ptr noundef nonnull %6, i64 noundef 16) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %6, i64 16, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %12, ptr noundef nonnull align 16 dereferenceable(16) %6, i64 16, i1 false)
  call void @block_rndfill(ptr noundef nonnull %4, i64 noundef 16000) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16000) %5, ptr noundef nonnull align 16 dereferenceable(16000) %4, i64 16000, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16000) %11, ptr noundef nonnull align 16 dereferenceable(16000) %4, i64 16000, i1 false)
  store i8 0, ptr %24, align 2, !tbaa !12
  %125 = call i32 @aes_mode_reset(ptr noundef nonnull %13) #8
  %126 = call i32 @rand32() #8
  %127 = uitofp i32 %126 to double
  %128 = fdiv double %127, 0x41EFFFFFFFE00000
  %129 = fadd double %128, 1.000000e+00
  %130 = fmul double %129, 8.000000e+03
  %131 = fptoui double %130 to i32
  %132 = call i32 @rand32() #8
  %133 = uitofp i32 %132 to double
  %134 = fdiv double %133, 0x41EFFFFFFFE00000
  %135 = sitofp i32 %131 to double
  %136 = fmul double %134, %135
  %137 = fptoui double %136 to i32
  %138 = call i32 @aes_cfb_encrypt(ptr noundef nonnull %11, ptr noundef nonnull %11, i32 noundef %137, ptr noundef nonnull %12, ptr noundef nonnull %13) #8
  %139 = sext i32 %137 to i64
  %140 = getelementptr inbounds i8, ptr %11, i64 %139
  %141 = sub nsw i32 %131, %137
  %142 = call i32 @aes_cfb_encrypt(ptr noundef nonnull %140, ptr noundef nonnull %140, i32 noundef %141, ptr noundef nonnull %12, ptr noundef nonnull %13) #8
  call void @CFBenc(ptr noundef nonnull %5, i32 noundef %131, ptr noundef nonnull %7, ptr noundef nonnull %9)
  %143 = sext i32 %131 to i64
  %bcmp310 = call i32 @bcmp(ptr nonnull %5, ptr nonnull %11, i64 %143)
  %.not311 = icmp ne i32 %bcmp310, 0
  %144 = zext i1 %.not311 to i32
  %spec.select366 = or i32 %.15385, %144
  %bcmp312 = call i32 @bcmp(ptr noundef nonnull dereferenceable(16) %7, ptr noundef nonnull dereferenceable(16) %12, i64 16)
  %.not313 = icmp eq i32 %bcmp312, 0
  %145 = or i32 %spec.select366, 2
  %.17 = select i1 %.not313, i32 %spec.select366, i32 %145
  %146 = and i32 %.17, 257
  %or.cond367 = icmp eq i32 %146, 1
  br i1 %or.cond367, label %147, label %149

147:                                              ; preds = %120
  %148 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28)
  br label %149

149:                                              ; preds = %147, %120
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %6, i64 16, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %12, ptr noundef nonnull align 16 dereferenceable(16) %6, i64 16, i1 false)
  store i8 0, ptr %24, align 2, !tbaa !12
  %150 = call i32 @aes_mode_reset(ptr noundef nonnull %13) #8
  call void @CFBdec(ptr noundef nonnull %5, i32 noundef %131, ptr noundef nonnull %7, ptr noundef nonnull %9)
  %151 = call i32 @rand32() #8
  %152 = uitofp i32 %151 to double
  %153 = fdiv double %152, 0x41EFFFFFFFE00000
  %154 = fmul double %153, %135
  %155 = fptoui double %154 to i32
  %156 = call i32 @aes_cfb_decrypt(ptr noundef nonnull %11, ptr noundef nonnull %11, i32 noundef %155, ptr noundef nonnull %12, ptr noundef nonnull %13) #8
  %157 = sext i32 %155 to i64
  %158 = getelementptr inbounds i8, ptr %11, i64 %157
  %159 = sub nsw i32 %131, %155
  %160 = call i32 @aes_cfb_decrypt(ptr noundef nonnull %158, ptr noundef nonnull %158, i32 noundef %159, ptr noundef nonnull %12, ptr noundef nonnull %13) #8
  %bcmp318 = call i32 @bcmp(ptr nonnull %4, ptr nonnull %11, i64 %143)
  %.not319 = icmp eq i32 %bcmp318, 0
  %161 = or i32 %.17, 8
  %.19 = select i1 %.not319, i32 %.17, i32 %161
  %bcmp320 = call i32 @bcmp(ptr nonnull %5, ptr nonnull %11, i64 %143)
  %.not321 = icmp eq i32 %bcmp320, 0
  %162 = or i32 %.19, 16
  %.20 = select i1 %.not321, i32 %.19, i32 %162
  %bcmp322 = call i32 @bcmp(ptr noundef nonnull dereferenceable(16) %7, ptr noundef nonnull dereferenceable(16) %12, i64 16)
  %.not323 = icmp eq i32 %bcmp322, 0
  %163 = or i32 %.20, 32
  %.21 = select i1 %.not323, i32 %.20, i32 %163
  %164 = and i32 %.21, 528
  %or.cond369 = icmp eq i32 %164, 16
  br i1 %or.cond369, label %165, label %167

165:                                              ; preds = %149
  %166 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.29)
  br label %167

167:                                              ; preds = %165, %149
  %168 = shl i32 %.21, 8
  %169 = and i32 %168, 256
  %170 = shl i32 %.21, 5
  %171 = and i32 %170, 512
  %172 = or disjoint i32 %171, %169
  %.23 = or i32 %172, %.21
  %173 = add nuw nsw i32 %.2386, 1
  %exitcond401.not = icmp eq i32 %173, 100
  br i1 %exitcond401.not, label %174, label %120, !llvm.loop !13

174:                                              ; preds = %167
  %175 = and i32 %.23, -55
  %.not263 = icmp eq i32 %175, 0
  br i1 %.not263, label %176, label %178

176:                                              ; preds = %174
  %177 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  br label %178

178:                                              ; preds = %176, %174
  %179 = and i32 %.21, 34
  %.not264 = icmp eq i32 %179, 0
  br i1 %.not264, label %.preheader404, label %180

180:                                              ; preds = %178
  %181 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.23)
  %182 = and i32 %.21, 2
  %.not265 = icmp eq i32 %182, 0
  br i1 %.not265, label %185, label %183

183:                                              ; preds = %180
  %184 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.24)
  br label %185

185:                                              ; preds = %183, %180
  %186 = icmp eq i32 %179, 34
  br i1 %186, label %187, label %189

187:                                              ; preds = %185
  %188 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.25)
  br label %189

189:                                              ; preds = %187, %185
  %190 = and i32 %.21, 32
  %.not266 = icmp eq i32 %190, 0
  br i1 %.not266, label %193, label %191

191:                                              ; preds = %189
  %192 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.26)
  br label %193

193:                                              ; preds = %191, %189
  %194 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.27)
  br label %.preheader404

.preheader404:                                    ; preds = %193, %178
  br label %195

195:                                              ; preds = %.preheader404, %242
  %.3388 = phi i32 [ %248, %242 ], [ 0, %.preheader404 ]
  %.24387 = phi i32 [ %.32, %242 ], [ 0, %.preheader404 ]
  call void @block_rndfill(ptr noundef nonnull %8, i64 noundef 32) #8
  %196 = call i32 @aes_encrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %9) #8
  %197 = call i32 @aes_encrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %13) #8
  %198 = call i32 @aes_decrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %10) #8
  %199 = call i32 @aes_decrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %14) #8
  call void @block_rndfill(ptr noundef nonnull %6, i64 noundef 16) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %6, i64 16, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %12, ptr noundef nonnull align 16 dereferenceable(16) %6, i64 16, i1 false)
  call void @block_rndfill(ptr noundef nonnull %4, i64 noundef 16000) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16000) %5, ptr noundef nonnull align 16 dereferenceable(16000) %4, i64 16000, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16000) %11, ptr noundef nonnull align 16 dereferenceable(16000) %4, i64 16000, i1 false)
  store i8 0, ptr %24, align 2, !tbaa !12
  %200 = call i32 @aes_mode_reset(ptr noundef nonnull %13) #8
  %201 = call i32 @rand32() #8
  %202 = uitofp i32 %201 to double
  %203 = fdiv double %202, 0x41EFFFFFFFE00000
  %204 = fadd double %203, 1.000000e+00
  %205 = fmul double %204, 8.000000e+03
  %206 = fptoui double %205 to i32
  %207 = call i32 @rand32() #8
  %208 = uitofp i32 %207 to double
  %209 = fdiv double %208, 0x41EFFFFFFFE00000
  %210 = sitofp i32 %206 to double
  %211 = fmul double %209, %210
  %212 = fptoui double %211 to i32
  %213 = call i32 @aes_ofb_crypt(ptr noundef nonnull %11, ptr noundef nonnull %11, i32 noundef %212, ptr noundef nonnull %12, ptr noundef nonnull %13) #8
  %214 = sext i32 %212 to i64
  %215 = getelementptr inbounds i8, ptr %11, i64 %214
  %216 = sub nsw i32 %206, %212
  %217 = call i32 @aes_ofb_crypt(ptr noundef nonnull %215, ptr noundef nonnull %215, i32 noundef %216, ptr noundef nonnull %12, ptr noundef nonnull %13) #8
  call void @OFBenc(ptr noundef nonnull %5, i32 noundef %206, ptr noundef nonnull %7, ptr noundef nonnull %9)
  %218 = sext i32 %206 to i64
  %bcmp292 = call i32 @bcmp(ptr nonnull %5, ptr nonnull %11, i64 %218)
  %.not293 = icmp ne i32 %bcmp292, 0
  %219 = zext i1 %.not293 to i32
  %spec.select371 = or i32 %.24387, %219
  %bcmp294 = call i32 @bcmp(ptr noundef nonnull dereferenceable(16) %7, ptr noundef nonnull dereferenceable(16) %12, i64 16)
  %.not295 = icmp eq i32 %bcmp294, 0
  %220 = or i32 %spec.select371, 2
  %.26 = select i1 %.not295, i32 %spec.select371, i32 %220
  %221 = and i32 %.26, 257
  %or.cond372 = icmp eq i32 %221, 1
  br i1 %or.cond372, label %222, label %224

222:                                              ; preds = %195
  %223 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31)
  br label %224

224:                                              ; preds = %222, %195
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %6, i64 16, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %12, ptr noundef nonnull align 16 dereferenceable(16) %6, i64 16, i1 false)
  store i8 0, ptr %24, align 2, !tbaa !12
  %225 = call i32 @aes_mode_reset(ptr noundef nonnull %13) #8
  call void @OFBdec(ptr noundef nonnull %5, i32 noundef %206, ptr noundef nonnull %7, ptr noundef nonnull %9)
  %226 = call i32 @rand32() #8
  %227 = uitofp i32 %226 to double
  %228 = fdiv double %227, 0x41EFFFFFFFE00000
  %229 = fmul double %228, %210
  %230 = fptoui double %229 to i32
  %231 = call i32 @aes_ofb_crypt(ptr noundef nonnull %11, ptr noundef nonnull %11, i32 noundef %230, ptr noundef nonnull %12, ptr noundef nonnull %13) #8
  %232 = sext i32 %230 to i64
  %233 = getelementptr inbounds i8, ptr %11, i64 %232
  %234 = sub nsw i32 %206, %230
  %235 = call i32 @aes_ofb_crypt(ptr noundef nonnull %233, ptr noundef nonnull %233, i32 noundef %234, ptr noundef nonnull %12, ptr noundef nonnull %13) #8
  %bcmp300 = call i32 @bcmp(ptr nonnull %4, ptr nonnull %11, i64 %218)
  %.not301 = icmp eq i32 %bcmp300, 0
  %236 = or i32 %.26, 8
  %.28 = select i1 %.not301, i32 %.26, i32 %236
  %bcmp302 = call i32 @bcmp(ptr nonnull %5, ptr nonnull %11, i64 %218)
  %.not303 = icmp eq i32 %bcmp302, 0
  %237 = or i32 %.28, 16
  %.29 = select i1 %.not303, i32 %.28, i32 %237
  %bcmp304 = call i32 @bcmp(ptr noundef nonnull dereferenceable(16) %7, ptr noundef nonnull dereferenceable(16) %12, i64 16)
  %.not305 = icmp eq i32 %bcmp304, 0
  %238 = or i32 %.29, 32
  %.30 = select i1 %.not305, i32 %.29, i32 %238
  %239 = and i32 %.30, 528
  %or.cond374 = icmp eq i32 %239, 16
  br i1 %or.cond374, label %240, label %242

240:                                              ; preds = %224
  %241 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.32)
  br label %242

242:                                              ; preds = %240, %224
  %243 = shl i32 %.30, 8
  %244 = and i32 %243, 256
  %245 = shl i32 %.30, 5
  %246 = and i32 %245, 512
  %247 = or disjoint i32 %246, %244
  %.32 = or i32 %247, %.30
  %248 = add nuw nsw i32 %.3388, 1
  %exitcond402.not = icmp eq i32 %248, 100
  br i1 %exitcond402.not, label %249, label %195, !llvm.loop !14

249:                                              ; preds = %242
  %250 = and i32 %.32, -55
  %.not267 = icmp eq i32 %250, 0
  br i1 %.not267, label %251, label %253

251:                                              ; preds = %249
  %252 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33)
  br label %253

253:                                              ; preds = %251, %249
  %254 = and i32 %.30, 34
  %.not268 = icmp eq i32 %254, 0
  br i1 %.not268, label %.preheader, label %255

255:                                              ; preds = %253
  %256 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.23)
  %257 = and i32 %.30, 2
  %.not269 = icmp eq i32 %257, 0
  br i1 %.not269, label %260, label %258

258:                                              ; preds = %255
  %259 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.24)
  br label %260

260:                                              ; preds = %258, %255
  %261 = icmp eq i32 %254, 34
  br i1 %261, label %262, label %264

262:                                              ; preds = %260
  %263 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.25)
  br label %264

264:                                              ; preds = %262, %260
  %265 = and i32 %.30, 32
  %.not270 = icmp eq i32 %265, 0
  br i1 %.not270, label %268, label %266

266:                                              ; preds = %264
  %267 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.26)
  br label %268

268:                                              ; preds = %266, %264
  %269 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.27)
  br label %.preheader

.preheader:                                       ; preds = %268, %253
  br label %270

270:                                              ; preds = %.preheader, %317
  %.4390 = phi i32 [ %323, %317 ], [ 0, %.preheader ]
  %.33389 = phi i32 [ %.41, %317 ], [ 0, %.preheader ]
  call void @block_rndfill(ptr noundef nonnull %8, i64 noundef 32) #8
  %271 = call i32 @aes_encrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %9) #8
  %272 = call i32 @aes_encrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %13) #8
  %273 = call i32 @aes_decrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %10) #8
  %274 = call i32 @aes_decrypt_key(ptr noundef nonnull %8, i32 noundef %.0253391, ptr noundef nonnull %14) #8
  call void @block_rndfill(ptr noundef nonnull %6, i64 noundef 16) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %6, i64 16, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %12, ptr noundef nonnull align 16 dereferenceable(16) %6, i64 16, i1 false)
  call void @block_rndfill(ptr noundef nonnull %4, i64 noundef 16000) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16000) %5, ptr noundef nonnull align 16 dereferenceable(16000) %4, i64 16000, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16000) %11, ptr noundef nonnull align 16 dereferenceable(16000) %4, i64 16000, i1 false)
  store i8 0, ptr %24, align 2, !tbaa !12
  %275 = call i32 @aes_mode_reset(ptr noundef nonnull %13) #8
  %276 = call i32 @rand32() #8
  %277 = uitofp i32 %276 to double
  %278 = fdiv double %277, 0x41EFFFFFFFE00000
  %279 = fadd double %278, 1.000000e+00
  %280 = fmul double %279, 8.000000e+03
  %281 = fptoui double %280 to i32
  %282 = call i32 @rand32() #8
  %283 = uitofp i32 %282 to double
  %284 = fdiv double %283, 0x41EFFFFFFFE00000
  %285 = sitofp i32 %281 to double
  %286 = fmul double %284, %285
  %287 = fptoui double %286 to i32
  %288 = call i32 @aes_ctr_crypt(ptr noundef nonnull %11, ptr noundef nonnull %11, i32 noundef %287, ptr noundef nonnull %12, ptr noundef nonnull @ctr_inc, ptr noundef nonnull %13) #8
  %289 = sext i32 %287 to i64
  %290 = getelementptr inbounds i8, ptr %11, i64 %289
  %291 = sub nsw i32 %281, %287
  %292 = call i32 @aes_ctr_crypt(ptr noundef nonnull %290, ptr noundef nonnull %290, i32 noundef %291, ptr noundef nonnull %12, ptr noundef nonnull @ctr_inc, ptr noundef nonnull %13) #8
  call void @CTRcry(ptr noundef nonnull %5, i32 noundef %281, ptr noundef nonnull %7, ptr noundef nonnull @ctr_inc, ptr noundef nonnull %9)
  %293 = sext i32 %281 to i64
  %bcmp = call i32 @bcmp(ptr nonnull %5, ptr nonnull %11, i64 %293)
  %.not275 = icmp ne i32 %bcmp, 0
  %294 = zext i1 %.not275 to i32
  %spec.select376 = or i32 %.33389, %294
  %bcmp276 = call i32 @bcmp(ptr noundef nonnull dereferenceable(16) %7, ptr noundef nonnull dereferenceable(16) %12, i64 16)
  %.not277 = icmp eq i32 %bcmp276, 0
  %295 = or i32 %spec.select376, 2
  %.35 = select i1 %.not277, i32 %spec.select376, i32 %295
  %296 = and i32 %.35, 257
  %or.cond377 = icmp eq i32 %296, 1
  br i1 %or.cond377, label %297, label %299

297:                                              ; preds = %270
  %298 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34)
  br label %299

299:                                              ; preds = %297, %270
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %6, i64 16, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %12, ptr noundef nonnull align 16 dereferenceable(16) %6, i64 16, i1 false)
  store i8 0, ptr %24, align 2, !tbaa !12
  %300 = call i32 @aes_mode_reset(ptr noundef nonnull %13) #8
  %301 = call i32 @rand32() #8
  %302 = uitofp i32 %301 to double
  %303 = fdiv double %302, 0x41EFFFFFFFE00000
  %304 = fmul double %303, %285
  %305 = fptoui double %304 to i32
  call void @CTRcry(ptr noundef nonnull %5, i32 noundef %281, ptr noundef nonnull %7, ptr noundef nonnull @ctr_inc, ptr noundef nonnull %9)
  %306 = call i32 @aes_ctr_crypt(ptr noundef nonnull %11, ptr noundef nonnull %11, i32 noundef %305, ptr noundef nonnull %12, ptr noundef nonnull @ctr_inc, ptr noundef nonnull %13) #8
  %307 = sext i32 %305 to i64
  %308 = getelementptr inbounds i8, ptr %11, i64 %307
  %309 = sub nsw i32 %281, %305
  %310 = call i32 @aes_ctr_crypt(ptr noundef nonnull %308, ptr noundef nonnull %308, i32 noundef %309, ptr noundef nonnull %12, ptr noundef nonnull @ctr_inc, ptr noundef nonnull %13) #8
  %bcmp282 = call i32 @bcmp(ptr nonnull %4, ptr nonnull %11, i64 %293)
  %.not283 = icmp eq i32 %bcmp282, 0
  %311 = or i32 %.35, 8
  %.37 = select i1 %.not283, i32 %.35, i32 %311
  %bcmp284 = call i32 @bcmp(ptr nonnull %5, ptr nonnull %11, i64 %293)
  %.not285 = icmp eq i32 %bcmp284, 0
  %312 = or i32 %.37, 16
  %.38 = select i1 %.not285, i32 %.37, i32 %312
  %bcmp286 = call i32 @bcmp(ptr noundef nonnull dereferenceable(16) %7, ptr noundef nonnull dereferenceable(16) %12, i64 16)
  %.not287 = icmp eq i32 %bcmp286, 0
  %313 = or i32 %.38, 32
  %.39 = select i1 %.not287, i32 %.38, i32 %313
  %314 = and i32 %.39, 528
  %or.cond379 = icmp eq i32 %314, 16
  br i1 %or.cond379, label %315, label %317

315:                                              ; preds = %299
  %316 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.35)
  br label %317

317:                                              ; preds = %315, %299
  %318 = shl i32 %.39, 8
  %319 = and i32 %318, 256
  %320 = shl i32 %.39, 5
  %321 = and i32 %320, 512
  %322 = or disjoint i32 %321, %319
  %.41 = or i32 %322, %.39
  %323 = add nuw nsw i32 %.4390, 1
  %exitcond403.not = icmp eq i32 %323, 100
  br i1 %exitcond403.not, label %324, label %270, !llvm.loop !15

324:                                              ; preds = %317
  %325 = and i32 %.41, -55
  %.not271 = icmp eq i32 %325, 0
  br i1 %.not271, label %326, label %328

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

328:                                              ; preds = %326, %324
  %329 = and i32 %.39, 34
  %.not272 = icmp eq i32 %329, 0
  br i1 %.not272, label %345, label %330

330:                                              ; preds = %328
  %331 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.23)
  %332 = and i32 %.39, 2
  %.not273 = icmp eq i32 %332, 0
  br i1 %.not273, label %335, label %333

333:                                              ; preds = %330
  %334 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.24)
  br label %335

335:                                              ; preds = %333, %330
  %336 = icmp eq i32 %329, 34
  br i1 %336, label %337, label %339

337:                                              ; preds = %335
  %338 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.25)
  br label %339

339:                                              ; preds = %337, %335
  %340 = and i32 %.39, 32
  %.not274 = icmp eq i32 %340, 0
  br i1 %.not274, label %343, label %341

341:                                              ; preds = %339
  %342 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.26)
  br label %343

343:                                              ; preds = %341, %339
  %344 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.27)
  br label %345

345:                                              ; preds = %328, %343
  %346 = add nuw nsw i32 %.0253391, 64
  %347 = icmp ult i32 %.0253391, 193
  br i1 %347, label %25, label %348, !llvm.loop !16

348:                                              ; preds = %345
  %349 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.37)
  %350 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.38)
  %351 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.39)
  %352 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %353 = call i32 @time_ecb_enc(i32 noundef 16, i32 noundef 1, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %354 = load double, ptr %2, align 8, !tbaa !17
  %355 = fdiv double 1.000000e+02, %354
  %356 = load double, ptr %3, align 8, !tbaa !17
  %357 = fmul double %356, %355
  %358 = load double, ptr %1, align 8, !tbaa !17
  %359 = fsub double %354, %358
  %360 = fmul double %359, 1.000000e+02
  %361 = fmul double %360, 6.250000e-02
  %362 = fptosi double %361 to i32
  %363 = sitofp i32 %362 to double
  %364 = fdiv double %363, 1.000000e+02
  store double %364, ptr %2, align 8, !tbaa !17
  %365 = fmul double %357, 1.000000e+01
  %366 = fptosi double %365 to i32
  %367 = sitofp i32 %366 to double
  %368 = fdiv double %367, 1.000000e+01
  store double %368, ptr %3, align 8, !tbaa !17
  %369 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %364)
  %370 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %371 = call i32 @time_ecb_enc(i32 noundef 16, i32 noundef 10, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %372 = load double, ptr %2, align 8, !tbaa !17
  %373 = fdiv double 1.000000e+02, %372
  %374 = load double, ptr %3, align 8, !tbaa !17
  %375 = fmul double %374, %373
  %376 = load double, ptr %1, align 8, !tbaa !17
  %377 = fsub double %372, %376
  %378 = fmul double %377, 1.000000e+02
  %379 = fdiv double %378, 1.600000e+02
  %380 = fptosi double %379 to i32
  %381 = sitofp i32 %380 to double
  %382 = fdiv double %381, 1.000000e+02
  store double %382, ptr %2, align 8, !tbaa !17
  %383 = fmul double %375, 1.000000e+01
  %384 = fptosi double %383 to i32
  %385 = sitofp i32 %384 to double
  %386 = fdiv double %385, 1.000000e+01
  store double %386, ptr %3, align 8, !tbaa !17
  %387 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %382)
  %388 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %389 = call i32 @time_ecb_enc(i32 noundef 16, i32 noundef 100, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %390 = load double, ptr %2, align 8, !tbaa !17
  %391 = fdiv double 1.000000e+02, %390
  %392 = load double, ptr %3, align 8, !tbaa !17
  %393 = fmul double %392, %391
  %394 = load double, ptr %1, align 8, !tbaa !17
  %395 = fsub double %390, %394
  %396 = fmul double %395, 1.000000e+02
  %397 = fdiv double %396, 1.600000e+03
  %398 = fptosi double %397 to i32
  %399 = sitofp i32 %398 to double
  %400 = fdiv double %399, 1.000000e+02
  store double %400, ptr %2, align 8, !tbaa !17
  %401 = fmul double %393, 1.000000e+01
  %402 = fptosi double %401 to i32
  %403 = sitofp i32 %402 to double
  %404 = fdiv double %403, 1.000000e+01
  store double %404, ptr %3, align 8, !tbaa !17
  %405 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %400)
  %406 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %407 = call i32 @time_ecb_enc(i32 noundef 16, i32 noundef 1000, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %408 = load double, ptr %2, align 8, !tbaa !17
  %409 = fdiv double 1.000000e+02, %408
  %410 = load double, ptr %3, align 8, !tbaa !17
  %411 = fmul double %410, %409
  %412 = load double, ptr %1, align 8, !tbaa !17
  %413 = fsub double %408, %412
  %414 = fmul double %413, 1.000000e+02
  %415 = fdiv double %414, 1.600000e+04
  %416 = fptosi double %415 to i32
  %417 = sitofp i32 %416 to double
  %418 = fdiv double %417, 1.000000e+02
  store double %418, ptr %2, align 8, !tbaa !17
  %419 = fmul double %411, 1.000000e+01
  %420 = fptosi double %419 to i32
  %421 = sitofp i32 %420 to double
  %422 = fdiv double %421, 1.000000e+01
  store double %422, ptr %3, align 8, !tbaa !17
  %423 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %418)
  %424 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.41)
  %425 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %426 = call i32 @time_ecb_dec(i32 noundef 16, i32 noundef 1, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %427 = load double, ptr %2, align 8, !tbaa !17
  %428 = fdiv double 1.000000e+02, %427
  %429 = load double, ptr %3, align 8, !tbaa !17
  %430 = fmul double %429, %428
  %431 = load double, ptr %1, align 8, !tbaa !17
  %432 = fsub double %427, %431
  %433 = fmul double %432, 1.000000e+02
  %434 = fmul double %433, 6.250000e-02
  %435 = fptosi double %434 to i32
  %436 = sitofp i32 %435 to double
  %437 = fdiv double %436, 1.000000e+02
  store double %437, ptr %2, align 8, !tbaa !17
  %438 = fmul double %430, 1.000000e+01
  %439 = fptosi double %438 to i32
  %440 = sitofp i32 %439 to double
  %441 = fdiv double %440, 1.000000e+01
  store double %441, ptr %3, align 8, !tbaa !17
  %442 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %437)
  %443 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %444 = call i32 @time_ecb_dec(i32 noundef 16, i32 noundef 10, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %445 = load double, ptr %2, align 8, !tbaa !17
  %446 = fdiv double 1.000000e+02, %445
  %447 = load double, ptr %3, align 8, !tbaa !17
  %448 = fmul double %447, %446
  %449 = load double, ptr %1, align 8, !tbaa !17
  %450 = fsub double %445, %449
  %451 = fmul double %450, 1.000000e+02
  %452 = fdiv double %451, 1.600000e+02
  %453 = fptosi double %452 to i32
  %454 = sitofp i32 %453 to double
  %455 = fdiv double %454, 1.000000e+02
  store double %455, ptr %2, align 8, !tbaa !17
  %456 = fmul double %448, 1.000000e+01
  %457 = fptosi double %456 to i32
  %458 = sitofp i32 %457 to double
  %459 = fdiv double %458, 1.000000e+01
  store double %459, ptr %3, align 8, !tbaa !17
  %460 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %455)
  %461 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %462 = call i32 @time_ecb_dec(i32 noundef 16, i32 noundef 100, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %463 = load double, ptr %2, align 8, !tbaa !17
  %464 = fdiv double 1.000000e+02, %463
  %465 = load double, ptr %3, align 8, !tbaa !17
  %466 = fmul double %465, %464
  %467 = load double, ptr %1, align 8, !tbaa !17
  %468 = fsub double %463, %467
  %469 = fmul double %468, 1.000000e+02
  %470 = fdiv double %469, 1.600000e+03
  %471 = fptosi double %470 to i32
  %472 = sitofp i32 %471 to double
  %473 = fdiv double %472, 1.000000e+02
  store double %473, ptr %2, align 8, !tbaa !17
  %474 = fmul double %466, 1.000000e+01
  %475 = fptosi double %474 to i32
  %476 = sitofp i32 %475 to double
  %477 = fdiv double %476, 1.000000e+01
  store double %477, ptr %3, align 8, !tbaa !17
  %478 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %473)
  %479 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %480 = call i32 @time_ecb_dec(i32 noundef 16, i32 noundef 1000, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %481 = load double, ptr %2, align 8, !tbaa !17
  %482 = fdiv double 1.000000e+02, %481
  %483 = load double, ptr %3, align 8, !tbaa !17
  %484 = fmul double %483, %482
  %485 = load double, ptr %1, align 8, !tbaa !17
  %486 = fsub double %481, %485
  %487 = fmul double %486, 1.000000e+02
  %488 = fdiv double %487, 1.600000e+04
  %489 = fptosi double %488 to i32
  %490 = sitofp i32 %489 to double
  %491 = fdiv double %490, 1.000000e+02
  store double %491, ptr %2, align 8, !tbaa !17
  %492 = fmul double %484, 1.000000e+01
  %493 = fptosi double %492 to i32
  %494 = sitofp i32 %493 to double
  %495 = fdiv double %494, 1.000000e+01
  store double %495, ptr %3, align 8, !tbaa !17
  %496 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %491)
  %497 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.42)
  %498 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %499 = call i32 @time_cbc_enc(i32 noundef 16, i32 noundef 1, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %500 = load double, ptr %2, align 8, !tbaa !17
  %501 = fdiv double 1.000000e+02, %500
  %502 = load double, ptr %3, align 8, !tbaa !17
  %503 = fmul double %502, %501
  %504 = load double, ptr %1, align 8, !tbaa !17
  %505 = fsub double %500, %504
  %506 = fmul double %505, 1.000000e+02
  %507 = fmul double %506, 6.250000e-02
  %508 = fptosi double %507 to i32
  %509 = sitofp i32 %508 to double
  %510 = fdiv double %509, 1.000000e+02
  store double %510, ptr %2, align 8, !tbaa !17
  %511 = fmul double %503, 1.000000e+01
  %512 = fptosi double %511 to i32
  %513 = sitofp i32 %512 to double
  %514 = fdiv double %513, 1.000000e+01
  store double %514, ptr %3, align 8, !tbaa !17
  %515 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %510)
  %516 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %517 = call i32 @time_cbc_enc(i32 noundef 16, i32 noundef 10, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %518 = load double, ptr %2, align 8, !tbaa !17
  %519 = fdiv double 1.000000e+02, %518
  %520 = load double, ptr %3, align 8, !tbaa !17
  %521 = fmul double %520, %519
  %522 = load double, ptr %1, align 8, !tbaa !17
  %523 = fsub double %518, %522
  %524 = fmul double %523, 1.000000e+02
  %525 = fdiv double %524, 1.600000e+02
  %526 = fptosi double %525 to i32
  %527 = sitofp i32 %526 to double
  %528 = fdiv double %527, 1.000000e+02
  store double %528, ptr %2, align 8, !tbaa !17
  %529 = fmul double %521, 1.000000e+01
  %530 = fptosi double %529 to i32
  %531 = sitofp i32 %530 to double
  %532 = fdiv double %531, 1.000000e+01
  store double %532, ptr %3, align 8, !tbaa !17
  %533 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %528)
  %534 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %535 = call i32 @time_cbc_enc(i32 noundef 16, i32 noundef 100, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %536 = load double, ptr %2, align 8, !tbaa !17
  %537 = fdiv double 1.000000e+02, %536
  %538 = load double, ptr %3, align 8, !tbaa !17
  %539 = fmul double %538, %537
  %540 = load double, ptr %1, align 8, !tbaa !17
  %541 = fsub double %536, %540
  %542 = fmul double %541, 1.000000e+02
  %543 = fdiv double %542, 1.600000e+03
  %544 = fptosi double %543 to i32
  %545 = sitofp i32 %544 to double
  %546 = fdiv double %545, 1.000000e+02
  store double %546, ptr %2, align 8, !tbaa !17
  %547 = fmul double %539, 1.000000e+01
  %548 = fptosi double %547 to i32
  %549 = sitofp i32 %548 to double
  %550 = fdiv double %549, 1.000000e+01
  store double %550, ptr %3, align 8, !tbaa !17
  %551 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %546)
  %552 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %553 = call i32 @time_cbc_enc(i32 noundef 16, i32 noundef 1000, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %554 = load double, ptr %2, align 8, !tbaa !17
  %555 = fdiv double 1.000000e+02, %554
  %556 = load double, ptr %3, align 8, !tbaa !17
  %557 = fmul double %556, %555
  %558 = load double, ptr %1, align 8, !tbaa !17
  %559 = fsub double %554, %558
  %560 = fmul double %559, 1.000000e+02
  %561 = fdiv double %560, 1.600000e+04
  %562 = fptosi double %561 to i32
  %563 = sitofp i32 %562 to double
  %564 = fdiv double %563, 1.000000e+02
  store double %564, ptr %2, align 8, !tbaa !17
  %565 = fmul double %557, 1.000000e+01
  %566 = fptosi double %565 to i32
  %567 = sitofp i32 %566 to double
  %568 = fdiv double %567, 1.000000e+01
  store double %568, ptr %3, align 8, !tbaa !17
  %569 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %564)
  %570 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.43)
  %571 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %572 = call i32 @time_cbc_dec(i32 noundef 16, i32 noundef 1, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %573 = load double, ptr %2, align 8, !tbaa !17
  %574 = fdiv double 1.000000e+02, %573
  %575 = load double, ptr %3, align 8, !tbaa !17
  %576 = fmul double %575, %574
  %577 = load double, ptr %1, align 8, !tbaa !17
  %578 = fsub double %573, %577
  %579 = fmul double %578, 1.000000e+02
  %580 = fmul double %579, 6.250000e-02
  %581 = fptosi double %580 to i32
  %582 = sitofp i32 %581 to double
  %583 = fdiv double %582, 1.000000e+02
  store double %583, ptr %2, align 8, !tbaa !17
  %584 = fmul double %576, 1.000000e+01
  %585 = fptosi double %584 to i32
  %586 = sitofp i32 %585 to double
  %587 = fdiv double %586, 1.000000e+01
  store double %587, ptr %3, align 8, !tbaa !17
  %588 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %583)
  %589 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %590 = call i32 @time_cbc_dec(i32 noundef 16, i32 noundef 10, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %591 = load double, ptr %2, align 8, !tbaa !17
  %592 = fdiv double 1.000000e+02, %591
  %593 = load double, ptr %3, align 8, !tbaa !17
  %594 = fmul double %593, %592
  %595 = load double, ptr %1, align 8, !tbaa !17
  %596 = fsub double %591, %595
  %597 = fmul double %596, 1.000000e+02
  %598 = fdiv double %597, 1.600000e+02
  %599 = fptosi double %598 to i32
  %600 = sitofp i32 %599 to double
  %601 = fdiv double %600, 1.000000e+02
  store double %601, ptr %2, align 8, !tbaa !17
  %602 = fmul double %594, 1.000000e+01
  %603 = fptosi double %602 to i32
  %604 = sitofp i32 %603 to double
  %605 = fdiv double %604, 1.000000e+01
  store double %605, ptr %3, align 8, !tbaa !17
  %606 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %601)
  %607 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %608 = call i32 @time_cbc_dec(i32 noundef 16, i32 noundef 100, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %609 = load double, ptr %2, align 8, !tbaa !17
  %610 = fdiv double 1.000000e+02, %609
  %611 = load double, ptr %3, align 8, !tbaa !17
  %612 = fmul double %611, %610
  %613 = load double, ptr %1, align 8, !tbaa !17
  %614 = fsub double %609, %613
  %615 = fmul double %614, 1.000000e+02
  %616 = fdiv double %615, 1.600000e+03
  %617 = fptosi double %616 to i32
  %618 = sitofp i32 %617 to double
  %619 = fdiv double %618, 1.000000e+02
  store double %619, ptr %2, align 8, !tbaa !17
  %620 = fmul double %612, 1.000000e+01
  %621 = fptosi double %620 to i32
  %622 = sitofp i32 %621 to double
  %623 = fdiv double %622, 1.000000e+01
  store double %623, ptr %3, align 8, !tbaa !17
  %624 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %619)
  %625 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %626 = call i32 @time_cbc_dec(i32 noundef 16, i32 noundef 1000, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %627 = load double, ptr %2, align 8, !tbaa !17
  %628 = fdiv double 1.000000e+02, %627
  %629 = load double, ptr %3, align 8, !tbaa !17
  %630 = fmul double %629, %628
  %631 = load double, ptr %1, align 8, !tbaa !17
  %632 = fsub double %627, %631
  %633 = fmul double %632, 1.000000e+02
  %634 = fdiv double %633, 1.600000e+04
  %635 = fptosi double %634 to i32
  %636 = sitofp i32 %635 to double
  %637 = fdiv double %636, 1.000000e+02
  store double %637, ptr %2, align 8, !tbaa !17
  %638 = fmul double %630, 1.000000e+01
  %639 = fptosi double %638 to i32
  %640 = sitofp i32 %639 to double
  %641 = fdiv double %640, 1.000000e+01
  store double %641, ptr %3, align 8, !tbaa !17
  %642 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %637)
  %643 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.44)
  %644 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %645 = call i32 @time_cfb_enc(i32 noundef 16, i32 noundef 1, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %646 = load double, ptr %2, align 8, !tbaa !17
  %647 = fdiv double 1.000000e+02, %646
  %648 = load double, ptr %3, align 8, !tbaa !17
  %649 = fmul double %648, %647
  %650 = load double, ptr %1, align 8, !tbaa !17
  %651 = fsub double %646, %650
  %652 = fmul double %651, 1.000000e+02
  %653 = fmul double %652, 6.250000e-02
  %654 = fptosi double %653 to i32
  %655 = sitofp i32 %654 to double
  %656 = fdiv double %655, 1.000000e+02
  store double %656, ptr %2, align 8, !tbaa !17
  %657 = fmul double %649, 1.000000e+01
  %658 = fptosi double %657 to i32
  %659 = sitofp i32 %658 to double
  %660 = fdiv double %659, 1.000000e+01
  store double %660, ptr %3, align 8, !tbaa !17
  %661 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %656)
  %662 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %663 = call i32 @time_cfb_enc(i32 noundef 16, i32 noundef 10, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %664 = load double, ptr %2, align 8, !tbaa !17
  %665 = fdiv double 1.000000e+02, %664
  %666 = load double, ptr %3, align 8, !tbaa !17
  %667 = fmul double %666, %665
  %668 = load double, ptr %1, align 8, !tbaa !17
  %669 = fsub double %664, %668
  %670 = fmul double %669, 1.000000e+02
  %671 = fdiv double %670, 1.600000e+02
  %672 = fptosi double %671 to i32
  %673 = sitofp i32 %672 to double
  %674 = fdiv double %673, 1.000000e+02
  store double %674, ptr %2, align 8, !tbaa !17
  %675 = fmul double %667, 1.000000e+01
  %676 = fptosi double %675 to i32
  %677 = sitofp i32 %676 to double
  %678 = fdiv double %677, 1.000000e+01
  store double %678, ptr %3, align 8, !tbaa !17
  %679 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %674)
  %680 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %681 = call i32 @time_cfb_enc(i32 noundef 16, i32 noundef 100, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %682 = load double, ptr %2, align 8, !tbaa !17
  %683 = fdiv double 1.000000e+02, %682
  %684 = load double, ptr %3, align 8, !tbaa !17
  %685 = fmul double %684, %683
  %686 = load double, ptr %1, align 8, !tbaa !17
  %687 = fsub double %682, %686
  %688 = fmul double %687, 1.000000e+02
  %689 = fdiv double %688, 1.600000e+03
  %690 = fptosi double %689 to i32
  %691 = sitofp i32 %690 to double
  %692 = fdiv double %691, 1.000000e+02
  store double %692, ptr %2, align 8, !tbaa !17
  %693 = fmul double %685, 1.000000e+01
  %694 = fptosi double %693 to i32
  %695 = sitofp i32 %694 to double
  %696 = fdiv double %695, 1.000000e+01
  store double %696, ptr %3, align 8, !tbaa !17
  %697 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %692)
  %698 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %699 = call i32 @time_cfb_enc(i32 noundef 16, i32 noundef 1000, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %700 = load double, ptr %2, align 8, !tbaa !17
  %701 = fdiv double 1.000000e+02, %700
  %702 = load double, ptr %3, align 8, !tbaa !17
  %703 = fmul double %702, %701
  %704 = load double, ptr %1, align 8, !tbaa !17
  %705 = fsub double %700, %704
  %706 = fmul double %705, 1.000000e+02
  %707 = fdiv double %706, 1.600000e+04
  %708 = fptosi double %707 to i32
  %709 = sitofp i32 %708 to double
  %710 = fdiv double %709, 1.000000e+02
  store double %710, ptr %2, align 8, !tbaa !17
  %711 = fmul double %703, 1.000000e+01
  %712 = fptosi double %711 to i32
  %713 = sitofp i32 %712 to double
  %714 = fdiv double %713, 1.000000e+01
  store double %714, ptr %3, align 8, !tbaa !17
  %715 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %710)
  %716 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.45)
  %717 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %718 = call i32 @time_cfb_dec(i32 noundef 16, i32 noundef 1, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %719 = load double, ptr %2, align 8, !tbaa !17
  %720 = fdiv double 1.000000e+02, %719
  %721 = load double, ptr %3, align 8, !tbaa !17
  %722 = fmul double %721, %720
  %723 = load double, ptr %1, align 8, !tbaa !17
  %724 = fsub double %719, %723
  %725 = fmul double %724, 1.000000e+02
  %726 = fmul double %725, 6.250000e-02
  %727 = fptosi double %726 to i32
  %728 = sitofp i32 %727 to double
  %729 = fdiv double %728, 1.000000e+02
  store double %729, ptr %2, align 8, !tbaa !17
  %730 = fmul double %722, 1.000000e+01
  %731 = fptosi double %730 to i32
  %732 = sitofp i32 %731 to double
  %733 = fdiv double %732, 1.000000e+01
  store double %733, ptr %3, align 8, !tbaa !17
  %734 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %729)
  %735 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %736 = call i32 @time_cfb_dec(i32 noundef 16, i32 noundef 10, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %737 = load double, ptr %2, align 8, !tbaa !17
  %738 = fdiv double 1.000000e+02, %737
  %739 = load double, ptr %3, align 8, !tbaa !17
  %740 = fmul double %739, %738
  %741 = load double, ptr %1, align 8, !tbaa !17
  %742 = fsub double %737, %741
  %743 = fmul double %742, 1.000000e+02
  %744 = fdiv double %743, 1.600000e+02
  %745 = fptosi double %744 to i32
  %746 = sitofp i32 %745 to double
  %747 = fdiv double %746, 1.000000e+02
  store double %747, ptr %2, align 8, !tbaa !17
  %748 = fmul double %740, 1.000000e+01
  %749 = fptosi double %748 to i32
  %750 = sitofp i32 %749 to double
  %751 = fdiv double %750, 1.000000e+01
  store double %751, ptr %3, align 8, !tbaa !17
  %752 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %747)
  %753 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %754 = call i32 @time_cfb_dec(i32 noundef 16, i32 noundef 100, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %755 = load double, ptr %2, align 8, !tbaa !17
  %756 = fdiv double 1.000000e+02, %755
  %757 = load double, ptr %3, align 8, !tbaa !17
  %758 = fmul double %757, %756
  %759 = load double, ptr %1, align 8, !tbaa !17
  %760 = fsub double %755, %759
  %761 = fmul double %760, 1.000000e+02
  %762 = fdiv double %761, 1.600000e+03
  %763 = fptosi double %762 to i32
  %764 = sitofp i32 %763 to double
  %765 = fdiv double %764, 1.000000e+02
  store double %765, ptr %2, align 8, !tbaa !17
  %766 = fmul double %758, 1.000000e+01
  %767 = fptosi double %766 to i32
  %768 = sitofp i32 %767 to double
  %769 = fdiv double %768, 1.000000e+01
  store double %769, ptr %3, align 8, !tbaa !17
  %770 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %765)
  %771 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %772 = call i32 @time_cfb_dec(i32 noundef 16, i32 noundef 1000, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %773 = load double, ptr %2, align 8, !tbaa !17
  %774 = fdiv double 1.000000e+02, %773
  %775 = load double, ptr %3, align 8, !tbaa !17
  %776 = fmul double %775, %774
  %777 = load double, ptr %1, align 8, !tbaa !17
  %778 = fsub double %773, %777
  %779 = fmul double %778, 1.000000e+02
  %780 = fdiv double %779, 1.600000e+04
  %781 = fptosi double %780 to i32
  %782 = sitofp i32 %781 to double
  %783 = fdiv double %782, 1.000000e+02
  store double %783, ptr %2, align 8, !tbaa !17
  %784 = fmul double %776, 1.000000e+01
  %785 = fptosi double %784 to i32
  %786 = sitofp i32 %785 to double
  %787 = fdiv double %786, 1.000000e+01
  store double %787, ptr %3, align 8, !tbaa !17
  %788 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %783)
  %789 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.46)
  %790 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %791 = call i32 @time_ofb_enc(i32 noundef 16, i32 noundef 1, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %792 = load double, ptr %2, align 8, !tbaa !17
  %793 = fdiv double 1.000000e+02, %792
  %794 = load double, ptr %3, align 8, !tbaa !17
  %795 = fmul double %794, %793
  %796 = load double, ptr %1, align 8, !tbaa !17
  %797 = fsub double %792, %796
  %798 = fmul double %797, 1.000000e+02
  %799 = fmul double %798, 6.250000e-02
  %800 = fptosi double %799 to i32
  %801 = sitofp i32 %800 to double
  %802 = fdiv double %801, 1.000000e+02
  store double %802, ptr %2, align 8, !tbaa !17
  %803 = fmul double %795, 1.000000e+01
  %804 = fptosi double %803 to i32
  %805 = sitofp i32 %804 to double
  %806 = fdiv double %805, 1.000000e+01
  store double %806, ptr %3, align 8, !tbaa !17
  %807 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %802)
  %808 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %809 = call i32 @time_ofb_enc(i32 noundef 16, i32 noundef 10, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %810 = load double, ptr %2, align 8, !tbaa !17
  %811 = fdiv double 1.000000e+02, %810
  %812 = load double, ptr %3, align 8, !tbaa !17
  %813 = fmul double %812, %811
  %814 = load double, ptr %1, align 8, !tbaa !17
  %815 = fsub double %810, %814
  %816 = fmul double %815, 1.000000e+02
  %817 = fdiv double %816, 1.600000e+02
  %818 = fptosi double %817 to i32
  %819 = sitofp i32 %818 to double
  %820 = fdiv double %819, 1.000000e+02
  store double %820, ptr %2, align 8, !tbaa !17
  %821 = fmul double %813, 1.000000e+01
  %822 = fptosi double %821 to i32
  %823 = sitofp i32 %822 to double
  %824 = fdiv double %823, 1.000000e+01
  store double %824, ptr %3, align 8, !tbaa !17
  %825 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %820)
  %826 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %827 = call i32 @time_ofb_enc(i32 noundef 16, i32 noundef 100, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %828 = load double, ptr %2, align 8, !tbaa !17
  %829 = fdiv double 1.000000e+02, %828
  %830 = load double, ptr %3, align 8, !tbaa !17
  %831 = fmul double %830, %829
  %832 = load double, ptr %1, align 8, !tbaa !17
  %833 = fsub double %828, %832
  %834 = fmul double %833, 1.000000e+02
  %835 = fdiv double %834, 1.600000e+03
  %836 = fptosi double %835 to i32
  %837 = sitofp i32 %836 to double
  %838 = fdiv double %837, 1.000000e+02
  store double %838, ptr %2, align 8, !tbaa !17
  %839 = fmul double %831, 1.000000e+01
  %840 = fptosi double %839 to i32
  %841 = sitofp i32 %840 to double
  %842 = fdiv double %841, 1.000000e+01
  store double %842, ptr %3, align 8, !tbaa !17
  %843 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %838)
  %844 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %845 = call i32 @time_ofb_enc(i32 noundef 16, i32 noundef 1000, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %846 = load double, ptr %2, align 8, !tbaa !17
  %847 = fdiv double 1.000000e+02, %846
  %848 = load double, ptr %3, align 8, !tbaa !17
  %849 = fmul double %848, %847
  %850 = load double, ptr %1, align 8, !tbaa !17
  %851 = fsub double %846, %850
  %852 = fmul double %851, 1.000000e+02
  %853 = fdiv double %852, 1.600000e+04
  %854 = fptosi double %853 to i32
  %855 = sitofp i32 %854 to double
  %856 = fdiv double %855, 1.000000e+02
  store double %856, ptr %2, align 8, !tbaa !17
  %857 = fmul double %849, 1.000000e+01
  %858 = fptosi double %857 to i32
  %859 = sitofp i32 %858 to double
  %860 = fdiv double %859, 1.000000e+01
  store double %860, ptr %3, align 8, !tbaa !17
  %861 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %856)
  %862 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.47)
  %863 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %864 = call i32 @time_ctr_crypt(i32 noundef 16, i32 noundef 1, ptr noundef nonnull @ctr_inc, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %865 = load double, ptr %2, align 8, !tbaa !17
  %866 = fdiv double 1.000000e+02, %865
  %867 = load double, ptr %3, align 8, !tbaa !17
  %868 = fmul double %867, %866
  %869 = load double, ptr %1, align 8, !tbaa !17
  %870 = fsub double %865, %869
  %871 = fmul double %870, 1.000000e+02
  %872 = fmul double %871, 6.250000e-02
  %873 = fptosi double %872 to i32
  %874 = sitofp i32 %873 to double
  %875 = fdiv double %874, 1.000000e+02
  store double %875, ptr %2, align 8, !tbaa !17
  %876 = fmul double %868, 1.000000e+01
  %877 = fptosi double %876 to i32
  %878 = sitofp i32 %877 to double
  %879 = fdiv double %878, 1.000000e+01
  store double %879, ptr %3, align 8, !tbaa !17
  %880 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %875)
  %881 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %882 = call i32 @time_ctr_crypt(i32 noundef 16, i32 noundef 10, ptr noundef nonnull @ctr_inc, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %883 = load double, ptr %2, align 8, !tbaa !17
  %884 = fdiv double 1.000000e+02, %883
  %885 = load double, ptr %3, align 8, !tbaa !17
  %886 = fmul double %885, %884
  %887 = load double, ptr %1, align 8, !tbaa !17
  %888 = fsub double %883, %887
  %889 = fmul double %888, 1.000000e+02
  %890 = fdiv double %889, 1.600000e+02
  %891 = fptosi double %890 to i32
  %892 = sitofp i32 %891 to double
  %893 = fdiv double %892, 1.000000e+02
  store double %893, ptr %2, align 8, !tbaa !17
  %894 = fmul double %886, 1.000000e+01
  %895 = fptosi double %894 to i32
  %896 = sitofp i32 %895 to double
  %897 = fdiv double %896, 1.000000e+01
  store double %897, ptr %3, align 8, !tbaa !17
  %898 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %893)
  %899 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %900 = call i32 @time_ctr_crypt(i32 noundef 16, i32 noundef 100, ptr noundef nonnull @ctr_inc, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %901 = load double, ptr %2, align 8, !tbaa !17
  %902 = fdiv double 1.000000e+02, %901
  %903 = load double, ptr %3, align 8, !tbaa !17
  %904 = fmul double %903, %902
  %905 = load double, ptr %1, align 8, !tbaa !17
  %906 = fsub double %901, %905
  %907 = fmul double %906, 1.000000e+02
  %908 = fdiv double %907, 1.600000e+03
  %909 = fptosi double %908 to i32
  %910 = sitofp i32 %909 to double
  %911 = fdiv double %910, 1.000000e+02
  store double %911, ptr %2, align 8, !tbaa !17
  %912 = fmul double %904, 1.000000e+01
  %913 = fptosi double %912 to i32
  %914 = sitofp i32 %913 to double
  %915 = fdiv double %914, 1.000000e+01
  store double %915, ptr %3, align 8, !tbaa !17
  %916 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %911)
  %917 = call i32 @time_base(ptr noundef nonnull %1, ptr noundef nonnull %3)
  %918 = call i32 @time_ctr_crypt(i32 noundef 16, i32 noundef 1000, ptr noundef nonnull @ctr_inc, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %919 = load double, ptr %2, align 8, !tbaa !17
  %920 = fdiv double 1.000000e+02, %919
  %921 = load double, ptr %3, align 8, !tbaa !17
  %922 = fmul double %921, %920
  %923 = load double, ptr %1, align 8, !tbaa !17
  %924 = fsub double %919, %923
  %925 = fmul double %924, 1.000000e+02
  %926 = fdiv double %925, 1.600000e+04
  %927 = fptosi double %926 to i32
  %928 = sitofp i32 %927 to double
  %929 = fdiv double %928, 1.000000e+02
  store double %929, ptr %2, align 8, !tbaa !17
  %930 = fmul double %922, 1.000000e+01
  %931 = fptosi double %930 to i32
  %932 = sitofp i32 %931 to double
  %933 = fdiv double %932, 1.000000e+01
  store double %933, ptr %3, align 8, !tbaa !17
  %934 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %929)
  %935 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.48)
  br label %936

936:                                              ; preds = %20, %348, %19
  %.0 = phi i32 [ -1, %19 ], [ 0, %348 ], [ -1, %20 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 16000, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 16000, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 16000, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %1) #8
  ret i32 %.0
}

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

; Function Attrs: nounwind
declare i32 @sched_setaffinity(i32 noundef, i64 noundef, ptr noundef) local_unnamed_addr #6

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

declare i32 @aes_test_alignment_detection(i32 noundef) local_unnamed_addr #3

declare i32 @rand32() local_unnamed_addr #3

declare i32 @aes_mode_reset(ptr noundef) local_unnamed_addr #3

; Function Attrs: nofree nounwind willreturn memory(argmem: read)
declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #7

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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { "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 = { 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 #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nofree nounwind willreturn memory(argmem: read) }
attributes #8 = { nounwind }
attributes #9 = { 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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = !{!7, !7, i64 0}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}
!17 = !{!18, !18, i64 0}
!18 = !{!"double", !7, i64 0}


; Effective O3 passes: BDCEPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,LCSSAPass,LICMPass,LoopRotatePass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass