; LLVM IR from ARMmbed/mbed-crypto :: programs/test (benchmark)

; 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.mbedtls_ecp_curve_info = type { i32, i16, i16, ptr }
%struct.todo_list = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }
%struct.mbedtls_arc4_context = type { i32, i32, [256 x i8] }
%struct.mbedtls_des3_context = type { [96 x i32] }
%struct.mbedtls_des_context = type { [32 x i32] }
%struct.mbedtls_aes_context = type { i32, ptr, [68 x i32] }
%struct.mbedtls_aes_xts_context = type { %struct.mbedtls_aes_context, %struct.mbedtls_aes_context }
%struct.mbedtls_gcm_context = type { %struct.mbedtls_cipher_context_t, [16 x i64], [16 x i64], i64, i64, [16 x i8], [16 x i8], [16 x i8], i32 }
%struct.mbedtls_cipher_context_t = type { ptr, i32, i32, ptr, ptr, [16 x i8], i64, [16 x i8], i64, ptr, ptr }
%struct.mbedtls_ccm_context = type { %struct.mbedtls_cipher_context_t }
%struct.mbedtls_chachapoly_context = type { %struct.mbedtls_chacha20_context, %struct.mbedtls_poly1305_context, i64, i64, i32, i32 }
%struct.mbedtls_chacha20_context = type { [16 x i32], [64 x i8], i64 }
%struct.mbedtls_poly1305_context = type { [4 x i32], [4 x i32], [5 x i32], [16 x i8], i64 }
%struct.mbedtls_camellia_context = type { i32, [68 x i32] }
%struct.mbedtls_blowfish_context = type { [18 x i32], [4 x [256 x i32]] }
%struct.mbedtls_ctr_drbg_context = type { [16 x i8], i32, i32, i64, i32, %struct.mbedtls_aes_context, ptr, ptr }
%struct.mbedtls_hmac_drbg_context = type { %struct.mbedtls_md_context_t, [64 x i8], i32, i64, i32, i32, ptr, ptr }
%struct.mbedtls_md_context_t = type { ptr, ptr, ptr }
%struct.mbedtls_rsa_context = type { i32, i64, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, i32, i32 }
%struct.mbedtls_mpi = type { i32, i64, ptr }
%struct.mbedtls_dhm_context = type { i64, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi }
%struct.mbedtls_ecp_keypair = type { %struct.mbedtls_ecp_group, %struct.mbedtls_mpi, %struct.mbedtls_ecp_point }
%struct.mbedtls_ecp_group = type { i32, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_ecp_point, %struct.mbedtls_mpi, i64, i64, i32, ptr, ptr, ptr, ptr, ptr, i64 }
%struct.mbedtls_ecp_point = type { %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi }
%struct.mbedtls_ecdh_context = type { %struct.mbedtls_ecp_group, %struct.mbedtls_mpi, %struct.mbedtls_ecp_point, %struct.mbedtls_ecp_point, %struct.mbedtls_mpi, i32, %struct.mbedtls_ecp_point, %struct.mbedtls_ecp_point, %struct.mbedtls_mpi }

@.str = external hidden unnamed_addr constant [4 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [239 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [2 x i8], align 1
@buf = external dso_local global [1024 x i8], align 16
@.str.31 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [4 x i8], align 1
@stdout = external global ptr, align 8
@mbedtls_timing_alarmed = external global i32, align 4
@.str.33 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [15 x i8], align 1
@__const.main.dhm_sizes = external hidden unnamed_addr constant [2 x i32], align 4
@__const.main.dhm_P = external hidden unnamed_addr constant [2 x ptr], align 16
@__const.main.dhm_P_size = external hidden unnamed_addr constant [2 x i64], align 16
@__const.main.dhm_G = external hidden unnamed_addr constant [2 x ptr], align 16
@__const.main.dhm_G_size = external hidden unnamed_addr constant [2 x i64], align 16
@.str.64 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [14 x i8], align 1
@__const.main.montgomery_curve_list = external hidden unnamed_addr constant [3 x %struct.mbedtls_ecp_curve_info], align 16
@.str.72 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [22 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @ecp_clear_precomputed(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
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca [200 x i8], align 16
  %8 = alloca [25 x i8], align 16
  %9 = alloca %struct.todo_list, align 1
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i32, align 4
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i32, align 4
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i32, align 4
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i32, align 4
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i32, align 4
  %30 = alloca %struct.mbedtls_arc4_context, align 4
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i32, align 4
  %35 = alloca %struct.mbedtls_des3_context, align 4
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i32, align 4
  %40 = alloca %struct.mbedtls_des_context, align 4
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca i32, align 4
  %45 = alloca [8 x i8], align 1
  %46 = alloca ptr, align 8
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca i64, align 8
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca %struct.mbedtls_aes_context, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca %struct.mbedtls_aes_xts_context, align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca %struct.mbedtls_gcm_context, align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca %struct.mbedtls_ccm_context, align 8
  %71 = alloca i64, align 8
  %72 = alloca i64, align 8
  %73 = alloca i64, align 8
  %74 = alloca i32, align 4
  %75 = alloca %struct.mbedtls_chachapoly_context, align 8
  %76 = alloca i64, align 8
  %77 = alloca i64, align 8
  %78 = alloca i64, align 8
  %79 = alloca i32, align 4
  %80 = alloca [16 x i8], align 16
  %81 = alloca ptr, align 8
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i64, align 8
  %85 = alloca i64, align 8
  %86 = alloca i64, align 8
  %87 = alloca i32, align 4
  %88 = alloca i64, align 8
  %89 = alloca i64, align 8
  %90 = alloca i64, align 8
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca %struct.mbedtls_camellia_context, align 4
  %94 = alloca i64, align 8
  %95 = alloca i64, align 8
  %96 = alloca i64, align 8
  %97 = alloca i32, align 4
  %98 = alloca i64, align 8
  %99 = alloca i64, align 8
  %100 = alloca i64, align 8
  %101 = alloca i32, align 4
  %102 = alloca i64, align 8
  %103 = alloca i64, align 8
  %104 = alloca i64, align 8
  %105 = alloca i32, align 4
  %106 = alloca i32, align 4
  %107 = alloca %struct.mbedtls_blowfish_context, align 4
  %108 = alloca i64, align 8
  %109 = alloca i64, align 8
  %110 = alloca i64, align 8
  %111 = alloca i32, align 4
  %112 = alloca %struct.mbedtls_ctr_drbg_context, align 8
  %113 = alloca i64, align 8
  %114 = alloca i64, align 8
  %115 = alloca i64, align 8
  %116 = alloca i32, align 4
  %117 = alloca i64, align 8
  %118 = alloca i64, align 8
  %119 = alloca i64, align 8
  %120 = alloca i32, align 4
  %121 = alloca %struct.mbedtls_hmac_drbg_context, align 8
  %122 = alloca ptr, align 8
  %123 = alloca i64, align 8
  %124 = alloca i64, align 8
  %125 = alloca i64, align 8
  %126 = alloca i32, align 4
  %127 = alloca i64, align 8
  %128 = alloca i64, align 8
  %129 = alloca i64, align 8
  %130 = alloca i32, align 4
  %131 = alloca i64, align 8
  %132 = alloca i64, align 8
  %133 = alloca i64, align 8
  %134 = alloca i32, align 4
  %135 = alloca i64, align 8
  %136 = alloca i64, align 8
  %137 = alloca i64, align 8
  %138 = alloca i32, align 4
  %139 = alloca i32, align 4
  %140 = alloca %struct.mbedtls_rsa_context, align 8
  %141 = alloca i64, align 8
  %142 = alloca i32, align 4
  %143 = alloca i64, align 8
  %144 = alloca i32, align 4
  %145 = alloca [2 x i32], align 4
  %146 = alloca [2 x ptr], align 16
  %147 = alloca [2 x i64], align 16
  %148 = alloca [2 x ptr], align 16
  %149 = alloca [2 x i64], align 16
  %150 = alloca %struct.mbedtls_dhm_context, align 8
  %151 = alloca i64, align 8
  %152 = alloca i64, align 8
  %153 = alloca i32, align 4
  %154 = alloca i64, align 8
  %155 = alloca i32, align 4
  %156 = alloca %struct.mbedtls_ecp_keypair, align 8
  %157 = alloca ptr, align 8
  %158 = alloca i64, align 8
  %159 = alloca i64, align 8
  %160 = alloca i32, align 4
  %161 = alloca i64, align 8
  %162 = alloca i32, align 4
  %163 = alloca %struct.mbedtls_ecdh_context, align 8
  %164 = alloca %struct.mbedtls_mpi, align 8
  %165 = alloca [3 x %struct.mbedtls_ecp_curve_info], align 16
  %166 = alloca ptr, align 8
  %167 = alloca i64, align 8
  %168 = alloca i32, align 4
  %169 = alloca i32, align 4
  %170 = alloca i32, align 4
  %171 = alloca i32, align 4
  %172 = alloca i64, align 8
  %173 = alloca i32, align 4
  %174 = alloca i32, align 4
  %175 = alloca i32, align 4
  %176 = alloca i32, align 4
  %177 = alloca i32, align 4
  %178 = alloca i64, align 8
  %179 = alloca i32, align 4
  %180 = alloca i32, align 4
  %181 = alloca i32, align 4
  %182 = alloca i32, align 4
  %183 = alloca i32, align 4
  %184 = alloca i32, align 4
  %185 = alloca i32, align 4
  %186 = alloca i64, align 8
  %187 = alloca i32, align 4
  %188 = alloca i32, align 4
  %189 = alloca i32, align 4
  %190 = alloca i32, align 4
  %191 = alloca i32, align 4
  %192 = alloca i64, align 8
  %193 = alloca i32, align 4
  %194 = alloca i32, align 4
  %195 = alloca %struct.mbedtls_ecdh_context, align 8
  %196 = alloca %struct.mbedtls_ecdh_context, align 8
  %197 = alloca [1024 x i8], align 16
  %198 = alloca [1024 x i8], align 16
  %199 = alloca ptr, align 8
  %200 = alloca ptr, align 8
  %201 = alloca i64, align 8
  %202 = alloca i64, align 8
  %203 = alloca i32, align 4
  %204 = alloca ptr, align 8
  %205 = alloca i32, align 4
  %206 = alloca i32, align 4
  %207 = alloca i32, align 4
  %208 = alloca i32, align 4
  %209 = alloca i32, align 4
  %210 = alloca i32, align 4
  %211 = alloca i32, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #8
  call void @llvm.lifetime.start.p0(i64 200, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 25, ptr %8) #8
  call void @llvm.lifetime.start.p0(i64 28, ptr %9) #8
  %212 = load i32, ptr %4, align 4, !tbaa !5
  %213 = icmp sle i32 %212, 1
  br i1 %213, label %214, label %215

214:                                              ; preds = %2
  call void @llvm.memset.p0.i64(ptr align 1 %9, i8 1, i64 28, i1 false)
  br label %540

215:                                              ; preds = %2
  call void @llvm.memset.p0.i64(ptr align 1 %9, i8 0, i64 28, i1 false)
  store i32 1, ptr %6, align 4, !tbaa !5
  br label %216

216:                                              ; preds = %536, %215
  %217 = load i32, ptr %6, align 4, !tbaa !5
  %218 = load i32, ptr %4, align 4, !tbaa !5
  %219 = icmp slt i32 %217, %218
  br i1 %219, label %220, label %539

220:                                              ; preds = %216
  %221 = load ptr, ptr %5, align 8, !tbaa !9
  %222 = load i32, ptr %6, align 4, !tbaa !5
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds ptr, ptr %221, i64 %223
  %225 = load ptr, ptr %224, align 8, !tbaa !9
  %226 = call i32 @strcmp(ptr noundef %225, ptr noundef @.str) #9
  %227 = icmp eq i32 %226, 0
  br i1 %227, label %228, label %230

228:                                              ; preds = %220
  %229 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 0
  store i8 1, ptr %229, align 1, !tbaa !11
  br label %535

230:                                              ; preds = %220
  %231 = load ptr, ptr %5, align 8, !tbaa !9
  %232 = load i32, ptr %6, align 4, !tbaa !5
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds ptr, ptr %231, i64 %233
  %235 = load ptr, ptr %234, align 8, !tbaa !9
  %236 = call i32 @strcmp(ptr noundef %235, ptr noundef @.str.1) #9
  %237 = icmp eq i32 %236, 0
  br i1 %237, label %238, label %240

238:                                              ; preds = %230
  %239 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 1
  store i8 1, ptr %239, align 1, !tbaa !13
  br label %534

240:                                              ; preds = %230
  %241 = load ptr, ptr %5, align 8, !tbaa !9
  %242 = load i32, ptr %6, align 4, !tbaa !5
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds ptr, ptr %241, i64 %243
  %245 = load ptr, ptr %244, align 8, !tbaa !9
  %246 = call i32 @strcmp(ptr noundef %245, ptr noundef @.str.2) #9
  %247 = icmp eq i32 %246, 0
  br i1 %247, label %248, label %250

248:                                              ; preds = %240
  %249 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 2
  store i8 1, ptr %249, align 1, !tbaa !14
  br label %533

250:                                              ; preds = %240
  %251 = load ptr, ptr %5, align 8, !tbaa !9
  %252 = load i32, ptr %6, align 4, !tbaa !5
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds ptr, ptr %251, i64 %253
  %255 = load ptr, ptr %254, align 8, !tbaa !9
  %256 = call i32 @strcmp(ptr noundef %255, ptr noundef @.str.3) #9
  %257 = icmp eq i32 %256, 0
  br i1 %257, label %258, label %260

258:                                              ; preds = %250
  %259 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 3
  store i8 1, ptr %259, align 1, !tbaa !15
  br label %532

260:                                              ; preds = %250
  %261 = load ptr, ptr %5, align 8, !tbaa !9
  %262 = load i32, ptr %6, align 4, !tbaa !5
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds ptr, ptr %261, i64 %263
  %265 = load ptr, ptr %264, align 8, !tbaa !9
  %266 = call i32 @strcmp(ptr noundef %265, ptr noundef @.str.4) #9
  %267 = icmp eq i32 %266, 0
  br i1 %267, label %268, label %270

268:                                              ; preds = %260
  %269 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 4
  store i8 1, ptr %269, align 1, !tbaa !16
  br label %531

270:                                              ; preds = %260
  %271 = load ptr, ptr %5, align 8, !tbaa !9
  %272 = load i32, ptr %6, align 4, !tbaa !5
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds ptr, ptr %271, i64 %273
  %275 = load ptr, ptr %274, align 8, !tbaa !9
  %276 = call i32 @strcmp(ptr noundef %275, ptr noundef @.str.5) #9
  %277 = icmp eq i32 %276, 0
  br i1 %277, label %278, label %280

278:                                              ; preds = %270
  %279 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 5
  store i8 1, ptr %279, align 1, !tbaa !17
  br label %530

280:                                              ; preds = %270
  %281 = load ptr, ptr %5, align 8, !tbaa !9
  %282 = load i32, ptr %6, align 4, !tbaa !5
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds ptr, ptr %281, i64 %283
  %285 = load ptr, ptr %284, align 8, !tbaa !9
  %286 = call i32 @strcmp(ptr noundef %285, ptr noundef @.str.6) #9
  %287 = icmp eq i32 %286, 0
  br i1 %287, label %288, label %290

288:                                              ; preds = %280
  %289 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 6
  store i8 1, ptr %289, align 1, !tbaa !18
  br label %529

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

298:                                              ; preds = %290
  %299 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 7
  store i8 1, ptr %299, align 1, !tbaa !19
  br label %528

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

308:                                              ; preds = %300
  %309 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 8
  store i8 1, ptr %309, align 1, !tbaa !20
  br label %527

310:                                              ; preds = %300
  %311 = load ptr, ptr %5, align 8, !tbaa !9
  %312 = load i32, ptr %6, align 4, !tbaa !5
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds ptr, ptr %311, i64 %313
  %315 = load ptr, ptr %314, align 8, !tbaa !9
  %316 = call i32 @strcmp(ptr noundef %315, ptr noundef @.str.9) #9
  %317 = icmp eq i32 %316, 0
  br i1 %317, label %318, label %320

318:                                              ; preds = %310
  %319 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 9
  store i8 1, ptr %319, align 1, !tbaa !21
  br label %526

320:                                              ; preds = %310
  %321 = load ptr, ptr %5, align 8, !tbaa !9
  %322 = load i32, ptr %6, align 4, !tbaa !5
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds ptr, ptr %321, i64 %323
  %325 = load ptr, ptr %324, align 8, !tbaa !9
  %326 = call i32 @strcmp(ptr noundef %325, ptr noundef @.str.10) #9
  %327 = icmp eq i32 %326, 0
  br i1 %327, label %328, label %330

328:                                              ; preds = %320
  %329 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 12
  store i8 1, ptr %329, align 1, !tbaa !22
  br label %525

330:                                              ; preds = %320
  %331 = load ptr, ptr %5, align 8, !tbaa !9
  %332 = load i32, ptr %6, align 4, !tbaa !5
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds ptr, ptr %331, i64 %333
  %335 = load ptr, ptr %334, align 8, !tbaa !9
  %336 = call i32 @strcmp(ptr noundef %335, ptr noundef @.str.11) #9
  %337 = icmp eq i32 %336, 0
  br i1 %337, label %338, label %340

338:                                              ; preds = %330
  %339 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 10
  store i8 1, ptr %339, align 1, !tbaa !23
  br label %524

340:                                              ; preds = %330
  %341 = load ptr, ptr %5, align 8, !tbaa !9
  %342 = load i32, ptr %6, align 4, !tbaa !5
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds ptr, ptr %341, i64 %343
  %345 = load ptr, ptr %344, align 8, !tbaa !9
  %346 = call i32 @strcmp(ptr noundef %345, ptr noundef @.str.12) #9
  %347 = icmp eq i32 %346, 0
  br i1 %347, label %348, label %350

348:                                              ; preds = %340
  %349 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 11
  store i8 1, ptr %349, align 1, !tbaa !24
  br label %523

350:                                              ; preds = %340
  %351 = load ptr, ptr %5, align 8, !tbaa !9
  %352 = load i32, ptr %6, align 4, !tbaa !5
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds ptr, ptr %351, i64 %353
  %355 = load ptr, ptr %354, align 8, !tbaa !9
  %356 = call i32 @strcmp(ptr noundef %355, ptr noundef @.str.13) #9
  %357 = icmp eq i32 %356, 0
  br i1 %357, label %358, label %360

358:                                              ; preds = %350
  %359 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 13
  store i8 1, ptr %359, align 1, !tbaa !25
  br label %522

360:                                              ; preds = %350
  %361 = load ptr, ptr %5, align 8, !tbaa !9
  %362 = load i32, ptr %6, align 4, !tbaa !5
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds ptr, ptr %361, i64 %363
  %365 = load ptr, ptr %364, align 8, !tbaa !9
  %366 = call i32 @strcmp(ptr noundef %365, ptr noundef @.str.14) #9
  %367 = icmp eq i32 %366, 0
  br i1 %367, label %368, label %370

368:                                              ; preds = %360
  %369 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 14
  store i8 1, ptr %369, align 1, !tbaa !26
  br label %521

370:                                              ; preds = %360
  %371 = load ptr, ptr %5, align 8, !tbaa !9
  %372 = load i32, ptr %6, align 4, !tbaa !5
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds ptr, ptr %371, i64 %373
  %375 = load ptr, ptr %374, align 8, !tbaa !9
  %376 = call i32 @strcmp(ptr noundef %375, ptr noundef @.str.15) #9
  %377 = icmp eq i32 %376, 0
  br i1 %377, label %378, label %380

378:                                              ; preds = %370
  %379 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 15
  store i8 1, ptr %379, align 1, !tbaa !27
  br label %520

380:                                              ; preds = %370
  %381 = load ptr, ptr %5, align 8, !tbaa !9
  %382 = load i32, ptr %6, align 4, !tbaa !5
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds ptr, ptr %381, i64 %383
  %385 = load ptr, ptr %384, align 8, !tbaa !9
  %386 = call i32 @strcmp(ptr noundef %385, ptr noundef @.str.16) #9
  %387 = icmp eq i32 %386, 0
  br i1 %387, label %388, label %390

388:                                              ; preds = %380
  %389 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 16
  store i8 1, ptr %389, align 1, !tbaa !28
  br label %519

390:                                              ; preds = %380
  %391 = load ptr, ptr %5, align 8, !tbaa !9
  %392 = load i32, ptr %6, align 4, !tbaa !5
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds ptr, ptr %391, i64 %393
  %395 = load ptr, ptr %394, align 8, !tbaa !9
  %396 = call i32 @strcmp(ptr noundef %395, ptr noundef @.str.17) #9
  %397 = icmp eq i32 %396, 0
  br i1 %397, label %398, label %400

398:                                              ; preds = %390
  %399 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 17
  store i8 1, ptr %399, align 1, !tbaa !29
  br label %518

400:                                              ; preds = %390
  %401 = load ptr, ptr %5, align 8, !tbaa !9
  %402 = load i32, ptr %6, align 4, !tbaa !5
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds ptr, ptr %401, i64 %403
  %405 = load ptr, ptr %404, align 8, !tbaa !9
  %406 = call i32 @strcmp(ptr noundef %405, ptr noundef @.str.18) #9
  %407 = icmp eq i32 %406, 0
  br i1 %407, label %408, label %410

408:                                              ; preds = %400
  %409 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 18
  store i8 1, ptr %409, align 1, !tbaa !30
  br label %517

410:                                              ; preds = %400
  %411 = load ptr, ptr %5, align 8, !tbaa !9
  %412 = load i32, ptr %6, align 4, !tbaa !5
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds ptr, ptr %411, i64 %413
  %415 = load ptr, ptr %414, align 8, !tbaa !9
  %416 = call i32 @strcmp(ptr noundef %415, ptr noundef @.str.19) #9
  %417 = icmp eq i32 %416, 0
  br i1 %417, label %418, label %420

418:                                              ; preds = %410
  %419 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 19
  store i8 1, ptr %419, align 1, !tbaa !31
  br label %516

420:                                              ; preds = %410
  %421 = load ptr, ptr %5, align 8, !tbaa !9
  %422 = load i32, ptr %6, align 4, !tbaa !5
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds ptr, ptr %421, i64 %423
  %425 = load ptr, ptr %424, align 8, !tbaa !9
  %426 = call i32 @strcmp(ptr noundef %425, ptr noundef @.str.20) #9
  %427 = icmp eq i32 %426, 0
  br i1 %427, label %428, label %430

428:                                              ; preds = %420
  %429 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 20
  store i8 1, ptr %429, align 1, !tbaa !32
  br label %515

430:                                              ; preds = %420
  %431 = load ptr, ptr %5, align 8, !tbaa !9
  %432 = load i32, ptr %6, align 4, !tbaa !5
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds ptr, ptr %431, i64 %433
  %435 = load ptr, ptr %434, align 8, !tbaa !9
  %436 = call i32 @strcmp(ptr noundef %435, ptr noundef @.str.21) #9
  %437 = icmp eq i32 %436, 0
  br i1 %437, label %438, label %440

438:                                              ; preds = %430
  %439 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 21
  store i8 1, ptr %439, align 1, !tbaa !33
  br label %514

440:                                              ; preds = %430
  %441 = load ptr, ptr %5, align 8, !tbaa !9
  %442 = load i32, ptr %6, align 4, !tbaa !5
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds ptr, ptr %441, i64 %443
  %445 = load ptr, ptr %444, align 8, !tbaa !9
  %446 = call i32 @strcmp(ptr noundef %445, ptr noundef @.str.22) #9
  %447 = icmp eq i32 %446, 0
  br i1 %447, label %448, label %450

448:                                              ; preds = %440
  %449 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 22
  store i8 1, ptr %449, align 1, !tbaa !34
  br label %513

450:                                              ; preds = %440
  %451 = load ptr, ptr %5, align 8, !tbaa !9
  %452 = load i32, ptr %6, align 4, !tbaa !5
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds ptr, ptr %451, i64 %453
  %455 = load ptr, ptr %454, align 8, !tbaa !9
  %456 = call i32 @strcmp(ptr noundef %455, ptr noundef @.str.23) #9
  %457 = icmp eq i32 %456, 0
  br i1 %457, label %458, label %460

458:                                              ; preds = %450
  %459 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 23
  store i8 1, ptr %459, align 1, !tbaa !35
  br label %512

460:                                              ; preds = %450
  %461 = load ptr, ptr %5, align 8, !tbaa !9
  %462 = load i32, ptr %6, align 4, !tbaa !5
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds ptr, ptr %461, i64 %463
  %465 = load ptr, ptr %464, align 8, !tbaa !9
  %466 = call i32 @strcmp(ptr noundef %465, ptr noundef @.str.24) #9
  %467 = icmp eq i32 %466, 0
  br i1 %467, label %468, label %470

468:                                              ; preds = %460
  %469 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 24
  store i8 1, ptr %469, align 1, !tbaa !36
  br label %511

470:                                              ; preds = %460
  %471 = load ptr, ptr %5, align 8, !tbaa !9
  %472 = load i32, ptr %6, align 4, !tbaa !5
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds ptr, ptr %471, i64 %473
  %475 = load ptr, ptr %474, align 8, !tbaa !9
  %476 = call i32 @strcmp(ptr noundef %475, ptr noundef @.str.25) #9
  %477 = icmp eq i32 %476, 0
  br i1 %477, label %478, label %480

478:                                              ; preds = %470
  %479 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 25
  store i8 1, ptr %479, align 1, !tbaa !37
  br label %510

480:                                              ; preds = %470
  %481 = load ptr, ptr %5, align 8, !tbaa !9
  %482 = load i32, ptr %6, align 4, !tbaa !5
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds ptr, ptr %481, i64 %483
  %485 = load ptr, ptr %484, align 8, !tbaa !9
  %486 = call i32 @strcmp(ptr noundef %485, ptr noundef @.str.26) #9
  %487 = icmp eq i32 %486, 0
  br i1 %487, label %488, label %490

488:                                              ; preds = %480
  %489 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 26
  store i8 1, ptr %489, align 1, !tbaa !38
  br label %509

490:                                              ; preds = %480
  %491 = load ptr, ptr %5, align 8, !tbaa !9
  %492 = load i32, ptr %6, align 4, !tbaa !5
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds ptr, ptr %491, i64 %493
  %495 = load ptr, ptr %494, align 8, !tbaa !9
  %496 = call i32 @strcmp(ptr noundef %495, ptr noundef @.str.27) #9
  %497 = icmp eq i32 %496, 0
  br i1 %497, label %498, label %500

498:                                              ; preds = %490
  %499 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 27
  store i8 1, ptr %499, align 1, !tbaa !39
  br label %508

500:                                              ; preds = %490
  %501 = load ptr, ptr %5, align 8, !tbaa !9
  %502 = load i32, ptr %6, align 4, !tbaa !5
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds ptr, ptr %501, i64 %503
  %505 = load ptr, ptr %504, align 8, !tbaa !9
  %506 = call i32 (ptr, ...) @printf(ptr noundef @.str.28, ptr noundef %505)
  %507 = call i32 (ptr, ...) @printf(ptr noundef @.str.29)
  br label %508

508:                                              ; preds = %500, %498
  br label %509

509:                                              ; preds = %508, %488
  br label %510

510:                                              ; preds = %509, %478
  br label %511

511:                                              ; preds = %510, %468
  br label %512

512:                                              ; preds = %511, %458
  br label %513

513:                                              ; preds = %512, %448
  br label %514

514:                                              ; preds = %513, %438
  br label %515

515:                                              ; preds = %514, %428
  br label %516

516:                                              ; preds = %515, %418
  br label %517

517:                                              ; preds = %516, %408
  br label %518

518:                                              ; preds = %517, %398
  br label %519

519:                                              ; preds = %518, %388
  br label %520

520:                                              ; preds = %519, %378
  br label %521

521:                                              ; preds = %520, %368
  br label %522

522:                                              ; preds = %521, %358
  br label %523

523:                                              ; preds = %522, %348
  br label %524

524:                                              ; preds = %523, %338
  br label %525

525:                                              ; preds = %524, %328
  br label %526

526:                                              ; preds = %525, %318
  br label %527

527:                                              ; preds = %526, %308
  br label %528

528:                                              ; preds = %527, %298
  br label %529

529:                                              ; preds = %528, %288
  br label %530

530:                                              ; preds = %529, %278
  br label %531

531:                                              ; preds = %530, %268
  br label %532

532:                                              ; preds = %531, %258
  br label %533

533:                                              ; preds = %532, %248
  br label %534

534:                                              ; preds = %533, %238
  br label %535

535:                                              ; preds = %534, %228
  br label %536

536:                                              ; preds = %535
  %537 = load i32, ptr %6, align 4, !tbaa !5
  %538 = add nsw i32 %537, 1
  store i32 %538, ptr %6, align 4, !tbaa !5
  br label %216, !llvm.loop !40

539:                                              ; preds = %216
  br label %540

540:                                              ; preds = %539, %214
  %541 = call i32 (ptr, ...) @printf(ptr noundef @.str.30)
  call void @llvm.memset.p0.i64(ptr align 16 @buf, i8 -86, i64 1024, i1 false)
  %542 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %542, i8 -69, i64 200, i1 false)
  %543 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 1
  %544 = load i8, ptr %543, align 1, !tbaa !13
  %545 = icmp ne i8 %544, 0
  br i1 %545, label %546, label %604

546:                                              ; preds = %540
  br label %547

547:                                              ; preds = %546
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  store i32 0, ptr %13, align 4, !tbaa !5
  %548 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.32)
  %549 = load ptr, ptr @stdout, align 8, !tbaa !9
  %550 = call i32 @fflush(ptr noundef %549)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %10, align 8, !tbaa !42
  br label %551

551:                                              ; preds = %563, %547
  %552 = load i32, ptr %13, align 4, !tbaa !5
  %553 = icmp eq i32 %552, 0
  br i1 %553, label %554, label %558

554:                                              ; preds = %551
  %555 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %556 = icmp ne i32 %555, 0
  %557 = xor i1 %556, true
  br label %558

558:                                              ; preds = %554, %551
  %559 = phi i1 [ false, %551 ], [ %557, %554 ]
  br i1 %559, label %560, label %566

560:                                              ; preds = %558
  %561 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %562 = call i32 @mbedtls_md5_ret(ptr noundef @buf, i64 noundef 1024, ptr noundef %561)
  store i32 %562, ptr %13, align 4, !tbaa !5
  br label %563

563:                                              ; preds = %560
  %564 = load i64, ptr %10, align 8, !tbaa !42
  %565 = add i64 %564, 1
  store i64 %565, ptr %10, align 8, !tbaa !42
  br label %551, !llvm.loop !44

566:                                              ; preds = %558
  %567 = call i64 @mbedtls_timing_hardclock()
  store i64 %567, ptr %12, align 8, !tbaa !42
  store i64 0, ptr %11, align 8, !tbaa !42
  br label %568

568:                                              ; preds = %579, %566
  %569 = load i32, ptr %13, align 4, !tbaa !5
  %570 = icmp eq i32 %569, 0
  br i1 %570, label %571, label %574

571:                                              ; preds = %568
  %572 = load i64, ptr %11, align 8, !tbaa !42
  %573 = icmp ult i64 %572, 1024
  br label %574

574:                                              ; preds = %571, %568
  %575 = phi i1 [ false, %568 ], [ %573, %571 ]
  br i1 %575, label %576, label %582

576:                                              ; preds = %574
  %577 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %578 = call i32 @mbedtls_md5_ret(ptr noundef @buf, i64 noundef 1024, ptr noundef %577)
  store i32 %578, ptr %13, align 4, !tbaa !5
  br label %579

579:                                              ; preds = %576
  %580 = load i64, ptr %11, align 8, !tbaa !42
  %581 = add i64 %580, 1
  store i64 %581, ptr %11, align 8, !tbaa !42
  br label %568, !llvm.loop !45

582:                                              ; preds = %574
  %583 = load i32, ptr %13, align 4, !tbaa !5
  %584 = icmp ne i32 %583, 0
  br i1 %584, label %585, label %590

585:                                              ; preds = %582
  %586 = load i32, ptr %13, align 4, !tbaa !5
  %587 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %586, ptr noundef %587, i64 noundef 200)
  %588 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %589 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %588)
  br label %601

590:                                              ; preds = %582
  %591 = load i64, ptr %10, align 8, !tbaa !42
  %592 = mul i64 %591, 1024
  %593 = udiv i64 %592, 1024
  %594 = call i64 @mbedtls_timing_hardclock()
  %595 = load i64, ptr %12, align 8, !tbaa !42
  %596 = sub i64 %594, %595
  %597 = load i64, ptr %11, align 8, !tbaa !42
  %598 = mul i64 %597, 1024
  %599 = udiv i64 %596, %598
  %600 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %593, i64 noundef %599)
  br label %601

601:                                              ; preds = %590, %585
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %602

602:                                              ; preds = %601
  br label %603

603:                                              ; preds = %602
  br label %604

604:                                              ; preds = %603, %540
  %605 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 2
  %606 = load i8, ptr %605, align 1, !tbaa !14
  %607 = icmp ne i8 %606, 0
  br i1 %607, label %608, label %666

608:                                              ; preds = %604
  br label %609

609:                                              ; preds = %608
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  store i32 0, ptr %17, align 4, !tbaa !5
  %610 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.35)
  %611 = load ptr, ptr @stdout, align 8, !tbaa !9
  %612 = call i32 @fflush(ptr noundef %611)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %14, align 8, !tbaa !42
  br label %613

613:                                              ; preds = %625, %609
  %614 = load i32, ptr %17, align 4, !tbaa !5
  %615 = icmp eq i32 %614, 0
  br i1 %615, label %616, label %620

616:                                              ; preds = %613
  %617 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %618 = icmp ne i32 %617, 0
  %619 = xor i1 %618, true
  br label %620

620:                                              ; preds = %616, %613
  %621 = phi i1 [ false, %613 ], [ %619, %616 ]
  br i1 %621, label %622, label %628

622:                                              ; preds = %620
  %623 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %624 = call i32 @mbedtls_ripemd160_ret(ptr noundef @buf, i64 noundef 1024, ptr noundef %623)
  store i32 %624, ptr %17, align 4, !tbaa !5
  br label %625

625:                                              ; preds = %622
  %626 = load i64, ptr %14, align 8, !tbaa !42
  %627 = add i64 %626, 1
  store i64 %627, ptr %14, align 8, !tbaa !42
  br label %613, !llvm.loop !46

628:                                              ; preds = %620
  %629 = call i64 @mbedtls_timing_hardclock()
  store i64 %629, ptr %16, align 8, !tbaa !42
  store i64 0, ptr %15, align 8, !tbaa !42
  br label %630

630:                                              ; preds = %641, %628
  %631 = load i32, ptr %17, align 4, !tbaa !5
  %632 = icmp eq i32 %631, 0
  br i1 %632, label %633, label %636

633:                                              ; preds = %630
  %634 = load i64, ptr %15, align 8, !tbaa !42
  %635 = icmp ult i64 %634, 1024
  br label %636

636:                                              ; preds = %633, %630
  %637 = phi i1 [ false, %630 ], [ %635, %633 ]
  br i1 %637, label %638, label %644

638:                                              ; preds = %636
  %639 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %640 = call i32 @mbedtls_ripemd160_ret(ptr noundef @buf, i64 noundef 1024, ptr noundef %639)
  store i32 %640, ptr %17, align 4, !tbaa !5
  br label %641

641:                                              ; preds = %638
  %642 = load i64, ptr %15, align 8, !tbaa !42
  %643 = add i64 %642, 1
  store i64 %643, ptr %15, align 8, !tbaa !42
  br label %630, !llvm.loop !47

644:                                              ; preds = %636
  %645 = load i32, ptr %17, align 4, !tbaa !5
  %646 = icmp ne i32 %645, 0
  br i1 %646, label %647, label %652

647:                                              ; preds = %644
  %648 = load i32, ptr %17, align 4, !tbaa !5
  %649 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %648, ptr noundef %649, i64 noundef 200)
  %650 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %651 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %650)
  br label %663

652:                                              ; preds = %644
  %653 = load i64, ptr %14, align 8, !tbaa !42
  %654 = mul i64 %653, 1024
  %655 = udiv i64 %654, 1024
  %656 = call i64 @mbedtls_timing_hardclock()
  %657 = load i64, ptr %16, align 8, !tbaa !42
  %658 = sub i64 %656, %657
  %659 = load i64, ptr %15, align 8, !tbaa !42
  %660 = mul i64 %659, 1024
  %661 = udiv i64 %658, %660
  %662 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %655, i64 noundef %661)
  br label %663

663:                                              ; preds = %652, %647
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  br label %664

664:                                              ; preds = %663
  br label %665

665:                                              ; preds = %664
  br label %666

666:                                              ; preds = %665, %604
  %667 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 3
  %668 = load i8, ptr %667, align 1, !tbaa !15
  %669 = icmp ne i8 %668, 0
  br i1 %669, label %670, label %728

670:                                              ; preds = %666
  br label %671

671:                                              ; preds = %670
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  store i32 0, ptr %21, align 4, !tbaa !5
  %672 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.36)
  %673 = load ptr, ptr @stdout, align 8, !tbaa !9
  %674 = call i32 @fflush(ptr noundef %673)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %18, align 8, !tbaa !42
  br label %675

675:                                              ; preds = %687, %671
  %676 = load i32, ptr %21, align 4, !tbaa !5
  %677 = icmp eq i32 %676, 0
  br i1 %677, label %678, label %682

678:                                              ; preds = %675
  %679 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %680 = icmp ne i32 %679, 0
  %681 = xor i1 %680, true
  br label %682

682:                                              ; preds = %678, %675
  %683 = phi i1 [ false, %675 ], [ %681, %678 ]
  br i1 %683, label %684, label %690

684:                                              ; preds = %682
  %685 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %686 = call i32 @mbedtls_sha1_ret(ptr noundef @buf, i64 noundef 1024, ptr noundef %685)
  store i32 %686, ptr %21, align 4, !tbaa !5
  br label %687

687:                                              ; preds = %684
  %688 = load i64, ptr %18, align 8, !tbaa !42
  %689 = add i64 %688, 1
  store i64 %689, ptr %18, align 8, !tbaa !42
  br label %675, !llvm.loop !48

690:                                              ; preds = %682
  %691 = call i64 @mbedtls_timing_hardclock()
  store i64 %691, ptr %20, align 8, !tbaa !42
  store i64 0, ptr %19, align 8, !tbaa !42
  br label %692

692:                                              ; preds = %703, %690
  %693 = load i32, ptr %21, align 4, !tbaa !5
  %694 = icmp eq i32 %693, 0
  br i1 %694, label %695, label %698

695:                                              ; preds = %692
  %696 = load i64, ptr %19, align 8, !tbaa !42
  %697 = icmp ult i64 %696, 1024
  br label %698

698:                                              ; preds = %695, %692
  %699 = phi i1 [ false, %692 ], [ %697, %695 ]
  br i1 %699, label %700, label %706

700:                                              ; preds = %698
  %701 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %702 = call i32 @mbedtls_sha1_ret(ptr noundef @buf, i64 noundef 1024, ptr noundef %701)
  store i32 %702, ptr %21, align 4, !tbaa !5
  br label %703

703:                                              ; preds = %700
  %704 = load i64, ptr %19, align 8, !tbaa !42
  %705 = add i64 %704, 1
  store i64 %705, ptr %19, align 8, !tbaa !42
  br label %692, !llvm.loop !49

706:                                              ; preds = %698
  %707 = load i32, ptr %21, align 4, !tbaa !5
  %708 = icmp ne i32 %707, 0
  br i1 %708, label %709, label %714

709:                                              ; preds = %706
  %710 = load i32, ptr %21, align 4, !tbaa !5
  %711 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %710, ptr noundef %711, i64 noundef 200)
  %712 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %713 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %712)
  br label %725

714:                                              ; preds = %706
  %715 = load i64, ptr %18, align 8, !tbaa !42
  %716 = mul i64 %715, 1024
  %717 = udiv i64 %716, 1024
  %718 = call i64 @mbedtls_timing_hardclock()
  %719 = load i64, ptr %20, align 8, !tbaa !42
  %720 = sub i64 %718, %719
  %721 = load i64, ptr %19, align 8, !tbaa !42
  %722 = mul i64 %721, 1024
  %723 = udiv i64 %720, %722
  %724 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %717, i64 noundef %723)
  br label %725

725:                                              ; preds = %714, %709
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %726

726:                                              ; preds = %725
  br label %727

727:                                              ; preds = %726
  br label %728

728:                                              ; preds = %727, %666
  %729 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 4
  %730 = load i8, ptr %729, align 1, !tbaa !16
  %731 = icmp ne i8 %730, 0
  br i1 %731, label %732, label %790

732:                                              ; preds = %728
  br label %733

733:                                              ; preds = %732
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  store i32 0, ptr %25, align 4, !tbaa !5
  %734 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.37)
  %735 = load ptr, ptr @stdout, align 8, !tbaa !9
  %736 = call i32 @fflush(ptr noundef %735)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %22, align 8, !tbaa !42
  br label %737

737:                                              ; preds = %749, %733
  %738 = load i32, ptr %25, align 4, !tbaa !5
  %739 = icmp eq i32 %738, 0
  br i1 %739, label %740, label %744

740:                                              ; preds = %737
  %741 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %742 = icmp ne i32 %741, 0
  %743 = xor i1 %742, true
  br label %744

744:                                              ; preds = %740, %737
  %745 = phi i1 [ false, %737 ], [ %743, %740 ]
  br i1 %745, label %746, label %752

746:                                              ; preds = %744
  %747 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %748 = call i32 @mbedtls_sha256_ret(ptr noundef @buf, i64 noundef 1024, ptr noundef %747, i32 noundef 0)
  store i32 %748, ptr %25, align 4, !tbaa !5
  br label %749

749:                                              ; preds = %746
  %750 = load i64, ptr %22, align 8, !tbaa !42
  %751 = add i64 %750, 1
  store i64 %751, ptr %22, align 8, !tbaa !42
  br label %737, !llvm.loop !50

752:                                              ; preds = %744
  %753 = call i64 @mbedtls_timing_hardclock()
  store i64 %753, ptr %24, align 8, !tbaa !42
  store i64 0, ptr %23, align 8, !tbaa !42
  br label %754

754:                                              ; preds = %765, %752
  %755 = load i32, ptr %25, align 4, !tbaa !5
  %756 = icmp eq i32 %755, 0
  br i1 %756, label %757, label %760

757:                                              ; preds = %754
  %758 = load i64, ptr %23, align 8, !tbaa !42
  %759 = icmp ult i64 %758, 1024
  br label %760

760:                                              ; preds = %757, %754
  %761 = phi i1 [ false, %754 ], [ %759, %757 ]
  br i1 %761, label %762, label %768

762:                                              ; preds = %760
  %763 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %764 = call i32 @mbedtls_sha256_ret(ptr noundef @buf, i64 noundef 1024, ptr noundef %763, i32 noundef 0)
  store i32 %764, ptr %25, align 4, !tbaa !5
  br label %765

765:                                              ; preds = %762
  %766 = load i64, ptr %23, align 8, !tbaa !42
  %767 = add i64 %766, 1
  store i64 %767, ptr %23, align 8, !tbaa !42
  br label %754, !llvm.loop !51

768:                                              ; preds = %760
  %769 = load i32, ptr %25, align 4, !tbaa !5
  %770 = icmp ne i32 %769, 0
  br i1 %770, label %771, label %776

771:                                              ; preds = %768
  %772 = load i32, ptr %25, align 4, !tbaa !5
  %773 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %772, ptr noundef %773, i64 noundef 200)
  %774 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %775 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %774)
  br label %787

776:                                              ; preds = %768
  %777 = load i64, ptr %22, align 8, !tbaa !42
  %778 = mul i64 %777, 1024
  %779 = udiv i64 %778, 1024
  %780 = call i64 @mbedtls_timing_hardclock()
  %781 = load i64, ptr %24, align 8, !tbaa !42
  %782 = sub i64 %780, %781
  %783 = load i64, ptr %23, align 8, !tbaa !42
  %784 = mul i64 %783, 1024
  %785 = udiv i64 %782, %784
  %786 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %779, i64 noundef %785)
  br label %787

787:                                              ; preds = %776, %771
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  br label %788

788:                                              ; preds = %787
  br label %789

789:                                              ; preds = %788
  br label %790

790:                                              ; preds = %789, %728
  %791 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 5
  %792 = load i8, ptr %791, align 1, !tbaa !17
  %793 = icmp ne i8 %792, 0
  br i1 %793, label %794, label %852

794:                                              ; preds = %790
  br label %795

795:                                              ; preds = %794
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  store i32 0, ptr %29, align 4, !tbaa !5
  %796 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.38)
  %797 = load ptr, ptr @stdout, align 8, !tbaa !9
  %798 = call i32 @fflush(ptr noundef %797)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %26, align 8, !tbaa !42
  br label %799

799:                                              ; preds = %811, %795
  %800 = load i32, ptr %29, align 4, !tbaa !5
  %801 = icmp eq i32 %800, 0
  br i1 %801, label %802, label %806

802:                                              ; preds = %799
  %803 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %804 = icmp ne i32 %803, 0
  %805 = xor i1 %804, true
  br label %806

806:                                              ; preds = %802, %799
  %807 = phi i1 [ false, %799 ], [ %805, %802 ]
  br i1 %807, label %808, label %814

808:                                              ; preds = %806
  %809 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %810 = call i32 @mbedtls_sha512_ret(ptr noundef @buf, i64 noundef 1024, ptr noundef %809, i32 noundef 0)
  store i32 %810, ptr %29, align 4, !tbaa !5
  br label %811

811:                                              ; preds = %808
  %812 = load i64, ptr %26, align 8, !tbaa !42
  %813 = add i64 %812, 1
  store i64 %813, ptr %26, align 8, !tbaa !42
  br label %799, !llvm.loop !52

814:                                              ; preds = %806
  %815 = call i64 @mbedtls_timing_hardclock()
  store i64 %815, ptr %28, align 8, !tbaa !42
  store i64 0, ptr %27, align 8, !tbaa !42
  br label %816

816:                                              ; preds = %827, %814
  %817 = load i32, ptr %29, align 4, !tbaa !5
  %818 = icmp eq i32 %817, 0
  br i1 %818, label %819, label %822

819:                                              ; preds = %816
  %820 = load i64, ptr %27, align 8, !tbaa !42
  %821 = icmp ult i64 %820, 1024
  br label %822

822:                                              ; preds = %819, %816
  %823 = phi i1 [ false, %816 ], [ %821, %819 ]
  br i1 %823, label %824, label %830

824:                                              ; preds = %822
  %825 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %826 = call i32 @mbedtls_sha512_ret(ptr noundef @buf, i64 noundef 1024, ptr noundef %825, i32 noundef 0)
  store i32 %826, ptr %29, align 4, !tbaa !5
  br label %827

827:                                              ; preds = %824
  %828 = load i64, ptr %27, align 8, !tbaa !42
  %829 = add i64 %828, 1
  store i64 %829, ptr %27, align 8, !tbaa !42
  br label %816, !llvm.loop !53

830:                                              ; preds = %822
  %831 = load i32, ptr %29, align 4, !tbaa !5
  %832 = icmp ne i32 %831, 0
  br i1 %832, label %833, label %838

833:                                              ; preds = %830
  %834 = load i32, ptr %29, align 4, !tbaa !5
  %835 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %834, ptr noundef %835, i64 noundef 200)
  %836 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %837 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %836)
  br label %849

838:                                              ; preds = %830
  %839 = load i64, ptr %26, align 8, !tbaa !42
  %840 = mul i64 %839, 1024
  %841 = udiv i64 %840, 1024
  %842 = call i64 @mbedtls_timing_hardclock()
  %843 = load i64, ptr %28, align 8, !tbaa !42
  %844 = sub i64 %842, %843
  %845 = load i64, ptr %27, align 8, !tbaa !42
  %846 = mul i64 %845, 1024
  %847 = udiv i64 %844, %846
  %848 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %841, i64 noundef %847)
  br label %849

849:                                              ; preds = %838, %833
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %850

850:                                              ; preds = %849
  br label %851

851:                                              ; preds = %850
  br label %852

852:                                              ; preds = %851, %790
  %853 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 6
  %854 = load i8, ptr %853, align 1, !tbaa !18
  %855 = icmp ne i8 %854, 0
  br i1 %855, label %856, label %913

856:                                              ; preds = %852
  call void @llvm.lifetime.start.p0(i64 264, ptr %30) #8
  call void @mbedtls_arc4_init(ptr noundef %30)
  %857 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_arc4_setup(ptr noundef %30, ptr noundef %857, i32 noundef 32)
  br label %858

858:                                              ; preds = %856
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  store i32 0, ptr %34, align 4, !tbaa !5
  %859 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.39)
  %860 = load ptr, ptr @stdout, align 8, !tbaa !9
  %861 = call i32 @fflush(ptr noundef %860)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %31, align 8, !tbaa !42
  br label %862

862:                                              ; preds = %873, %858
  %863 = load i32, ptr %34, align 4, !tbaa !5
  %864 = icmp eq i32 %863, 0
  br i1 %864, label %865, label %869

865:                                              ; preds = %862
  %866 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %867 = icmp ne i32 %866, 0
  %868 = xor i1 %867, true
  br label %869

869:                                              ; preds = %865, %862
  %870 = phi i1 [ false, %862 ], [ %868, %865 ]
  br i1 %870, label %871, label %876

871:                                              ; preds = %869
  %872 = call i32 @mbedtls_arc4_crypt(ptr noundef %30, i64 noundef 1024, ptr noundef @buf, ptr noundef @buf)
  store i32 %872, ptr %34, align 4, !tbaa !5
  br label %873

873:                                              ; preds = %871
  %874 = load i64, ptr %31, align 8, !tbaa !42
  %875 = add i64 %874, 1
  store i64 %875, ptr %31, align 8, !tbaa !42
  br label %862, !llvm.loop !54

876:                                              ; preds = %869
  %877 = call i64 @mbedtls_timing_hardclock()
  store i64 %877, ptr %33, align 8, !tbaa !42
  store i64 0, ptr %32, align 8, !tbaa !42
  br label %878

878:                                              ; preds = %888, %876
  %879 = load i32, ptr %34, align 4, !tbaa !5
  %880 = icmp eq i32 %879, 0
  br i1 %880, label %881, label %884

881:                                              ; preds = %878
  %882 = load i64, ptr %32, align 8, !tbaa !42
  %883 = icmp ult i64 %882, 1024
  br label %884

884:                                              ; preds = %881, %878
  %885 = phi i1 [ false, %878 ], [ %883, %881 ]
  br i1 %885, label %886, label %891

886:                                              ; preds = %884
  %887 = call i32 @mbedtls_arc4_crypt(ptr noundef %30, i64 noundef 1024, ptr noundef @buf, ptr noundef @buf)
  store i32 %887, ptr %34, align 4, !tbaa !5
  br label %888

888:                                              ; preds = %886
  %889 = load i64, ptr %32, align 8, !tbaa !42
  %890 = add i64 %889, 1
  store i64 %890, ptr %32, align 8, !tbaa !42
  br label %878, !llvm.loop !55

891:                                              ; preds = %884
  %892 = load i32, ptr %34, align 4, !tbaa !5
  %893 = icmp ne i32 %892, 0
  br i1 %893, label %894, label %899

894:                                              ; preds = %891
  %895 = load i32, ptr %34, align 4, !tbaa !5
  %896 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %895, ptr noundef %896, i64 noundef 200)
  %897 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %898 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %897)
  br label %910

899:                                              ; preds = %891
  %900 = load i64, ptr %31, align 8, !tbaa !42
  %901 = mul i64 %900, 1024
  %902 = udiv i64 %901, 1024
  %903 = call i64 @mbedtls_timing_hardclock()
  %904 = load i64, ptr %33, align 8, !tbaa !42
  %905 = sub i64 %903, %904
  %906 = load i64, ptr %32, align 8, !tbaa !42
  %907 = mul i64 %906, 1024
  %908 = udiv i64 %905, %907
  %909 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %902, i64 noundef %908)
  br label %910

910:                                              ; preds = %899, %894
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  br label %911

911:                                              ; preds = %910
  br label %912

912:                                              ; preds = %911
  call void @mbedtls_arc4_free(ptr noundef %30)
  call void @llvm.lifetime.end.p0(i64 264, ptr %30) #8
  br label %913

913:                                              ; preds = %912, %852
  %914 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 7
  %915 = load i8, ptr %914, align 1, !tbaa !19
  %916 = icmp ne i8 %915, 0
  br i1 %916, label %917, label %977

917:                                              ; preds = %913
  call void @llvm.lifetime.start.p0(i64 384, ptr %35) #8
  call void @mbedtls_des3_init(ptr noundef %35)
  %918 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %919 = call i32 @mbedtls_des3_set3key_enc(ptr noundef %35, ptr noundef %918)
  br label %920

920:                                              ; preds = %917
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #8
  store i32 0, ptr %39, align 4, !tbaa !5
  %921 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.40)
  %922 = load ptr, ptr @stdout, align 8, !tbaa !9
  %923 = call i32 @fflush(ptr noundef %922)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %36, align 8, !tbaa !42
  br label %924

924:                                              ; preds = %936, %920
  %925 = load i32, ptr %39, align 4, !tbaa !5
  %926 = icmp eq i32 %925, 0
  br i1 %926, label %927, label %931

927:                                              ; preds = %924
  %928 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %929 = icmp ne i32 %928, 0
  %930 = xor i1 %929, true
  br label %931

931:                                              ; preds = %927, %924
  %932 = phi i1 [ false, %924 ], [ %930, %927 ]
  br i1 %932, label %933, label %939

933:                                              ; preds = %931
  %934 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %935 = call i32 @mbedtls_des3_crypt_cbc(ptr noundef %35, i32 noundef 1, i64 noundef 1024, ptr noundef %934, ptr noundef @buf, ptr noundef @buf)
  store i32 %935, ptr %39, align 4, !tbaa !5
  br label %936

936:                                              ; preds = %933
  %937 = load i64, ptr %36, align 8, !tbaa !42
  %938 = add i64 %937, 1
  store i64 %938, ptr %36, align 8, !tbaa !42
  br label %924, !llvm.loop !56

939:                                              ; preds = %931
  %940 = call i64 @mbedtls_timing_hardclock()
  store i64 %940, ptr %38, align 8, !tbaa !42
  store i64 0, ptr %37, align 8, !tbaa !42
  br label %941

941:                                              ; preds = %952, %939
  %942 = load i32, ptr %39, align 4, !tbaa !5
  %943 = icmp eq i32 %942, 0
  br i1 %943, label %944, label %947

944:                                              ; preds = %941
  %945 = load i64, ptr %37, align 8, !tbaa !42
  %946 = icmp ult i64 %945, 1024
  br label %947

947:                                              ; preds = %944, %941
  %948 = phi i1 [ false, %941 ], [ %946, %944 ]
  br i1 %948, label %949, label %955

949:                                              ; preds = %947
  %950 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %951 = call i32 @mbedtls_des3_crypt_cbc(ptr noundef %35, i32 noundef 1, i64 noundef 1024, ptr noundef %950, ptr noundef @buf, ptr noundef @buf)
  store i32 %951, ptr %39, align 4, !tbaa !5
  br label %952

952:                                              ; preds = %949
  %953 = load i64, ptr %37, align 8, !tbaa !42
  %954 = add i64 %953, 1
  store i64 %954, ptr %37, align 8, !tbaa !42
  br label %941, !llvm.loop !57

955:                                              ; preds = %947
  %956 = load i32, ptr %39, align 4, !tbaa !5
  %957 = icmp ne i32 %956, 0
  br i1 %957, label %958, label %963

958:                                              ; preds = %955
  %959 = load i32, ptr %39, align 4, !tbaa !5
  %960 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %959, ptr noundef %960, i64 noundef 200)
  %961 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %962 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %961)
  br label %974

963:                                              ; preds = %955
  %964 = load i64, ptr %36, align 8, !tbaa !42
  %965 = mul i64 %964, 1024
  %966 = udiv i64 %965, 1024
  %967 = call i64 @mbedtls_timing_hardclock()
  %968 = load i64, ptr %38, align 8, !tbaa !42
  %969 = sub i64 %967, %968
  %970 = load i64, ptr %37, align 8, !tbaa !42
  %971 = mul i64 %970, 1024
  %972 = udiv i64 %969, %971
  %973 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %966, i64 noundef %972)
  br label %974

974:                                              ; preds = %963, %958
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %975

975:                                              ; preds = %974
  br label %976

976:                                              ; preds = %975
  call void @mbedtls_des3_free(ptr noundef %35)
  call void @llvm.lifetime.end.p0(i64 384, ptr %35) #8
  br label %977

977:                                              ; preds = %976, %913
  %978 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 8
  %979 = load i8, ptr %978, align 1, !tbaa !20
  %980 = icmp ne i8 %979, 0
  br i1 %980, label %981, label %1041

981:                                              ; preds = %977
  call void @llvm.lifetime.start.p0(i64 128, ptr %40) #8
  call void @mbedtls_des_init(ptr noundef %40)
  %982 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %983 = call i32 @mbedtls_des_setkey_enc(ptr noundef %40, ptr noundef %982)
  br label %984

984:                                              ; preds = %981
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  store i32 0, ptr %44, align 4, !tbaa !5
  %985 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.41)
  %986 = load ptr, ptr @stdout, align 8, !tbaa !9
  %987 = call i32 @fflush(ptr noundef %986)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %41, align 8, !tbaa !42
  br label %988

988:                                              ; preds = %1000, %984
  %989 = load i32, ptr %44, align 4, !tbaa !5
  %990 = icmp eq i32 %989, 0
  br i1 %990, label %991, label %995

991:                                              ; preds = %988
  %992 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %993 = icmp ne i32 %992, 0
  %994 = xor i1 %993, true
  br label %995

995:                                              ; preds = %991, %988
  %996 = phi i1 [ false, %988 ], [ %994, %991 ]
  br i1 %996, label %997, label %1003

997:                                              ; preds = %995
  %998 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %999 = call i32 @mbedtls_des_crypt_cbc(ptr noundef %40, i32 noundef 1, i64 noundef 1024, ptr noundef %998, ptr noundef @buf, ptr noundef @buf)
  store i32 %999, ptr %44, align 4, !tbaa !5
  br label %1000

1000:                                             ; preds = %997
  %1001 = load i64, ptr %41, align 8, !tbaa !42
  %1002 = add i64 %1001, 1
  store i64 %1002, ptr %41, align 8, !tbaa !42
  br label %988, !llvm.loop !58

1003:                                             ; preds = %995
  %1004 = call i64 @mbedtls_timing_hardclock()
  store i64 %1004, ptr %43, align 8, !tbaa !42
  store i64 0, ptr %42, align 8, !tbaa !42
  br label %1005

1005:                                             ; preds = %1016, %1003
  %1006 = load i32, ptr %44, align 4, !tbaa !5
  %1007 = icmp eq i32 %1006, 0
  br i1 %1007, label %1008, label %1011

1008:                                             ; preds = %1005
  %1009 = load i64, ptr %42, align 8, !tbaa !42
  %1010 = icmp ult i64 %1009, 1024
  br label %1011

1011:                                             ; preds = %1008, %1005
  %1012 = phi i1 [ false, %1005 ], [ %1010, %1008 ]
  br i1 %1012, label %1013, label %1019

1013:                                             ; preds = %1011
  %1014 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1015 = call i32 @mbedtls_des_crypt_cbc(ptr noundef %40, i32 noundef 1, i64 noundef 1024, ptr noundef %1014, ptr noundef @buf, ptr noundef @buf)
  store i32 %1015, ptr %44, align 4, !tbaa !5
  br label %1016

1016:                                             ; preds = %1013
  %1017 = load i64, ptr %42, align 8, !tbaa !42
  %1018 = add i64 %1017, 1
  store i64 %1018, ptr %42, align 8, !tbaa !42
  br label %1005, !llvm.loop !59

1019:                                             ; preds = %1011
  %1020 = load i32, ptr %44, align 4, !tbaa !5
  %1021 = icmp ne i32 %1020, 0
  br i1 %1021, label %1022, label %1027

1022:                                             ; preds = %1019
  %1023 = load i32, ptr %44, align 4, !tbaa !5
  %1024 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %1023, ptr noundef %1024, i64 noundef 200)
  %1025 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1026 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %1025)
  br label %1038

1027:                                             ; preds = %1019
  %1028 = load i64, ptr %41, align 8, !tbaa !42
  %1029 = mul i64 %1028, 1024
  %1030 = udiv i64 %1029, 1024
  %1031 = call i64 @mbedtls_timing_hardclock()
  %1032 = load i64, ptr %43, align 8, !tbaa !42
  %1033 = sub i64 %1031, %1032
  %1034 = load i64, ptr %42, align 8, !tbaa !42
  %1035 = mul i64 %1034, 1024
  %1036 = udiv i64 %1033, %1035
  %1037 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %1030, i64 noundef %1036)
  br label %1038

1038:                                             ; preds = %1027, %1022
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  br label %1039

1039:                                             ; preds = %1038
  br label %1040

1040:                                             ; preds = %1039
  call void @mbedtls_des_free(ptr noundef %40)
  call void @llvm.lifetime.end.p0(i64 128, ptr %40) #8
  br label %1041

1041:                                             ; preds = %1040, %977
  %1042 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 15
  %1043 = load i8, ptr %1042, align 1, !tbaa !27
  %1044 = icmp ne i8 %1043, 0
  br i1 %1044, label %1045, label %1109

1045:                                             ; preds = %1041
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  call void @llvm.memset.p0.i64(ptr align 16 @buf, i8 0, i64 1024, i1 false)
  %1046 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %1046, i8 0, i64 200, i1 false)
  %1047 = call ptr @mbedtls_cipher_info_from_type(i32 noundef 36)
  store ptr %1047, ptr %46, align 8, !tbaa !9
  br label %1048

1048:                                             ; preds = %1045
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #8
  store i32 0, ptr %50, align 4, !tbaa !5
  %1049 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.42)
  %1050 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1051 = call i32 @fflush(ptr noundef %1050)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %47, align 8, !tbaa !42
  br label %1052

1052:                                             ; preds = %1066, %1048
  %1053 = load i32, ptr %50, align 4, !tbaa !5
  %1054 = icmp eq i32 %1053, 0
  br i1 %1054, label %1055, label %1059

1055:                                             ; preds = %1052
  %1056 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %1057 = icmp ne i32 %1056, 0
  %1058 = xor i1 %1057, true
  br label %1059

1059:                                             ; preds = %1055, %1052
  %1060 = phi i1 [ false, %1052 ], [ %1058, %1055 ]
  br i1 %1060, label %1061, label %1069

1061:                                             ; preds = %1059
  %1062 = load ptr, ptr %46, align 8, !tbaa !9
  %1063 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1064 = getelementptr inbounds [8 x i8], ptr %45, i64 0, i64 0
  %1065 = call i32 @mbedtls_cipher_cmac(ptr noundef %1062, ptr noundef %1063, i64 noundef 192, ptr noundef @buf, i64 noundef 1024, ptr noundef %1064)
  store i32 %1065, ptr %50, align 4, !tbaa !5
  br label %1066

1066:                                             ; preds = %1061
  %1067 = load i64, ptr %47, align 8, !tbaa !42
  %1068 = add i64 %1067, 1
  store i64 %1068, ptr %47, align 8, !tbaa !42
  br label %1052, !llvm.loop !60

1069:                                             ; preds = %1059
  %1070 = call i64 @mbedtls_timing_hardclock()
  store i64 %1070, ptr %49, align 8, !tbaa !42
  store i64 0, ptr %48, align 8, !tbaa !42
  br label %1071

1071:                                             ; preds = %1084, %1069
  %1072 = load i32, ptr %50, align 4, !tbaa !5
  %1073 = icmp eq i32 %1072, 0
  br i1 %1073, label %1074, label %1077

1074:                                             ; preds = %1071
  %1075 = load i64, ptr %48, align 8, !tbaa !42
  %1076 = icmp ult i64 %1075, 1024
  br label %1077

1077:                                             ; preds = %1074, %1071
  %1078 = phi i1 [ false, %1071 ], [ %1076, %1074 ]
  br i1 %1078, label %1079, label %1087

1079:                                             ; preds = %1077
  %1080 = load ptr, ptr %46, align 8, !tbaa !9
  %1081 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1082 = getelementptr inbounds [8 x i8], ptr %45, i64 0, i64 0
  %1083 = call i32 @mbedtls_cipher_cmac(ptr noundef %1080, ptr noundef %1081, i64 noundef 192, ptr noundef @buf, i64 noundef 1024, ptr noundef %1082)
  store i32 %1083, ptr %50, align 4, !tbaa !5
  br label %1084

1084:                                             ; preds = %1079
  %1085 = load i64, ptr %48, align 8, !tbaa !42
  %1086 = add i64 %1085, 1
  store i64 %1086, ptr %48, align 8, !tbaa !42
  br label %1071, !llvm.loop !61

1087:                                             ; preds = %1077
  %1088 = load i32, ptr %50, align 4, !tbaa !5
  %1089 = icmp ne i32 %1088, 0
  br i1 %1089, label %1090, label %1095

1090:                                             ; preds = %1087
  %1091 = load i32, ptr %50, align 4, !tbaa !5
  %1092 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %1091, ptr noundef %1092, i64 noundef 200)
  %1093 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1094 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %1093)
  br label %1106

1095:                                             ; preds = %1087
  %1096 = load i64, ptr %47, align 8, !tbaa !42
  %1097 = mul i64 %1096, 1024
  %1098 = udiv i64 %1097, 1024
  %1099 = call i64 @mbedtls_timing_hardclock()
  %1100 = load i64, ptr %49, align 8, !tbaa !42
  %1101 = sub i64 %1099, %1100
  %1102 = load i64, ptr %48, align 8, !tbaa !42
  %1103 = mul i64 %1102, 1024
  %1104 = udiv i64 %1101, %1103
  %1105 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %1098, i64 noundef %1104)
  br label %1106

1106:                                             ; preds = %1095, %1090
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  br label %1107

1107:                                             ; preds = %1106
  br label %1108

1108:                                             ; preds = %1107
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  br label %1109

1109:                                             ; preds = %1108, %1041
  %1110 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 9
  %1111 = load i8, ptr %1110, align 1, !tbaa !21
  %1112 = icmp ne i8 %1111, 0
  br i1 %1112, label %1113, label %1187

1113:                                             ; preds = %1109
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #8
  call void @llvm.lifetime.start.p0(i64 288, ptr %52) #8
  call void @mbedtls_aes_init(ptr noundef %52)
  store i32 128, ptr %51, align 4, !tbaa !5
  br label %1114

1114:                                             ; preds = %1183, %1113
  %1115 = load i32, ptr %51, align 4, !tbaa !5
  %1116 = icmp sle i32 %1115, 256
  br i1 %1116, label %1117, label %1186

1117:                                             ; preds = %1114
  %1118 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %1119 = load i32, ptr %51, align 4, !tbaa !5
  %1120 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1118, i64 noundef 25, ptr noundef @.str.43, i32 noundef %1119) #8
  call void @llvm.memset.p0.i64(ptr align 16 @buf, i8 0, i64 1024, i1 false)
  %1121 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %1121, i8 0, i64 200, i1 false)
  %1122 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1123 = load i32, ptr %51, align 4, !tbaa !5
  %1124 = call i32 @mbedtls_aes_setkey_enc(ptr noundef %52, ptr noundef %1122, i32 noundef %1123)
  br label %1125

1125:                                             ; preds = %1117
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #8
  store i32 0, ptr %56, align 4, !tbaa !5
  %1126 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %1127 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %1126)
  %1128 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1129 = call i32 @fflush(ptr noundef %1128)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %53, align 8, !tbaa !42
  br label %1130

1130:                                             ; preds = %1142, %1125
  %1131 = load i32, ptr %56, align 4, !tbaa !5
  %1132 = icmp eq i32 %1131, 0
  br i1 %1132, label %1133, label %1137

1133:                                             ; preds = %1130
  %1134 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %1135 = icmp ne i32 %1134, 0
  %1136 = xor i1 %1135, true
  br label %1137

1137:                                             ; preds = %1133, %1130
  %1138 = phi i1 [ false, %1130 ], [ %1136, %1133 ]
  br i1 %1138, label %1139, label %1145

1139:                                             ; preds = %1137
  %1140 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1141 = call i32 @mbedtls_aes_crypt_cbc(ptr noundef %52, i32 noundef 1, i64 noundef 1024, ptr noundef %1140, ptr noundef @buf, ptr noundef @buf)
  store i32 %1141, ptr %56, align 4, !tbaa !5
  br label %1142

1142:                                             ; preds = %1139
  %1143 = load i64, ptr %53, align 8, !tbaa !42
  %1144 = add i64 %1143, 1
  store i64 %1144, ptr %53, align 8, !tbaa !42
  br label %1130, !llvm.loop !62

1145:                                             ; preds = %1137
  %1146 = call i64 @mbedtls_timing_hardclock()
  store i64 %1146, ptr %55, align 8, !tbaa !42
  store i64 0, ptr %54, align 8, !tbaa !42
  br label %1147

1147:                                             ; preds = %1158, %1145
  %1148 = load i32, ptr %56, align 4, !tbaa !5
  %1149 = icmp eq i32 %1148, 0
  br i1 %1149, label %1150, label %1153

1150:                                             ; preds = %1147
  %1151 = load i64, ptr %54, align 8, !tbaa !42
  %1152 = icmp ult i64 %1151, 1024
  br label %1153

1153:                                             ; preds = %1150, %1147
  %1154 = phi i1 [ false, %1147 ], [ %1152, %1150 ]
  br i1 %1154, label %1155, label %1161

1155:                                             ; preds = %1153
  %1156 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1157 = call i32 @mbedtls_aes_crypt_cbc(ptr noundef %52, i32 noundef 1, i64 noundef 1024, ptr noundef %1156, ptr noundef @buf, ptr noundef @buf)
  store i32 %1157, ptr %56, align 4, !tbaa !5
  br label %1158

1158:                                             ; preds = %1155
  %1159 = load i64, ptr %54, align 8, !tbaa !42
  %1160 = add i64 %1159, 1
  store i64 %1160, ptr %54, align 8, !tbaa !42
  br label %1147, !llvm.loop !63

1161:                                             ; preds = %1153
  %1162 = load i32, ptr %56, align 4, !tbaa !5
  %1163 = icmp ne i32 %1162, 0
  br i1 %1163, label %1164, label %1169

1164:                                             ; preds = %1161
  %1165 = load i32, ptr %56, align 4, !tbaa !5
  %1166 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %1165, ptr noundef %1166, i64 noundef 200)
  %1167 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1168 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %1167)
  br label %1180

1169:                                             ; preds = %1161
  %1170 = load i64, ptr %53, align 8, !tbaa !42
  %1171 = mul i64 %1170, 1024
  %1172 = udiv i64 %1171, 1024
  %1173 = call i64 @mbedtls_timing_hardclock()
  %1174 = load i64, ptr %55, align 8, !tbaa !42
  %1175 = sub i64 %1173, %1174
  %1176 = load i64, ptr %54, align 8, !tbaa !42
  %1177 = mul i64 %1176, 1024
  %1178 = udiv i64 %1175, %1177
  %1179 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %1172, i64 noundef %1178)
  br label %1180

1180:                                             ; preds = %1169, %1164
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  br label %1181

1181:                                             ; preds = %1180
  br label %1182

1182:                                             ; preds = %1181
  br label %1183

1183:                                             ; preds = %1182
  %1184 = load i32, ptr %51, align 4, !tbaa !5
  %1185 = add nsw i32 %1184, 64
  store i32 %1185, ptr %51, align 4, !tbaa !5
  br label %1114, !llvm.loop !64

1186:                                             ; preds = %1114
  call void @mbedtls_aes_free(ptr noundef %52)
  call void @llvm.lifetime.end.p0(i64 288, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  br label %1187

1187:                                             ; preds = %1186, %1109
  %1188 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 12
  %1189 = load i8, ptr %1188, align 1, !tbaa !22
  %1190 = icmp ne i8 %1189, 0
  br i1 %1190, label %1191, label %1266

1191:                                             ; preds = %1187
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #8
  call void @llvm.lifetime.start.p0(i64 576, ptr %58) #8
  call void @mbedtls_aes_xts_init(ptr noundef %58)
  store i32 128, ptr %57, align 4, !tbaa !5
  br label %1192

1192:                                             ; preds = %1262, %1191
  %1193 = load i32, ptr %57, align 4, !tbaa !5
  %1194 = icmp sle i32 %1193, 256
  br i1 %1194, label %1195, label %1265

1195:                                             ; preds = %1192
  %1196 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %1197 = load i32, ptr %57, align 4, !tbaa !5
  %1198 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1196, i64 noundef 25, ptr noundef @.str.44, i32 noundef %1197) #8
  call void @llvm.memset.p0.i64(ptr align 16 @buf, i8 0, i64 1024, i1 false)
  %1199 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %1199, i8 0, i64 200, i1 false)
  %1200 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1201 = load i32, ptr %57, align 4, !tbaa !5
  %1202 = mul nsw i32 %1201, 2
  %1203 = call i32 @mbedtls_aes_xts_setkey_enc(ptr noundef %58, ptr noundef %1200, i32 noundef %1202)
  br label %1204

1204:                                             ; preds = %1195
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #8
  store i32 0, ptr %62, align 4, !tbaa !5
  %1205 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %1206 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %1205)
  %1207 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1208 = call i32 @fflush(ptr noundef %1207)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %59, align 8, !tbaa !42
  br label %1209

1209:                                             ; preds = %1221, %1204
  %1210 = load i32, ptr %62, align 4, !tbaa !5
  %1211 = icmp eq i32 %1210, 0
  br i1 %1211, label %1212, label %1216

1212:                                             ; preds = %1209
  %1213 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %1214 = icmp ne i32 %1213, 0
  %1215 = xor i1 %1214, true
  br label %1216

1216:                                             ; preds = %1212, %1209
  %1217 = phi i1 [ false, %1209 ], [ %1215, %1212 ]
  br i1 %1217, label %1218, label %1224

1218:                                             ; preds = %1216
  %1219 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1220 = call i32 @mbedtls_aes_crypt_xts(ptr noundef %58, i32 noundef 1, i64 noundef 1024, ptr noundef %1219, ptr noundef @buf, ptr noundef @buf)
  store i32 %1220, ptr %62, align 4, !tbaa !5
  br label %1221

1221:                                             ; preds = %1218
  %1222 = load i64, ptr %59, align 8, !tbaa !42
  %1223 = add i64 %1222, 1
  store i64 %1223, ptr %59, align 8, !tbaa !42
  br label %1209, !llvm.loop !65

1224:                                             ; preds = %1216
  %1225 = call i64 @mbedtls_timing_hardclock()
  store i64 %1225, ptr %61, align 8, !tbaa !42
  store i64 0, ptr %60, align 8, !tbaa !42
  br label %1226

1226:                                             ; preds = %1237, %1224
  %1227 = load i32, ptr %62, align 4, !tbaa !5
  %1228 = icmp eq i32 %1227, 0
  br i1 %1228, label %1229, label %1232

1229:                                             ; preds = %1226
  %1230 = load i64, ptr %60, align 8, !tbaa !42
  %1231 = icmp ult i64 %1230, 1024
  br label %1232

1232:                                             ; preds = %1229, %1226
  %1233 = phi i1 [ false, %1226 ], [ %1231, %1229 ]
  br i1 %1233, label %1234, label %1240

1234:                                             ; preds = %1232
  %1235 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1236 = call i32 @mbedtls_aes_crypt_xts(ptr noundef %58, i32 noundef 1, i64 noundef 1024, ptr noundef %1235, ptr noundef @buf, ptr noundef @buf)
  store i32 %1236, ptr %62, align 4, !tbaa !5
  br label %1237

1237:                                             ; preds = %1234
  %1238 = load i64, ptr %60, align 8, !tbaa !42
  %1239 = add i64 %1238, 1
  store i64 %1239, ptr %60, align 8, !tbaa !42
  br label %1226, !llvm.loop !66

1240:                                             ; preds = %1232
  %1241 = load i32, ptr %62, align 4, !tbaa !5
  %1242 = icmp ne i32 %1241, 0
  br i1 %1242, label %1243, label %1248

1243:                                             ; preds = %1240
  %1244 = load i32, ptr %62, align 4, !tbaa !5
  %1245 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %1244, ptr noundef %1245, i64 noundef 200)
  %1246 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1247 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %1246)
  br label %1259

1248:                                             ; preds = %1240
  %1249 = load i64, ptr %59, align 8, !tbaa !42
  %1250 = mul i64 %1249, 1024
  %1251 = udiv i64 %1250, 1024
  %1252 = call i64 @mbedtls_timing_hardclock()
  %1253 = load i64, ptr %61, align 8, !tbaa !42
  %1254 = sub i64 %1252, %1253
  %1255 = load i64, ptr %60, align 8, !tbaa !42
  %1256 = mul i64 %1255, 1024
  %1257 = udiv i64 %1254, %1256
  %1258 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %1251, i64 noundef %1257)
  br label %1259

1259:                                             ; preds = %1248, %1243
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %1260

1260:                                             ; preds = %1259
  br label %1261

1261:                                             ; preds = %1260
  call void @mbedtls_aes_xts_free(ptr noundef %58)
  br label %1262

1262:                                             ; preds = %1261
  %1263 = load i32, ptr %57, align 4, !tbaa !5
  %1264 = add nsw i32 %1263, 128
  store i32 %1264, ptr %57, align 4, !tbaa !5
  br label %1192, !llvm.loop !67

1265:                                             ; preds = %1192
  call void @llvm.lifetime.end.p0(i64 576, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  br label %1266

1266:                                             ; preds = %1265, %1187
  %1267 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 10
  %1268 = load i8, ptr %1267, align 1, !tbaa !23
  %1269 = icmp ne i8 %1268, 0
  br i1 %1269, label %1270, label %1346

1270:                                             ; preds = %1266
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #8
  call void @llvm.lifetime.start.p0(i64 424, ptr %64) #8
  call void @mbedtls_gcm_init(ptr noundef %64)
  store i32 128, ptr %63, align 4, !tbaa !5
  br label %1271

1271:                                             ; preds = %1342, %1270
  %1272 = load i32, ptr %63, align 4, !tbaa !5
  %1273 = icmp sle i32 %1272, 256
  br i1 %1273, label %1274, label %1345

1274:                                             ; preds = %1271
  %1275 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %1276 = load i32, ptr %63, align 4, !tbaa !5
  %1277 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1275, i64 noundef 25, ptr noundef @.str.45, i32 noundef %1276) #8
  call void @llvm.memset.p0.i64(ptr align 16 @buf, i8 0, i64 1024, i1 false)
  %1278 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %1278, i8 0, i64 200, i1 false)
  %1279 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1280 = load i32, ptr %63, align 4, !tbaa !5
  %1281 = call i32 @mbedtls_gcm_setkey(ptr noundef %64, i32 noundef 2, ptr noundef %1279, i32 noundef %1280)
  br label %1282

1282:                                             ; preds = %1274
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #8
  store i32 0, ptr %68, align 4, !tbaa !5
  %1283 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %1284 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %1283)
  %1285 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1286 = call i32 @fflush(ptr noundef %1285)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %65, align 8, !tbaa !42
  br label %1287

1287:                                             ; preds = %1300, %1282
  %1288 = load i32, ptr %68, align 4, !tbaa !5
  %1289 = icmp eq i32 %1288, 0
  br i1 %1289, label %1290, label %1294

1290:                                             ; preds = %1287
  %1291 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %1292 = icmp ne i32 %1291, 0
  %1293 = xor i1 %1292, true
  br label %1294

1294:                                             ; preds = %1290, %1287
  %1295 = phi i1 [ false, %1287 ], [ %1293, %1290 ]
  br i1 %1295, label %1296, label %1303

1296:                                             ; preds = %1294
  %1297 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1298 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1299 = call i32 @mbedtls_gcm_crypt_and_tag(ptr noundef %64, i32 noundef 1, i64 noundef 1024, ptr noundef %1297, i64 noundef 12, ptr noundef null, i64 noundef 0, ptr noundef @buf, ptr noundef @buf, i64 noundef 16, ptr noundef %1298)
  store i32 %1299, ptr %68, align 4, !tbaa !5
  br label %1300

1300:                                             ; preds = %1296
  %1301 = load i64, ptr %65, align 8, !tbaa !42
  %1302 = add i64 %1301, 1
  store i64 %1302, ptr %65, align 8, !tbaa !42
  br label %1287, !llvm.loop !68

1303:                                             ; preds = %1294
  %1304 = call i64 @mbedtls_timing_hardclock()
  store i64 %1304, ptr %67, align 8, !tbaa !42
  store i64 0, ptr %66, align 8, !tbaa !42
  br label %1305

1305:                                             ; preds = %1317, %1303
  %1306 = load i32, ptr %68, align 4, !tbaa !5
  %1307 = icmp eq i32 %1306, 0
  br i1 %1307, label %1308, label %1311

1308:                                             ; preds = %1305
  %1309 = load i64, ptr %66, align 8, !tbaa !42
  %1310 = icmp ult i64 %1309, 1024
  br label %1311

1311:                                             ; preds = %1308, %1305
  %1312 = phi i1 [ false, %1305 ], [ %1310, %1308 ]
  br i1 %1312, label %1313, label %1320

1313:                                             ; preds = %1311
  %1314 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1315 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1316 = call i32 @mbedtls_gcm_crypt_and_tag(ptr noundef %64, i32 noundef 1, i64 noundef 1024, ptr noundef %1314, i64 noundef 12, ptr noundef null, i64 noundef 0, ptr noundef @buf, ptr noundef @buf, i64 noundef 16, ptr noundef %1315)
  store i32 %1316, ptr %68, align 4, !tbaa !5
  br label %1317

1317:                                             ; preds = %1313
  %1318 = load i64, ptr %66, align 8, !tbaa !42
  %1319 = add i64 %1318, 1
  store i64 %1319, ptr %66, align 8, !tbaa !42
  br label %1305, !llvm.loop !69

1320:                                             ; preds = %1311
  %1321 = load i32, ptr %68, align 4, !tbaa !5
  %1322 = icmp ne i32 %1321, 0
  br i1 %1322, label %1323, label %1328

1323:                                             ; preds = %1320
  %1324 = load i32, ptr %68, align 4, !tbaa !5
  %1325 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %1324, ptr noundef %1325, i64 noundef 200)
  %1326 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1327 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %1326)
  br label %1339

1328:                                             ; preds = %1320
  %1329 = load i64, ptr %65, align 8, !tbaa !42
  %1330 = mul i64 %1329, 1024
  %1331 = udiv i64 %1330, 1024
  %1332 = call i64 @mbedtls_timing_hardclock()
  %1333 = load i64, ptr %67, align 8, !tbaa !42
  %1334 = sub i64 %1332, %1333
  %1335 = load i64, ptr %66, align 8, !tbaa !42
  %1336 = mul i64 %1335, 1024
  %1337 = udiv i64 %1334, %1336
  %1338 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %1331, i64 noundef %1337)
  br label %1339

1339:                                             ; preds = %1328, %1323
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  br label %1340

1340:                                             ; preds = %1339
  br label %1341

1341:                                             ; preds = %1340
  call void @mbedtls_gcm_free(ptr noundef %64)
  br label %1342

1342:                                             ; preds = %1341
  %1343 = load i32, ptr %63, align 4, !tbaa !5
  %1344 = add nsw i32 %1343, 64
  store i32 %1344, ptr %63, align 4, !tbaa !5
  br label %1271, !llvm.loop !70

1345:                                             ; preds = %1271
  call void @llvm.lifetime.end.p0(i64 424, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #8
  br label %1346

1346:                                             ; preds = %1345, %1266
  %1347 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 11
  %1348 = load i8, ptr %1347, align 1, !tbaa !24
  %1349 = icmp ne i8 %1348, 0
  br i1 %1349, label %1350, label %1426

1350:                                             ; preds = %1346
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #8
  call void @llvm.lifetime.start.p0(i64 96, ptr %70) #8
  call void @mbedtls_ccm_init(ptr noundef %70)
  store i32 128, ptr %69, align 4, !tbaa !5
  br label %1351

1351:                                             ; preds = %1422, %1350
  %1352 = load i32, ptr %69, align 4, !tbaa !5
  %1353 = icmp sle i32 %1352, 256
  br i1 %1353, label %1354, label %1425

1354:                                             ; preds = %1351
  %1355 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %1356 = load i32, ptr %69, align 4, !tbaa !5
  %1357 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1355, i64 noundef 25, ptr noundef @.str.46, i32 noundef %1356) #8
  call void @llvm.memset.p0.i64(ptr align 16 @buf, i8 0, i64 1024, i1 false)
  %1358 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %1358, i8 0, i64 200, i1 false)
  %1359 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1360 = load i32, ptr %69, align 4, !tbaa !5
  %1361 = call i32 @mbedtls_ccm_setkey(ptr noundef %70, i32 noundef 2, ptr noundef %1359, i32 noundef %1360)
  br label %1362

1362:                                             ; preds = %1354
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #8
  store i32 0, ptr %74, align 4, !tbaa !5
  %1363 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %1364 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %1363)
  %1365 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1366 = call i32 @fflush(ptr noundef %1365)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %71, align 8, !tbaa !42
  br label %1367

1367:                                             ; preds = %1380, %1362
  %1368 = load i32, ptr %74, align 4, !tbaa !5
  %1369 = icmp eq i32 %1368, 0
  br i1 %1369, label %1370, label %1374

1370:                                             ; preds = %1367
  %1371 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %1372 = icmp ne i32 %1371, 0
  %1373 = xor i1 %1372, true
  br label %1374

1374:                                             ; preds = %1370, %1367
  %1375 = phi i1 [ false, %1367 ], [ %1373, %1370 ]
  br i1 %1375, label %1376, label %1383

1376:                                             ; preds = %1374
  %1377 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1378 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1379 = call i32 @mbedtls_ccm_encrypt_and_tag(ptr noundef %70, i64 noundef 1024, ptr noundef %1377, i64 noundef 12, ptr noundef null, i64 noundef 0, ptr noundef @buf, ptr noundef @buf, ptr noundef %1378, i64 noundef 16)
  store i32 %1379, ptr %74, align 4, !tbaa !5
  br label %1380

1380:                                             ; preds = %1376
  %1381 = load i64, ptr %71, align 8, !tbaa !42
  %1382 = add i64 %1381, 1
  store i64 %1382, ptr %71, align 8, !tbaa !42
  br label %1367, !llvm.loop !71

1383:                                             ; preds = %1374
  %1384 = call i64 @mbedtls_timing_hardclock()
  store i64 %1384, ptr %73, align 8, !tbaa !42
  store i64 0, ptr %72, align 8, !tbaa !42
  br label %1385

1385:                                             ; preds = %1397, %1383
  %1386 = load i32, ptr %74, align 4, !tbaa !5
  %1387 = icmp eq i32 %1386, 0
  br i1 %1387, label %1388, label %1391

1388:                                             ; preds = %1385
  %1389 = load i64, ptr %72, align 8, !tbaa !42
  %1390 = icmp ult i64 %1389, 1024
  br label %1391

1391:                                             ; preds = %1388, %1385
  %1392 = phi i1 [ false, %1385 ], [ %1390, %1388 ]
  br i1 %1392, label %1393, label %1400

1393:                                             ; preds = %1391
  %1394 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1395 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1396 = call i32 @mbedtls_ccm_encrypt_and_tag(ptr noundef %70, i64 noundef 1024, ptr noundef %1394, i64 noundef 12, ptr noundef null, i64 noundef 0, ptr noundef @buf, ptr noundef @buf, ptr noundef %1395, i64 noundef 16)
  store i32 %1396, ptr %74, align 4, !tbaa !5
  br label %1397

1397:                                             ; preds = %1393
  %1398 = load i64, ptr %72, align 8, !tbaa !42
  %1399 = add i64 %1398, 1
  store i64 %1399, ptr %72, align 8, !tbaa !42
  br label %1385, !llvm.loop !72

1400:                                             ; preds = %1391
  %1401 = load i32, ptr %74, align 4, !tbaa !5
  %1402 = icmp ne i32 %1401, 0
  br i1 %1402, label %1403, label %1408

1403:                                             ; preds = %1400
  %1404 = load i32, ptr %74, align 4, !tbaa !5
  %1405 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %1404, ptr noundef %1405, i64 noundef 200)
  %1406 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1407 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %1406)
  br label %1419

1408:                                             ; preds = %1400
  %1409 = load i64, ptr %71, align 8, !tbaa !42
  %1410 = mul i64 %1409, 1024
  %1411 = udiv i64 %1410, 1024
  %1412 = call i64 @mbedtls_timing_hardclock()
  %1413 = load i64, ptr %73, align 8, !tbaa !42
  %1414 = sub i64 %1412, %1413
  %1415 = load i64, ptr %72, align 8, !tbaa !42
  %1416 = mul i64 %1415, 1024
  %1417 = udiv i64 %1414, %1416
  %1418 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %1411, i64 noundef %1417)
  br label %1419

1419:                                             ; preds = %1408, %1403
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  br label %1420

1420:                                             ; preds = %1419
  br label %1421

1421:                                             ; preds = %1420
  call void @mbedtls_ccm_free(ptr noundef %70)
  br label %1422

1422:                                             ; preds = %1421
  %1423 = load i32, ptr %69, align 4, !tbaa !5
  %1424 = add nsw i32 %1423, 64
  store i32 %1424, ptr %69, align 4, !tbaa !5
  br label %1351, !llvm.loop !73

1425:                                             ; preds = %1351
  call void @llvm.lifetime.end.p0(i64 96, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #8
  br label %1426

1426:                                             ; preds = %1425, %1346
  %1427 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 13
  %1428 = load i8, ptr %1427, align 1, !tbaa !25
  %1429 = icmp ne i8 %1428, 0
  br i1 %1429, label %1430, label %1496

1430:                                             ; preds = %1426
  call void @llvm.lifetime.start.p0(i64 240, ptr %75) #8
  call void @mbedtls_chachapoly_init(ptr noundef %75)
  call void @llvm.memset.p0.i64(ptr align 16 @buf, i8 0, i64 1024, i1 false)
  %1431 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %1431, i8 0, i64 200, i1 false)
  %1432 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %1433 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1432, i64 noundef 25, ptr noundef @.str.47) #8
  %1434 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1435 = call i32 @mbedtls_chachapoly_setkey(ptr noundef %75, ptr noundef %1434)
  br label %1436

1436:                                             ; preds = %1430
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #8
  store i32 0, ptr %79, align 4, !tbaa !5
  %1437 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %1438 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %1437)
  %1439 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1440 = call i32 @fflush(ptr noundef %1439)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %76, align 8, !tbaa !42
  br label %1441

1441:                                             ; preds = %1454, %1436
  %1442 = load i32, ptr %79, align 4, !tbaa !5
  %1443 = icmp eq i32 %1442, 0
  br i1 %1443, label %1444, label %1448

1444:                                             ; preds = %1441
  %1445 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %1446 = icmp ne i32 %1445, 0
  %1447 = xor i1 %1446, true
  br label %1448

1448:                                             ; preds = %1444, %1441
  %1449 = phi i1 [ false, %1441 ], [ %1447, %1444 ]
  br i1 %1449, label %1450, label %1457

1450:                                             ; preds = %1448
  %1451 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1452 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1453 = call i32 @mbedtls_chachapoly_encrypt_and_tag(ptr noundef %75, i64 noundef 1024, ptr noundef %1451, ptr noundef null, i64 noundef 0, ptr noundef @buf, ptr noundef @buf, ptr noundef %1452)
  store i32 %1453, ptr %79, align 4, !tbaa !5
  br label %1454

1454:                                             ; preds = %1450
  %1455 = load i64, ptr %76, align 8, !tbaa !42
  %1456 = add i64 %1455, 1
  store i64 %1456, ptr %76, align 8, !tbaa !42
  br label %1441, !llvm.loop !74

1457:                                             ; preds = %1448
  %1458 = call i64 @mbedtls_timing_hardclock()
  store i64 %1458, ptr %78, align 8, !tbaa !42
  store i64 0, ptr %77, align 8, !tbaa !42
  br label %1459

1459:                                             ; preds = %1471, %1457
  %1460 = load i32, ptr %79, align 4, !tbaa !5
  %1461 = icmp eq i32 %1460, 0
  br i1 %1461, label %1462, label %1465

1462:                                             ; preds = %1459
  %1463 = load i64, ptr %77, align 8, !tbaa !42
  %1464 = icmp ult i64 %1463, 1024
  br label %1465

1465:                                             ; preds = %1462, %1459
  %1466 = phi i1 [ false, %1459 ], [ %1464, %1462 ]
  br i1 %1466, label %1467, label %1474

1467:                                             ; preds = %1465
  %1468 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1469 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1470 = call i32 @mbedtls_chachapoly_encrypt_and_tag(ptr noundef %75, i64 noundef 1024, ptr noundef %1468, ptr noundef null, i64 noundef 0, ptr noundef @buf, ptr noundef @buf, ptr noundef %1469)
  store i32 %1470, ptr %79, align 4, !tbaa !5
  br label %1471

1471:                                             ; preds = %1467
  %1472 = load i64, ptr %77, align 8, !tbaa !42
  %1473 = add i64 %1472, 1
  store i64 %1473, ptr %77, align 8, !tbaa !42
  br label %1459, !llvm.loop !75

1474:                                             ; preds = %1465
  %1475 = load i32, ptr %79, align 4, !tbaa !5
  %1476 = icmp ne i32 %1475, 0
  br i1 %1476, label %1477, label %1482

1477:                                             ; preds = %1474
  %1478 = load i32, ptr %79, align 4, !tbaa !5
  %1479 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %1478, ptr noundef %1479, i64 noundef 200)
  %1480 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1481 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %1480)
  br label %1493

1482:                                             ; preds = %1474
  %1483 = load i64, ptr %76, align 8, !tbaa !42
  %1484 = mul i64 %1483, 1024
  %1485 = udiv i64 %1484, 1024
  %1486 = call i64 @mbedtls_timing_hardclock()
  %1487 = load i64, ptr %78, align 8, !tbaa !42
  %1488 = sub i64 %1486, %1487
  %1489 = load i64, ptr %77, align 8, !tbaa !42
  %1490 = mul i64 %1489, 1024
  %1491 = udiv i64 %1488, %1490
  %1492 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %1485, i64 noundef %1491)
  br label %1493

1493:                                             ; preds = %1482, %1477
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  br label %1494

1494:                                             ; preds = %1493
  br label %1495

1495:                                             ; preds = %1494
  call void @mbedtls_chachapoly_free(ptr noundef %75)
  call void @llvm.lifetime.end.p0(i64 240, ptr %75) #8
  br label %1496

1496:                                             ; preds = %1495, %1426
  %1497 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 14
  %1498 = load i8, ptr %1497, align 1, !tbaa !26
  %1499 = icmp ne i8 %1498, 0
  br i1 %1499, label %1500, label %1643

1500:                                             ; preds = %1496
  call void @llvm.lifetime.start.p0(i64 16, ptr %80) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #8
  store i32 128, ptr %83, align 4, !tbaa !5
  store i32 2, ptr %82, align 4, !tbaa !5
  br label %1501

1501:                                             ; preds = %1577, %1500
  %1502 = load i32, ptr %83, align 4, !tbaa !5
  %1503 = icmp sle i32 %1502, 256
  br i1 %1503, label %1504, label %1582

1504:                                             ; preds = %1501
  %1505 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %1506 = load i32, ptr %83, align 4, !tbaa !5
  %1507 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1505, i64 noundef 25, ptr noundef @.str.48, i32 noundef %1506) #8
  call void @llvm.memset.p0.i64(ptr align 16 @buf, i8 0, i64 1024, i1 false)
  %1508 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %1508, i8 0, i64 200, i1 false)
  %1509 = load i32, ptr %82, align 4, !tbaa !5
  %1510 = call ptr @mbedtls_cipher_info_from_type(i32 noundef %1509)
  store ptr %1510, ptr %81, align 8, !tbaa !9
  br label %1511

1511:                                             ; preds = %1504
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #8
  store i32 0, ptr %87, align 4, !tbaa !5
  %1512 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %1513 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %1512)
  %1514 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1515 = call i32 @fflush(ptr noundef %1514)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %84, align 8, !tbaa !42
  br label %1516

1516:                                             ; preds = %1532, %1511
  %1517 = load i32, ptr %87, align 4, !tbaa !5
  %1518 = icmp eq i32 %1517, 0
  br i1 %1518, label %1519, label %1523

1519:                                             ; preds = %1516
  %1520 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %1521 = icmp ne i32 %1520, 0
  %1522 = xor i1 %1521, true
  br label %1523

1523:                                             ; preds = %1519, %1516
  %1524 = phi i1 [ false, %1516 ], [ %1522, %1519 ]
  br i1 %1524, label %1525, label %1535

1525:                                             ; preds = %1523
  %1526 = load ptr, ptr %81, align 8, !tbaa !9
  %1527 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1528 = load i32, ptr %83, align 4, !tbaa !5
  %1529 = sext i32 %1528 to i64
  %1530 = getelementptr inbounds [16 x i8], ptr %80, i64 0, i64 0
  %1531 = call i32 @mbedtls_cipher_cmac(ptr noundef %1526, ptr noundef %1527, i64 noundef %1529, ptr noundef @buf, i64 noundef 1024, ptr noundef %1530)
  store i32 %1531, ptr %87, align 4, !tbaa !5
  br label %1532

1532:                                             ; preds = %1525
  %1533 = load i64, ptr %84, align 8, !tbaa !42
  %1534 = add i64 %1533, 1
  store i64 %1534, ptr %84, align 8, !tbaa !42
  br label %1516, !llvm.loop !76

1535:                                             ; preds = %1523
  %1536 = call i64 @mbedtls_timing_hardclock()
  store i64 %1536, ptr %86, align 8, !tbaa !42
  store i64 0, ptr %85, align 8, !tbaa !42
  br label %1537

1537:                                             ; preds = %1552, %1535
  %1538 = load i32, ptr %87, align 4, !tbaa !5
  %1539 = icmp eq i32 %1538, 0
  br i1 %1539, label %1540, label %1543

1540:                                             ; preds = %1537
  %1541 = load i64, ptr %85, align 8, !tbaa !42
  %1542 = icmp ult i64 %1541, 1024
  br label %1543

1543:                                             ; preds = %1540, %1537
  %1544 = phi i1 [ false, %1537 ], [ %1542, %1540 ]
  br i1 %1544, label %1545, label %1555

1545:                                             ; preds = %1543
  %1546 = load ptr, ptr %81, align 8, !tbaa !9
  %1547 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1548 = load i32, ptr %83, align 4, !tbaa !5
  %1549 = sext i32 %1548 to i64
  %1550 = getelementptr inbounds [16 x i8], ptr %80, i64 0, i64 0
  %1551 = call i32 @mbedtls_cipher_cmac(ptr noundef %1546, ptr noundef %1547, i64 noundef %1549, ptr noundef @buf, i64 noundef 1024, ptr noundef %1550)
  store i32 %1551, ptr %87, align 4, !tbaa !5
  br label %1552

1552:                                             ; preds = %1545
  %1553 = load i64, ptr %85, align 8, !tbaa !42
  %1554 = add i64 %1553, 1
  store i64 %1554, ptr %85, align 8, !tbaa !42
  br label %1537, !llvm.loop !77

1555:                                             ; preds = %1543
  %1556 = load i32, ptr %87, align 4, !tbaa !5
  %1557 = icmp ne i32 %1556, 0
  br i1 %1557, label %1558, label %1563

1558:                                             ; preds = %1555
  %1559 = load i32, ptr %87, align 4, !tbaa !5
  %1560 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %1559, ptr noundef %1560, i64 noundef 200)
  %1561 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1562 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %1561)
  br label %1574

1563:                                             ; preds = %1555
  %1564 = load i64, ptr %84, align 8, !tbaa !42
  %1565 = mul i64 %1564, 1024
  %1566 = udiv i64 %1565, 1024
  %1567 = call i64 @mbedtls_timing_hardclock()
  %1568 = load i64, ptr %86, align 8, !tbaa !42
  %1569 = sub i64 %1567, %1568
  %1570 = load i64, ptr %85, align 8, !tbaa !42
  %1571 = mul i64 %1570, 1024
  %1572 = udiv i64 %1569, %1571
  %1573 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %1566, i64 noundef %1572)
  br label %1574

1574:                                             ; preds = %1563, %1558
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  br label %1575

1575:                                             ; preds = %1574
  br label %1576

1576:                                             ; preds = %1575
  br label %1577

1577:                                             ; preds = %1576
  %1578 = load i32, ptr %83, align 4, !tbaa !5
  %1579 = add nsw i32 %1578, 64
  store i32 %1579, ptr %83, align 4, !tbaa !5
  %1580 = load i32, ptr %82, align 4, !tbaa !5
  %1581 = add i32 %1580, 1
  store i32 %1581, ptr %82, align 4, !tbaa !5
  br label %1501, !llvm.loop !78

1582:                                             ; preds = %1501
  call void @llvm.memset.p0.i64(ptr align 16 @buf, i8 0, i64 1024, i1 false)
  %1583 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %1583, i8 0, i64 200, i1 false)
  br label %1584

1584:                                             ; preds = %1582
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #8
  store i32 0, ptr %91, align 4, !tbaa !5
  %1585 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.49)
  %1586 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1587 = call i32 @fflush(ptr noundef %1586)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %88, align 8, !tbaa !42
  br label %1588

1588:                                             ; preds = %1601, %1584
  %1589 = load i32, ptr %91, align 4, !tbaa !5
  %1590 = icmp eq i32 %1589, 0
  br i1 %1590, label %1591, label %1595

1591:                                             ; preds = %1588
  %1592 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %1593 = icmp ne i32 %1592, 0
  %1594 = xor i1 %1593, true
  br label %1595

1595:                                             ; preds = %1591, %1588
  %1596 = phi i1 [ false, %1588 ], [ %1594, %1591 ]
  br i1 %1596, label %1597, label %1604

1597:                                             ; preds = %1595
  %1598 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1599 = getelementptr inbounds [16 x i8], ptr %80, i64 0, i64 0
  %1600 = call i32 @mbedtls_aes_cmac_prf_128(ptr noundef %1598, i64 noundef 16, ptr noundef @buf, i64 noundef 1024, ptr noundef %1599)
  store i32 %1600, ptr %91, align 4, !tbaa !5
  br label %1601

1601:                                             ; preds = %1597
  %1602 = load i64, ptr %88, align 8, !tbaa !42
  %1603 = add i64 %1602, 1
  store i64 %1603, ptr %88, align 8, !tbaa !42
  br label %1588, !llvm.loop !79

1604:                                             ; preds = %1595
  %1605 = call i64 @mbedtls_timing_hardclock()
  store i64 %1605, ptr %90, align 8, !tbaa !42
  store i64 0, ptr %89, align 8, !tbaa !42
  br label %1606

1606:                                             ; preds = %1618, %1604
  %1607 = load i32, ptr %91, align 4, !tbaa !5
  %1608 = icmp eq i32 %1607, 0
  br i1 %1608, label %1609, label %1612

1609:                                             ; preds = %1606
  %1610 = load i64, ptr %89, align 8, !tbaa !42
  %1611 = icmp ult i64 %1610, 1024
  br label %1612

1612:                                             ; preds = %1609, %1606
  %1613 = phi i1 [ false, %1606 ], [ %1611, %1609 ]
  br i1 %1613, label %1614, label %1621

1614:                                             ; preds = %1612
  %1615 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1616 = getelementptr inbounds [16 x i8], ptr %80, i64 0, i64 0
  %1617 = call i32 @mbedtls_aes_cmac_prf_128(ptr noundef %1615, i64 noundef 16, ptr noundef @buf, i64 noundef 1024, ptr noundef %1616)
  store i32 %1617, ptr %91, align 4, !tbaa !5
  br label %1618

1618:                                             ; preds = %1614
  %1619 = load i64, ptr %89, align 8, !tbaa !42
  %1620 = add i64 %1619, 1
  store i64 %1620, ptr %89, align 8, !tbaa !42
  br label %1606, !llvm.loop !80

1621:                                             ; preds = %1612
  %1622 = load i32, ptr %91, align 4, !tbaa !5
  %1623 = icmp ne i32 %1622, 0
  br i1 %1623, label %1624, label %1629

1624:                                             ; preds = %1621
  %1625 = load i32, ptr %91, align 4, !tbaa !5
  %1626 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %1625, ptr noundef %1626, i64 noundef 200)
  %1627 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1628 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %1627)
  br label %1640

1629:                                             ; preds = %1621
  %1630 = load i64, ptr %88, align 8, !tbaa !42
  %1631 = mul i64 %1630, 1024
  %1632 = udiv i64 %1631, 1024
  %1633 = call i64 @mbedtls_timing_hardclock()
  %1634 = load i64, ptr %90, align 8, !tbaa !42
  %1635 = sub i64 %1633, %1634
  %1636 = load i64, ptr %89, align 8, !tbaa !42
  %1637 = mul i64 %1636, 1024
  %1638 = udiv i64 %1635, %1637
  %1639 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %1632, i64 noundef %1638)
  br label %1640

1640:                                             ; preds = %1629, %1624
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  br label %1641

1641:                                             ; preds = %1640
  br label %1642

1642:                                             ; preds = %1641
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #8
  br label %1643

1643:                                             ; preds = %1642, %1496
  %1644 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 17
  %1645 = load i8, ptr %1644, align 1, !tbaa !29
  %1646 = icmp ne i8 %1645, 0
  br i1 %1646, label %1647, label %1721

1647:                                             ; preds = %1643
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #8
  call void @llvm.lifetime.start.p0(i64 276, ptr %93) #8
  call void @mbedtls_camellia_init(ptr noundef %93)
  store i32 128, ptr %92, align 4, !tbaa !5
  br label %1648

1648:                                             ; preds = %1717, %1647
  %1649 = load i32, ptr %92, align 4, !tbaa !5
  %1650 = icmp sle i32 %1649, 256
  br i1 %1650, label %1651, label %1720

1651:                                             ; preds = %1648
  %1652 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %1653 = load i32, ptr %92, align 4, !tbaa !5
  %1654 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1652, i64 noundef 25, ptr noundef @.str.50, i32 noundef %1653) #8
  call void @llvm.memset.p0.i64(ptr align 16 @buf, i8 0, i64 1024, i1 false)
  %1655 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %1655, i8 0, i64 200, i1 false)
  %1656 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1657 = load i32, ptr %92, align 4, !tbaa !5
  %1658 = call i32 @mbedtls_camellia_setkey_enc(ptr noundef %93, ptr noundef %1656, i32 noundef %1657)
  br label %1659

1659:                                             ; preds = %1651
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #8
  store i32 0, ptr %97, align 4, !tbaa !5
  %1660 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %1661 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %1660)
  %1662 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1663 = call i32 @fflush(ptr noundef %1662)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %94, align 8, !tbaa !42
  br label %1664

1664:                                             ; preds = %1676, %1659
  %1665 = load i32, ptr %97, align 4, !tbaa !5
  %1666 = icmp eq i32 %1665, 0
  br i1 %1666, label %1667, label %1671

1667:                                             ; preds = %1664
  %1668 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %1669 = icmp ne i32 %1668, 0
  %1670 = xor i1 %1669, true
  br label %1671

1671:                                             ; preds = %1667, %1664
  %1672 = phi i1 [ false, %1664 ], [ %1670, %1667 ]
  br i1 %1672, label %1673, label %1679

1673:                                             ; preds = %1671
  %1674 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1675 = call i32 @mbedtls_camellia_crypt_cbc(ptr noundef %93, i32 noundef 1, i64 noundef 1024, ptr noundef %1674, ptr noundef @buf, ptr noundef @buf)
  store i32 %1675, ptr %97, align 4, !tbaa !5
  br label %1676

1676:                                             ; preds = %1673
  %1677 = load i64, ptr %94, align 8, !tbaa !42
  %1678 = add i64 %1677, 1
  store i64 %1678, ptr %94, align 8, !tbaa !42
  br label %1664, !llvm.loop !81

1679:                                             ; preds = %1671
  %1680 = call i64 @mbedtls_timing_hardclock()
  store i64 %1680, ptr %96, align 8, !tbaa !42
  store i64 0, ptr %95, align 8, !tbaa !42
  br label %1681

1681:                                             ; preds = %1692, %1679
  %1682 = load i32, ptr %97, align 4, !tbaa !5
  %1683 = icmp eq i32 %1682, 0
  br i1 %1683, label %1684, label %1687

1684:                                             ; preds = %1681
  %1685 = load i64, ptr %95, align 8, !tbaa !42
  %1686 = icmp ult i64 %1685, 1024
  br label %1687

1687:                                             ; preds = %1684, %1681
  %1688 = phi i1 [ false, %1681 ], [ %1686, %1684 ]
  br i1 %1688, label %1689, label %1695

1689:                                             ; preds = %1687
  %1690 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1691 = call i32 @mbedtls_camellia_crypt_cbc(ptr noundef %93, i32 noundef 1, i64 noundef 1024, ptr noundef %1690, ptr noundef @buf, ptr noundef @buf)
  store i32 %1691, ptr %97, align 4, !tbaa !5
  br label %1692

1692:                                             ; preds = %1689
  %1693 = load i64, ptr %95, align 8, !tbaa !42
  %1694 = add i64 %1693, 1
  store i64 %1694, ptr %95, align 8, !tbaa !42
  br label %1681, !llvm.loop !82

1695:                                             ; preds = %1687
  %1696 = load i32, ptr %97, align 4, !tbaa !5
  %1697 = icmp ne i32 %1696, 0
  br i1 %1697, label %1698, label %1703

1698:                                             ; preds = %1695
  %1699 = load i32, ptr %97, align 4, !tbaa !5
  %1700 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %1699, ptr noundef %1700, i64 noundef 200)
  %1701 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1702 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %1701)
  br label %1714

1703:                                             ; preds = %1695
  %1704 = load i64, ptr %94, align 8, !tbaa !42
  %1705 = mul i64 %1704, 1024
  %1706 = udiv i64 %1705, 1024
  %1707 = call i64 @mbedtls_timing_hardclock()
  %1708 = load i64, ptr %96, align 8, !tbaa !42
  %1709 = sub i64 %1707, %1708
  %1710 = load i64, ptr %95, align 8, !tbaa !42
  %1711 = mul i64 %1710, 1024
  %1712 = udiv i64 %1709, %1711
  %1713 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %1706, i64 noundef %1712)
  br label %1714

1714:                                             ; preds = %1703, %1698
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  br label %1715

1715:                                             ; preds = %1714
  br label %1716

1716:                                             ; preds = %1715
  br label %1717

1717:                                             ; preds = %1716
  %1718 = load i32, ptr %92, align 4, !tbaa !5
  %1719 = add nsw i32 %1718, 64
  store i32 %1719, ptr %92, align 4, !tbaa !5
  br label %1648, !llvm.loop !83

1720:                                             ; preds = %1648
  call void @mbedtls_camellia_free(ptr noundef %93)
  call void @llvm.lifetime.end.p0(i64 276, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #8
  br label %1721

1721:                                             ; preds = %1720, %1643
  %1722 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 19
  %1723 = load i8, ptr %1722, align 1, !tbaa !31
  %1724 = icmp ne i8 %1723, 0
  br i1 %1724, label %1725, label %1781

1725:                                             ; preds = %1721
  br label %1726

1726:                                             ; preds = %1725
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #8
  store i32 0, ptr %101, align 4, !tbaa !5
  %1727 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.51)
  %1728 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1729 = call i32 @fflush(ptr noundef %1728)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %98, align 8, !tbaa !42
  br label %1730

1730:                                             ; preds = %1741, %1726
  %1731 = load i32, ptr %101, align 4, !tbaa !5
  %1732 = icmp eq i32 %1731, 0
  br i1 %1732, label %1733, label %1737

1733:                                             ; preds = %1730
  %1734 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %1735 = icmp ne i32 %1734, 0
  %1736 = xor i1 %1735, true
  br label %1737

1737:                                             ; preds = %1733, %1730
  %1738 = phi i1 [ false, %1730 ], [ %1736, %1733 ]
  br i1 %1738, label %1739, label %1744

1739:                                             ; preds = %1737
  %1740 = call i32 @mbedtls_chacha20_crypt(ptr noundef @buf, ptr noundef @buf, i32 noundef 0, i64 noundef 1024, ptr noundef @buf, ptr noundef @buf)
  store i32 %1740, ptr %101, align 4, !tbaa !5
  br label %1741

1741:                                             ; preds = %1739
  %1742 = load i64, ptr %98, align 8, !tbaa !42
  %1743 = add i64 %1742, 1
  store i64 %1743, ptr %98, align 8, !tbaa !42
  br label %1730, !llvm.loop !84

1744:                                             ; preds = %1737
  %1745 = call i64 @mbedtls_timing_hardclock()
  store i64 %1745, ptr %100, align 8, !tbaa !42
  store i64 0, ptr %99, align 8, !tbaa !42
  br label %1746

1746:                                             ; preds = %1756, %1744
  %1747 = load i32, ptr %101, align 4, !tbaa !5
  %1748 = icmp eq i32 %1747, 0
  br i1 %1748, label %1749, label %1752

1749:                                             ; preds = %1746
  %1750 = load i64, ptr %99, align 8, !tbaa !42
  %1751 = icmp ult i64 %1750, 1024
  br label %1752

1752:                                             ; preds = %1749, %1746
  %1753 = phi i1 [ false, %1746 ], [ %1751, %1749 ]
  br i1 %1753, label %1754, label %1759

1754:                                             ; preds = %1752
  %1755 = call i32 @mbedtls_chacha20_crypt(ptr noundef @buf, ptr noundef @buf, i32 noundef 0, i64 noundef 1024, ptr noundef @buf, ptr noundef @buf)
  store i32 %1755, ptr %101, align 4, !tbaa !5
  br label %1756

1756:                                             ; preds = %1754
  %1757 = load i64, ptr %99, align 8, !tbaa !42
  %1758 = add i64 %1757, 1
  store i64 %1758, ptr %99, align 8, !tbaa !42
  br label %1746, !llvm.loop !85

1759:                                             ; preds = %1752
  %1760 = load i32, ptr %101, align 4, !tbaa !5
  %1761 = icmp ne i32 %1760, 0
  br i1 %1761, label %1762, label %1767

1762:                                             ; preds = %1759
  %1763 = load i32, ptr %101, align 4, !tbaa !5
  %1764 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %1763, ptr noundef %1764, i64 noundef 200)
  %1765 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1766 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %1765)
  br label %1778

1767:                                             ; preds = %1759
  %1768 = load i64, ptr %98, align 8, !tbaa !42
  %1769 = mul i64 %1768, 1024
  %1770 = udiv i64 %1769, 1024
  %1771 = call i64 @mbedtls_timing_hardclock()
  %1772 = load i64, ptr %100, align 8, !tbaa !42
  %1773 = sub i64 %1771, %1772
  %1774 = load i64, ptr %99, align 8, !tbaa !42
  %1775 = mul i64 %1774, 1024
  %1776 = udiv i64 %1773, %1775
  %1777 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %1770, i64 noundef %1776)
  br label %1778

1778:                                             ; preds = %1767, %1762
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  br label %1779

1779:                                             ; preds = %1778
  br label %1780

1780:                                             ; preds = %1779
  br label %1781

1781:                                             ; preds = %1780, %1721
  %1782 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 20
  %1783 = load i8, ptr %1782, align 1, !tbaa !32
  %1784 = icmp ne i8 %1783, 0
  br i1 %1784, label %1785, label %1841

1785:                                             ; preds = %1781
  br label %1786

1786:                                             ; preds = %1785
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #8
  store i32 0, ptr %105, align 4, !tbaa !5
  %1787 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.52)
  %1788 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1789 = call i32 @fflush(ptr noundef %1788)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %102, align 8, !tbaa !42
  br label %1790

1790:                                             ; preds = %1801, %1786
  %1791 = load i32, ptr %105, align 4, !tbaa !5
  %1792 = icmp eq i32 %1791, 0
  br i1 %1792, label %1793, label %1797

1793:                                             ; preds = %1790
  %1794 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %1795 = icmp ne i32 %1794, 0
  %1796 = xor i1 %1795, true
  br label %1797

1797:                                             ; preds = %1793, %1790
  %1798 = phi i1 [ false, %1790 ], [ %1796, %1793 ]
  br i1 %1798, label %1799, label %1804

1799:                                             ; preds = %1797
  %1800 = call i32 @mbedtls_poly1305_mac(ptr noundef @buf, ptr noundef @buf, i64 noundef 1024, ptr noundef @buf)
  store i32 %1800, ptr %105, align 4, !tbaa !5
  br label %1801

1801:                                             ; preds = %1799
  %1802 = load i64, ptr %102, align 8, !tbaa !42
  %1803 = add i64 %1802, 1
  store i64 %1803, ptr %102, align 8, !tbaa !42
  br label %1790, !llvm.loop !86

1804:                                             ; preds = %1797
  %1805 = call i64 @mbedtls_timing_hardclock()
  store i64 %1805, ptr %104, align 8, !tbaa !42
  store i64 0, ptr %103, align 8, !tbaa !42
  br label %1806

1806:                                             ; preds = %1816, %1804
  %1807 = load i32, ptr %105, align 4, !tbaa !5
  %1808 = icmp eq i32 %1807, 0
  br i1 %1808, label %1809, label %1812

1809:                                             ; preds = %1806
  %1810 = load i64, ptr %103, align 8, !tbaa !42
  %1811 = icmp ult i64 %1810, 1024
  br label %1812

1812:                                             ; preds = %1809, %1806
  %1813 = phi i1 [ false, %1806 ], [ %1811, %1809 ]
  br i1 %1813, label %1814, label %1819

1814:                                             ; preds = %1812
  %1815 = call i32 @mbedtls_poly1305_mac(ptr noundef @buf, ptr noundef @buf, i64 noundef 1024, ptr noundef @buf)
  store i32 %1815, ptr %105, align 4, !tbaa !5
  br label %1816

1816:                                             ; preds = %1814
  %1817 = load i64, ptr %103, align 8, !tbaa !42
  %1818 = add i64 %1817, 1
  store i64 %1818, ptr %103, align 8, !tbaa !42
  br label %1806, !llvm.loop !87

1819:                                             ; preds = %1812
  %1820 = load i32, ptr %105, align 4, !tbaa !5
  %1821 = icmp ne i32 %1820, 0
  br i1 %1821, label %1822, label %1827

1822:                                             ; preds = %1819
  %1823 = load i32, ptr %105, align 4, !tbaa !5
  %1824 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %1823, ptr noundef %1824, i64 noundef 200)
  %1825 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1826 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %1825)
  br label %1838

1827:                                             ; preds = %1819
  %1828 = load i64, ptr %102, align 8, !tbaa !42
  %1829 = mul i64 %1828, 1024
  %1830 = udiv i64 %1829, 1024
  %1831 = call i64 @mbedtls_timing_hardclock()
  %1832 = load i64, ptr %104, align 8, !tbaa !42
  %1833 = sub i64 %1831, %1832
  %1834 = load i64, ptr %103, align 8, !tbaa !42
  %1835 = mul i64 %1834, 1024
  %1836 = udiv i64 %1833, %1835
  %1837 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %1830, i64 noundef %1836)
  br label %1838

1838:                                             ; preds = %1827, %1822
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #8
  br label %1839

1839:                                             ; preds = %1838
  br label %1840

1840:                                             ; preds = %1839
  br label %1841

1841:                                             ; preds = %1840, %1781
  %1842 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 18
  %1843 = load i8, ptr %1842, align 1, !tbaa !30
  %1844 = icmp ne i8 %1843, 0
  br i1 %1844, label %1845, label %1919

1845:                                             ; preds = %1841
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #8
  call void @llvm.lifetime.start.p0(i64 4168, ptr %107) #8
  call void @mbedtls_blowfish_init(ptr noundef %107)
  store i32 128, ptr %106, align 4, !tbaa !5
  br label %1846

1846:                                             ; preds = %1915, %1845
  %1847 = load i32, ptr %106, align 4, !tbaa !5
  %1848 = icmp sle i32 %1847, 256
  br i1 %1848, label %1849, label %1918

1849:                                             ; preds = %1846
  %1850 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %1851 = load i32, ptr %106, align 4, !tbaa !5
  %1852 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1850, i64 noundef 25, ptr noundef @.str.53, i32 noundef %1851) #8
  call void @llvm.memset.p0.i64(ptr align 16 @buf, i8 0, i64 1024, i1 false)
  %1853 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %1853, i8 0, i64 200, i1 false)
  %1854 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1855 = load i32, ptr %106, align 4, !tbaa !5
  %1856 = call i32 @mbedtls_blowfish_setkey(ptr noundef %107, ptr noundef %1854, i32 noundef %1855)
  br label %1857

1857:                                             ; preds = %1849
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #8
  store i32 0, ptr %111, align 4, !tbaa !5
  %1858 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %1859 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %1858)
  %1860 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1861 = call i32 @fflush(ptr noundef %1860)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %108, align 8, !tbaa !42
  br label %1862

1862:                                             ; preds = %1874, %1857
  %1863 = load i32, ptr %111, align 4, !tbaa !5
  %1864 = icmp eq i32 %1863, 0
  br i1 %1864, label %1865, label %1869

1865:                                             ; preds = %1862
  %1866 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %1867 = icmp ne i32 %1866, 0
  %1868 = xor i1 %1867, true
  br label %1869

1869:                                             ; preds = %1865, %1862
  %1870 = phi i1 [ false, %1862 ], [ %1868, %1865 ]
  br i1 %1870, label %1871, label %1877

1871:                                             ; preds = %1869
  %1872 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1873 = call i32 @mbedtls_blowfish_crypt_cbc(ptr noundef %107, i32 noundef 1, i64 noundef 1024, ptr noundef %1872, ptr noundef @buf, ptr noundef @buf)
  store i32 %1873, ptr %111, align 4, !tbaa !5
  br label %1874

1874:                                             ; preds = %1871
  %1875 = load i64, ptr %108, align 8, !tbaa !42
  %1876 = add i64 %1875, 1
  store i64 %1876, ptr %108, align 8, !tbaa !42
  br label %1862, !llvm.loop !88

1877:                                             ; preds = %1869
  %1878 = call i64 @mbedtls_timing_hardclock()
  store i64 %1878, ptr %110, align 8, !tbaa !42
  store i64 0, ptr %109, align 8, !tbaa !42
  br label %1879

1879:                                             ; preds = %1890, %1877
  %1880 = load i32, ptr %111, align 4, !tbaa !5
  %1881 = icmp eq i32 %1880, 0
  br i1 %1881, label %1882, label %1885

1882:                                             ; preds = %1879
  %1883 = load i64, ptr %109, align 8, !tbaa !42
  %1884 = icmp ult i64 %1883, 1024
  br label %1885

1885:                                             ; preds = %1882, %1879
  %1886 = phi i1 [ false, %1879 ], [ %1884, %1882 ]
  br i1 %1886, label %1887, label %1893

1887:                                             ; preds = %1885
  %1888 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1889 = call i32 @mbedtls_blowfish_crypt_cbc(ptr noundef %107, i32 noundef 1, i64 noundef 1024, ptr noundef %1888, ptr noundef @buf, ptr noundef @buf)
  store i32 %1889, ptr %111, align 4, !tbaa !5
  br label %1890

1890:                                             ; preds = %1887
  %1891 = load i64, ptr %109, align 8, !tbaa !42
  %1892 = add i64 %1891, 1
  store i64 %1892, ptr %109, align 8, !tbaa !42
  br label %1879, !llvm.loop !89

1893:                                             ; preds = %1885
  %1894 = load i32, ptr %111, align 4, !tbaa !5
  %1895 = icmp ne i32 %1894, 0
  br i1 %1895, label %1896, label %1901

1896:                                             ; preds = %1893
  %1897 = load i32, ptr %111, align 4, !tbaa !5
  %1898 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %1897, ptr noundef %1898, i64 noundef 200)
  %1899 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1900 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %1899)
  br label %1912

1901:                                             ; preds = %1893
  %1902 = load i64, ptr %108, align 8, !tbaa !42
  %1903 = mul i64 %1902, 1024
  %1904 = udiv i64 %1903, 1024
  %1905 = call i64 @mbedtls_timing_hardclock()
  %1906 = load i64, ptr %110, align 8, !tbaa !42
  %1907 = sub i64 %1905, %1906
  %1908 = load i64, ptr %109, align 8, !tbaa !42
  %1909 = mul i64 %1908, 1024
  %1910 = udiv i64 %1907, %1909
  %1911 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %1904, i64 noundef %1910)
  br label %1912

1912:                                             ; preds = %1901, %1896
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #8
  br label %1913

1913:                                             ; preds = %1912
  br label %1914

1914:                                             ; preds = %1913
  br label %1915

1915:                                             ; preds = %1914
  %1916 = load i32, ptr %106, align 4, !tbaa !5
  %1917 = add nsw i32 %1916, 64
  store i32 %1917, ptr %106, align 4, !tbaa !5
  br label %1846, !llvm.loop !90

1918:                                             ; preds = %1846
  call void @mbedtls_blowfish_free(ptr noundef %107)
  call void @llvm.lifetime.end.p0(i64 4168, ptr %107) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #8
  br label %1919

1919:                                             ; preds = %1918, %1841
  %1920 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 22
  %1921 = load i8, ptr %1920, align 1, !tbaa !34
  %1922 = icmp ne i8 %1921, 0
  br i1 %1922, label %1923, label %2042

1923:                                             ; preds = %1919
  call void @llvm.lifetime.start.p0(i64 344, ptr %112) #8
  call void @mbedtls_ctr_drbg_init(ptr noundef %112)
  %1924 = call i32 @mbedtls_ctr_drbg_seed(ptr noundef %112, ptr noundef @myrand, ptr noundef null, ptr noundef null, i64 noundef 0)
  %1925 = icmp ne i32 %1924, 0
  br i1 %1925, label %1926, label %1927

1926:                                             ; preds = %1923
  call void @exit(i32 noundef 1) #10
  unreachable

1927:                                             ; preds = %1923
  br label %1928

1928:                                             ; preds = %1927
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #8
  store i32 0, ptr %116, align 4, !tbaa !5
  %1929 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.54)
  %1930 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1931 = call i32 @fflush(ptr noundef %1930)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %113, align 8, !tbaa !42
  br label %1932

1932:                                             ; preds = %1943, %1928
  %1933 = load i32, ptr %116, align 4, !tbaa !5
  %1934 = icmp eq i32 %1933, 0
  br i1 %1934, label %1935, label %1939

1935:                                             ; preds = %1932
  %1936 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %1937 = icmp ne i32 %1936, 0
  %1938 = xor i1 %1937, true
  br label %1939

1939:                                             ; preds = %1935, %1932
  %1940 = phi i1 [ false, %1932 ], [ %1938, %1935 ]
  br i1 %1940, label %1941, label %1946

1941:                                             ; preds = %1939
  %1942 = call i32 @mbedtls_ctr_drbg_random(ptr noundef %112, ptr noundef @buf, i64 noundef 1024)
  store i32 %1942, ptr %116, align 4, !tbaa !5
  br label %1943

1943:                                             ; preds = %1941
  %1944 = load i64, ptr %113, align 8, !tbaa !42
  %1945 = add i64 %1944, 1
  store i64 %1945, ptr %113, align 8, !tbaa !42
  br label %1932, !llvm.loop !91

1946:                                             ; preds = %1939
  %1947 = call i64 @mbedtls_timing_hardclock()
  store i64 %1947, ptr %115, align 8, !tbaa !42
  store i64 0, ptr %114, align 8, !tbaa !42
  br label %1948

1948:                                             ; preds = %1958, %1946
  %1949 = load i32, ptr %116, align 4, !tbaa !5
  %1950 = icmp eq i32 %1949, 0
  br i1 %1950, label %1951, label %1954

1951:                                             ; preds = %1948
  %1952 = load i64, ptr %114, align 8, !tbaa !42
  %1953 = icmp ult i64 %1952, 1024
  br label %1954

1954:                                             ; preds = %1951, %1948
  %1955 = phi i1 [ false, %1948 ], [ %1953, %1951 ]
  br i1 %1955, label %1956, label %1961

1956:                                             ; preds = %1954
  %1957 = call i32 @mbedtls_ctr_drbg_random(ptr noundef %112, ptr noundef @buf, i64 noundef 1024)
  store i32 %1957, ptr %116, align 4, !tbaa !5
  br label %1958

1958:                                             ; preds = %1956
  %1959 = load i64, ptr %114, align 8, !tbaa !42
  %1960 = add i64 %1959, 1
  store i64 %1960, ptr %114, align 8, !tbaa !42
  br label %1948, !llvm.loop !92

1961:                                             ; preds = %1954
  %1962 = load i32, ptr %116, align 4, !tbaa !5
  %1963 = icmp ne i32 %1962, 0
  br i1 %1963, label %1964, label %1969

1964:                                             ; preds = %1961
  %1965 = load i32, ptr %116, align 4, !tbaa !5
  %1966 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %1965, ptr noundef %1966, i64 noundef 200)
  %1967 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %1968 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %1967)
  br label %1980

1969:                                             ; preds = %1961
  %1970 = load i64, ptr %113, align 8, !tbaa !42
  %1971 = mul i64 %1970, 1024
  %1972 = udiv i64 %1971, 1024
  %1973 = call i64 @mbedtls_timing_hardclock()
  %1974 = load i64, ptr %115, align 8, !tbaa !42
  %1975 = sub i64 %1973, %1974
  %1976 = load i64, ptr %114, align 8, !tbaa !42
  %1977 = mul i64 %1976, 1024
  %1978 = udiv i64 %1975, %1977
  %1979 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %1972, i64 noundef %1978)
  br label %1980

1980:                                             ; preds = %1969, %1964
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #8
  br label %1981

1981:                                             ; preds = %1980
  br label %1982

1982:                                             ; preds = %1981
  call void @mbedtls_ctr_drbg_free(ptr noundef %112)
  call void @mbedtls_ctr_drbg_init(ptr noundef %112)
  %1983 = call i32 @mbedtls_ctr_drbg_seed(ptr noundef %112, ptr noundef @myrand, ptr noundef null, ptr noundef null, i64 noundef 0)
  %1984 = icmp ne i32 %1983, 0
  br i1 %1984, label %1985, label %1986

1985:                                             ; preds = %1982
  call void @exit(i32 noundef 1) #10
  unreachable

1986:                                             ; preds = %1982
  call void @mbedtls_ctr_drbg_set_prediction_resistance(ptr noundef %112, i32 noundef 1)
  br label %1987

1987:                                             ; preds = %1986
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #8
  store i32 0, ptr %120, align 4, !tbaa !5
  %1988 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.55)
  %1989 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1990 = call i32 @fflush(ptr noundef %1989)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %117, align 8, !tbaa !42
  br label %1991

1991:                                             ; preds = %2002, %1987
  %1992 = load i32, ptr %120, align 4, !tbaa !5
  %1993 = icmp eq i32 %1992, 0
  br i1 %1993, label %1994, label %1998

1994:                                             ; preds = %1991
  %1995 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %1996 = icmp ne i32 %1995, 0
  %1997 = xor i1 %1996, true
  br label %1998

1998:                                             ; preds = %1994, %1991
  %1999 = phi i1 [ false, %1991 ], [ %1997, %1994 ]
  br i1 %1999, label %2000, label %2005

2000:                                             ; preds = %1998
  %2001 = call i32 @mbedtls_ctr_drbg_random(ptr noundef %112, ptr noundef @buf, i64 noundef 1024)
  store i32 %2001, ptr %120, align 4, !tbaa !5
  br label %2002

2002:                                             ; preds = %2000
  %2003 = load i64, ptr %117, align 8, !tbaa !42
  %2004 = add i64 %2003, 1
  store i64 %2004, ptr %117, align 8, !tbaa !42
  br label %1991, !llvm.loop !93

2005:                                             ; preds = %1998
  %2006 = call i64 @mbedtls_timing_hardclock()
  store i64 %2006, ptr %119, align 8, !tbaa !42
  store i64 0, ptr %118, align 8, !tbaa !42
  br label %2007

2007:                                             ; preds = %2017, %2005
  %2008 = load i32, ptr %120, align 4, !tbaa !5
  %2009 = icmp eq i32 %2008, 0
  br i1 %2009, label %2010, label %2013

2010:                                             ; preds = %2007
  %2011 = load i64, ptr %118, align 8, !tbaa !42
  %2012 = icmp ult i64 %2011, 1024
  br label %2013

2013:                                             ; preds = %2010, %2007
  %2014 = phi i1 [ false, %2007 ], [ %2012, %2010 ]
  br i1 %2014, label %2015, label %2020

2015:                                             ; preds = %2013
  %2016 = call i32 @mbedtls_ctr_drbg_random(ptr noundef %112, ptr noundef @buf, i64 noundef 1024)
  store i32 %2016, ptr %120, align 4, !tbaa !5
  br label %2017

2017:                                             ; preds = %2015
  %2018 = load i64, ptr %118, align 8, !tbaa !42
  %2019 = add i64 %2018, 1
  store i64 %2019, ptr %118, align 8, !tbaa !42
  br label %2007, !llvm.loop !94

2020:                                             ; preds = %2013
  %2021 = load i32, ptr %120, align 4, !tbaa !5
  %2022 = icmp ne i32 %2021, 0
  br i1 %2022, label %2023, label %2028

2023:                                             ; preds = %2020
  %2024 = load i32, ptr %120, align 4, !tbaa !5
  %2025 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %2024, ptr noundef %2025, i64 noundef 200)
  %2026 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %2027 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %2026)
  br label %2039

2028:                                             ; preds = %2020
  %2029 = load i64, ptr %117, align 8, !tbaa !42
  %2030 = mul i64 %2029, 1024
  %2031 = udiv i64 %2030, 1024
  %2032 = call i64 @mbedtls_timing_hardclock()
  %2033 = load i64, ptr %119, align 8, !tbaa !42
  %2034 = sub i64 %2032, %2033
  %2035 = load i64, ptr %118, align 8, !tbaa !42
  %2036 = mul i64 %2035, 1024
  %2037 = udiv i64 %2034, %2036
  %2038 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %2031, i64 noundef %2037)
  br label %2039

2039:                                             ; preds = %2028, %2023
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #8
  br label %2040

2040:                                             ; preds = %2039
  br label %2041

2041:                                             ; preds = %2040
  call void @mbedtls_ctr_drbg_free(ptr noundef %112)
  call void @llvm.lifetime.end.p0(i64 344, ptr %112) #8
  br label %2042

2042:                                             ; preds = %2041, %1919
  %2043 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 23
  %2044 = load i8, ptr %2043, align 1, !tbaa !35
  %2045 = icmp ne i8 %2044, 0
  br i1 %2045, label %2046, label %2295

2046:                                             ; preds = %2042
  call void @llvm.lifetime.start.p0(i64 128, ptr %121) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #8
  call void @mbedtls_hmac_drbg_init(ptr noundef %121)
  %2047 = call ptr @mbedtls_md_info_from_type(i32 noundef 4)
  store ptr %2047, ptr %122, align 8, !tbaa !9
  %2048 = icmp eq ptr %2047, null
  br i1 %2048, label %2049, label %2050

2049:                                             ; preds = %2046
  call void @exit(i32 noundef 1) #10
  unreachable

2050:                                             ; preds = %2046
  %2051 = load ptr, ptr %122, align 8, !tbaa !9
  %2052 = call i32 @mbedtls_hmac_drbg_seed(ptr noundef %121, ptr noundef %2051, ptr noundef @myrand, ptr noundef null, ptr noundef null, i64 noundef 0)
  %2053 = icmp ne i32 %2052, 0
  br i1 %2053, label %2054, label %2055

2054:                                             ; preds = %2050
  call void @exit(i32 noundef 1) #10
  unreachable

2055:                                             ; preds = %2050
  br label %2056

2056:                                             ; preds = %2055
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #8
  store i32 0, ptr %126, align 4, !tbaa !5
  %2057 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.56)
  %2058 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2059 = call i32 @fflush(ptr noundef %2058)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %123, align 8, !tbaa !42
  br label %2060

2060:                                             ; preds = %2071, %2056
  %2061 = load i32, ptr %126, align 4, !tbaa !5
  %2062 = icmp eq i32 %2061, 0
  br i1 %2062, label %2063, label %2067

2063:                                             ; preds = %2060
  %2064 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %2065 = icmp ne i32 %2064, 0
  %2066 = xor i1 %2065, true
  br label %2067

2067:                                             ; preds = %2063, %2060
  %2068 = phi i1 [ false, %2060 ], [ %2066, %2063 ]
  br i1 %2068, label %2069, label %2074

2069:                                             ; preds = %2067
  %2070 = call i32 @mbedtls_hmac_drbg_random(ptr noundef %121, ptr noundef @buf, i64 noundef 1024)
  store i32 %2070, ptr %126, align 4, !tbaa !5
  br label %2071

2071:                                             ; preds = %2069
  %2072 = load i64, ptr %123, align 8, !tbaa !42
  %2073 = add i64 %2072, 1
  store i64 %2073, ptr %123, align 8, !tbaa !42
  br label %2060, !llvm.loop !95

2074:                                             ; preds = %2067
  %2075 = call i64 @mbedtls_timing_hardclock()
  store i64 %2075, ptr %125, align 8, !tbaa !42
  store i64 0, ptr %124, align 8, !tbaa !42
  br label %2076

2076:                                             ; preds = %2086, %2074
  %2077 = load i32, ptr %126, align 4, !tbaa !5
  %2078 = icmp eq i32 %2077, 0
  br i1 %2078, label %2079, label %2082

2079:                                             ; preds = %2076
  %2080 = load i64, ptr %124, align 8, !tbaa !42
  %2081 = icmp ult i64 %2080, 1024
  br label %2082

2082:                                             ; preds = %2079, %2076
  %2083 = phi i1 [ false, %2076 ], [ %2081, %2079 ]
  br i1 %2083, label %2084, label %2089

2084:                                             ; preds = %2082
  %2085 = call i32 @mbedtls_hmac_drbg_random(ptr noundef %121, ptr noundef @buf, i64 noundef 1024)
  store i32 %2085, ptr %126, align 4, !tbaa !5
  br label %2086

2086:                                             ; preds = %2084
  %2087 = load i64, ptr %124, align 8, !tbaa !42
  %2088 = add i64 %2087, 1
  store i64 %2088, ptr %124, align 8, !tbaa !42
  br label %2076, !llvm.loop !96

2089:                                             ; preds = %2082
  %2090 = load i32, ptr %126, align 4, !tbaa !5
  %2091 = icmp ne i32 %2090, 0
  br i1 %2091, label %2092, label %2097

2092:                                             ; preds = %2089
  %2093 = load i32, ptr %126, align 4, !tbaa !5
  %2094 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %2093, ptr noundef %2094, i64 noundef 200)
  %2095 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %2096 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %2095)
  br label %2108

2097:                                             ; preds = %2089
  %2098 = load i64, ptr %123, align 8, !tbaa !42
  %2099 = mul i64 %2098, 1024
  %2100 = udiv i64 %2099, 1024
  %2101 = call i64 @mbedtls_timing_hardclock()
  %2102 = load i64, ptr %125, align 8, !tbaa !42
  %2103 = sub i64 %2101, %2102
  %2104 = load i64, ptr %124, align 8, !tbaa !42
  %2105 = mul i64 %2104, 1024
  %2106 = udiv i64 %2103, %2105
  %2107 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %2100, i64 noundef %2106)
  br label %2108

2108:                                             ; preds = %2097, %2092
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #8
  br label %2109

2109:                                             ; preds = %2108
  br label %2110

2110:                                             ; preds = %2109
  %2111 = load ptr, ptr %122, align 8, !tbaa !9
  %2112 = call i32 @mbedtls_hmac_drbg_seed(ptr noundef %121, ptr noundef %2111, ptr noundef @myrand, ptr noundef null, ptr noundef null, i64 noundef 0)
  %2113 = icmp ne i32 %2112, 0
  br i1 %2113, label %2114, label %2115

2114:                                             ; preds = %2110
  call void @exit(i32 noundef 1) #10
  unreachable

2115:                                             ; preds = %2110
  call void @mbedtls_hmac_drbg_set_prediction_resistance(ptr noundef %121, i32 noundef 1)
  br label %2116

2116:                                             ; preds = %2115
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #8
  store i32 0, ptr %130, align 4, !tbaa !5
  %2117 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.57)
  %2118 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2119 = call i32 @fflush(ptr noundef %2118)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %127, align 8, !tbaa !42
  br label %2120

2120:                                             ; preds = %2131, %2116
  %2121 = load i32, ptr %130, align 4, !tbaa !5
  %2122 = icmp eq i32 %2121, 0
  br i1 %2122, label %2123, label %2127

2123:                                             ; preds = %2120
  %2124 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %2125 = icmp ne i32 %2124, 0
  %2126 = xor i1 %2125, true
  br label %2127

2127:                                             ; preds = %2123, %2120
  %2128 = phi i1 [ false, %2120 ], [ %2126, %2123 ]
  br i1 %2128, label %2129, label %2134

2129:                                             ; preds = %2127
  %2130 = call i32 @mbedtls_hmac_drbg_random(ptr noundef %121, ptr noundef @buf, i64 noundef 1024)
  store i32 %2130, ptr %130, align 4, !tbaa !5
  br label %2131

2131:                                             ; preds = %2129
  %2132 = load i64, ptr %127, align 8, !tbaa !42
  %2133 = add i64 %2132, 1
  store i64 %2133, ptr %127, align 8, !tbaa !42
  br label %2120, !llvm.loop !97

2134:                                             ; preds = %2127
  %2135 = call i64 @mbedtls_timing_hardclock()
  store i64 %2135, ptr %129, align 8, !tbaa !42
  store i64 0, ptr %128, align 8, !tbaa !42
  br label %2136

2136:                                             ; preds = %2146, %2134
  %2137 = load i32, ptr %130, align 4, !tbaa !5
  %2138 = icmp eq i32 %2137, 0
  br i1 %2138, label %2139, label %2142

2139:                                             ; preds = %2136
  %2140 = load i64, ptr %128, align 8, !tbaa !42
  %2141 = icmp ult i64 %2140, 1024
  br label %2142

2142:                                             ; preds = %2139, %2136
  %2143 = phi i1 [ false, %2136 ], [ %2141, %2139 ]
  br i1 %2143, label %2144, label %2149

2144:                                             ; preds = %2142
  %2145 = call i32 @mbedtls_hmac_drbg_random(ptr noundef %121, ptr noundef @buf, i64 noundef 1024)
  store i32 %2145, ptr %130, align 4, !tbaa !5
  br label %2146

2146:                                             ; preds = %2144
  %2147 = load i64, ptr %128, align 8, !tbaa !42
  %2148 = add i64 %2147, 1
  store i64 %2148, ptr %128, align 8, !tbaa !42
  br label %2136, !llvm.loop !98

2149:                                             ; preds = %2142
  %2150 = load i32, ptr %130, align 4, !tbaa !5
  %2151 = icmp ne i32 %2150, 0
  br i1 %2151, label %2152, label %2157

2152:                                             ; preds = %2149
  %2153 = load i32, ptr %130, align 4, !tbaa !5
  %2154 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %2153, ptr noundef %2154, i64 noundef 200)
  %2155 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %2156 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %2155)
  br label %2168

2157:                                             ; preds = %2149
  %2158 = load i64, ptr %127, align 8, !tbaa !42
  %2159 = mul i64 %2158, 1024
  %2160 = udiv i64 %2159, 1024
  %2161 = call i64 @mbedtls_timing_hardclock()
  %2162 = load i64, ptr %129, align 8, !tbaa !42
  %2163 = sub i64 %2161, %2162
  %2164 = load i64, ptr %128, align 8, !tbaa !42
  %2165 = mul i64 %2164, 1024
  %2166 = udiv i64 %2163, %2165
  %2167 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %2160, i64 noundef %2166)
  br label %2168

2168:                                             ; preds = %2157, %2152
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #8
  br label %2169

2169:                                             ; preds = %2168
  br label %2170

2170:                                             ; preds = %2169
  %2171 = call ptr @mbedtls_md_info_from_type(i32 noundef 6)
  store ptr %2171, ptr %122, align 8, !tbaa !9
  %2172 = icmp eq ptr %2171, null
  br i1 %2172, label %2173, label %2174

2173:                                             ; preds = %2170
  call void @exit(i32 noundef 1) #10
  unreachable

2174:                                             ; preds = %2170
  %2175 = load ptr, ptr %122, align 8, !tbaa !9
  %2176 = call i32 @mbedtls_hmac_drbg_seed(ptr noundef %121, ptr noundef %2175, ptr noundef @myrand, ptr noundef null, ptr noundef null, i64 noundef 0)
  %2177 = icmp ne i32 %2176, 0
  br i1 %2177, label %2178, label %2179

2178:                                             ; preds = %2174
  call void @exit(i32 noundef 1) #10
  unreachable

2179:                                             ; preds = %2174
  br label %2180

2180:                                             ; preds = %2179
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %134) #8
  store i32 0, ptr %134, align 4, !tbaa !5
  %2181 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.58)
  %2182 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2183 = call i32 @fflush(ptr noundef %2182)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %131, align 8, !tbaa !42
  br label %2184

2184:                                             ; preds = %2195, %2180
  %2185 = load i32, ptr %134, align 4, !tbaa !5
  %2186 = icmp eq i32 %2185, 0
  br i1 %2186, label %2187, label %2191

2187:                                             ; preds = %2184
  %2188 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %2189 = icmp ne i32 %2188, 0
  %2190 = xor i1 %2189, true
  br label %2191

2191:                                             ; preds = %2187, %2184
  %2192 = phi i1 [ false, %2184 ], [ %2190, %2187 ]
  br i1 %2192, label %2193, label %2198

2193:                                             ; preds = %2191
  %2194 = call i32 @mbedtls_hmac_drbg_random(ptr noundef %121, ptr noundef @buf, i64 noundef 1024)
  store i32 %2194, ptr %134, align 4, !tbaa !5
  br label %2195

2195:                                             ; preds = %2193
  %2196 = load i64, ptr %131, align 8, !tbaa !42
  %2197 = add i64 %2196, 1
  store i64 %2197, ptr %131, align 8, !tbaa !42
  br label %2184, !llvm.loop !99

2198:                                             ; preds = %2191
  %2199 = call i64 @mbedtls_timing_hardclock()
  store i64 %2199, ptr %133, align 8, !tbaa !42
  store i64 0, ptr %132, align 8, !tbaa !42
  br label %2200

2200:                                             ; preds = %2210, %2198
  %2201 = load i32, ptr %134, align 4, !tbaa !5
  %2202 = icmp eq i32 %2201, 0
  br i1 %2202, label %2203, label %2206

2203:                                             ; preds = %2200
  %2204 = load i64, ptr %132, align 8, !tbaa !42
  %2205 = icmp ult i64 %2204, 1024
  br label %2206

2206:                                             ; preds = %2203, %2200
  %2207 = phi i1 [ false, %2200 ], [ %2205, %2203 ]
  br i1 %2207, label %2208, label %2213

2208:                                             ; preds = %2206
  %2209 = call i32 @mbedtls_hmac_drbg_random(ptr noundef %121, ptr noundef @buf, i64 noundef 1024)
  store i32 %2209, ptr %134, align 4, !tbaa !5
  br label %2210

2210:                                             ; preds = %2208
  %2211 = load i64, ptr %132, align 8, !tbaa !42
  %2212 = add i64 %2211, 1
  store i64 %2212, ptr %132, align 8, !tbaa !42
  br label %2200, !llvm.loop !100

2213:                                             ; preds = %2206
  %2214 = load i32, ptr %134, align 4, !tbaa !5
  %2215 = icmp ne i32 %2214, 0
  br i1 %2215, label %2216, label %2221

2216:                                             ; preds = %2213
  %2217 = load i32, ptr %134, align 4, !tbaa !5
  %2218 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %2217, ptr noundef %2218, i64 noundef 200)
  %2219 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %2220 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %2219)
  br label %2232

2221:                                             ; preds = %2213
  %2222 = load i64, ptr %131, align 8, !tbaa !42
  %2223 = mul i64 %2222, 1024
  %2224 = udiv i64 %2223, 1024
  %2225 = call i64 @mbedtls_timing_hardclock()
  %2226 = load i64, ptr %133, align 8, !tbaa !42
  %2227 = sub i64 %2225, %2226
  %2228 = load i64, ptr %132, align 8, !tbaa !42
  %2229 = mul i64 %2228, 1024
  %2230 = udiv i64 %2227, %2229
  %2231 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %2224, i64 noundef %2230)
  br label %2232

2232:                                             ; preds = %2221, %2216
  call void @llvm.lifetime.end.p0(i64 4, ptr %134) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #8
  br label %2233

2233:                                             ; preds = %2232
  br label %2234

2234:                                             ; preds = %2233
  %2235 = load ptr, ptr %122, align 8, !tbaa !9
  %2236 = call i32 @mbedtls_hmac_drbg_seed(ptr noundef %121, ptr noundef %2235, ptr noundef @myrand, ptr noundef null, ptr noundef null, i64 noundef 0)
  %2237 = icmp ne i32 %2236, 0
  br i1 %2237, label %2238, label %2239

2238:                                             ; preds = %2234
  call void @exit(i32 noundef 1) #10
  unreachable

2239:                                             ; preds = %2234
  call void @mbedtls_hmac_drbg_set_prediction_resistance(ptr noundef %121, i32 noundef 1)
  br label %2240

2240:                                             ; preds = %2239
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %138) #8
  store i32 0, ptr %138, align 4, !tbaa !5
  %2241 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef @.str.59)
  %2242 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2243 = call i32 @fflush(ptr noundef %2242)
  call void @mbedtls_set_alarm(i32 noundef 1)
  store i64 1, ptr %135, align 8, !tbaa !42
  br label %2244

2244:                                             ; preds = %2255, %2240
  %2245 = load i32, ptr %138, align 4, !tbaa !5
  %2246 = icmp eq i32 %2245, 0
  br i1 %2246, label %2247, label %2251

2247:                                             ; preds = %2244
  %2248 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %2249 = icmp ne i32 %2248, 0
  %2250 = xor i1 %2249, true
  br label %2251

2251:                                             ; preds = %2247, %2244
  %2252 = phi i1 [ false, %2244 ], [ %2250, %2247 ]
  br i1 %2252, label %2253, label %2258

2253:                                             ; preds = %2251
  %2254 = call i32 @mbedtls_hmac_drbg_random(ptr noundef %121, ptr noundef @buf, i64 noundef 1024)
  store i32 %2254, ptr %138, align 4, !tbaa !5
  br label %2255

2255:                                             ; preds = %2253
  %2256 = load i64, ptr %135, align 8, !tbaa !42
  %2257 = add i64 %2256, 1
  store i64 %2257, ptr %135, align 8, !tbaa !42
  br label %2244, !llvm.loop !101

2258:                                             ; preds = %2251
  %2259 = call i64 @mbedtls_timing_hardclock()
  store i64 %2259, ptr %137, align 8, !tbaa !42
  store i64 0, ptr %136, align 8, !tbaa !42
  br label %2260

2260:                                             ; preds = %2270, %2258
  %2261 = load i32, ptr %138, align 4, !tbaa !5
  %2262 = icmp eq i32 %2261, 0
  br i1 %2262, label %2263, label %2266

2263:                                             ; preds = %2260
  %2264 = load i64, ptr %136, align 8, !tbaa !42
  %2265 = icmp ult i64 %2264, 1024
  br label %2266

2266:                                             ; preds = %2263, %2260
  %2267 = phi i1 [ false, %2260 ], [ %2265, %2263 ]
  br i1 %2267, label %2268, label %2273

2268:                                             ; preds = %2266
  %2269 = call i32 @mbedtls_hmac_drbg_random(ptr noundef %121, ptr noundef @buf, i64 noundef 1024)
  store i32 %2269, ptr %138, align 4, !tbaa !5
  br label %2270

2270:                                             ; preds = %2268
  %2271 = load i64, ptr %136, align 8, !tbaa !42
  %2272 = add i64 %2271, 1
  store i64 %2272, ptr %136, align 8, !tbaa !42
  br label %2260, !llvm.loop !102

2273:                                             ; preds = %2266
  %2274 = load i32, ptr %138, align 4, !tbaa !5
  %2275 = icmp ne i32 %2274, 0
  br i1 %2275, label %2276, label %2281

2276:                                             ; preds = %2273
  %2277 = load i32, ptr %138, align 4, !tbaa !5
  %2278 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %2277, ptr noundef %2278, i64 noundef 200)
  %2279 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %2280 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %2279)
  br label %2292

2281:                                             ; preds = %2273
  %2282 = load i64, ptr %135, align 8, !tbaa !42
  %2283 = mul i64 %2282, 1024
  %2284 = udiv i64 %2283, 1024
  %2285 = call i64 @mbedtls_timing_hardclock()
  %2286 = load i64, ptr %137, align 8, !tbaa !42
  %2287 = sub i64 %2285, %2286
  %2288 = load i64, ptr %136, align 8, !tbaa !42
  %2289 = mul i64 %2288, 1024
  %2290 = udiv i64 %2287, %2289
  %2291 = call i32 (ptr, ...) @printf(ptr noundef @.str.34, i64 noundef %2284, i64 noundef %2290)
  br label %2292

2292:                                             ; preds = %2281, %2276
  call void @llvm.lifetime.end.p0(i64 4, ptr %138) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #8
  br label %2293

2293:                                             ; preds = %2292
  br label %2294

2294:                                             ; preds = %2293
  call void @mbedtls_hmac_drbg_free(ptr noundef %121)
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr %121) #8
  br label %2295

2295:                                             ; preds = %2294, %2042
  %2296 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 24
  %2297 = load i8, ptr %2296, align 1, !tbaa !36
  %2298 = icmp ne i8 %2297, 0
  br i1 %2298, label %2299, label %2395

2299:                                             ; preds = %2295
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #8
  call void @llvm.lifetime.start.p0(i64 336, ptr %140) #8
  store i32 2048, ptr %139, align 4, !tbaa !5
  br label %2300

2300:                                             ; preds = %2391, %2299
  %2301 = load i32, ptr %139, align 4, !tbaa !5
  %2302 = icmp sle i32 %2301, 4096
  br i1 %2302, label %2303, label %2394

2303:                                             ; preds = %2300
  %2304 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %2305 = load i32, ptr %139, align 4, !tbaa !5
  %2306 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2304, i64 noundef 25, ptr noundef @.str.60, i32 noundef %2305) #8
  call void @mbedtls_rsa_init(ptr noundef %140, i32 noundef 0, i32 noundef 0)
  %2307 = load i32, ptr %139, align 4, !tbaa !5
  %2308 = call i32 @mbedtls_rsa_gen_key(ptr noundef %140, ptr noundef @myrand, ptr noundef null, i32 noundef %2307, i32 noundef 65537)
  br label %2309

2309:                                             ; preds = %2303
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #8
  %2310 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %2311 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %2310)
  %2312 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2313 = call i32 @fflush(ptr noundef %2312)
  call void @mbedtls_set_alarm(i32 noundef 3)
  store i32 0, ptr %142, align 4, !tbaa !5
  store i64 1, ptr %141, align 8, !tbaa !42
  br label %2314

2314:                                             ; preds = %2325, %2309
  %2315 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %2316 = icmp ne i32 %2315, 0
  br i1 %2316, label %2321, label %2317

2317:                                             ; preds = %2314
  %2318 = load i32, ptr %142, align 4, !tbaa !5
  %2319 = icmp ne i32 %2318, 0
  %2320 = xor i1 %2319, true
  br label %2321

2321:                                             ; preds = %2317, %2314
  %2322 = phi i1 [ false, %2314 ], [ %2320, %2317 ]
  br i1 %2322, label %2323, label %2328

2323:                                             ; preds = %2321
  store i8 0, ptr @buf, align 16, !tbaa !103
  %2324 = call i32 @mbedtls_rsa_public(ptr noundef %140, ptr noundef @buf, ptr noundef @buf)
  store i32 %2324, ptr %142, align 4, !tbaa !5
  br label %2325

2325:                                             ; preds = %2323
  %2326 = load i64, ptr %141, align 8, !tbaa !42
  %2327 = add i64 %2326, 1
  store i64 %2327, ptr %141, align 8, !tbaa !42
  br label %2314, !llvm.loop !104

2328:                                             ; preds = %2321
  %2329 = load i32, ptr %142, align 4, !tbaa !5
  %2330 = icmp eq i32 %2329, -114
  br i1 %2330, label %2331, label %2333

2331:                                             ; preds = %2328
  %2332 = call i32 (ptr, ...) @printf(ptr noundef @.str.61)
  store i32 0, ptr %142, align 4, !tbaa !5
  br label %2347

2333:                                             ; preds = %2328
  %2334 = load i32, ptr %142, align 4, !tbaa !5
  %2335 = icmp ne i32 %2334, 0
  br i1 %2335, label %2336, label %2341

2336:                                             ; preds = %2333
  %2337 = load i32, ptr %142, align 4, !tbaa !5
  %2338 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %2337, ptr noundef %2338, i64 noundef 200)
  %2339 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %2340 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %2339)
  br label %2346

2341:                                             ; preds = %2333
  %2342 = load i64, ptr %141, align 8, !tbaa !42
  %2343 = udiv i64 %2342, 3
  %2344 = call i32 (ptr, ...) @printf(ptr noundef @.str.62, i64 noundef %2343)
  %2345 = call i32 (ptr, ...) @printf(ptr noundef @.str.30)
  br label %2346

2346:                                             ; preds = %2341, %2336
  br label %2347

2347:                                             ; preds = %2346, %2331
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #8
  br label %2348

2348:                                             ; preds = %2347
  br label %2349

2349:                                             ; preds = %2348
  br label %2350

2350:                                             ; preds = %2349
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %144) #8
  %2351 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %2352 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %2351)
  %2353 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2354 = call i32 @fflush(ptr noundef %2353)
  call void @mbedtls_set_alarm(i32 noundef 3)
  store i32 0, ptr %144, align 4, !tbaa !5
  store i64 1, ptr %143, align 8, !tbaa !42
  br label %2355

2355:                                             ; preds = %2366, %2350
  %2356 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %2357 = icmp ne i32 %2356, 0
  br i1 %2357, label %2362, label %2358

2358:                                             ; preds = %2355
  %2359 = load i32, ptr %144, align 4, !tbaa !5
  %2360 = icmp ne i32 %2359, 0
  %2361 = xor i1 %2360, true
  br label %2362

2362:                                             ; preds = %2358, %2355
  %2363 = phi i1 [ false, %2355 ], [ %2361, %2358 ]
  br i1 %2363, label %2364, label %2369

2364:                                             ; preds = %2362
  store i8 0, ptr @buf, align 16, !tbaa !103
  %2365 = call i32 @mbedtls_rsa_private(ptr noundef %140, ptr noundef @myrand, ptr noundef null, ptr noundef @buf, ptr noundef @buf)
  store i32 %2365, ptr %144, align 4, !tbaa !5
  br label %2366

2366:                                             ; preds = %2364
  %2367 = load i64, ptr %143, align 8, !tbaa !42
  %2368 = add i64 %2367, 1
  store i64 %2368, ptr %143, align 8, !tbaa !42
  br label %2355, !llvm.loop !105

2369:                                             ; preds = %2362
  %2370 = load i32, ptr %144, align 4, !tbaa !5
  %2371 = icmp eq i32 %2370, -114
  br i1 %2371, label %2372, label %2374

2372:                                             ; preds = %2369
  %2373 = call i32 (ptr, ...) @printf(ptr noundef @.str.61)
  store i32 0, ptr %144, align 4, !tbaa !5
  br label %2388

2374:                                             ; preds = %2369
  %2375 = load i32, ptr %144, align 4, !tbaa !5
  %2376 = icmp ne i32 %2375, 0
  br i1 %2376, label %2377, label %2382

2377:                                             ; preds = %2374
  %2378 = load i32, ptr %144, align 4, !tbaa !5
  %2379 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %2378, ptr noundef %2379, i64 noundef 200)
  %2380 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %2381 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %2380)
  br label %2387

2382:                                             ; preds = %2374
  %2383 = load i64, ptr %143, align 8, !tbaa !42
  %2384 = udiv i64 %2383, 3
  %2385 = call i32 (ptr, ...) @printf(ptr noundef @.str.63, i64 noundef %2384)
  %2386 = call i32 (ptr, ...) @printf(ptr noundef @.str.30)
  br label %2387

2387:                                             ; preds = %2382, %2377
  br label %2388

2388:                                             ; preds = %2387, %2372
  call void @llvm.lifetime.end.p0(i64 4, ptr %144) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #8
  br label %2389

2389:                                             ; preds = %2388
  br label %2390

2390:                                             ; preds = %2389
  call void @mbedtls_rsa_free(ptr noundef %140)
  br label %2391

2391:                                             ; preds = %2390
  %2392 = load i32, ptr %139, align 4, !tbaa !5
  %2393 = mul nsw i32 %2392, 2
  store i32 %2393, ptr %139, align 4, !tbaa !5
  br label %2300, !llvm.loop !106

2394:                                             ; preds = %2300
  call void @llvm.lifetime.end.p0(i64 336, ptr %140) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #8
  br label %2395

2395:                                             ; preds = %2394, %2295
  %2396 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 25
  %2397 = load i8, ptr %2396, align 1, !tbaa !37
  %2398 = icmp ne i8 %2397, 0
  br i1 %2398, label %2399, label %2555

2399:                                             ; preds = %2395
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %145, ptr align 4 @__const.main.dhm_sizes, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %146) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %146, ptr align 16 @__const.main.dhm_P, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %147) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %147, ptr align 16 @__const.main.dhm_P_size, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %148) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %148, ptr align 16 @__const.main.dhm_G, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %149) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %149, ptr align 16 @__const.main.dhm_G_size, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 248, ptr %150) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #8
  store i32 0, ptr %6, align 4, !tbaa !5
  br label %2400

2400:                                             ; preds = %2551, %2399
  %2401 = load i32, ptr %6, align 4, !tbaa !5
  %2402 = sext i32 %2401 to i64
  %2403 = icmp ult i64 %2402, 2
  br i1 %2403, label %2404, label %2554

2404:                                             ; preds = %2400
  call void @mbedtls_dhm_init(ptr noundef %150)
  %2405 = getelementptr inbounds %struct.mbedtls_dhm_context, ptr %150, i32 0, i32 1
  %2406 = load i32, ptr %6, align 4, !tbaa !5
  %2407 = sext i32 %2406 to i64
  %2408 = getelementptr inbounds [2 x ptr], ptr %146, i64 0, i64 %2407
  %2409 = load ptr, ptr %2408, align 8, !tbaa !9
  %2410 = load i32, ptr %6, align 4, !tbaa !5
  %2411 = sext i32 %2410 to i64
  %2412 = getelementptr inbounds [2 x i64], ptr %147, i64 0, i64 %2411
  %2413 = load i64, ptr %2412, align 8, !tbaa !42
  %2414 = call i32 @mbedtls_mpi_read_binary(ptr noundef %2405, ptr noundef %2409, i64 noundef %2413)
  %2415 = icmp ne i32 %2414, 0
  br i1 %2415, label %2428, label %2416

2416:                                             ; preds = %2404
  %2417 = getelementptr inbounds %struct.mbedtls_dhm_context, ptr %150, i32 0, i32 2
  %2418 = load i32, ptr %6, align 4, !tbaa !5
  %2419 = sext i32 %2418 to i64
  %2420 = getelementptr inbounds [2 x ptr], ptr %148, i64 0, i64 %2419
  %2421 = load ptr, ptr %2420, align 8, !tbaa !9
  %2422 = load i32, ptr %6, align 4, !tbaa !5
  %2423 = sext i32 %2422 to i64
  %2424 = getelementptr inbounds [2 x i64], ptr %149, i64 0, i64 %2423
  %2425 = load i64, ptr %2424, align 8, !tbaa !42
  %2426 = call i32 @mbedtls_mpi_read_binary(ptr noundef %2417, ptr noundef %2421, i64 noundef %2425)
  %2427 = icmp ne i32 %2426, 0
  br i1 %2427, label %2428, label %2429

2428:                                             ; preds = %2416, %2404
  call void @exit(i32 noundef 1) #10
  unreachable

2429:                                             ; preds = %2416
  %2430 = getelementptr inbounds %struct.mbedtls_dhm_context, ptr %150, i32 0, i32 1
  %2431 = call i64 @mbedtls_mpi_size(ptr noundef %2430)
  %2432 = getelementptr inbounds %struct.mbedtls_dhm_context, ptr %150, i32 0, i32 0
  store i64 %2431, ptr %2432, align 8, !tbaa !107
  %2433 = getelementptr inbounds %struct.mbedtls_dhm_context, ptr %150, i32 0, i32 0
  %2434 = load i64, ptr %2433, align 8, !tbaa !107
  %2435 = trunc i64 %2434 to i32
  %2436 = getelementptr inbounds %struct.mbedtls_dhm_context, ptr %150, i32 0, i32 0
  %2437 = load i64, ptr %2436, align 8, !tbaa !107
  %2438 = call i32 @mbedtls_dhm_make_public(ptr noundef %150, i32 noundef %2435, ptr noundef @buf, i64 noundef %2437, ptr noundef @myrand, ptr noundef null)
  %2439 = getelementptr inbounds %struct.mbedtls_dhm_context, ptr %150, i32 0, i32 5
  %2440 = getelementptr inbounds %struct.mbedtls_dhm_context, ptr %150, i32 0, i32 4
  %2441 = call i32 @mbedtls_mpi_copy(ptr noundef %2439, ptr noundef %2440)
  %2442 = icmp ne i32 %2441, 0
  br i1 %2442, label %2443, label %2444

2443:                                             ; preds = %2429
  call void @exit(i32 noundef 1) #10
  unreachable

2444:                                             ; preds = %2429
  %2445 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %2446 = load i32, ptr %6, align 4, !tbaa !5
  %2447 = sext i32 %2446 to i64
  %2448 = getelementptr inbounds [2 x i32], ptr %145, i64 0, i64 %2447
  %2449 = load i32, ptr %2448, align 4, !tbaa !5
  %2450 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2445, i64 noundef 25, ptr noundef @.str.64, i32 noundef %2449) #8
  br label %2451

2451:                                             ; preds = %2444
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %153) #8
  %2452 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %2453 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %2452)
  %2454 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2455 = call i32 @fflush(ptr noundef %2454)
  call void @mbedtls_set_alarm(i32 noundef 3)
  store i32 0, ptr %153, align 4, !tbaa !5
  store i64 1, ptr %152, align 8, !tbaa !42
  br label %2456

2456:                                             ; preds = %2477, %2451
  %2457 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %2458 = icmp ne i32 %2457, 0
  br i1 %2458, label %2463, label %2459

2459:                                             ; preds = %2456
  %2460 = load i32, ptr %153, align 4, !tbaa !5
  %2461 = icmp ne i32 %2460, 0
  %2462 = xor i1 %2461, true
  br label %2463

2463:                                             ; preds = %2459, %2456
  %2464 = phi i1 [ false, %2456 ], [ %2462, %2459 ]
  br i1 %2464, label %2465, label %2480

2465:                                             ; preds = %2463
  %2466 = getelementptr inbounds %struct.mbedtls_dhm_context, ptr %150, i32 0, i32 0
  %2467 = load i64, ptr %2466, align 8, !tbaa !107
  %2468 = trunc i64 %2467 to i32
  %2469 = getelementptr inbounds %struct.mbedtls_dhm_context, ptr %150, i32 0, i32 0
  %2470 = load i64, ptr %2469, align 8, !tbaa !107
  %2471 = call i32 @mbedtls_dhm_make_public(ptr noundef %150, i32 noundef %2468, ptr noundef @buf, i64 noundef %2470, ptr noundef @myrand, ptr noundef null)
  %2472 = load i32, ptr %153, align 4, !tbaa !5
  %2473 = or i32 %2472, %2471
  store i32 %2473, ptr %153, align 4, !tbaa !5
  %2474 = call i32 @mbedtls_dhm_calc_secret(ptr noundef %150, ptr noundef @buf, i64 noundef 1024, ptr noundef %151, ptr noundef @myrand, ptr noundef null)
  %2475 = load i32, ptr %153, align 4, !tbaa !5
  %2476 = or i32 %2475, %2474
  store i32 %2476, ptr %153, align 4, !tbaa !5
  br label %2477

2477:                                             ; preds = %2465
  %2478 = load i64, ptr %152, align 8, !tbaa !42
  %2479 = add i64 %2478, 1
  store i64 %2479, ptr %152, align 8, !tbaa !42
  br label %2456, !llvm.loop !110

2480:                                             ; preds = %2463
  %2481 = load i32, ptr %153, align 4, !tbaa !5
  %2482 = icmp eq i32 %2481, -114
  br i1 %2482, label %2483, label %2485

2483:                                             ; preds = %2480
  %2484 = call i32 (ptr, ...) @printf(ptr noundef @.str.61)
  store i32 0, ptr %153, align 4, !tbaa !5
  br label %2499

2485:                                             ; preds = %2480
  %2486 = load i32, ptr %153, align 4, !tbaa !5
  %2487 = icmp ne i32 %2486, 0
  br i1 %2487, label %2488, label %2493

2488:                                             ; preds = %2485
  %2489 = load i32, ptr %153, align 4, !tbaa !5
  %2490 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %2489, ptr noundef %2490, i64 noundef 200)
  %2491 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %2492 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %2491)
  br label %2498

2493:                                             ; preds = %2485
  %2494 = load i64, ptr %152, align 8, !tbaa !42
  %2495 = udiv i64 %2494, 3
  %2496 = call i32 (ptr, ...) @printf(ptr noundef @.str.65, i64 noundef %2495)
  %2497 = call i32 (ptr, ...) @printf(ptr noundef @.str.30)
  br label %2498

2498:                                             ; preds = %2493, %2488
  br label %2499

2499:                                             ; preds = %2498, %2483
  call void @llvm.lifetime.end.p0(i64 4, ptr %153) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #8
  br label %2500

2500:                                             ; preds = %2499
  br label %2501

2501:                                             ; preds = %2500
  %2502 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %2503 = load i32, ptr %6, align 4, !tbaa !5
  %2504 = sext i32 %2503 to i64
  %2505 = getelementptr inbounds [2 x i32], ptr %145, i64 0, i64 %2504
  %2506 = load i32, ptr %2505, align 4, !tbaa !5
  %2507 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2502, i64 noundef 25, ptr noundef @.str.66, i32 noundef %2506) #8
  br label %2508

2508:                                             ; preds = %2501
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %155) #8
  %2509 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %2510 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %2509)
  %2511 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2512 = call i32 @fflush(ptr noundef %2511)
  call void @mbedtls_set_alarm(i32 noundef 3)
  store i32 0, ptr %155, align 4, !tbaa !5
  store i64 1, ptr %154, align 8, !tbaa !42
  br label %2513

2513:                                             ; preds = %2526, %2508
  %2514 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %2515 = icmp ne i32 %2514, 0
  br i1 %2515, label %2520, label %2516

2516:                                             ; preds = %2513
  %2517 = load i32, ptr %155, align 4, !tbaa !5
  %2518 = icmp ne i32 %2517, 0
  %2519 = xor i1 %2518, true
  br label %2520

2520:                                             ; preds = %2516, %2513
  %2521 = phi i1 [ false, %2513 ], [ %2519, %2516 ]
  br i1 %2521, label %2522, label %2529

2522:                                             ; preds = %2520
  %2523 = call i32 @mbedtls_dhm_calc_secret(ptr noundef %150, ptr noundef @buf, i64 noundef 1024, ptr noundef %151, ptr noundef @myrand, ptr noundef null)
  %2524 = load i32, ptr %155, align 4, !tbaa !5
  %2525 = or i32 %2524, %2523
  store i32 %2525, ptr %155, align 4, !tbaa !5
  br label %2526

2526:                                             ; preds = %2522
  %2527 = load i64, ptr %154, align 8, !tbaa !42
  %2528 = add i64 %2527, 1
  store i64 %2528, ptr %154, align 8, !tbaa !42
  br label %2513, !llvm.loop !111

2529:                                             ; preds = %2520
  %2530 = load i32, ptr %155, align 4, !tbaa !5
  %2531 = icmp eq i32 %2530, -114
  br i1 %2531, label %2532, label %2534

2532:                                             ; preds = %2529
  %2533 = call i32 (ptr, ...) @printf(ptr noundef @.str.61)
  store i32 0, ptr %155, align 4, !tbaa !5
  br label %2548

2534:                                             ; preds = %2529
  %2535 = load i32, ptr %155, align 4, !tbaa !5
  %2536 = icmp ne i32 %2535, 0
  br i1 %2536, label %2537, label %2542

2537:                                             ; preds = %2534
  %2538 = load i32, ptr %155, align 4, !tbaa !5
  %2539 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %2538, ptr noundef %2539, i64 noundef 200)
  %2540 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %2541 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %2540)
  br label %2547

2542:                                             ; preds = %2534
  %2543 = load i64, ptr %154, align 8, !tbaa !42
  %2544 = udiv i64 %2543, 3
  %2545 = call i32 (ptr, ...) @printf(ptr noundef @.str.65, i64 noundef %2544)
  %2546 = call i32 (ptr, ...) @printf(ptr noundef @.str.30)
  br label %2547

2547:                                             ; preds = %2542, %2537
  br label %2548

2548:                                             ; preds = %2547, %2532
  call void @llvm.lifetime.end.p0(i64 4, ptr %155) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #8
  br label %2549

2549:                                             ; preds = %2548
  br label %2550

2550:                                             ; preds = %2549
  call void @mbedtls_dhm_free(ptr noundef %150)
  br label %2551

2551:                                             ; preds = %2550
  %2552 = load i32, ptr %6, align 4, !tbaa !5
  %2553 = add nsw i32 %2552, 1
  store i32 %2553, ptr %6, align 4, !tbaa !5
  br label %2400, !llvm.loop !112

2554:                                             ; preds = %2400
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #8
  call void @llvm.lifetime.end.p0(i64 248, ptr %150) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %149) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %148) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %147) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %146) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #8
  br label %2555

2555:                                             ; preds = %2554, %2395
  %2556 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 26
  %2557 = load i8, ptr %2556, align 1, !tbaa !38
  %2558 = icmp ne i8 %2557, 0
  br i1 %2558, label %2559, label %2723

2559:                                             ; preds = %2555
  call void @llvm.lifetime.start.p0(i64 344, ptr %156) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #8
  call void @llvm.memset.p0.i64(ptr align 16 @buf, i8 42, i64 1024, i1 false)
  %2560 = call ptr @mbedtls_ecp_curve_list()
  store ptr %2560, ptr %157, align 8, !tbaa !9
  br label %2561

2561:                                             ; preds = %2633, %2559
  %2562 = load ptr, ptr %157, align 8, !tbaa !9
  %2563 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2562, i32 0, i32 0
  %2564 = load i32, ptr %2563, align 8, !tbaa !113
  %2565 = icmp ne i32 %2564, 0
  br i1 %2565, label %2566, label %2636

2566:                                             ; preds = %2561
  %2567 = load ptr, ptr %157, align 8, !tbaa !9
  %2568 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2567, i32 0, i32 0
  %2569 = load i32, ptr %2568, align 8, !tbaa !113
  %2570 = call i32 @mbedtls_ecdsa_can_do(i32 noundef %2569)
  %2571 = icmp ne i32 %2570, 0
  br i1 %2571, label %2573, label %2572

2572:                                             ; preds = %2566
  br label %2633

2573:                                             ; preds = %2566
  call void @mbedtls_ecdsa_init(ptr noundef %156)
  %2574 = load ptr, ptr %157, align 8, !tbaa !9
  %2575 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2574, i32 0, i32 0
  %2576 = load i32, ptr %2575, align 8, !tbaa !113
  %2577 = call i32 @mbedtls_ecdsa_genkey(ptr noundef %156, i32 noundef %2576, ptr noundef @myrand, ptr noundef null)
  %2578 = icmp ne i32 %2577, 0
  br i1 %2578, label %2579, label %2580

2579:                                             ; preds = %2573
  call void @exit(i32 noundef 1) #10
  unreachable

2580:                                             ; preds = %2573
  %2581 = getelementptr inbounds %struct.mbedtls_ecp_keypair, ptr %156, i32 0, i32 0
  call void @ecp_clear_precomputed(ptr noundef %2581)
  %2582 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %2583 = load ptr, ptr %157, align 8, !tbaa !9
  %2584 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2583, i32 0, i32 3
  %2585 = load ptr, ptr %2584, align 8, !tbaa !116
  %2586 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2582, i64 noundef 25, ptr noundef @.str.67, ptr noundef %2585) #8
  br label %2587

2587:                                             ; preds = %2580
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %160) #8
  %2588 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %2589 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %2588)
  %2590 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2591 = call i32 @fflush(ptr noundef %2590)
  call void @mbedtls_set_alarm(i32 noundef 3)
  store i32 0, ptr %160, align 4, !tbaa !5
  store i64 1, ptr %159, align 8, !tbaa !42
  br label %2592

2592:                                             ; preds = %2608, %2587
  %2593 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %2594 = icmp ne i32 %2593, 0
  br i1 %2594, label %2599, label %2595

2595:                                             ; preds = %2592
  %2596 = load i32, ptr %160, align 4, !tbaa !5
  %2597 = icmp ne i32 %2596, 0
  %2598 = xor i1 %2597, true
  br label %2599

2599:                                             ; preds = %2595, %2592
  %2600 = phi i1 [ false, %2592 ], [ %2598, %2595 ]
  br i1 %2600, label %2601, label %2611

2601:                                             ; preds = %2599
  %2602 = load ptr, ptr %157, align 8, !tbaa !9
  %2603 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2602, i32 0, i32 2
  %2604 = load i16, ptr %2603, align 2, !tbaa !117
  %2605 = zext i16 %2604 to i64
  %2606 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %2607 = call i32 @mbedtls_ecdsa_write_signature(ptr noundef %156, i32 noundef 6, ptr noundef @buf, i64 noundef %2605, ptr noundef %2606, ptr noundef %158, ptr noundef @myrand, ptr noundef null)
  store i32 %2607, ptr %160, align 4, !tbaa !5
  br label %2608

2608:                                             ; preds = %2601
  %2609 = load i64, ptr %159, align 8, !tbaa !42
  %2610 = add i64 %2609, 1
  store i64 %2610, ptr %159, align 8, !tbaa !42
  br label %2592, !llvm.loop !118

2611:                                             ; preds = %2599
  %2612 = load i32, ptr %160, align 4, !tbaa !5
  %2613 = icmp eq i32 %2612, -114
  br i1 %2613, label %2614, label %2616

2614:                                             ; preds = %2611
  %2615 = call i32 (ptr, ...) @printf(ptr noundef @.str.61)
  store i32 0, ptr %160, align 4, !tbaa !5
  br label %2630

2616:                                             ; preds = %2611
  %2617 = load i32, ptr %160, align 4, !tbaa !5
  %2618 = icmp ne i32 %2617, 0
  br i1 %2618, label %2619, label %2624

2619:                                             ; preds = %2616
  %2620 = load i32, ptr %160, align 4, !tbaa !5
  %2621 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %2620, ptr noundef %2621, i64 noundef 200)
  %2622 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %2623 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %2622)
  br label %2629

2624:                                             ; preds = %2616
  %2625 = load i64, ptr %159, align 8, !tbaa !42
  %2626 = udiv i64 %2625, 3
  %2627 = call i32 (ptr, ...) @printf(ptr noundef @.str.68, i64 noundef %2626)
  %2628 = call i32 (ptr, ...) @printf(ptr noundef @.str.30)
  br label %2629

2629:                                             ; preds = %2624, %2619
  br label %2630

2630:                                             ; preds = %2629, %2614
  call void @llvm.lifetime.end.p0(i64 4, ptr %160) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #8
  br label %2631

2631:                                             ; preds = %2630
  br label %2632

2632:                                             ; preds = %2631
  call void @mbedtls_ecdsa_free(ptr noundef %156)
  br label %2633

2633:                                             ; preds = %2632, %2572
  %2634 = load ptr, ptr %157, align 8, !tbaa !9
  %2635 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2634, i32 1
  store ptr %2635, ptr %157, align 8, !tbaa !9
  br label %2561, !llvm.loop !119

2636:                                             ; preds = %2561
  %2637 = call ptr @mbedtls_ecp_curve_list()
  store ptr %2637, ptr %157, align 8, !tbaa !9
  br label %2638

2638:                                             ; preds = %2719, %2636
  %2639 = load ptr, ptr %157, align 8, !tbaa !9
  %2640 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2639, i32 0, i32 0
  %2641 = load i32, ptr %2640, align 8, !tbaa !113
  %2642 = icmp ne i32 %2641, 0
  br i1 %2642, label %2643, label %2722

2643:                                             ; preds = %2638
  %2644 = load ptr, ptr %157, align 8, !tbaa !9
  %2645 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2644, i32 0, i32 0
  %2646 = load i32, ptr %2645, align 8, !tbaa !113
  %2647 = call i32 @mbedtls_ecdsa_can_do(i32 noundef %2646)
  %2648 = icmp ne i32 %2647, 0
  br i1 %2648, label %2650, label %2649

2649:                                             ; preds = %2643
  br label %2719

2650:                                             ; preds = %2643
  call void @mbedtls_ecdsa_init(ptr noundef %156)
  %2651 = load ptr, ptr %157, align 8, !tbaa !9
  %2652 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2651, i32 0, i32 0
  %2653 = load i32, ptr %2652, align 8, !tbaa !113
  %2654 = call i32 @mbedtls_ecdsa_genkey(ptr noundef %156, i32 noundef %2653, ptr noundef @myrand, ptr noundef null)
  %2655 = icmp ne i32 %2654, 0
  br i1 %2655, label %2664, label %2656

2656:                                             ; preds = %2650
  %2657 = load ptr, ptr %157, align 8, !tbaa !9
  %2658 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2657, i32 0, i32 2
  %2659 = load i16, ptr %2658, align 2, !tbaa !117
  %2660 = zext i16 %2659 to i64
  %2661 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %2662 = call i32 @mbedtls_ecdsa_write_signature(ptr noundef %156, i32 noundef 6, ptr noundef @buf, i64 noundef %2660, ptr noundef %2661, ptr noundef %158, ptr noundef @myrand, ptr noundef null)
  %2663 = icmp ne i32 %2662, 0
  br i1 %2663, label %2664, label %2665

2664:                                             ; preds = %2656, %2650
  call void @exit(i32 noundef 1) #10
  unreachable

2665:                                             ; preds = %2656
  %2666 = getelementptr inbounds %struct.mbedtls_ecp_keypair, ptr %156, i32 0, i32 0
  call void @ecp_clear_precomputed(ptr noundef %2666)
  %2667 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %2668 = load ptr, ptr %157, align 8, !tbaa !9
  %2669 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2668, i32 0, i32 3
  %2670 = load ptr, ptr %2669, align 8, !tbaa !116
  %2671 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2667, i64 noundef 25, ptr noundef @.str.67, ptr noundef %2670) #8
  br label %2672

2672:                                             ; preds = %2665
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %162) #8
  %2673 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %2674 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %2673)
  %2675 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2676 = call i32 @fflush(ptr noundef %2675)
  call void @mbedtls_set_alarm(i32 noundef 3)
  store i32 0, ptr %162, align 4, !tbaa !5
  store i64 1, ptr %161, align 8, !tbaa !42
  br label %2677

2677:                                             ; preds = %2694, %2672
  %2678 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %2679 = icmp ne i32 %2678, 0
  br i1 %2679, label %2684, label %2680

2680:                                             ; preds = %2677
  %2681 = load i32, ptr %162, align 4, !tbaa !5
  %2682 = icmp ne i32 %2681, 0
  %2683 = xor i1 %2682, true
  br label %2684

2684:                                             ; preds = %2680, %2677
  %2685 = phi i1 [ false, %2677 ], [ %2683, %2680 ]
  br i1 %2685, label %2686, label %2697

2686:                                             ; preds = %2684
  %2687 = load ptr, ptr %157, align 8, !tbaa !9
  %2688 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2687, i32 0, i32 2
  %2689 = load i16, ptr %2688, align 2, !tbaa !117
  %2690 = zext i16 %2689 to i64
  %2691 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %2692 = load i64, ptr %158, align 8, !tbaa !42
  %2693 = call i32 @mbedtls_ecdsa_read_signature(ptr noundef %156, ptr noundef @buf, i64 noundef %2690, ptr noundef %2691, i64 noundef %2692)
  store i32 %2693, ptr %162, align 4, !tbaa !5
  br label %2694

2694:                                             ; preds = %2686
  %2695 = load i64, ptr %161, align 8, !tbaa !42
  %2696 = add i64 %2695, 1
  store i64 %2696, ptr %161, align 8, !tbaa !42
  br label %2677, !llvm.loop !120

2697:                                             ; preds = %2684
  %2698 = load i32, ptr %162, align 4, !tbaa !5
  %2699 = icmp eq i32 %2698, -114
  br i1 %2699, label %2700, label %2702

2700:                                             ; preds = %2697
  %2701 = call i32 (ptr, ...) @printf(ptr noundef @.str.61)
  store i32 0, ptr %162, align 4, !tbaa !5
  br label %2716

2702:                                             ; preds = %2697
  %2703 = load i32, ptr %162, align 4, !tbaa !5
  %2704 = icmp ne i32 %2703, 0
  br i1 %2704, label %2705, label %2710

2705:                                             ; preds = %2702
  %2706 = load i32, ptr %162, align 4, !tbaa !5
  %2707 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %2706, ptr noundef %2707, i64 noundef 200)
  %2708 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %2709 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %2708)
  br label %2715

2710:                                             ; preds = %2702
  %2711 = load i64, ptr %161, align 8, !tbaa !42
  %2712 = udiv i64 %2711, 3
  %2713 = call i32 (ptr, ...) @printf(ptr noundef @.str.69, i64 noundef %2712)
  %2714 = call i32 (ptr, ...) @printf(ptr noundef @.str.30)
  br label %2715

2715:                                             ; preds = %2710, %2705
  br label %2716

2716:                                             ; preds = %2715, %2700
  call void @llvm.lifetime.end.p0(i64 4, ptr %162) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #8
  br label %2717

2717:                                             ; preds = %2716
  br label %2718

2718:                                             ; preds = %2717
  call void @mbedtls_ecdsa_free(ptr noundef %156)
  br label %2719

2719:                                             ; preds = %2718, %2649
  %2720 = load ptr, ptr %157, align 8, !tbaa !9
  %2721 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2720, i32 1
  store ptr %2721, ptr %157, align 8, !tbaa !9
  br label %2638, !llvm.loop !121

2722:                                             ; preds = %2638
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #8
  call void @llvm.lifetime.end.p0(i64 344, ptr %156) #8
  br label %2723

2723:                                             ; preds = %2722, %2555
  %2724 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 27
  %2725 = load i8, ptr %2724, align 1, !tbaa !39
  %2726 = icmp ne i8 %2725, 0
  br i1 %2726, label %2727, label %3258

2727:                                             ; preds = %2723
  call void @llvm.lifetime.start.p0(i64 616, ptr %163) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %164) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr %165) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %165, ptr align 16 @__const.main.montgomery_curve_list, i64 48, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #8
  %2728 = call ptr @mbedtls_ecp_curve_list()
  store ptr %2728, ptr %166, align 8, !tbaa !9
  br label %2729

2729:                                             ; preds = %2864, %2727
  %2730 = load ptr, ptr %166, align 8, !tbaa !9
  %2731 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2730, i32 0, i32 0
  %2732 = load i32, ptr %2731, align 8, !tbaa !113
  %2733 = icmp ne i32 %2732, 0
  br i1 %2733, label %2734, label %2867

2734:                                             ; preds = %2729
  %2735 = load ptr, ptr %166, align 8, !tbaa !9
  %2736 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2735, i32 0, i32 0
  %2737 = load i32, ptr %2736, align 8, !tbaa !113
  %2738 = call i32 @mbedtls_ecdh_can_do(i32 noundef %2737)
  %2739 = icmp ne i32 %2738, 0
  br i1 %2739, label %2741, label %2740

2740:                                             ; preds = %2734
  br label %2864

2741:                                             ; preds = %2734
  call void @mbedtls_ecdh_init(ptr noundef %163)
  call void @llvm.lifetime.start.p0(i64 4, ptr %168) #8
  %2742 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 0
  %2743 = load ptr, ptr %166, align 8, !tbaa !9
  %2744 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2743, i32 0, i32 0
  %2745 = load i32, ptr %2744, align 8, !tbaa !113
  %2746 = call i32 @mbedtls_ecp_group_load(ptr noundef %2742, i32 noundef %2745)
  store i32 %2746, ptr %168, align 4, !tbaa !5
  %2747 = load i32, ptr %168, align 4, !tbaa !5
  %2748 = icmp eq i32 %2747, -114
  br i1 %2748, label %2749, label %2751

2749:                                             ; preds = %2741
  %2750 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 278, ptr %169, align 4
  br label %2757

2751:                                             ; preds = %2741
  %2752 = load i32, ptr %168, align 4, !tbaa !5
  %2753 = icmp ne i32 %2752, 0
  br i1 %2753, label %2754, label %2755

2754:                                             ; preds = %2751
  call void @exit(i32 noundef 1) #10
  unreachable

2755:                                             ; preds = %2751
  br label %2756

2756:                                             ; preds = %2755
  store i32 0, ptr %169, align 4
  br label %2757

2757:                                             ; preds = %2756, %2749
  call void @llvm.lifetime.end.p0(i64 4, ptr %168) #8
  %2758 = load i32, ptr %169, align 4
  switch i32 %2758, label %3444 [
    i32 0, label %2759
    i32 278, label %2864
  ]

2759:                                             ; preds = %2757
  call void @llvm.lifetime.start.p0(i64 4, ptr %170) #8
  %2760 = call i32 @mbedtls_ecdh_make_public(ptr noundef %163, ptr noundef %167, ptr noundef @buf, i64 noundef 1024, ptr noundef @myrand, ptr noundef null)
  store i32 %2760, ptr %170, align 4, !tbaa !5
  %2761 = load i32, ptr %170, align 4, !tbaa !5
  %2762 = icmp eq i32 %2761, -114
  br i1 %2762, label %2763, label %2765

2763:                                             ; preds = %2759
  %2764 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 278, ptr %169, align 4
  br label %2771

2765:                                             ; preds = %2759
  %2766 = load i32, ptr %170, align 4, !tbaa !5
  %2767 = icmp ne i32 %2766, 0
  br i1 %2767, label %2768, label %2769

2768:                                             ; preds = %2765
  call void @exit(i32 noundef 1) #10
  unreachable

2769:                                             ; preds = %2765
  br label %2770

2770:                                             ; preds = %2769
  store i32 0, ptr %169, align 4
  br label %2771

2771:                                             ; preds = %2770, %2763
  call void @llvm.lifetime.end.p0(i64 4, ptr %170) #8
  %2772 = load i32, ptr %169, align 4
  switch i32 %2772, label %3444 [
    i32 0, label %2773
    i32 278, label %2864
  ]

2773:                                             ; preds = %2771
  call void @llvm.lifetime.start.p0(i64 4, ptr %171) #8
  %2774 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 3
  %2775 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 2
  %2776 = call i32 @mbedtls_ecp_copy(ptr noundef %2774, ptr noundef %2775)
  store i32 %2776, ptr %171, align 4, !tbaa !5
  %2777 = load i32, ptr %171, align 4, !tbaa !5
  %2778 = icmp eq i32 %2777, -114
  br i1 %2778, label %2779, label %2781

2779:                                             ; preds = %2773
  %2780 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 278, ptr %169, align 4
  br label %2787

2781:                                             ; preds = %2773
  %2782 = load i32, ptr %171, align 4, !tbaa !5
  %2783 = icmp ne i32 %2782, 0
  br i1 %2783, label %2784, label %2785

2784:                                             ; preds = %2781
  call void @exit(i32 noundef 1) #10
  unreachable

2785:                                             ; preds = %2781
  br label %2786

2786:                                             ; preds = %2785
  store i32 0, ptr %169, align 4
  br label %2787

2787:                                             ; preds = %2786, %2779
  call void @llvm.lifetime.end.p0(i64 4, ptr %171) #8
  %2788 = load i32, ptr %169, align 4
  switch i32 %2788, label %3444 [
    i32 0, label %2789
    i32 278, label %2864
  ]

2789:                                             ; preds = %2787
  %2790 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 0
  call void @ecp_clear_precomputed(ptr noundef %2790)
  %2791 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %2792 = load ptr, ptr %166, align 8, !tbaa !9
  %2793 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2792, i32 0, i32 3
  %2794 = load ptr, ptr %2793, align 8, !tbaa !116
  %2795 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2791, i64 noundef 25, ptr noundef @.str.73, ptr noundef %2794) #8
  br label %2796

2796:                                             ; preds = %2789
  call void @llvm.lifetime.start.p0(i64 8, ptr %172) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %173) #8
  %2797 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %2798 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %2797)
  %2799 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2800 = call i32 @fflush(ptr noundef %2799)
  call void @mbedtls_set_alarm(i32 noundef 3)
  store i32 0, ptr %173, align 4, !tbaa !5
  store i64 1, ptr %172, align 8, !tbaa !42
  br label %2801

2801:                                             ; preds = %2839, %2796
  %2802 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %2803 = icmp ne i32 %2802, 0
  br i1 %2803, label %2808, label %2804

2804:                                             ; preds = %2801
  %2805 = load i32, ptr %173, align 4, !tbaa !5
  %2806 = icmp ne i32 %2805, 0
  %2807 = xor i1 %2806, true
  br label %2808

2808:                                             ; preds = %2804, %2801
  %2809 = phi i1 [ false, %2801 ], [ %2807, %2804 ]
  br i1 %2809, label %2810, label %2842

2810:                                             ; preds = %2808
  call void @llvm.lifetime.start.p0(i64 4, ptr %174) #8
  %2811 = call i32 @mbedtls_ecdh_make_public(ptr noundef %163, ptr noundef %167, ptr noundef @buf, i64 noundef 1024, ptr noundef @myrand, ptr noundef null)
  store i32 %2811, ptr %174, align 4, !tbaa !5
  %2812 = load i32, ptr %174, align 4, !tbaa !5
  %2813 = icmp eq i32 %2812, -114
  br i1 %2813, label %2814, label %2816

2814:                                             ; preds = %2810
  %2815 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 283, ptr %169, align 4
  br label %2822

2816:                                             ; preds = %2810
  %2817 = load i32, ptr %174, align 4, !tbaa !5
  %2818 = icmp ne i32 %2817, 0
  br i1 %2818, label %2819, label %2820

2819:                                             ; preds = %2816
  call void @exit(i32 noundef 1) #10
  unreachable

2820:                                             ; preds = %2816
  br label %2821

2821:                                             ; preds = %2820
  store i32 0, ptr %169, align 4
  br label %2822

2822:                                             ; preds = %2821, %2814
  call void @llvm.lifetime.end.p0(i64 4, ptr %174) #8
  %2823 = load i32, ptr %169, align 4
  switch i32 %2823, label %3444 [
    i32 0, label %2824
    i32 283, label %2839
  ]

2824:                                             ; preds = %2822
  call void @llvm.lifetime.start.p0(i64 4, ptr %175) #8
  %2825 = call i32 @mbedtls_ecdh_calc_secret(ptr noundef %163, ptr noundef %167, ptr noundef @buf, i64 noundef 1024, ptr noundef @myrand, ptr noundef null)
  store i32 %2825, ptr %175, align 4, !tbaa !5
  %2826 = load i32, ptr %175, align 4, !tbaa !5
  %2827 = icmp eq i32 %2826, -114
  br i1 %2827, label %2828, label %2830

2828:                                             ; preds = %2824
  %2829 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 283, ptr %169, align 4
  br label %2836

2830:                                             ; preds = %2824
  %2831 = load i32, ptr %175, align 4, !tbaa !5
  %2832 = icmp ne i32 %2831, 0
  br i1 %2832, label %2833, label %2834

2833:                                             ; preds = %2830
  call void @exit(i32 noundef 1) #10
  unreachable

2834:                                             ; preds = %2830
  br label %2835

2835:                                             ; preds = %2834
  store i32 0, ptr %169, align 4
  br label %2836

2836:                                             ; preds = %2835, %2828
  call void @llvm.lifetime.end.p0(i64 4, ptr %175) #8
  %2837 = load i32, ptr %169, align 4
  switch i32 %2837, label %3444 [
    i32 0, label %2838
    i32 283, label %2839
  ]

2838:                                             ; preds = %2836
  br label %2839

2839:                                             ; preds = %2838, %2836, %2822
  %2840 = load i64, ptr %172, align 8, !tbaa !42
  %2841 = add i64 %2840, 1
  store i64 %2841, ptr %172, align 8, !tbaa !42
  br label %2801, !llvm.loop !122

2842:                                             ; preds = %2808
  %2843 = load i32, ptr %173, align 4, !tbaa !5
  %2844 = icmp eq i32 %2843, -114
  br i1 %2844, label %2845, label %2847

2845:                                             ; preds = %2842
  %2846 = call i32 (ptr, ...) @printf(ptr noundef @.str.61)
  store i32 0, ptr %173, align 4, !tbaa !5
  br label %2861

2847:                                             ; preds = %2842
  %2848 = load i32, ptr %173, align 4, !tbaa !5
  %2849 = icmp ne i32 %2848, 0
  br i1 %2849, label %2850, label %2855

2850:                                             ; preds = %2847
  %2851 = load i32, ptr %173, align 4, !tbaa !5
  %2852 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %2851, ptr noundef %2852, i64 noundef 200)
  %2853 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %2854 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %2853)
  br label %2860

2855:                                             ; preds = %2847
  %2856 = load i64, ptr %172, align 8, !tbaa !42
  %2857 = udiv i64 %2856, 3
  %2858 = call i32 (ptr, ...) @printf(ptr noundef @.str.65, i64 noundef %2857)
  %2859 = call i32 (ptr, ...) @printf(ptr noundef @.str.30)
  br label %2860

2860:                                             ; preds = %2855, %2850
  br label %2861

2861:                                             ; preds = %2860, %2845
  call void @llvm.lifetime.end.p0(i64 4, ptr %173) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #8
  br label %2862

2862:                                             ; preds = %2861
  br label %2863

2863:                                             ; preds = %2862
  call void @mbedtls_ecdh_free(ptr noundef %163)
  br label %2864

2864:                                             ; preds = %2863, %2787, %2771, %2757, %2740
  %2865 = load ptr, ptr %166, align 8, !tbaa !9
  %2866 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2865, i32 1
  store ptr %2866, ptr %166, align 8, !tbaa !9
  br label %2729, !llvm.loop !123

2867:                                             ; preds = %2729
  %2868 = getelementptr inbounds [3 x %struct.mbedtls_ecp_curve_info], ptr %165, i64 0, i64 0
  store ptr %2868, ptr %166, align 8, !tbaa !9
  br label %2869

2869:                                             ; preds = %2989, %2867
  %2870 = load ptr, ptr %166, align 8, !tbaa !9
  %2871 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2870, i32 0, i32 0
  %2872 = load i32, ptr %2871, align 8, !tbaa !113
  %2873 = icmp ne i32 %2872, 0
  br i1 %2873, label %2874, label %2992

2874:                                             ; preds = %2869
  call void @mbedtls_ecdh_init(ptr noundef %163)
  call void @mbedtls_mpi_init(ptr noundef %164)
  call void @llvm.lifetime.start.p0(i64 4, ptr %176) #8
  %2875 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 0
  %2876 = load ptr, ptr %166, align 8, !tbaa !9
  %2877 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2876, i32 0, i32 0
  %2878 = load i32, ptr %2877, align 8, !tbaa !113
  %2879 = call i32 @mbedtls_ecp_group_load(ptr noundef %2875, i32 noundef %2878)
  store i32 %2879, ptr %176, align 4, !tbaa !5
  %2880 = load i32, ptr %176, align 4, !tbaa !5
  %2881 = icmp eq i32 %2880, -114
  br i1 %2881, label %2882, label %2884

2882:                                             ; preds = %2874
  %2883 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 286, ptr %169, align 4
  br label %2890

2884:                                             ; preds = %2874
  %2885 = load i32, ptr %176, align 4, !tbaa !5
  %2886 = icmp ne i32 %2885, 0
  br i1 %2886, label %2887, label %2888

2887:                                             ; preds = %2884
  call void @exit(i32 noundef 1) #10
  unreachable

2888:                                             ; preds = %2884
  br label %2889

2889:                                             ; preds = %2888
  store i32 0, ptr %169, align 4
  br label %2890

2890:                                             ; preds = %2889, %2882
  call void @llvm.lifetime.end.p0(i64 4, ptr %176) #8
  %2891 = load i32, ptr %169, align 4
  switch i32 %2891, label %3444 [
    i32 0, label %2892
    i32 286, label %2989
  ]

2892:                                             ; preds = %2890
  call void @llvm.lifetime.start.p0(i64 4, ptr %177) #8
  %2893 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 0
  %2894 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 1
  %2895 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 3
  %2896 = call i32 @mbedtls_ecdh_gen_public(ptr noundef %2893, ptr noundef %2894, ptr noundef %2895, ptr noundef @myrand, ptr noundef null)
  store i32 %2896, ptr %177, align 4, !tbaa !5
  %2897 = load i32, ptr %177, align 4, !tbaa !5
  %2898 = icmp eq i32 %2897, -114
  br i1 %2898, label %2899, label %2901

2899:                                             ; preds = %2892
  %2900 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 286, ptr %169, align 4
  br label %2907

2901:                                             ; preds = %2892
  %2902 = load i32, ptr %177, align 4, !tbaa !5
  %2903 = icmp ne i32 %2902, 0
  br i1 %2903, label %2904, label %2905

2904:                                             ; preds = %2901
  call void @exit(i32 noundef 1) #10
  unreachable

2905:                                             ; preds = %2901
  br label %2906

2906:                                             ; preds = %2905
  store i32 0, ptr %169, align 4
  br label %2907

2907:                                             ; preds = %2906, %2899
  call void @llvm.lifetime.end.p0(i64 4, ptr %177) #8
  %2908 = load i32, ptr %169, align 4
  switch i32 %2908, label %3444 [
    i32 0, label %2909
    i32 286, label %2989
  ]

2909:                                             ; preds = %2907
  %2910 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %2911 = load ptr, ptr %166, align 8, !tbaa !9
  %2912 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2911, i32 0, i32 3
  %2913 = load ptr, ptr %2912, align 8, !tbaa !116
  %2914 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %2910, i64 noundef 25, ptr noundef @.str.73, ptr noundef %2913) #8
  br label %2915

2915:                                             ; preds = %2909
  call void @llvm.lifetime.start.p0(i64 8, ptr %178) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %179) #8
  %2916 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %2917 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %2916)
  %2918 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2919 = call i32 @fflush(ptr noundef %2918)
  call void @mbedtls_set_alarm(i32 noundef 3)
  store i32 0, ptr %179, align 4, !tbaa !5
  store i64 1, ptr %178, align 8, !tbaa !42
  br label %2920

2920:                                             ; preds = %2964, %2915
  %2921 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %2922 = icmp ne i32 %2921, 0
  br i1 %2922, label %2927, label %2923

2923:                                             ; preds = %2920
  %2924 = load i32, ptr %179, align 4, !tbaa !5
  %2925 = icmp ne i32 %2924, 0
  %2926 = xor i1 %2925, true
  br label %2927

2927:                                             ; preds = %2923, %2920
  %2928 = phi i1 [ false, %2920 ], [ %2926, %2923 ]
  br i1 %2928, label %2929, label %2967

2929:                                             ; preds = %2927
  call void @llvm.lifetime.start.p0(i64 4, ptr %180) #8
  %2930 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 0
  %2931 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 1
  %2932 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 2
  %2933 = call i32 @mbedtls_ecdh_gen_public(ptr noundef %2930, ptr noundef %2931, ptr noundef %2932, ptr noundef @myrand, ptr noundef null)
  store i32 %2933, ptr %180, align 4, !tbaa !5
  %2934 = load i32, ptr %180, align 4, !tbaa !5
  %2935 = icmp eq i32 %2934, -114
  br i1 %2935, label %2936, label %2938

2936:                                             ; preds = %2929
  %2937 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 291, ptr %169, align 4
  br label %2944

2938:                                             ; preds = %2929
  %2939 = load i32, ptr %180, align 4, !tbaa !5
  %2940 = icmp ne i32 %2939, 0
  br i1 %2940, label %2941, label %2942

2941:                                             ; preds = %2938
  call void @exit(i32 noundef 1) #10
  unreachable

2942:                                             ; preds = %2938
  br label %2943

2943:                                             ; preds = %2942
  store i32 0, ptr %169, align 4
  br label %2944

2944:                                             ; preds = %2943, %2936
  call void @llvm.lifetime.end.p0(i64 4, ptr %180) #8
  %2945 = load i32, ptr %169, align 4
  switch i32 %2945, label %3444 [
    i32 0, label %2946
    i32 291, label %2964
  ]

2946:                                             ; preds = %2944
  call void @llvm.lifetime.start.p0(i64 4, ptr %181) #8
  %2947 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 0
  %2948 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 3
  %2949 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 1
  %2950 = call i32 @mbedtls_ecdh_compute_shared(ptr noundef %2947, ptr noundef %164, ptr noundef %2948, ptr noundef %2949, ptr noundef @myrand, ptr noundef null)
  store i32 %2950, ptr %181, align 4, !tbaa !5
  %2951 = load i32, ptr %181, align 4, !tbaa !5
  %2952 = icmp eq i32 %2951, -114
  br i1 %2952, label %2953, label %2955

2953:                                             ; preds = %2946
  %2954 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 291, ptr %169, align 4
  br label %2961

2955:                                             ; preds = %2946
  %2956 = load i32, ptr %181, align 4, !tbaa !5
  %2957 = icmp ne i32 %2956, 0
  br i1 %2957, label %2958, label %2959

2958:                                             ; preds = %2955
  call void @exit(i32 noundef 1) #10
  unreachable

2959:                                             ; preds = %2955
  br label %2960

2960:                                             ; preds = %2959
  store i32 0, ptr %169, align 4
  br label %2961

2961:                                             ; preds = %2960, %2953
  call void @llvm.lifetime.end.p0(i64 4, ptr %181) #8
  %2962 = load i32, ptr %169, align 4
  switch i32 %2962, label %3444 [
    i32 0, label %2963
    i32 291, label %2964
  ]

2963:                                             ; preds = %2961
  br label %2964

2964:                                             ; preds = %2963, %2961, %2944
  %2965 = load i64, ptr %178, align 8, !tbaa !42
  %2966 = add i64 %2965, 1
  store i64 %2966, ptr %178, align 8, !tbaa !42
  br label %2920, !llvm.loop !124

2967:                                             ; preds = %2927
  %2968 = load i32, ptr %179, align 4, !tbaa !5
  %2969 = icmp eq i32 %2968, -114
  br i1 %2969, label %2970, label %2972

2970:                                             ; preds = %2967
  %2971 = call i32 (ptr, ...) @printf(ptr noundef @.str.61)
  store i32 0, ptr %179, align 4, !tbaa !5
  br label %2986

2972:                                             ; preds = %2967
  %2973 = load i32, ptr %179, align 4, !tbaa !5
  %2974 = icmp ne i32 %2973, 0
  br i1 %2974, label %2975, label %2980

2975:                                             ; preds = %2972
  %2976 = load i32, ptr %179, align 4, !tbaa !5
  %2977 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %2976, ptr noundef %2977, i64 noundef 200)
  %2978 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %2979 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %2978)
  br label %2985

2980:                                             ; preds = %2972
  %2981 = load i64, ptr %178, align 8, !tbaa !42
  %2982 = udiv i64 %2981, 3
  %2983 = call i32 (ptr, ...) @printf(ptr noundef @.str.65, i64 noundef %2982)
  %2984 = call i32 (ptr, ...) @printf(ptr noundef @.str.30)
  br label %2985

2985:                                             ; preds = %2980, %2975
  br label %2986

2986:                                             ; preds = %2985, %2970
  call void @llvm.lifetime.end.p0(i64 4, ptr %179) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #8
  br label %2987

2987:                                             ; preds = %2986
  br label %2988

2988:                                             ; preds = %2987
  call void @mbedtls_ecdh_free(ptr noundef %163)
  call void @mbedtls_mpi_free(ptr noundef %164)
  br label %2989

2989:                                             ; preds = %2988, %2907, %2890
  %2990 = load ptr, ptr %166, align 8, !tbaa !9
  %2991 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2990, i32 1
  store ptr %2991, ptr %166, align 8, !tbaa !9
  br label %2869, !llvm.loop !125

2992:                                             ; preds = %2869
  %2993 = call ptr @mbedtls_ecp_curve_list()
  store ptr %2993, ptr %166, align 8, !tbaa !9
  br label %2994

2994:                                             ; preds = %3129, %2992
  %2995 = load ptr, ptr %166, align 8, !tbaa !9
  %2996 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %2995, i32 0, i32 0
  %2997 = load i32, ptr %2996, align 8, !tbaa !113
  %2998 = icmp ne i32 %2997, 0
  br i1 %2998, label %2999, label %3132

2999:                                             ; preds = %2994
  %3000 = load ptr, ptr %166, align 8, !tbaa !9
  %3001 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %3000, i32 0, i32 0
  %3002 = load i32, ptr %3001, align 8, !tbaa !113
  %3003 = call i32 @mbedtls_ecdh_can_do(i32 noundef %3002)
  %3004 = icmp ne i32 %3003, 0
  br i1 %3004, label %3006, label %3005

3005:                                             ; preds = %2999
  br label %3129

3006:                                             ; preds = %2999
  call void @mbedtls_ecdh_init(ptr noundef %163)
  call void @llvm.lifetime.start.p0(i64 4, ptr %182) #8
  %3007 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 0
  %3008 = load ptr, ptr %166, align 8, !tbaa !9
  %3009 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %3008, i32 0, i32 0
  %3010 = load i32, ptr %3009, align 8, !tbaa !113
  %3011 = call i32 @mbedtls_ecp_group_load(ptr noundef %3007, i32 noundef %3010)
  store i32 %3011, ptr %182, align 4, !tbaa !5
  %3012 = load i32, ptr %182, align 4, !tbaa !5
  %3013 = icmp eq i32 %3012, -114
  br i1 %3013, label %3014, label %3016

3014:                                             ; preds = %3006
  %3015 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 294, ptr %169, align 4
  br label %3022

3016:                                             ; preds = %3006
  %3017 = load i32, ptr %182, align 4, !tbaa !5
  %3018 = icmp ne i32 %3017, 0
  br i1 %3018, label %3019, label %3020

3019:                                             ; preds = %3016
  call void @exit(i32 noundef 1) #10
  unreachable

3020:                                             ; preds = %3016
  br label %3021

3021:                                             ; preds = %3020
  store i32 0, ptr %169, align 4
  br label %3022

3022:                                             ; preds = %3021, %3014
  call void @llvm.lifetime.end.p0(i64 4, ptr %182) #8
  %3023 = load i32, ptr %169, align 4
  switch i32 %3023, label %3444 [
    i32 0, label %3024
    i32 294, label %3129
  ]

3024:                                             ; preds = %3022
  call void @llvm.lifetime.start.p0(i64 4, ptr %183) #8
  %3025 = call i32 @mbedtls_ecdh_make_public(ptr noundef %163, ptr noundef %167, ptr noundef @buf, i64 noundef 1024, ptr noundef @myrand, ptr noundef null)
  store i32 %3025, ptr %183, align 4, !tbaa !5
  %3026 = load i32, ptr %183, align 4, !tbaa !5
  %3027 = icmp eq i32 %3026, -114
  br i1 %3027, label %3028, label %3030

3028:                                             ; preds = %3024
  %3029 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 294, ptr %169, align 4
  br label %3036

3030:                                             ; preds = %3024
  %3031 = load i32, ptr %183, align 4, !tbaa !5
  %3032 = icmp ne i32 %3031, 0
  br i1 %3032, label %3033, label %3034

3033:                                             ; preds = %3030
  call void @exit(i32 noundef 1) #10
  unreachable

3034:                                             ; preds = %3030
  br label %3035

3035:                                             ; preds = %3034
  store i32 0, ptr %169, align 4
  br label %3036

3036:                                             ; preds = %3035, %3028
  call void @llvm.lifetime.end.p0(i64 4, ptr %183) #8
  %3037 = load i32, ptr %169, align 4
  switch i32 %3037, label %3444 [
    i32 0, label %3038
    i32 294, label %3129
  ]

3038:                                             ; preds = %3036
  call void @llvm.lifetime.start.p0(i64 4, ptr %184) #8
  %3039 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 3
  %3040 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 2
  %3041 = call i32 @mbedtls_ecp_copy(ptr noundef %3039, ptr noundef %3040)
  store i32 %3041, ptr %184, align 4, !tbaa !5
  %3042 = load i32, ptr %184, align 4, !tbaa !5
  %3043 = icmp eq i32 %3042, -114
  br i1 %3043, label %3044, label %3046

3044:                                             ; preds = %3038
  %3045 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 294, ptr %169, align 4
  br label %3052

3046:                                             ; preds = %3038
  %3047 = load i32, ptr %184, align 4, !tbaa !5
  %3048 = icmp ne i32 %3047, 0
  br i1 %3048, label %3049, label %3050

3049:                                             ; preds = %3046
  call void @exit(i32 noundef 1) #10
  unreachable

3050:                                             ; preds = %3046
  br label %3051

3051:                                             ; preds = %3050
  store i32 0, ptr %169, align 4
  br label %3052

3052:                                             ; preds = %3051, %3044
  call void @llvm.lifetime.end.p0(i64 4, ptr %184) #8
  %3053 = load i32, ptr %169, align 4
  switch i32 %3053, label %3444 [
    i32 0, label %3054
    i32 294, label %3129
  ]

3054:                                             ; preds = %3052
  call void @llvm.lifetime.start.p0(i64 4, ptr %185) #8
  %3055 = call i32 @mbedtls_ecdh_make_public(ptr noundef %163, ptr noundef %167, ptr noundef @buf, i64 noundef 1024, ptr noundef @myrand, ptr noundef null)
  store i32 %3055, ptr %185, align 4, !tbaa !5
  %3056 = load i32, ptr %185, align 4, !tbaa !5
  %3057 = icmp eq i32 %3056, -114
  br i1 %3057, label %3058, label %3060

3058:                                             ; preds = %3054
  %3059 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 294, ptr %169, align 4
  br label %3066

3060:                                             ; preds = %3054
  %3061 = load i32, ptr %185, align 4, !tbaa !5
  %3062 = icmp ne i32 %3061, 0
  br i1 %3062, label %3063, label %3064

3063:                                             ; preds = %3060
  call void @exit(i32 noundef 1) #10
  unreachable

3064:                                             ; preds = %3060
  br label %3065

3065:                                             ; preds = %3064
  store i32 0, ptr %169, align 4
  br label %3066

3066:                                             ; preds = %3065, %3058
  call void @llvm.lifetime.end.p0(i64 4, ptr %185) #8
  %3067 = load i32, ptr %169, align 4
  switch i32 %3067, label %3444 [
    i32 0, label %3068
    i32 294, label %3129
  ]

3068:                                             ; preds = %3066
  %3069 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 0
  call void @ecp_clear_precomputed(ptr noundef %3069)
  %3070 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %3071 = load ptr, ptr %166, align 8, !tbaa !9
  %3072 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %3071, i32 0, i32 3
  %3073 = load ptr, ptr %3072, align 8, !tbaa !116
  %3074 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %3070, i64 noundef 25, ptr noundef @.str.74, ptr noundef %3073) #8
  br label %3075

3075:                                             ; preds = %3068
  call void @llvm.lifetime.start.p0(i64 8, ptr %186) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %187) #8
  %3076 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %3077 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %3076)
  %3078 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3079 = call i32 @fflush(ptr noundef %3078)
  call void @mbedtls_set_alarm(i32 noundef 3)
  store i32 0, ptr %187, align 4, !tbaa !5
  store i64 1, ptr %186, align 8, !tbaa !42
  br label %3080

3080:                                             ; preds = %3104, %3075
  %3081 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %3082 = icmp ne i32 %3081, 0
  br i1 %3082, label %3087, label %3083

3083:                                             ; preds = %3080
  %3084 = load i32, ptr %187, align 4, !tbaa !5
  %3085 = icmp ne i32 %3084, 0
  %3086 = xor i1 %3085, true
  br label %3087

3087:                                             ; preds = %3083, %3080
  %3088 = phi i1 [ false, %3080 ], [ %3086, %3083 ]
  br i1 %3088, label %3089, label %3107

3089:                                             ; preds = %3087
  call void @llvm.lifetime.start.p0(i64 4, ptr %188) #8
  %3090 = call i32 @mbedtls_ecdh_calc_secret(ptr noundef %163, ptr noundef %167, ptr noundef @buf, i64 noundef 1024, ptr noundef @myrand, ptr noundef null)
  store i32 %3090, ptr %188, align 4, !tbaa !5
  %3091 = load i32, ptr %188, align 4, !tbaa !5
  %3092 = icmp eq i32 %3091, -114
  br i1 %3092, label %3093, label %3095

3093:                                             ; preds = %3089
  %3094 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 299, ptr %169, align 4
  br label %3101

3095:                                             ; preds = %3089
  %3096 = load i32, ptr %188, align 4, !tbaa !5
  %3097 = icmp ne i32 %3096, 0
  br i1 %3097, label %3098, label %3099

3098:                                             ; preds = %3095
  call void @exit(i32 noundef 1) #10
  unreachable

3099:                                             ; preds = %3095
  br label %3100

3100:                                             ; preds = %3099
  store i32 0, ptr %169, align 4
  br label %3101

3101:                                             ; preds = %3100, %3093
  call void @llvm.lifetime.end.p0(i64 4, ptr %188) #8
  %3102 = load i32, ptr %169, align 4
  switch i32 %3102, label %3444 [
    i32 0, label %3103
    i32 299, label %3104
  ]

3103:                                             ; preds = %3101
  br label %3104

3104:                                             ; preds = %3103, %3101
  %3105 = load i64, ptr %186, align 8, !tbaa !42
  %3106 = add i64 %3105, 1
  store i64 %3106, ptr %186, align 8, !tbaa !42
  br label %3080, !llvm.loop !126

3107:                                             ; preds = %3087
  %3108 = load i32, ptr %187, align 4, !tbaa !5
  %3109 = icmp eq i32 %3108, -114
  br i1 %3109, label %3110, label %3112

3110:                                             ; preds = %3107
  %3111 = call i32 (ptr, ...) @printf(ptr noundef @.str.61)
  store i32 0, ptr %187, align 4, !tbaa !5
  br label %3126

3112:                                             ; preds = %3107
  %3113 = load i32, ptr %187, align 4, !tbaa !5
  %3114 = icmp ne i32 %3113, 0
  br i1 %3114, label %3115, label %3120

3115:                                             ; preds = %3112
  %3116 = load i32, ptr %187, align 4, !tbaa !5
  %3117 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %3116, ptr noundef %3117, i64 noundef 200)
  %3118 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %3119 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %3118)
  br label %3125

3120:                                             ; preds = %3112
  %3121 = load i64, ptr %186, align 8, !tbaa !42
  %3122 = udiv i64 %3121, 3
  %3123 = call i32 (ptr, ...) @printf(ptr noundef @.str.65, i64 noundef %3122)
  %3124 = call i32 (ptr, ...) @printf(ptr noundef @.str.30)
  br label %3125

3125:                                             ; preds = %3120, %3115
  br label %3126

3126:                                             ; preds = %3125, %3110
  call void @llvm.lifetime.end.p0(i64 4, ptr %187) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #8
  br label %3127

3127:                                             ; preds = %3126
  br label %3128

3128:                                             ; preds = %3127
  call void @mbedtls_ecdh_free(ptr noundef %163)
  br label %3129

3129:                                             ; preds = %3128, %3066, %3052, %3036, %3022, %3005
  %3130 = load ptr, ptr %166, align 8, !tbaa !9
  %3131 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %3130, i32 1
  store ptr %3131, ptr %166, align 8, !tbaa !9
  br label %2994, !llvm.loop !127

3132:                                             ; preds = %2994
  %3133 = getelementptr inbounds [3 x %struct.mbedtls_ecp_curve_info], ptr %165, i64 0, i64 0
  store ptr %3133, ptr %166, align 8, !tbaa !9
  br label %3134

3134:                                             ; preds = %3254, %3132
  %3135 = load ptr, ptr %166, align 8, !tbaa !9
  %3136 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %3135, i32 0, i32 0
  %3137 = load i32, ptr %3136, align 8, !tbaa !113
  %3138 = icmp ne i32 %3137, 0
  br i1 %3138, label %3139, label %3257

3139:                                             ; preds = %3134
  call void @mbedtls_ecdh_init(ptr noundef %163)
  call void @mbedtls_mpi_init(ptr noundef %164)
  call void @llvm.lifetime.start.p0(i64 4, ptr %189) #8
  %3140 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 0
  %3141 = load ptr, ptr %166, align 8, !tbaa !9
  %3142 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %3141, i32 0, i32 0
  %3143 = load i32, ptr %3142, align 8, !tbaa !113
  %3144 = call i32 @mbedtls_ecp_group_load(ptr noundef %3140, i32 noundef %3143)
  store i32 %3144, ptr %189, align 4, !tbaa !5
  %3145 = load i32, ptr %189, align 4, !tbaa !5
  %3146 = icmp eq i32 %3145, -114
  br i1 %3146, label %3147, label %3149

3147:                                             ; preds = %3139
  %3148 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 302, ptr %169, align 4
  br label %3155

3149:                                             ; preds = %3139
  %3150 = load i32, ptr %189, align 4, !tbaa !5
  %3151 = icmp ne i32 %3150, 0
  br i1 %3151, label %3152, label %3153

3152:                                             ; preds = %3149
  call void @exit(i32 noundef 1) #10
  unreachable

3153:                                             ; preds = %3149
  br label %3154

3154:                                             ; preds = %3153
  store i32 0, ptr %169, align 4
  br label %3155

3155:                                             ; preds = %3154, %3147
  call void @llvm.lifetime.end.p0(i64 4, ptr %189) #8
  %3156 = load i32, ptr %169, align 4
  switch i32 %3156, label %3444 [
    i32 0, label %3157
    i32 302, label %3254
  ]

3157:                                             ; preds = %3155
  call void @llvm.lifetime.start.p0(i64 4, ptr %190) #8
  %3158 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 0
  %3159 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 1
  %3160 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 3
  %3161 = call i32 @mbedtls_ecdh_gen_public(ptr noundef %3158, ptr noundef %3159, ptr noundef %3160, ptr noundef @myrand, ptr noundef null)
  store i32 %3161, ptr %190, align 4, !tbaa !5
  %3162 = load i32, ptr %190, align 4, !tbaa !5
  %3163 = icmp eq i32 %3162, -114
  br i1 %3163, label %3164, label %3166

3164:                                             ; preds = %3157
  %3165 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 302, ptr %169, align 4
  br label %3172

3166:                                             ; preds = %3157
  %3167 = load i32, ptr %190, align 4, !tbaa !5
  %3168 = icmp ne i32 %3167, 0
  br i1 %3168, label %3169, label %3170

3169:                                             ; preds = %3166
  call void @exit(i32 noundef 1) #10
  unreachable

3170:                                             ; preds = %3166
  br label %3171

3171:                                             ; preds = %3170
  store i32 0, ptr %169, align 4
  br label %3172

3172:                                             ; preds = %3171, %3164
  call void @llvm.lifetime.end.p0(i64 4, ptr %190) #8
  %3173 = load i32, ptr %169, align 4
  switch i32 %3173, label %3444 [
    i32 0, label %3174
    i32 302, label %3254
  ]

3174:                                             ; preds = %3172
  call void @llvm.lifetime.start.p0(i64 4, ptr %191) #8
  %3175 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 0
  %3176 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 1
  %3177 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 2
  %3178 = call i32 @mbedtls_ecdh_gen_public(ptr noundef %3175, ptr noundef %3176, ptr noundef %3177, ptr noundef @myrand, ptr noundef null)
  store i32 %3178, ptr %191, align 4, !tbaa !5
  %3179 = load i32, ptr %191, align 4, !tbaa !5
  %3180 = icmp eq i32 %3179, -114
  br i1 %3180, label %3181, label %3183

3181:                                             ; preds = %3174
  %3182 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 302, ptr %169, align 4
  br label %3189

3183:                                             ; preds = %3174
  %3184 = load i32, ptr %191, align 4, !tbaa !5
  %3185 = icmp ne i32 %3184, 0
  br i1 %3185, label %3186, label %3187

3186:                                             ; preds = %3183
  call void @exit(i32 noundef 1) #10
  unreachable

3187:                                             ; preds = %3183
  br label %3188

3188:                                             ; preds = %3187
  store i32 0, ptr %169, align 4
  br label %3189

3189:                                             ; preds = %3188, %3181
  call void @llvm.lifetime.end.p0(i64 4, ptr %191) #8
  %3190 = load i32, ptr %169, align 4
  switch i32 %3190, label %3444 [
    i32 0, label %3191
    i32 302, label %3254
  ]

3191:                                             ; preds = %3189
  %3192 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %3193 = load ptr, ptr %166, align 8, !tbaa !9
  %3194 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %3193, i32 0, i32 3
  %3195 = load ptr, ptr %3194, align 8, !tbaa !116
  %3196 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %3192, i64 noundef 25, ptr noundef @.str.74, ptr noundef %3195) #8
  br label %3197

3197:                                             ; preds = %3191
  call void @llvm.lifetime.start.p0(i64 8, ptr %192) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %193) #8
  %3198 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %3199 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %3198)
  %3200 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3201 = call i32 @fflush(ptr noundef %3200)
  call void @mbedtls_set_alarm(i32 noundef 3)
  store i32 0, ptr %193, align 4, !tbaa !5
  store i64 1, ptr %192, align 8, !tbaa !42
  br label %3202

3202:                                             ; preds = %3229, %3197
  %3203 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %3204 = icmp ne i32 %3203, 0
  br i1 %3204, label %3209, label %3205

3205:                                             ; preds = %3202
  %3206 = load i32, ptr %193, align 4, !tbaa !5
  %3207 = icmp ne i32 %3206, 0
  %3208 = xor i1 %3207, true
  br label %3209

3209:                                             ; preds = %3205, %3202
  %3210 = phi i1 [ false, %3202 ], [ %3208, %3205 ]
  br i1 %3210, label %3211, label %3232

3211:                                             ; preds = %3209
  call void @llvm.lifetime.start.p0(i64 4, ptr %194) #8
  %3212 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 0
  %3213 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 3
  %3214 = getelementptr inbounds %struct.mbedtls_ecdh_context, ptr %163, i32 0, i32 1
  %3215 = call i32 @mbedtls_ecdh_compute_shared(ptr noundef %3212, ptr noundef %164, ptr noundef %3213, ptr noundef %3214, ptr noundef @myrand, ptr noundef null)
  store i32 %3215, ptr %194, align 4, !tbaa !5
  %3216 = load i32, ptr %194, align 4, !tbaa !5
  %3217 = icmp eq i32 %3216, -114
  br i1 %3217, label %3218, label %3220

3218:                                             ; preds = %3211
  %3219 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 307, ptr %169, align 4
  br label %3226

3220:                                             ; preds = %3211
  %3221 = load i32, ptr %194, align 4, !tbaa !5
  %3222 = icmp ne i32 %3221, 0
  br i1 %3222, label %3223, label %3224

3223:                                             ; preds = %3220
  call void @exit(i32 noundef 1) #10
  unreachable

3224:                                             ; preds = %3220
  br label %3225

3225:                                             ; preds = %3224
  store i32 0, ptr %169, align 4
  br label %3226

3226:                                             ; preds = %3225, %3218
  call void @llvm.lifetime.end.p0(i64 4, ptr %194) #8
  %3227 = load i32, ptr %169, align 4
  switch i32 %3227, label %3444 [
    i32 0, label %3228
    i32 307, label %3229
  ]

3228:                                             ; preds = %3226
  br label %3229

3229:                                             ; preds = %3228, %3226
  %3230 = load i64, ptr %192, align 8, !tbaa !42
  %3231 = add i64 %3230, 1
  store i64 %3231, ptr %192, align 8, !tbaa !42
  br label %3202, !llvm.loop !128

3232:                                             ; preds = %3209
  %3233 = load i32, ptr %193, align 4, !tbaa !5
  %3234 = icmp eq i32 %3233, -114
  br i1 %3234, label %3235, label %3237

3235:                                             ; preds = %3232
  %3236 = call i32 (ptr, ...) @printf(ptr noundef @.str.61)
  store i32 0, ptr %193, align 4, !tbaa !5
  br label %3251

3237:                                             ; preds = %3232
  %3238 = load i32, ptr %193, align 4, !tbaa !5
  %3239 = icmp ne i32 %3238, 0
  br i1 %3239, label %3240, label %3245

3240:                                             ; preds = %3237
  %3241 = load i32, ptr %193, align 4, !tbaa !5
  %3242 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %3241, ptr noundef %3242, i64 noundef 200)
  %3243 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %3244 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %3243)
  br label %3250

3245:                                             ; preds = %3237
  %3246 = load i64, ptr %192, align 8, !tbaa !42
  %3247 = udiv i64 %3246, 3
  %3248 = call i32 (ptr, ...) @printf(ptr noundef @.str.65, i64 noundef %3247)
  %3249 = call i32 (ptr, ...) @printf(ptr noundef @.str.30)
  br label %3250

3250:                                             ; preds = %3245, %3240
  br label %3251

3251:                                             ; preds = %3250, %3235
  call void @llvm.lifetime.end.p0(i64 4, ptr %193) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %192) #8
  br label %3252

3252:                                             ; preds = %3251
  br label %3253

3253:                                             ; preds = %3252
  call void @mbedtls_ecdh_free(ptr noundef %163)
  call void @mbedtls_mpi_free(ptr noundef %164)
  br label %3254

3254:                                             ; preds = %3253, %3189, %3172, %3155
  %3255 = load ptr, ptr %166, align 8, !tbaa !9
  %3256 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %3255, i32 1
  store ptr %3256, ptr %166, align 8, !tbaa !9
  br label %3134, !llvm.loop !129

3257:                                             ; preds = %3134
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %165) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %164) #8
  call void @llvm.lifetime.end.p0(i64 616, ptr %163) #8
  br label %3258

3258:                                             ; preds = %3257, %2723
  %3259 = getelementptr inbounds %struct.todo_list, ptr %9, i32 0, i32 27
  %3260 = load i8, ptr %3259, align 1, !tbaa !39
  %3261 = icmp ne i8 %3260, 0
  br i1 %3261, label %3262, label %3441

3262:                                             ; preds = %3258
  call void @llvm.lifetime.start.p0(i64 616, ptr %195) #8
  call void @llvm.lifetime.start.p0(i64 616, ptr %196) #8
  call void @llvm.lifetime.start.p0(i64 1024, ptr %197) #8
  call void @llvm.lifetime.start.p0(i64 1024, ptr %198) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %199) #8
  %3263 = call ptr @mbedtls_ecp_curve_list()
  store ptr %3263, ptr %199, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %200) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %201) #8
  %3264 = load ptr, ptr %199, align 8, !tbaa !9
  store ptr %3264, ptr %200, align 8, !tbaa !9
  br label %3265

3265:                                             ; preds = %3437, %3262
  %3266 = load ptr, ptr %200, align 8, !tbaa !9
  %3267 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %3266, i32 0, i32 0
  %3268 = load i32, ptr %3267, align 8, !tbaa !113
  %3269 = icmp ne i32 %3268, 0
  br i1 %3269, label %3270, label %3440

3270:                                             ; preds = %3265
  %3271 = load ptr, ptr %200, align 8, !tbaa !9
  %3272 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %3271, i32 0, i32 0
  %3273 = load i32, ptr %3272, align 8, !tbaa !113
  %3274 = call i32 @mbedtls_ecdh_can_do(i32 noundef %3273)
  %3275 = icmp ne i32 %3274, 0
  br i1 %3275, label %3277, label %3276

3276:                                             ; preds = %3270
  br label %3437

3277:                                             ; preds = %3270
  call void @mbedtls_ecdh_init(ptr noundef %195)
  call void @mbedtls_ecdh_init(ptr noundef %196)
  %3278 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %3279 = load ptr, ptr %200, align 8, !tbaa !9
  %3280 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %3279, i32 0, i32 3
  %3281 = load ptr, ptr %3280, align 8, !tbaa !116
  %3282 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %3278, i64 noundef 25, ptr noundef @.str.73, ptr noundef %3281) #8
  br label %3283

3283:                                             ; preds = %3277
  call void @llvm.lifetime.start.p0(i64 8, ptr %202) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %203) #8
  %3284 = getelementptr inbounds [25 x i8], ptr %8, i64 0, i64 0
  %3285 = call i32 (ptr, ...) @printf(ptr noundef @.str.31, ptr noundef %3284)
  %3286 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3287 = call i32 @fflush(ptr noundef %3286)
  call void @mbedtls_set_alarm(i32 noundef 3)
  store i32 0, ptr %203, align 4, !tbaa !5
  store i64 1, ptr %202, align 8, !tbaa !42
  br label %3288

3288:                                             ; preds = %3412, %3283
  %3289 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !5
  %3290 = icmp ne i32 %3289, 0
  br i1 %3290, label %3295, label %3291

3291:                                             ; preds = %3288
  %3292 = load i32, ptr %203, align 4, !tbaa !5
  %3293 = icmp ne i32 %3292, 0
  %3294 = xor i1 %3293, true
  br label %3295

3295:                                             ; preds = %3291, %3288
  %3296 = phi i1 [ false, %3288 ], [ %3294, %3291 ]
  br i1 %3296, label %3297, label %3415

3297:                                             ; preds = %3295
  call void @llvm.lifetime.start.p0(i64 8, ptr %204) #8
  %3298 = getelementptr inbounds [1024 x i8], ptr %197, i64 0, i64 0
  store ptr %3298, ptr %204, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %205) #8
  %3299 = load ptr, ptr %200, align 8, !tbaa !9
  %3300 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %3299, i32 0, i32 0
  %3301 = load i32, ptr %3300, align 8, !tbaa !113
  %3302 = call i32 @mbedtls_ecdh_setup(ptr noundef %195, i32 noundef %3301)
  store i32 %3302, ptr %205, align 4, !tbaa !5
  %3303 = load i32, ptr %205, align 4, !tbaa !5
  %3304 = icmp eq i32 %3303, -114
  br i1 %3304, label %3305, label %3307

3305:                                             ; preds = %3297
  %3306 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 315, ptr %169, align 4
  br label %3313

3307:                                             ; preds = %3297
  %3308 = load i32, ptr %205, align 4, !tbaa !5
  %3309 = icmp ne i32 %3308, 0
  br i1 %3309, label %3310, label %3311

3310:                                             ; preds = %3307
  call void @exit(i32 noundef 1) #10
  unreachable

3311:                                             ; preds = %3307
  br label %3312

3312:                                             ; preds = %3311
  store i32 0, ptr %169, align 4
  br label %3313

3313:                                             ; preds = %3312, %3305
  call void @llvm.lifetime.end.p0(i64 4, ptr %205) #8
  %3314 = load i32, ptr %169, align 4
  switch i32 %3314, label %3409 [
    i32 0, label %3315
  ]

3315:                                             ; preds = %3313
  call void @llvm.lifetime.start.p0(i64 4, ptr %206) #8
  %3316 = getelementptr inbounds [1024 x i8], ptr %197, i64 0, i64 0
  %3317 = call i32 @mbedtls_ecdh_make_params(ptr noundef %195, ptr noundef %201, ptr noundef %3316, i64 noundef 1024, ptr noundef @myrand, ptr noundef null)
  store i32 %3317, ptr %206, align 4, !tbaa !5
  %3318 = load i32, ptr %206, align 4, !tbaa !5
  %3319 = icmp eq i32 %3318, -114
  br i1 %3319, label %3320, label %3322

3320:                                             ; preds = %3315
  %3321 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 315, ptr %169, align 4
  br label %3328

3322:                                             ; preds = %3315
  %3323 = load i32, ptr %206, align 4, !tbaa !5
  %3324 = icmp ne i32 %3323, 0
  br i1 %3324, label %3325, label %3326

3325:                                             ; preds = %3322
  call void @exit(i32 noundef 1) #10
  unreachable

3326:                                             ; preds = %3322
  br label %3327

3327:                                             ; preds = %3326
  store i32 0, ptr %169, align 4
  br label %3328

3328:                                             ; preds = %3327, %3320
  call void @llvm.lifetime.end.p0(i64 4, ptr %206) #8
  %3329 = load i32, ptr %169, align 4
  switch i32 %3329, label %3409 [
    i32 0, label %3330
  ]

3330:                                             ; preds = %3328
  call void @llvm.lifetime.start.p0(i64 4, ptr %207) #8
  %3331 = load ptr, ptr %204, align 8, !tbaa !9
  %3332 = load i64, ptr %201, align 8, !tbaa !42
  %3333 = getelementptr inbounds i8, ptr %3331, i64 %3332
  %3334 = call i32 @mbedtls_ecdh_read_params(ptr noundef %196, ptr noundef %204, ptr noundef %3333)
  store i32 %3334, ptr %207, align 4, !tbaa !5
  %3335 = load i32, ptr %207, align 4, !tbaa !5
  %3336 = icmp eq i32 %3335, -114
  br i1 %3336, label %3337, label %3339

3337:                                             ; preds = %3330
  %3338 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 315, ptr %169, align 4
  br label %3345

3339:                                             ; preds = %3330
  %3340 = load i32, ptr %207, align 4, !tbaa !5
  %3341 = icmp ne i32 %3340, 0
  br i1 %3341, label %3342, label %3343

3342:                                             ; preds = %3339
  call void @exit(i32 noundef 1) #10
  unreachable

3343:                                             ; preds = %3339
  br label %3344

3344:                                             ; preds = %3343
  store i32 0, ptr %169, align 4
  br label %3345

3345:                                             ; preds = %3344, %3337
  call void @llvm.lifetime.end.p0(i64 4, ptr %207) #8
  %3346 = load i32, ptr %169, align 4
  switch i32 %3346, label %3409 [
    i32 0, label %3347
  ]

3347:                                             ; preds = %3345
  call void @llvm.lifetime.start.p0(i64 4, ptr %208) #8
  %3348 = getelementptr inbounds [1024 x i8], ptr %198, i64 0, i64 0
  %3349 = call i32 @mbedtls_ecdh_make_public(ptr noundef %196, ptr noundef %201, ptr noundef %3348, i64 noundef 1024, ptr noundef @myrand, ptr noundef null)
  store i32 %3349, ptr %208, align 4, !tbaa !5
  %3350 = load i32, ptr %208, align 4, !tbaa !5
  %3351 = icmp eq i32 %3350, -114
  br i1 %3351, label %3352, label %3354

3352:                                             ; preds = %3347
  %3353 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 315, ptr %169, align 4
  br label %3360

3354:                                             ; preds = %3347
  %3355 = load i32, ptr %208, align 4, !tbaa !5
  %3356 = icmp ne i32 %3355, 0
  br i1 %3356, label %3357, label %3358

3357:                                             ; preds = %3354
  call void @exit(i32 noundef 1) #10
  unreachable

3358:                                             ; preds = %3354
  br label %3359

3359:                                             ; preds = %3358
  store i32 0, ptr %169, align 4
  br label %3360

3360:                                             ; preds = %3359, %3352
  call void @llvm.lifetime.end.p0(i64 4, ptr %208) #8
  %3361 = load i32, ptr %169, align 4
  switch i32 %3361, label %3409 [
    i32 0, label %3362
  ]

3362:                                             ; preds = %3360
  call void @llvm.lifetime.start.p0(i64 4, ptr %209) #8
  %3363 = getelementptr inbounds [1024 x i8], ptr %198, i64 0, i64 0
  %3364 = load i64, ptr %201, align 8, !tbaa !42
  %3365 = call i32 @mbedtls_ecdh_read_public(ptr noundef %195, ptr noundef %3363, i64 noundef %3364)
  store i32 %3365, ptr %209, align 4, !tbaa !5
  %3366 = load i32, ptr %209, align 4, !tbaa !5
  %3367 = icmp eq i32 %3366, -114
  br i1 %3367, label %3368, label %3370

3368:                                             ; preds = %3362
  %3369 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 315, ptr %169, align 4
  br label %3376

3370:                                             ; preds = %3362
  %3371 = load i32, ptr %209, align 4, !tbaa !5
  %3372 = icmp ne i32 %3371, 0
  br i1 %3372, label %3373, label %3374

3373:                                             ; preds = %3370
  call void @exit(i32 noundef 1) #10
  unreachable

3374:                                             ; preds = %3370
  br label %3375

3375:                                             ; preds = %3374
  store i32 0, ptr %169, align 4
  br label %3376

3376:                                             ; preds = %3375, %3368
  call void @llvm.lifetime.end.p0(i64 4, ptr %209) #8
  %3377 = load i32, ptr %169, align 4
  switch i32 %3377, label %3409 [
    i32 0, label %3378
  ]

3378:                                             ; preds = %3376
  call void @llvm.lifetime.start.p0(i64 4, ptr %210) #8
  %3379 = getelementptr inbounds [1024 x i8], ptr %197, i64 0, i64 0
  %3380 = call i32 @mbedtls_ecdh_calc_secret(ptr noundef %195, ptr noundef %201, ptr noundef %3379, i64 noundef 1024, ptr noundef @myrand, ptr noundef null)
  store i32 %3380, ptr %210, align 4, !tbaa !5
  %3381 = load i32, ptr %210, align 4, !tbaa !5
  %3382 = icmp eq i32 %3381, -114
  br i1 %3382, label %3383, label %3385

3383:                                             ; preds = %3378
  %3384 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 315, ptr %169, align 4
  br label %3391

3385:                                             ; preds = %3378
  %3386 = load i32, ptr %210, align 4, !tbaa !5
  %3387 = icmp ne i32 %3386, 0
  br i1 %3387, label %3388, label %3389

3388:                                             ; preds = %3385
  call void @exit(i32 noundef 1) #10
  unreachable

3389:                                             ; preds = %3385
  br label %3390

3390:                                             ; preds = %3389
  store i32 0, ptr %169, align 4
  br label %3391

3391:                                             ; preds = %3390, %3383
  call void @llvm.lifetime.end.p0(i64 4, ptr %210) #8
  %3392 = load i32, ptr %169, align 4
  switch i32 %3392, label %3409 [
    i32 0, label %3393
  ]

3393:                                             ; preds = %3391
  call void @llvm.lifetime.start.p0(i64 4, ptr %211) #8
  %3394 = getelementptr inbounds [1024 x i8], ptr %198, i64 0, i64 0
  %3395 = call i32 @mbedtls_ecdh_calc_secret(ptr noundef %196, ptr noundef %201, ptr noundef %3394, i64 noundef 1024, ptr noundef @myrand, ptr noundef null)
  store i32 %3395, ptr %211, align 4, !tbaa !5
  %3396 = load i32, ptr %211, align 4, !tbaa !5
  %3397 = icmp eq i32 %3396, -114
  br i1 %3397, label %3398, label %3400

3398:                                             ; preds = %3393
  %3399 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  store i32 315, ptr %169, align 4
  br label %3406

3400:                                             ; preds = %3393
  %3401 = load i32, ptr %211, align 4, !tbaa !5
  %3402 = icmp ne i32 %3401, 0
  br i1 %3402, label %3403, label %3404

3403:                                             ; preds = %3400
  call void @exit(i32 noundef 1) #10
  unreachable

3404:                                             ; preds = %3400
  br label %3405

3405:                                             ; preds = %3404
  store i32 0, ptr %169, align 4
  br label %3406

3406:                                             ; preds = %3405, %3398
  call void @llvm.lifetime.end.p0(i64 4, ptr %211) #8
  %3407 = load i32, ptr %169, align 4
  switch i32 %3407, label %3409 [
    i32 0, label %3408
  ]

3408:                                             ; preds = %3406
  call void @mbedtls_ecdh_free(ptr noundef %196)
  call void @mbedtls_ecdh_free(ptr noundef %195)
  store i32 0, ptr %169, align 4
  br label %3409

3409:                                             ; preds = %3408, %3406, %3391, %3376, %3360, %3345, %3328, %3313
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #8
  %3410 = load i32, ptr %169, align 4
  switch i32 %3410, label %3444 [
    i32 0, label %3411
    i32 315, label %3412
  ]

3411:                                             ; preds = %3409
  br label %3412

3412:                                             ; preds = %3411, %3409
  %3413 = load i64, ptr %202, align 8, !tbaa !42
  %3414 = add i64 %3413, 1
  store i64 %3414, ptr %202, align 8, !tbaa !42
  br label %3288, !llvm.loop !130

3415:                                             ; preds = %3295
  %3416 = load i32, ptr %203, align 4, !tbaa !5
  %3417 = icmp eq i32 %3416, -114
  br i1 %3417, label %3418, label %3420

3418:                                             ; preds = %3415
  %3419 = call i32 (ptr, ...) @printf(ptr noundef @.str.61)
  store i32 0, ptr %203, align 4, !tbaa !5
  br label %3434

3420:                                             ; preds = %3415
  %3421 = load i32, ptr %203, align 4, !tbaa !5
  %3422 = icmp ne i32 %3421, 0
  br i1 %3422, label %3423, label %3428

3423:                                             ; preds = %3420
  %3424 = load i32, ptr %203, align 4, !tbaa !5
  %3425 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  call void @mbedtls_strerror(i32 noundef %3424, ptr noundef %3425, i64 noundef 200)
  %3426 = getelementptr inbounds [200 x i8], ptr %7, i64 0, i64 0
  %3427 = call i32 (ptr, ...) @printf(ptr noundef @.str.33, ptr noundef %3426)
  br label %3433

3428:                                             ; preds = %3420
  %3429 = load i64, ptr %202, align 8, !tbaa !42
  %3430 = udiv i64 %3429, 3
  %3431 = call i32 (ptr, ...) @printf(ptr noundef @.str.75, i64 noundef %3430)
  %3432 = call i32 (ptr, ...) @printf(ptr noundef @.str.30)
  br label %3433

3433:                                             ; preds = %3428, %3423
  br label %3434

3434:                                             ; preds = %3433, %3418
  call void @llvm.lifetime.end.p0(i64 4, ptr %203) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #8
  br label %3435

3435:                                             ; preds = %3434
  br label %3436

3436:                                             ; preds = %3435
  br label %3437

3437:                                             ; preds = %3436, %3276
  %3438 = load ptr, ptr %200, align 8, !tbaa !9
  %3439 = getelementptr inbounds %struct.mbedtls_ecp_curve_info, ptr %3438, i32 1
  store ptr %3439, ptr %200, align 8, !tbaa !9
  br label %3265, !llvm.loop !131

3440:                                             ; preds = %3265
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %199) #8
  call void @llvm.lifetime.end.p0(i64 1024, ptr %198) #8
  call void @llvm.lifetime.end.p0(i64 1024, ptr %197) #8
  call void @llvm.lifetime.end.p0(i64 616, ptr %196) #8
  call void @llvm.lifetime.end.p0(i64 616, ptr %195) #8
  br label %3441

3441:                                             ; preds = %3440, %3258
  %3442 = call i32 (ptr, ...) @printf(ptr noundef @.str.30)
  store i32 0, ptr %3, align 4
  store i32 1, ptr %169, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 25, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 200, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #8
  %3443 = load i32, ptr %3, align 4
  ret i32 %3443

3444:                                             ; preds = %3409, %3226, %3189, %3172, %3155, %3101, %3066, %3052, %3036, %3022, %2961, %2944, %2907, %2890, %2836, %2822, %2787, %2771, %2757
  unreachable
}

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

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

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

declare i32 @fflush(ptr noundef) #4

declare void @mbedtls_set_alarm(i32 noundef) #4

declare i32 @mbedtls_md5_ret(ptr noundef, i64 noundef, ptr noundef) #4

declare i64 @mbedtls_timing_hardclock() #4

declare void @mbedtls_strerror(i32 noundef, ptr noundef, i64 noundef) #4

declare i32 @mbedtls_ripemd160_ret(ptr noundef, i64 noundef, ptr noundef) #4

declare i32 @mbedtls_sha1_ret(ptr noundef, i64 noundef, ptr noundef) #4

declare i32 @mbedtls_sha256_ret(ptr noundef, i64 noundef, ptr noundef, i32 noundef) #4

declare i32 @mbedtls_sha512_ret(ptr noundef, i64 noundef, ptr noundef, i32 noundef) #4

declare void @mbedtls_arc4_init(ptr noundef) #4

declare void @mbedtls_arc4_setup(ptr noundef, ptr noundef, i32 noundef) #4

declare i32 @mbedtls_arc4_crypt(ptr noundef, i64 noundef, ptr noundef, ptr noundef) #4

declare void @mbedtls_arc4_free(ptr noundef) #4

declare void @mbedtls_des3_init(ptr noundef) #4

declare i32 @mbedtls_des3_set3key_enc(ptr noundef, ptr noundef) #4

declare i32 @mbedtls_des3_crypt_cbc(ptr noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare void @mbedtls_des3_free(ptr noundef) #4

declare void @mbedtls_des_init(ptr noundef) #4

declare i32 @mbedtls_des_setkey_enc(ptr noundef, ptr noundef) #4

declare i32 @mbedtls_des_crypt_cbc(ptr noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare void @mbedtls_des_free(ptr noundef) #4

declare ptr @mbedtls_cipher_info_from_type(i32 noundef) #4

declare i32 @mbedtls_cipher_cmac(ptr noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef) #4

declare void @mbedtls_aes_init(ptr noundef) #4

; Function Attrs: nounwind
declare i32 @snprintf(ptr noundef, i64 noundef, ptr noundef, ...) #5

declare i32 @mbedtls_aes_setkey_enc(ptr noundef, ptr noundef, i32 noundef) #4

declare i32 @mbedtls_aes_crypt_cbc(ptr noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare void @mbedtls_aes_free(ptr noundef) #4

declare void @mbedtls_aes_xts_init(ptr noundef) #4

declare i32 @mbedtls_aes_xts_setkey_enc(ptr noundef, ptr noundef, i32 noundef) #4

declare i32 @mbedtls_aes_crypt_xts(ptr noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare void @mbedtls_aes_xts_free(ptr noundef) #4

declare void @mbedtls_gcm_init(ptr noundef) #4

declare i32 @mbedtls_gcm_setkey(ptr noundef, i32 noundef, ptr noundef, i32 noundef) #4

declare i32 @mbedtls_gcm_crypt_and_tag(ptr noundef, i32 noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef) #4

declare void @mbedtls_gcm_free(ptr noundef) #4

declare void @mbedtls_ccm_init(ptr noundef) #4

declare i32 @mbedtls_ccm_setkey(ptr noundef, i32 noundef, ptr noundef, i32 noundef) #4

declare i32 @mbedtls_ccm_encrypt_and_tag(ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #4

declare void @mbedtls_ccm_free(ptr noundef) #4

declare void @mbedtls_chachapoly_init(ptr noundef) #4

declare i32 @mbedtls_chachapoly_setkey(ptr noundef, ptr noundef) #4

declare i32 @mbedtls_chachapoly_encrypt_and_tag(ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare void @mbedtls_chachapoly_free(ptr noundef) #4

declare i32 @mbedtls_aes_cmac_prf_128(ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef) #4

declare void @mbedtls_camellia_init(ptr noundef) #4

declare i32 @mbedtls_camellia_setkey_enc(ptr noundef, ptr noundef, i32 noundef) #4

declare i32 @mbedtls_camellia_crypt_cbc(ptr noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare void @mbedtls_camellia_free(ptr noundef) #4

declare i32 @mbedtls_chacha20_crypt(ptr noundef, ptr noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) #4

declare i32 @mbedtls_poly1305_mac(ptr noundef, ptr noundef, i64 noundef, ptr noundef) #4

declare void @mbedtls_blowfish_init(ptr noundef) #4

declare i32 @mbedtls_blowfish_setkey(ptr noundef, ptr noundef, i32 noundef) #4

declare i32 @mbedtls_blowfish_crypt_cbc(ptr noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare void @mbedtls_blowfish_free(ptr noundef) #4

declare void @mbedtls_ctr_drbg_init(ptr noundef) #4

declare i32 @mbedtls_ctr_drbg_seed(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #4

; Function Attrs: nounwind uwtable
declare hidden i32 @myrand(ptr noundef, ptr noundef, i64 noundef) #0

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #6

declare i32 @mbedtls_ctr_drbg_random(ptr noundef, ptr noundef, i64 noundef) #4

declare void @mbedtls_ctr_drbg_free(ptr noundef) #4

declare void @mbedtls_ctr_drbg_set_prediction_resistance(ptr noundef, i32 noundef) #4

declare void @mbedtls_hmac_drbg_init(ptr noundef) #4

declare ptr @mbedtls_md_info_from_type(i32 noundef) #4

declare i32 @mbedtls_hmac_drbg_seed(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #4

declare i32 @mbedtls_hmac_drbg_random(ptr noundef, ptr noundef, i64 noundef) #4

declare void @mbedtls_hmac_drbg_set_prediction_resistance(ptr noundef, i32 noundef) #4

declare void @mbedtls_hmac_drbg_free(ptr noundef) #4

declare void @mbedtls_rsa_init(ptr noundef, i32 noundef, i32 noundef) #4

declare i32 @mbedtls_rsa_gen_key(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #4

declare i32 @mbedtls_rsa_public(ptr noundef, ptr noundef, ptr noundef) #4

declare i32 @mbedtls_rsa_private(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare void @mbedtls_rsa_free(ptr noundef) #4

; 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) #7

declare void @mbedtls_dhm_init(ptr noundef) #4

declare i32 @mbedtls_mpi_read_binary(ptr noundef, ptr noundef, i64 noundef) #4

declare i64 @mbedtls_mpi_size(ptr noundef) #4

declare i32 @mbedtls_dhm_make_public(ptr noundef, i32 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) #4

declare i32 @mbedtls_mpi_copy(ptr noundef, ptr noundef) #4

declare i32 @mbedtls_dhm_calc_secret(ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare void @mbedtls_dhm_free(ptr noundef) #4

declare ptr @mbedtls_ecp_curve_list() #4

declare i32 @mbedtls_ecdsa_can_do(i32 noundef) #4

declare void @mbedtls_ecdsa_init(ptr noundef) #4

declare i32 @mbedtls_ecdsa_genkey(ptr noundef, i32 noundef, ptr noundef, ptr noundef) #4

declare i32 @mbedtls_ecdsa_write_signature(ptr noundef, i32 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare void @mbedtls_ecdsa_free(ptr noundef) #4

declare i32 @mbedtls_ecdsa_read_signature(ptr noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef) #4

declare i32 @mbedtls_ecdh_can_do(i32 noundef) #4

declare void @mbedtls_ecdh_init(ptr noundef) #4

declare i32 @mbedtls_ecp_group_load(ptr noundef, i32 noundef) #4

declare i32 @mbedtls_ecdh_make_public(ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) #4

declare i32 @mbedtls_ecp_copy(ptr noundef, ptr noundef) #4

declare i32 @mbedtls_ecdh_calc_secret(ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) #4

declare void @mbedtls_ecdh_free(ptr noundef) #4

declare void @mbedtls_mpi_init(ptr noundef) #4

declare i32 @mbedtls_ecdh_gen_public(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare i32 @mbedtls_ecdh_compute_shared(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare void @mbedtls_mpi_free(ptr noundef) #4

declare i32 @mbedtls_ecdh_setup(ptr noundef, i32 noundef) #4

declare i32 @mbedtls_ecdh_make_params(ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) #4

declare i32 @mbedtls_ecdh_read_params(ptr noundef, ptr noundef, ptr noundef) #4

declare i32 @mbedtls_ecdh_read_public(ptr noundef, ptr noundef, i64 noundef) #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !7, i64 0}
!12 = !{!"", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3, !7, i64 4, !7, i64 5, !7, i64 6, !7, i64 7, !7, i64 8, !7, i64 9, !7, i64 10, !7, i64 11, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !7, i64 27}
!13 = !{!12, !7, i64 1}
!14 = !{!12, !7, i64 2}
!15 = !{!12, !7, i64 3}
!16 = !{!12, !7, i64 4}
!17 = !{!12, !7, i64 5}
!18 = !{!12, !7, i64 6}
!19 = !{!12, !7, i64 7}
!20 = !{!12, !7, i64 8}
!21 = !{!12, !7, i64 9}
!22 = !{!12, !7, i64 12}
!23 = !{!12, !7, i64 10}
!24 = !{!12, !7, i64 11}
!25 = !{!12, !7, i64 13}
!26 = !{!12, !7, i64 14}
!27 = !{!12, !7, i64 15}
!28 = !{!12, !7, i64 16}
!29 = !{!12, !7, i64 17}
!30 = !{!12, !7, i64 18}
!31 = !{!12, !7, i64 19}
!32 = !{!12, !7, i64 20}
!33 = !{!12, !7, i64 21}
!34 = !{!12, !7, i64 22}
!35 = !{!12, !7, i64 23}
!36 = !{!12, !7, i64 24}
!37 = !{!12, !7, i64 25}
!38 = !{!12, !7, i64 26}
!39 = !{!12, !7, i64 27}
!40 = distinct !{!40, !41}
!41 = !{!"llvm.loop.mustprogress"}
!42 = !{!43, !43, i64 0}
!43 = !{!"long", !7, i64 0}
!44 = distinct !{!44, !41}
!45 = distinct !{!45, !41}
!46 = distinct !{!46, !41}
!47 = distinct !{!47, !41}
!48 = distinct !{!48, !41}
!49 = distinct !{!49, !41}
!50 = distinct !{!50, !41}
!51 = distinct !{!51, !41}
!52 = distinct !{!52, !41}
!53 = distinct !{!53, !41}
!54 = distinct !{!54, !41}
!55 = distinct !{!55, !41}
!56 = distinct !{!56, !41}
!57 = distinct !{!57, !41}
!58 = distinct !{!58, !41}
!59 = distinct !{!59, !41}
!60 = distinct !{!60, !41}
!61 = distinct !{!61, !41}
!62 = distinct !{!62, !41}
!63 = distinct !{!63, !41}
!64 = distinct !{!64, !41}
!65 = distinct !{!65, !41}
!66 = distinct !{!66, !41}
!67 = distinct !{!67, !41}
!68 = distinct !{!68, !41}
!69 = distinct !{!69, !41}
!70 = distinct !{!70, !41}
!71 = distinct !{!71, !41}
!72 = distinct !{!72, !41}
!73 = distinct !{!73, !41}
!74 = distinct !{!74, !41}
!75 = distinct !{!75, !41}
!76 = distinct !{!76, !41}
!77 = distinct !{!77, !41}
!78 = distinct !{!78, !41}
!79 = distinct !{!79, !41}
!80 = distinct !{!80, !41}
!81 = distinct !{!81, !41}
!82 = distinct !{!82, !41}
!83 = distinct !{!83, !41}
!84 = distinct !{!84, !41}
!85 = distinct !{!85, !41}
!86 = distinct !{!86, !41}
!87 = distinct !{!87, !41}
!88 = distinct !{!88, !41}
!89 = distinct !{!89, !41}
!90 = distinct !{!90, !41}
!91 = distinct !{!91, !41}
!92 = distinct !{!92, !41}
!93 = distinct !{!93, !41}
!94 = distinct !{!94, !41}
!95 = distinct !{!95, !41}
!96 = distinct !{!96, !41}
!97 = distinct !{!97, !41}
!98 = distinct !{!98, !41}
!99 = distinct !{!99, !41}
!100 = distinct !{!100, !41}
!101 = distinct !{!101, !41}
!102 = distinct !{!102, !41}
!103 = !{!7, !7, i64 0}
!104 = distinct !{!104, !41}
!105 = distinct !{!105, !41}
!106 = distinct !{!106, !41}
!107 = !{!108, !43, i64 0}
!108 = !{!"mbedtls_dhm_context", !43, i64 0, !109, i64 8, !109, i64 32, !109, i64 56, !109, i64 80, !109, i64 104, !109, i64 128, !109, i64 152, !109, i64 176, !109, i64 200, !109, i64 224}
!109 = !{!"mbedtls_mpi", !6, i64 0, !43, i64 8, !10, i64 16}
!110 = distinct !{!110, !41}
!111 = distinct !{!111, !41}
!112 = distinct !{!112, !41}
!113 = !{!114, !6, i64 0}
!114 = !{!"mbedtls_ecp_curve_info", !6, i64 0, !115, i64 4, !115, i64 6, !10, i64 8}
!115 = !{!"short", !7, i64 0}
!116 = !{!114, !10, i64 8}
!117 = !{!114, !115, i64 6}
!118 = distinct !{!118, !41}
!119 = distinct !{!119, !41}
!120 = distinct !{!120, !41}
!121 = distinct !{!121, !41}
!122 = distinct !{!122, !41}
!123 = distinct !{!123, !41}
!124 = distinct !{!124, !41}
!125 = distinct !{!125, !41}
!126 = distinct !{!126, !41}
!127 = distinct !{!127, !41}
!128 = distinct !{!128, !41}
!129 = distinct !{!129, !41}
!130 = distinct !{!130, !41}
!131 = distinct !{!131, !41}


; 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.mbedtls_ecp_curve_info = type { i32, i16, i16, ptr }
%struct.mbedtls_arc4_context = type { i32, i32, [256 x i8] }
%struct.mbedtls_des3_context = type { [96 x i32] }
%struct.mbedtls_des_context = type { [32 x i32] }
%struct.mbedtls_aes_context = type { i32, ptr, [68 x i32] }
%struct.mbedtls_aes_xts_context = type { %struct.mbedtls_aes_context, %struct.mbedtls_aes_context }
%struct.mbedtls_gcm_context = type { %struct.mbedtls_cipher_context_t, [16 x i64], [16 x i64], i64, i64, [16 x i8], [16 x i8], [16 x i8], i32 }
%struct.mbedtls_cipher_context_t = type { ptr, i32, i32, ptr, ptr, [16 x i8], i64, [16 x i8], i64, ptr, ptr }
%struct.mbedtls_ccm_context = type { %struct.mbedtls_cipher_context_t }
%struct.mbedtls_chachapoly_context = type { %struct.mbedtls_chacha20_context, %struct.mbedtls_poly1305_context, i64, i64, i32, i32 }
%struct.mbedtls_chacha20_context = type { [16 x i32], [64 x i8], i64 }
%struct.mbedtls_poly1305_context = type { [4 x i32], [4 x i32], [5 x i32], [16 x i8], i64 }
%struct.mbedtls_camellia_context = type { i32, [68 x i32] }
%struct.mbedtls_blowfish_context = type { [18 x i32], [4 x [256 x i32]] }
%struct.mbedtls_ctr_drbg_context = type { [16 x i8], i32, i32, i64, i32, %struct.mbedtls_aes_context, ptr, ptr }
%struct.mbedtls_hmac_drbg_context = type { %struct.mbedtls_md_context_t, [64 x i8], i32, i64, i32, i32, ptr, ptr }
%struct.mbedtls_md_context_t = type { ptr, ptr, ptr }
%struct.mbedtls_rsa_context = type { i32, i64, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, i32, i32 }
%struct.mbedtls_mpi = type { i32, i64, ptr }
%struct.mbedtls_dhm_context = type { i64, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi }
%struct.mbedtls_ecp_keypair = type { %struct.mbedtls_ecp_group, %struct.mbedtls_mpi, %struct.mbedtls_ecp_point }
%struct.mbedtls_ecp_group = type { i32, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_ecp_point, %struct.mbedtls_mpi, i64, i64, i32, ptr, ptr, ptr, ptr, ptr, i64 }
%struct.mbedtls_ecp_point = type { %struct.mbedtls_mpi, %struct.mbedtls_mpi, %struct.mbedtls_mpi }
%struct.mbedtls_ecdh_context = type { %struct.mbedtls_ecp_group, %struct.mbedtls_mpi, %struct.mbedtls_ecp_point, %struct.mbedtls_ecp_point, %struct.mbedtls_mpi, i32, %struct.mbedtls_ecp_point, %struct.mbedtls_ecp_point, %struct.mbedtls_mpi }

@.str = external hidden unnamed_addr constant [4 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [239 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [2 x i8], align 1
@buf = external dso_local global [1024 x i8], align 16
@.str.31 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [4 x i8], align 1
@stdout = external local_unnamed_addr global ptr, align 8
@mbedtls_timing_alarmed = external global i32, align 4
@.str.33 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [15 x i8], align 1
@__const.main.dhm_sizes = external hidden unnamed_addr constant [2 x i32], align 4
@__const.main.dhm_P = external hidden unnamed_addr constant [2 x ptr], align 16
@__const.main.dhm_P_size = external hidden unnamed_addr constant [2 x i64], align 16
@__const.main.dhm_G = external hidden unnamed_addr constant [2 x ptr], align 16
@__const.main.dhm_G_size = external hidden unnamed_addr constant [2 x i64], align 16
@.str.64 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [14 x i8], align 1
@__const.main.montgomery_curve_list = external hidden unnamed_addr constant [3 x %struct.mbedtls_ecp_curve_info], align 16
@.str.72 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [22 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @ecp_clear_precomputed(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
define dso_local noundef i32 @main(i32 noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #0 {
  %3 = alloca [200 x i8], align 16
  %4 = alloca [25 x i8], align 16
  %5 = alloca %struct.mbedtls_arc4_context, align 4
  %6 = alloca %struct.mbedtls_des3_context, align 4
  %7 = alloca %struct.mbedtls_des_context, align 4
  %8 = alloca [8 x i8], align 1
  %9 = alloca %struct.mbedtls_aes_context, align 8
  %10 = alloca %struct.mbedtls_aes_xts_context, align 8
  %11 = alloca %struct.mbedtls_gcm_context, align 8
  %12 = alloca %struct.mbedtls_ccm_context, align 8
  %13 = alloca %struct.mbedtls_chachapoly_context, align 8
  %14 = alloca [16 x i8], align 16
  %15 = alloca %struct.mbedtls_camellia_context, align 4
  %16 = alloca %struct.mbedtls_blowfish_context, align 4
  %17 = alloca %struct.mbedtls_ctr_drbg_context, align 8
  %18 = alloca %struct.mbedtls_hmac_drbg_context, align 8
  %19 = alloca %struct.mbedtls_rsa_context, align 8
  %20 = alloca %struct.mbedtls_dhm_context, align 8
  %21 = alloca i64, align 8
  %22 = alloca %struct.mbedtls_ecp_keypair, align 8
  %23 = alloca i64, align 8
  %24 = alloca %struct.mbedtls_ecdh_context, align 8
  %25 = alloca %struct.mbedtls_mpi, align 8
  %26 = alloca i64, align 8
  %27 = alloca %struct.mbedtls_ecdh_context, align 8
  %28 = alloca %struct.mbedtls_ecdh_context, align 8
  %29 = alloca [1024 x i8], align 16
  %30 = alloca [1024 x i8], align 16
  %31 = alloca i64, align 8
  %32 = alloca ptr, align 8
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 25, ptr nonnull %4) #7
  %33 = icmp slt i32 %0, 2
  br i1 %33, label %.loopexit, label %.preheader1034.preheader

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

.preheader1034:                                   ; preds = %.preheader1034.preheader, %122
  %indvars.iv = phi i64 [ 1, %.preheader1034.preheader ], [ %indvars.iv.next, %122 ]
  %.sroa.5.01097 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.5.1, %122 ]
  %.sroa.7.01096 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.7.1, %122 ]
  %.sroa.9.01095 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.9.1, %122 ]
  %.sroa.11.01094 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.11.1, %122 ]
  %.sroa.13.01093 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.13.1, %122 ]
  %.sroa.15.01092 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.15.1, %122 ]
  %.sroa.17.01091 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.17.1, %122 ]
  %.sroa.19.01090 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.19.1, %122 ]
  %.sroa.21.01089 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.21.1, %122 ]
  %.sroa.23.01088 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.23.1, %122 ]
  %.sroa.25.01087 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.25.1, %122 ]
  %.sroa.27.01086 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.27.1, %122 ]
  %.sroa.29.01085 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.29.1, %122 ]
  %.sroa.31.01084 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.31.1, %122 ]
  %.sroa.33.01083 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.33.1, %122 ]
  %.sroa.36.01082 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.36.1, %122 ]
  %.sroa.38.01081 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.38.1, %122 ]
  %.sroa.40.01080 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.40.1, %122 ]
  %.sroa.42.01079 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.42.1, %122 ]
  %.sroa.45.01078 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.45.1, %122 ]
  %.sroa.47.01077 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.47.1, %122 ]
  %.sroa.49.01076 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.49.1, %122 ]
  %.sroa.51.01075 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.51.1, %122 ]
  %.sroa.53.01074 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.53.1, %122 ]
  %.sroa.55.01073 = phi i8 [ 0, %.preheader1034.preheader ], [ %.sroa.55.1, %122 ]
  %34 = getelementptr inbounds ptr, ptr %1, i64 %indvars.iv
  %35 = load ptr, ptr %34, align 8, !tbaa !5
  %36 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str) #8
  %37 = icmp eq i32 %36, 0
  br i1 %37, label %122, label %38

38:                                               ; preds = %.preheader1034
  %39 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.1) #8
  %40 = icmp eq i32 %39, 0
  br i1 %40, label %122, label %41

41:                                               ; preds = %38
  %42 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.2) #8
  %43 = icmp eq i32 %42, 0
  br i1 %43, label %122, label %44

44:                                               ; preds = %41
  %45 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.3) #8
  %46 = icmp eq i32 %45, 0
  br i1 %46, label %122, label %47

47:                                               ; preds = %44
  %48 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.4) #8
  %49 = icmp eq i32 %48, 0
  br i1 %49, label %122, label %50

50:                                               ; preds = %47
  %51 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.5) #8
  %52 = icmp eq i32 %51, 0
  br i1 %52, label %122, label %53

53:                                               ; preds = %50
  %54 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.6) #8
  %55 = icmp eq i32 %54, 0
  br i1 %55, label %122, label %56

56:                                               ; preds = %53
  %57 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.7) #8
  %58 = icmp eq i32 %57, 0
  br i1 %58, label %122, label %59

59:                                               ; preds = %56
  %60 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.8) #8
  %61 = icmp eq i32 %60, 0
  br i1 %61, label %122, label %62

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

65:                                               ; preds = %62
  %66 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.10) #8
  %67 = icmp eq i32 %66, 0
  br i1 %67, label %122, label %68

68:                                               ; preds = %65
  %69 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.11) #8
  %70 = icmp eq i32 %69, 0
  br i1 %70, label %122, label %71

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

74:                                               ; preds = %71
  %75 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.13) #8
  %76 = icmp eq i32 %75, 0
  br i1 %76, label %122, label %77

77:                                               ; preds = %74
  %78 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.14) #8
  %79 = icmp eq i32 %78, 0
  br i1 %79, label %122, label %80

80:                                               ; preds = %77
  %81 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.15) #8
  %82 = icmp eq i32 %81, 0
  br i1 %82, label %122, label %83

83:                                               ; preds = %80
  %84 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.16) #8
  %85 = icmp eq i32 %84, 0
  br i1 %85, label %122, label %86

86:                                               ; preds = %83
  %87 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.17) #8
  %88 = icmp eq i32 %87, 0
  br i1 %88, label %122, label %89

89:                                               ; preds = %86
  %90 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.18) #8
  %91 = icmp eq i32 %90, 0
  br i1 %91, label %122, label %92

92:                                               ; preds = %89
  %93 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.19) #8
  %94 = icmp eq i32 %93, 0
  br i1 %94, label %122, label %95

95:                                               ; preds = %92
  %96 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.20) #8
  %97 = icmp eq i32 %96, 0
  br i1 %97, label %122, label %98

98:                                               ; preds = %95
  %99 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.21) #8
  %100 = icmp eq i32 %99, 0
  br i1 %100, label %122, label %101

101:                                              ; preds = %98
  %102 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.22) #8
  %103 = icmp eq i32 %102, 0
  br i1 %103, label %122, label %104

104:                                              ; preds = %101
  %105 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.23) #8
  %106 = icmp eq i32 %105, 0
  br i1 %106, label %122, label %107

107:                                              ; preds = %104
  %108 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.24) #8
  %109 = icmp eq i32 %108, 0
  br i1 %109, label %122, label %110

110:                                              ; preds = %107
  %111 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.25) #8
  %112 = icmp eq i32 %111, 0
  br i1 %112, label %122, label %113

113:                                              ; preds = %110
  %114 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.26) #8
  %115 = icmp eq i32 %114, 0
  br i1 %115, label %122, label %116

116:                                              ; preds = %113
  %117 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.27) #8
  %118 = icmp eq i32 %117, 0
  br i1 %118, label %122, label %119

119:                                              ; preds = %116
  %120 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28, ptr noundef %35)
  %121 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.29)
  br label %122

122:                                              ; preds = %116, %113, %110, %107, %104, %101, %98, %95, %92, %89, %86, %83, %80, %77, %74, %71, %68, %65, %62, %59, %56, %53, %50, %47, %44, %41, %38, %.preheader1034, %119
  %.sroa.55.1 = phi i8 [ %.sroa.55.01073, %119 ], [ %.sroa.55.01073, %.preheader1034 ], [ %.sroa.55.01073, %38 ], [ %.sroa.55.01073, %41 ], [ %.sroa.55.01073, %44 ], [ %.sroa.55.01073, %47 ], [ %.sroa.55.01073, %50 ], [ %.sroa.55.01073, %53 ], [ %.sroa.55.01073, %56 ], [ %.sroa.55.01073, %59 ], [ %.sroa.55.01073, %62 ], [ %.sroa.55.01073, %65 ], [ %.sroa.55.01073, %68 ], [ %.sroa.55.01073, %71 ], [ %.sroa.55.01073, %74 ], [ %.sroa.55.01073, %77 ], [ %.sroa.55.01073, %80 ], [ %.sroa.55.01073, %83 ], [ %.sroa.55.01073, %86 ], [ %.sroa.55.01073, %89 ], [ %.sroa.55.01073, %92 ], [ %.sroa.55.01073, %95 ], [ %.sroa.55.01073, %98 ], [ %.sroa.55.01073, %101 ], [ %.sroa.55.01073, %104 ], [ %.sroa.55.01073, %107 ], [ %.sroa.55.01073, %110 ], [ %.sroa.55.01073, %113 ], [ 1, %116 ]
  %.sroa.53.1 = phi i8 [ %.sroa.53.01074, %119 ], [ %.sroa.53.01074, %.preheader1034 ], [ %.sroa.53.01074, %38 ], [ %.sroa.53.01074, %41 ], [ %.sroa.53.01074, %44 ], [ %.sroa.53.01074, %47 ], [ %.sroa.53.01074, %50 ], [ %.sroa.53.01074, %53 ], [ %.sroa.53.01074, %56 ], [ %.sroa.53.01074, %59 ], [ %.sroa.53.01074, %62 ], [ %.sroa.53.01074, %65 ], [ %.sroa.53.01074, %68 ], [ %.sroa.53.01074, %71 ], [ %.sroa.53.01074, %74 ], [ %.sroa.53.01074, %77 ], [ %.sroa.53.01074, %80 ], [ %.sroa.53.01074, %83 ], [ %.sroa.53.01074, %86 ], [ %.sroa.53.01074, %89 ], [ %.sroa.53.01074, %92 ], [ %.sroa.53.01074, %95 ], [ %.sroa.53.01074, %98 ], [ %.sroa.53.01074, %101 ], [ %.sroa.53.01074, %104 ], [ %.sroa.53.01074, %107 ], [ %.sroa.53.01074, %110 ], [ 1, %113 ], [ %.sroa.53.01074, %116 ]
  %.sroa.51.1 = phi i8 [ %.sroa.51.01075, %119 ], [ %.sroa.51.01075, %.preheader1034 ], [ %.sroa.51.01075, %38 ], [ %.sroa.51.01075, %41 ], [ %.sroa.51.01075, %44 ], [ %.sroa.51.01075, %47 ], [ %.sroa.51.01075, %50 ], [ %.sroa.51.01075, %53 ], [ %.sroa.51.01075, %56 ], [ %.sroa.51.01075, %59 ], [ %.sroa.51.01075, %62 ], [ %.sroa.51.01075, %65 ], [ %.sroa.51.01075, %68 ], [ %.sroa.51.01075, %71 ], [ %.sroa.51.01075, %74 ], [ %.sroa.51.01075, %77 ], [ %.sroa.51.01075, %80 ], [ %.sroa.51.01075, %83 ], [ %.sroa.51.01075, %86 ], [ %.sroa.51.01075, %89 ], [ %.sroa.51.01075, %92 ], [ %.sroa.51.01075, %95 ], [ %.sroa.51.01075, %98 ], [ %.sroa.51.01075, %101 ], [ %.sroa.51.01075, %104 ], [ %.sroa.51.01075, %107 ], [ 1, %110 ], [ %.sroa.51.01075, %113 ], [ %.sroa.51.01075, %116 ]
  %.sroa.49.1 = phi i8 [ %.sroa.49.01076, %119 ], [ %.sroa.49.01076, %.preheader1034 ], [ %.sroa.49.01076, %38 ], [ %.sroa.49.01076, %41 ], [ %.sroa.49.01076, %44 ], [ %.sroa.49.01076, %47 ], [ %.sroa.49.01076, %50 ], [ %.sroa.49.01076, %53 ], [ %.sroa.49.01076, %56 ], [ %.sroa.49.01076, %59 ], [ %.sroa.49.01076, %62 ], [ %.sroa.49.01076, %65 ], [ %.sroa.49.01076, %68 ], [ %.sroa.49.01076, %71 ], [ %.sroa.49.01076, %74 ], [ %.sroa.49.01076, %77 ], [ %.sroa.49.01076, %80 ], [ %.sroa.49.01076, %83 ], [ %.sroa.49.01076, %86 ], [ %.sroa.49.01076, %89 ], [ %.sroa.49.01076, %92 ], [ %.sroa.49.01076, %95 ], [ %.sroa.49.01076, %98 ], [ %.sroa.49.01076, %101 ], [ %.sroa.49.01076, %104 ], [ 1, %107 ], [ %.sroa.49.01076, %110 ], [ %.sroa.49.01076, %113 ], [ %.sroa.49.01076, %116 ]
  %.sroa.47.1 = phi i8 [ %.sroa.47.01077, %119 ], [ %.sroa.47.01077, %.preheader1034 ], [ %.sroa.47.01077, %38 ], [ %.sroa.47.01077, %41 ], [ %.sroa.47.01077, %44 ], [ %.sroa.47.01077, %47 ], [ %.sroa.47.01077, %50 ], [ %.sroa.47.01077, %53 ], [ %.sroa.47.01077, %56 ], [ %.sroa.47.01077, %59 ], [ %.sroa.47.01077, %62 ], [ %.sroa.47.01077, %65 ], [ %.sroa.47.01077, %68 ], [ %.sroa.47.01077, %71 ], [ %.sroa.47.01077, %74 ], [ %.sroa.47.01077, %77 ], [ %.sroa.47.01077, %80 ], [ %.sroa.47.01077, %83 ], [ %.sroa.47.01077, %86 ], [ %.sroa.47.01077, %89 ], [ %.sroa.47.01077, %92 ], [ %.sroa.47.01077, %95 ], [ %.sroa.47.01077, %98 ], [ %.sroa.47.01077, %101 ], [ 1, %104 ], [ %.sroa.47.01077, %107 ], [ %.sroa.47.01077, %110 ], [ %.sroa.47.01077, %113 ], [ %.sroa.47.01077, %116 ]
  %.sroa.45.1 = phi i8 [ %.sroa.45.01078, %119 ], [ %.sroa.45.01078, %.preheader1034 ], [ %.sroa.45.01078, %38 ], [ %.sroa.45.01078, %41 ], [ %.sroa.45.01078, %44 ], [ %.sroa.45.01078, %47 ], [ %.sroa.45.01078, %50 ], [ %.sroa.45.01078, %53 ], [ %.sroa.45.01078, %56 ], [ %.sroa.45.01078, %59 ], [ %.sroa.45.01078, %62 ], [ %.sroa.45.01078, %65 ], [ %.sroa.45.01078, %68 ], [ %.sroa.45.01078, %71 ], [ %.sroa.45.01078, %74 ], [ %.sroa.45.01078, %77 ], [ %.sroa.45.01078, %80 ], [ %.sroa.45.01078, %83 ], [ %.sroa.45.01078, %86 ], [ %.sroa.45.01078, %89 ], [ %.sroa.45.01078, %92 ], [ %.sroa.45.01078, %95 ], [ %.sroa.45.01078, %98 ], [ 1, %101 ], [ %.sroa.45.01078, %104 ], [ %.sroa.45.01078, %107 ], [ %.sroa.45.01078, %110 ], [ %.sroa.45.01078, %113 ], [ %.sroa.45.01078, %116 ]
  %.sroa.42.1 = phi i8 [ %.sroa.42.01079, %119 ], [ %.sroa.42.01079, %.preheader1034 ], [ %.sroa.42.01079, %38 ], [ %.sroa.42.01079, %41 ], [ %.sroa.42.01079, %44 ], [ %.sroa.42.01079, %47 ], [ %.sroa.42.01079, %50 ], [ %.sroa.42.01079, %53 ], [ %.sroa.42.01079, %56 ], [ %.sroa.42.01079, %59 ], [ %.sroa.42.01079, %62 ], [ %.sroa.42.01079, %65 ], [ %.sroa.42.01079, %68 ], [ %.sroa.42.01079, %71 ], [ %.sroa.42.01079, %74 ], [ %.sroa.42.01079, %77 ], [ %.sroa.42.01079, %80 ], [ %.sroa.42.01079, %83 ], [ %.sroa.42.01079, %86 ], [ %.sroa.42.01079, %89 ], [ %.sroa.42.01079, %92 ], [ 1, %95 ], [ %.sroa.42.01079, %98 ], [ %.sroa.42.01079, %101 ], [ %.sroa.42.01079, %104 ], [ %.sroa.42.01079, %107 ], [ %.sroa.42.01079, %110 ], [ %.sroa.42.01079, %113 ], [ %.sroa.42.01079, %116 ]
  %.sroa.40.1 = phi i8 [ %.sroa.40.01080, %119 ], [ %.sroa.40.01080, %.preheader1034 ], [ %.sroa.40.01080, %38 ], [ %.sroa.40.01080, %41 ], [ %.sroa.40.01080, %44 ], [ %.sroa.40.01080, %47 ], [ %.sroa.40.01080, %50 ], [ %.sroa.40.01080, %53 ], [ %.sroa.40.01080, %56 ], [ %.sroa.40.01080, %59 ], [ %.sroa.40.01080, %62 ], [ %.sroa.40.01080, %65 ], [ %.sroa.40.01080, %68 ], [ %.sroa.40.01080, %71 ], [ %.sroa.40.01080, %74 ], [ %.sroa.40.01080, %77 ], [ %.sroa.40.01080, %80 ], [ %.sroa.40.01080, %83 ], [ %.sroa.40.01080, %86 ], [ %.sroa.40.01080, %89 ], [ 1, %92 ], [ %.sroa.40.01080, %95 ], [ %.sroa.40.01080, %98 ], [ %.sroa.40.01080, %101 ], [ %.sroa.40.01080, %104 ], [ %.sroa.40.01080, %107 ], [ %.sroa.40.01080, %110 ], [ %.sroa.40.01080, %113 ], [ %.sroa.40.01080, %116 ]
  %.sroa.38.1 = phi i8 [ %.sroa.38.01081, %119 ], [ %.sroa.38.01081, %.preheader1034 ], [ %.sroa.38.01081, %38 ], [ %.sroa.38.01081, %41 ], [ %.sroa.38.01081, %44 ], [ %.sroa.38.01081, %47 ], [ %.sroa.38.01081, %50 ], [ %.sroa.38.01081, %53 ], [ %.sroa.38.01081, %56 ], [ %.sroa.38.01081, %59 ], [ %.sroa.38.01081, %62 ], [ %.sroa.38.01081, %65 ], [ %.sroa.38.01081, %68 ], [ %.sroa.38.01081, %71 ], [ %.sroa.38.01081, %74 ], [ %.sroa.38.01081, %77 ], [ %.sroa.38.01081, %80 ], [ %.sroa.38.01081, %83 ], [ %.sroa.38.01081, %86 ], [ 1, %89 ], [ %.sroa.38.01081, %92 ], [ %.sroa.38.01081, %95 ], [ %.sroa.38.01081, %98 ], [ %.sroa.38.01081, %101 ], [ %.sroa.38.01081, %104 ], [ %.sroa.38.01081, %107 ], [ %.sroa.38.01081, %110 ], [ %.sroa.38.01081, %113 ], [ %.sroa.38.01081, %116 ]
  %.sroa.36.1 = phi i8 [ %.sroa.36.01082, %119 ], [ %.sroa.36.01082, %.preheader1034 ], [ %.sroa.36.01082, %38 ], [ %.sroa.36.01082, %41 ], [ %.sroa.36.01082, %44 ], [ %.sroa.36.01082, %47 ], [ %.sroa.36.01082, %50 ], [ %.sroa.36.01082, %53 ], [ %.sroa.36.01082, %56 ], [ %.sroa.36.01082, %59 ], [ %.sroa.36.01082, %62 ], [ %.sroa.36.01082, %65 ], [ %.sroa.36.01082, %68 ], [ %.sroa.36.01082, %71 ], [ %.sroa.36.01082, %74 ], [ %.sroa.36.01082, %77 ], [ %.sroa.36.01082, %80 ], [ %.sroa.36.01082, %83 ], [ 1, %86 ], [ %.sroa.36.01082, %89 ], [ %.sroa.36.01082, %92 ], [ %.sroa.36.01082, %95 ], [ %.sroa.36.01082, %98 ], [ %.sroa.36.01082, %101 ], [ %.sroa.36.01082, %104 ], [ %.sroa.36.01082, %107 ], [ %.sroa.36.01082, %110 ], [ %.sroa.36.01082, %113 ], [ %.sroa.36.01082, %116 ]
  %.sroa.33.1 = phi i8 [ %.sroa.33.01083, %119 ], [ %.sroa.33.01083, %.preheader1034 ], [ %.sroa.33.01083, %38 ], [ %.sroa.33.01083, %41 ], [ %.sroa.33.01083, %44 ], [ %.sroa.33.01083, %47 ], [ %.sroa.33.01083, %50 ], [ %.sroa.33.01083, %53 ], [ %.sroa.33.01083, %56 ], [ %.sroa.33.01083, %59 ], [ %.sroa.33.01083, %62 ], [ %.sroa.33.01083, %65 ], [ %.sroa.33.01083, %68 ], [ %.sroa.33.01083, %71 ], [ %.sroa.33.01083, %74 ], [ %.sroa.33.01083, %77 ], [ 1, %80 ], [ %.sroa.33.01083, %83 ], [ %.sroa.33.01083, %86 ], [ %.sroa.33.01083, %89 ], [ %.sroa.33.01083, %92 ], [ %.sroa.33.01083, %95 ], [ %.sroa.33.01083, %98 ], [ %.sroa.33.01083, %101 ], [ %.sroa.33.01083, %104 ], [ %.sroa.33.01083, %107 ], [ %.sroa.33.01083, %110 ], [ %.sroa.33.01083, %113 ], [ %.sroa.33.01083, %116 ]
  %.sroa.31.1 = phi i8 [ %.sroa.31.01084, %119 ], [ %.sroa.31.01084, %.preheader1034 ], [ %.sroa.31.01084, %38 ], [ %.sroa.31.01084, %41 ], [ %.sroa.31.01084, %44 ], [ %.sroa.31.01084, %47 ], [ %.sroa.31.01084, %50 ], [ %.sroa.31.01084, %53 ], [ %.sroa.31.01084, %56 ], [ %.sroa.31.01084, %59 ], [ %.sroa.31.01084, %62 ], [ %.sroa.31.01084, %65 ], [ %.sroa.31.01084, %68 ], [ %.sroa.31.01084, %71 ], [ %.sroa.31.01084, %74 ], [ 1, %77 ], [ %.sroa.31.01084, %80 ], [ %.sroa.31.01084, %83 ], [ %.sroa.31.01084, %86 ], [ %.sroa.31.01084, %89 ], [ %.sroa.31.01084, %92 ], [ %.sroa.31.01084, %95 ], [ %.sroa.31.01084, %98 ], [ %.sroa.31.01084, %101 ], [ %.sroa.31.01084, %104 ], [ %.sroa.31.01084, %107 ], [ %.sroa.31.01084, %110 ], [ %.sroa.31.01084, %113 ], [ %.sroa.31.01084, %116 ]
  %.sroa.29.1 = phi i8 [ %.sroa.29.01085, %119 ], [ %.sroa.29.01085, %.preheader1034 ], [ %.sroa.29.01085, %38 ], [ %.sroa.29.01085, %41 ], [ %.sroa.29.01085, %44 ], [ %.sroa.29.01085, %47 ], [ %.sroa.29.01085, %50 ], [ %.sroa.29.01085, %53 ], [ %.sroa.29.01085, %56 ], [ %.sroa.29.01085, %59 ], [ %.sroa.29.01085, %62 ], [ %.sroa.29.01085, %65 ], [ %.sroa.29.01085, %68 ], [ %.sroa.29.01085, %71 ], [ 1, %74 ], [ %.sroa.29.01085, %77 ], [ %.sroa.29.01085, %80 ], [ %.sroa.29.01085, %83 ], [ %.sroa.29.01085, %86 ], [ %.sroa.29.01085, %89 ], [ %.sroa.29.01085, %92 ], [ %.sroa.29.01085, %95 ], [ %.sroa.29.01085, %98 ], [ %.sroa.29.01085, %101 ], [ %.sroa.29.01085, %104 ], [ %.sroa.29.01085, %107 ], [ %.sroa.29.01085, %110 ], [ %.sroa.29.01085, %113 ], [ %.sroa.29.01085, %116 ]
  %.sroa.27.1 = phi i8 [ %.sroa.27.01086, %119 ], [ %.sroa.27.01086, %.preheader1034 ], [ %.sroa.27.01086, %38 ], [ %.sroa.27.01086, %41 ], [ %.sroa.27.01086, %44 ], [ %.sroa.27.01086, %47 ], [ %.sroa.27.01086, %50 ], [ %.sroa.27.01086, %53 ], [ %.sroa.27.01086, %56 ], [ %.sroa.27.01086, %59 ], [ %.sroa.27.01086, %62 ], [ 1, %65 ], [ %.sroa.27.01086, %68 ], [ %.sroa.27.01086, %71 ], [ %.sroa.27.01086, %74 ], [ %.sroa.27.01086, %77 ], [ %.sroa.27.01086, %80 ], [ %.sroa.27.01086, %83 ], [ %.sroa.27.01086, %86 ], [ %.sroa.27.01086, %89 ], [ %.sroa.27.01086, %92 ], [ %.sroa.27.01086, %95 ], [ %.sroa.27.01086, %98 ], [ %.sroa.27.01086, %101 ], [ %.sroa.27.01086, %104 ], [ %.sroa.27.01086, %107 ], [ %.sroa.27.01086, %110 ], [ %.sroa.27.01086, %113 ], [ %.sroa.27.01086, %116 ]
  %.sroa.25.1 = phi i8 [ %.sroa.25.01087, %119 ], [ %.sroa.25.01087, %.preheader1034 ], [ %.sroa.25.01087, %38 ], [ %.sroa.25.01087, %41 ], [ %.sroa.25.01087, %44 ], [ %.sroa.25.01087, %47 ], [ %.sroa.25.01087, %50 ], [ %.sroa.25.01087, %53 ], [ %.sroa.25.01087, %56 ], [ %.sroa.25.01087, %59 ], [ %.sroa.25.01087, %62 ], [ %.sroa.25.01087, %65 ], [ %.sroa.25.01087, %68 ], [ 1, %71 ], [ %.sroa.25.01087, %74 ], [ %.sroa.25.01087, %77 ], [ %.sroa.25.01087, %80 ], [ %.sroa.25.01087, %83 ], [ %.sroa.25.01087, %86 ], [ %.sroa.25.01087, %89 ], [ %.sroa.25.01087, %92 ], [ %.sroa.25.01087, %95 ], [ %.sroa.25.01087, %98 ], [ %.sroa.25.01087, %101 ], [ %.sroa.25.01087, %104 ], [ %.sroa.25.01087, %107 ], [ %.sroa.25.01087, %110 ], [ %.sroa.25.01087, %113 ], [ %.sroa.25.01087, %116 ]
  %.sroa.23.1 = phi i8 [ %.sroa.23.01088, %119 ], [ %.sroa.23.01088, %.preheader1034 ], [ %.sroa.23.01088, %38 ], [ %.sroa.23.01088, %41 ], [ %.sroa.23.01088, %44 ], [ %.sroa.23.01088, %47 ], [ %.sroa.23.01088, %50 ], [ %.sroa.23.01088, %53 ], [ %.sroa.23.01088, %56 ], [ %.sroa.23.01088, %59 ], [ %.sroa.23.01088, %62 ], [ %.sroa.23.01088, %65 ], [ 1, %68 ], [ %.sroa.23.01088, %71 ], [ %.sroa.23.01088, %74 ], [ %.sroa.23.01088, %77 ], [ %.sroa.23.01088, %80 ], [ %.sroa.23.01088, %83 ], [ %.sroa.23.01088, %86 ], [ %.sroa.23.01088, %89 ], [ %.sroa.23.01088, %92 ], [ %.sroa.23.01088, %95 ], [ %.sroa.23.01088, %98 ], [ %.sroa.23.01088, %101 ], [ %.sroa.23.01088, %104 ], [ %.sroa.23.01088, %107 ], [ %.sroa.23.01088, %110 ], [ %.sroa.23.01088, %113 ], [ %.sroa.23.01088, %116 ]
  %.sroa.21.1 = phi i8 [ %.sroa.21.01089, %119 ], [ %.sroa.21.01089, %.preheader1034 ], [ %.sroa.21.01089, %38 ], [ %.sroa.21.01089, %41 ], [ %.sroa.21.01089, %44 ], [ %.sroa.21.01089, %47 ], [ %.sroa.21.01089, %50 ], [ %.sroa.21.01089, %53 ], [ %.sroa.21.01089, %56 ], [ %.sroa.21.01089, %59 ], [ 1, %62 ], [ %.sroa.21.01089, %65 ], [ %.sroa.21.01089, %68 ], [ %.sroa.21.01089, %71 ], [ %.sroa.21.01089, %74 ], [ %.sroa.21.01089, %77 ], [ %.sroa.21.01089, %80 ], [ %.sroa.21.01089, %83 ], [ %.sroa.21.01089, %86 ], [ %.sroa.21.01089, %89 ], [ %.sroa.21.01089, %92 ], [ %.sroa.21.01089, %95 ], [ %.sroa.21.01089, %98 ], [ %.sroa.21.01089, %101 ], [ %.sroa.21.01089, %104 ], [ %.sroa.21.01089, %107 ], [ %.sroa.21.01089, %110 ], [ %.sroa.21.01089, %113 ], [ %.sroa.21.01089, %116 ]
  %.sroa.19.1 = phi i8 [ %.sroa.19.01090, %119 ], [ %.sroa.19.01090, %.preheader1034 ], [ %.sroa.19.01090, %38 ], [ %.sroa.19.01090, %41 ], [ %.sroa.19.01090, %44 ], [ %.sroa.19.01090, %47 ], [ %.sroa.19.01090, %50 ], [ %.sroa.19.01090, %53 ], [ %.sroa.19.01090, %56 ], [ 1, %59 ], [ %.sroa.19.01090, %62 ], [ %.sroa.19.01090, %65 ], [ %.sroa.19.01090, %68 ], [ %.sroa.19.01090, %71 ], [ %.sroa.19.01090, %74 ], [ %.sroa.19.01090, %77 ], [ %.sroa.19.01090, %80 ], [ %.sroa.19.01090, %83 ], [ %.sroa.19.01090, %86 ], [ %.sroa.19.01090, %89 ], [ %.sroa.19.01090, %92 ], [ %.sroa.19.01090, %95 ], [ %.sroa.19.01090, %98 ], [ %.sroa.19.01090, %101 ], [ %.sroa.19.01090, %104 ], [ %.sroa.19.01090, %107 ], [ %.sroa.19.01090, %110 ], [ %.sroa.19.01090, %113 ], [ %.sroa.19.01090, %116 ]
  %.sroa.17.1 = phi i8 [ %.sroa.17.01091, %119 ], [ %.sroa.17.01091, %.preheader1034 ], [ %.sroa.17.01091, %38 ], [ %.sroa.17.01091, %41 ], [ %.sroa.17.01091, %44 ], [ %.sroa.17.01091, %47 ], [ %.sroa.17.01091, %50 ], [ %.sroa.17.01091, %53 ], [ 1, %56 ], [ %.sroa.17.01091, %59 ], [ %.sroa.17.01091, %62 ], [ %.sroa.17.01091, %65 ], [ %.sroa.17.01091, %68 ], [ %.sroa.17.01091, %71 ], [ %.sroa.17.01091, %74 ], [ %.sroa.17.01091, %77 ], [ %.sroa.17.01091, %80 ], [ %.sroa.17.01091, %83 ], [ %.sroa.17.01091, %86 ], [ %.sroa.17.01091, %89 ], [ %.sroa.17.01091, %92 ], [ %.sroa.17.01091, %95 ], [ %.sroa.17.01091, %98 ], [ %.sroa.17.01091, %101 ], [ %.sroa.17.01091, %104 ], [ %.sroa.17.01091, %107 ], [ %.sroa.17.01091, %110 ], [ %.sroa.17.01091, %113 ], [ %.sroa.17.01091, %116 ]
  %.sroa.15.1 = phi i8 [ %.sroa.15.01092, %119 ], [ %.sroa.15.01092, %.preheader1034 ], [ %.sroa.15.01092, %38 ], [ %.sroa.15.01092, %41 ], [ %.sroa.15.01092, %44 ], [ %.sroa.15.01092, %47 ], [ %.sroa.15.01092, %50 ], [ 1, %53 ], [ %.sroa.15.01092, %56 ], [ %.sroa.15.01092, %59 ], [ %.sroa.15.01092, %62 ], [ %.sroa.15.01092, %65 ], [ %.sroa.15.01092, %68 ], [ %.sroa.15.01092, %71 ], [ %.sroa.15.01092, %74 ], [ %.sroa.15.01092, %77 ], [ %.sroa.15.01092, %80 ], [ %.sroa.15.01092, %83 ], [ %.sroa.15.01092, %86 ], [ %.sroa.15.01092, %89 ], [ %.sroa.15.01092, %92 ], [ %.sroa.15.01092, %95 ], [ %.sroa.15.01092, %98 ], [ %.sroa.15.01092, %101 ], [ %.sroa.15.01092, %104 ], [ %.sroa.15.01092, %107 ], [ %.sroa.15.01092, %110 ], [ %.sroa.15.01092, %113 ], [ %.sroa.15.01092, %116 ]
  %.sroa.13.1 = phi i8 [ %.sroa.13.01093, %119 ], [ %.sroa.13.01093, %.preheader1034 ], [ %.sroa.13.01093, %38 ], [ %.sroa.13.01093, %41 ], [ %.sroa.13.01093, %44 ], [ %.sroa.13.01093, %47 ], [ 1, %50 ], [ %.sroa.13.01093, %53 ], [ %.sroa.13.01093, %56 ], [ %.sroa.13.01093, %59 ], [ %.sroa.13.01093, %62 ], [ %.sroa.13.01093, %65 ], [ %.sroa.13.01093, %68 ], [ %.sroa.13.01093, %71 ], [ %.sroa.13.01093, %74 ], [ %.sroa.13.01093, %77 ], [ %.sroa.13.01093, %80 ], [ %.sroa.13.01093, %83 ], [ %.sroa.13.01093, %86 ], [ %.sroa.13.01093, %89 ], [ %.sroa.13.01093, %92 ], [ %.sroa.13.01093, %95 ], [ %.sroa.13.01093, %98 ], [ %.sroa.13.01093, %101 ], [ %.sroa.13.01093, %104 ], [ %.sroa.13.01093, %107 ], [ %.sroa.13.01093, %110 ], [ %.sroa.13.01093, %113 ], [ %.sroa.13.01093, %116 ]
  %.sroa.11.1 = phi i8 [ %.sroa.11.01094, %119 ], [ %.sroa.11.01094, %.preheader1034 ], [ %.sroa.11.01094, %38 ], [ %.sroa.11.01094, %41 ], [ %.sroa.11.01094, %44 ], [ 1, %47 ], [ %.sroa.11.01094, %50 ], [ %.sroa.11.01094, %53 ], [ %.sroa.11.01094, %56 ], [ %.sroa.11.01094, %59 ], [ %.sroa.11.01094, %62 ], [ %.sroa.11.01094, %65 ], [ %.sroa.11.01094, %68 ], [ %.sroa.11.01094, %71 ], [ %.sroa.11.01094, %74 ], [ %.sroa.11.01094, %77 ], [ %.sroa.11.01094, %80 ], [ %.sroa.11.01094, %83 ], [ %.sroa.11.01094, %86 ], [ %.sroa.11.01094, %89 ], [ %.sroa.11.01094, %92 ], [ %.sroa.11.01094, %95 ], [ %.sroa.11.01094, %98 ], [ %.sroa.11.01094, %101 ], [ %.sroa.11.01094, %104 ], [ %.sroa.11.01094, %107 ], [ %.sroa.11.01094, %110 ], [ %.sroa.11.01094, %113 ], [ %.sroa.11.01094, %116 ]
  %.sroa.9.1 = phi i8 [ %.sroa.9.01095, %119 ], [ %.sroa.9.01095, %.preheader1034 ], [ %.sroa.9.01095, %38 ], [ %.sroa.9.01095, %41 ], [ 1, %44 ], [ %.sroa.9.01095, %47 ], [ %.sroa.9.01095, %50 ], [ %.sroa.9.01095, %53 ], [ %.sroa.9.01095, %56 ], [ %.sroa.9.01095, %59 ], [ %.sroa.9.01095, %62 ], [ %.sroa.9.01095, %65 ], [ %.sroa.9.01095, %68 ], [ %.sroa.9.01095, %71 ], [ %.sroa.9.01095, %74 ], [ %.sroa.9.01095, %77 ], [ %.sroa.9.01095, %80 ], [ %.sroa.9.01095, %83 ], [ %.sroa.9.01095, %86 ], [ %.sroa.9.01095, %89 ], [ %.sroa.9.01095, %92 ], [ %.sroa.9.01095, %95 ], [ %.sroa.9.01095, %98 ], [ %.sroa.9.01095, %101 ], [ %.sroa.9.01095, %104 ], [ %.sroa.9.01095, %107 ], [ %.sroa.9.01095, %110 ], [ %.sroa.9.01095, %113 ], [ %.sroa.9.01095, %116 ]
  %.sroa.7.1 = phi i8 [ %.sroa.7.01096, %119 ], [ %.sroa.7.01096, %.preheader1034 ], [ %.sroa.7.01096, %38 ], [ 1, %41 ], [ %.sroa.7.01096, %44 ], [ %.sroa.7.01096, %47 ], [ %.sroa.7.01096, %50 ], [ %.sroa.7.01096, %53 ], [ %.sroa.7.01096, %56 ], [ %.sroa.7.01096, %59 ], [ %.sroa.7.01096, %62 ], [ %.sroa.7.01096, %65 ], [ %.sroa.7.01096, %68 ], [ %.sroa.7.01096, %71 ], [ %.sroa.7.01096, %74 ], [ %.sroa.7.01096, %77 ], [ %.sroa.7.01096, %80 ], [ %.sroa.7.01096, %83 ], [ %.sroa.7.01096, %86 ], [ %.sroa.7.01096, %89 ], [ %.sroa.7.01096, %92 ], [ %.sroa.7.01096, %95 ], [ %.sroa.7.01096, %98 ], [ %.sroa.7.01096, %101 ], [ %.sroa.7.01096, %104 ], [ %.sroa.7.01096, %107 ], [ %.sroa.7.01096, %110 ], [ %.sroa.7.01096, %113 ], [ %.sroa.7.01096, %116 ]
  %.sroa.5.1 = phi i8 [ %.sroa.5.01097, %119 ], [ %.sroa.5.01097, %.preheader1034 ], [ 1, %38 ], [ %.sroa.5.01097, %41 ], [ %.sroa.5.01097, %44 ], [ %.sroa.5.01097, %47 ], [ %.sroa.5.01097, %50 ], [ %.sroa.5.01097, %53 ], [ %.sroa.5.01097, %56 ], [ %.sroa.5.01097, %59 ], [ %.sroa.5.01097, %62 ], [ %.sroa.5.01097, %65 ], [ %.sroa.5.01097, %68 ], [ %.sroa.5.01097, %71 ], [ %.sroa.5.01097, %74 ], [ %.sroa.5.01097, %77 ], [ %.sroa.5.01097, %80 ], [ %.sroa.5.01097, %83 ], [ %.sroa.5.01097, %86 ], [ %.sroa.5.01097, %89 ], [ %.sroa.5.01097, %92 ], [ %.sroa.5.01097, %95 ], [ %.sroa.5.01097, %98 ], [ %.sroa.5.01097, %101 ], [ %.sroa.5.01097, %104 ], [ %.sroa.5.01097, %107 ], [ %.sroa.5.01097, %110 ], [ %.sroa.5.01097, %113 ], [ %.sroa.5.01097, %116 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit, label %.preheader1034, !llvm.loop !9

.loopexit:                                        ; preds = %122, %2
  %.sroa.55.2 = phi i8 [ 1, %2 ], [ %.sroa.55.1, %122 ]
  %.sroa.53.2 = phi i8 [ 1, %2 ], [ %.sroa.53.1, %122 ]
  %.sroa.51.2 = phi i8 [ 1, %2 ], [ %.sroa.51.1, %122 ]
  %.sroa.49.2 = phi i8 [ 1, %2 ], [ %.sroa.49.1, %122 ]
  %.sroa.47.2 = phi i8 [ 1, %2 ], [ %.sroa.47.1, %122 ]
  %.sroa.45.2 = phi i8 [ 1, %2 ], [ %.sroa.45.1, %122 ]
  %.sroa.42.2 = phi i8 [ 1, %2 ], [ %.sroa.42.1, %122 ]
  %.sroa.40.2 = phi i8 [ 1, %2 ], [ %.sroa.40.1, %122 ]
  %.sroa.38.2 = phi i8 [ 1, %2 ], [ %.sroa.38.1, %122 ]
  %.sroa.36.2 = phi i8 [ 1, %2 ], [ %.sroa.36.1, %122 ]
  %.sroa.33.2 = phi i8 [ 1, %2 ], [ %.sroa.33.1, %122 ]
  %.sroa.31.2 = phi i8 [ 1, %2 ], [ %.sroa.31.1, %122 ]
  %.sroa.29.2 = phi i8 [ 1, %2 ], [ %.sroa.29.1, %122 ]
  %.sroa.27.2 = phi i8 [ 1, %2 ], [ %.sroa.27.1, %122 ]
  %.sroa.25.2 = phi i8 [ 1, %2 ], [ %.sroa.25.1, %122 ]
  %.sroa.23.2 = phi i8 [ 1, %2 ], [ %.sroa.23.1, %122 ]
  %.sroa.21.2 = phi i8 [ 1, %2 ], [ %.sroa.21.1, %122 ]
  %.sroa.19.2 = phi i8 [ 1, %2 ], [ %.sroa.19.1, %122 ]
  %.sroa.17.2 = phi i8 [ 1, %2 ], [ %.sroa.17.1, %122 ]
  %.sroa.15.2 = phi i8 [ 1, %2 ], [ %.sroa.15.1, %122 ]
  %.sroa.13.2 = phi i8 [ 1, %2 ], [ %.sroa.13.1, %122 ]
  %.sroa.11.2 = phi i8 [ 1, %2 ], [ %.sroa.11.1, %122 ]
  %.sroa.9.2 = phi i8 [ 1, %2 ], [ %.sroa.9.1, %122 ]
  %.sroa.7.2 = phi i8 [ 1, %2 ], [ %.sroa.7.1, %122 ]
  %.sroa.5.2 = phi i8 [ 1, %2 ], [ %.sroa.5.1, %122 ]
  %123 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 -86, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 -69, i64 200, i1 false)
  %.not = icmp eq i8 %.sroa.5.2, 0
  br i1 %.not, label %150, label %124

124:                                              ; preds = %.loopexit
  %125 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.32)
  %126 = load ptr, ptr @stdout, align 8, !tbaa !5
  %127 = tail call i32 @fflush(ptr noundef %126)
  tail call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %128

128:                                              ; preds = %124, %130
  %.06801100 = phi i64 [ 1, %124 ], [ %132, %130 ]
  %129 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not808 = icmp eq i32 %129, 0
  br i1 %.not808, label %130, label %.lr.ph.preheader

130:                                              ; preds = %128
  %131 = call i32 @mbedtls_md5_ret(ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %3) #7
  %132 = add i64 %.06801100, 1
  %133 = icmp eq i32 %131, 0
  br i1 %133, label %128, label %._crit_edge.thread, !llvm.loop !13

._crit_edge.thread:                               ; preds = %130
  %134 = call i64 @mbedtls_timing_hardclock() #7
  br label %141

.lr.ph.preheader:                                 ; preds = %128
  %135 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %.06851101 = phi i64 [ %137, %.lr.ph ], [ 0, %.lr.ph.preheader ]
  %136 = call i32 @mbedtls_md5_ret(ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %3) #7
  %137 = add nuw nsw i64 %.06851101, 1
  %138 = icmp eq i32 %136, 0
  %139 = icmp ult i64 %.06851101, 1023
  %140 = select i1 %138, i1 %139, i1 false
  br i1 %140, label %.lr.ph, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph
  br i1 %138, label %143, label %141

141:                                              ; preds = %._crit_edge.thread, %._crit_edge
  %.1691.lcssa1540 = phi i32 [ %131, %._crit_edge.thread ], [ %136, %._crit_edge ]
  call void @mbedtls_strerror(i32 noundef %.1691.lcssa1540, ptr noundef nonnull %3, i64 noundef 200) #7
  %142 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %150

143:                                              ; preds = %._crit_edge
  %144 = and i64 %.06801100, 18014398509481983
  %145 = call i64 @mbedtls_timing_hardclock() #7
  %146 = sub i64 %145, %135
  %147 = shl nuw nsw i64 %137, 10
  %148 = udiv i64 %146, %147
  %149 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %144, i64 noundef %148)
  br label %150

150:                                              ; preds = %141, %143, %.loopexit
  %.not810 = icmp eq i8 %.sroa.7.2, 0
  br i1 %.not810, label %177, label %151

151:                                              ; preds = %150
  %152 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.35)
  %153 = load ptr, ptr @stdout, align 8, !tbaa !5
  %154 = call i32 @fflush(ptr noundef %153)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %155

155:                                              ; preds = %151, %157
  %.06971105 = phi i64 [ 1, %151 ], [ %159, %157 ]
  %156 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not811 = icmp eq i32 %156, 0
  br i1 %.not811, label %157, label %.lr.ph1107.preheader

157:                                              ; preds = %155
  %158 = call i32 @mbedtls_ripemd160_ret(ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %3) #7
  %159 = add i64 %.06971105, 1
  %160 = icmp eq i32 %158, 0
  br i1 %160, label %155, label %._crit_edge1108.thread, !llvm.loop !15

._crit_edge1108.thread:                           ; preds = %157
  %161 = call i64 @mbedtls_timing_hardclock() #7
  br label %168

.lr.ph1107.preheader:                             ; preds = %155
  %162 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1107

.lr.ph1107:                                       ; preds = %.lr.ph1107.preheader, %.lr.ph1107
  %.07021106 = phi i64 [ %164, %.lr.ph1107 ], [ 0, %.lr.ph1107.preheader ]
  %163 = call i32 @mbedtls_ripemd160_ret(ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %3) #7
  %164 = add nuw nsw i64 %.07021106, 1
  %165 = icmp eq i32 %163, 0
  %166 = icmp ult i64 %.07021106, 1023
  %167 = select i1 %165, i1 %166, i1 false
  br i1 %167, label %.lr.ph1107, label %._crit_edge1108, !llvm.loop !16

._crit_edge1108:                                  ; preds = %.lr.ph1107
  br i1 %165, label %170, label %168

168:                                              ; preds = %._crit_edge1108.thread, %._crit_edge1108
  %.1708.lcssa1549 = phi i32 [ %158, %._crit_edge1108.thread ], [ %163, %._crit_edge1108 ]
  call void @mbedtls_strerror(i32 noundef %.1708.lcssa1549, ptr noundef nonnull %3, i64 noundef 200) #7
  %169 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %177

170:                                              ; preds = %._crit_edge1108
  %171 = and i64 %.06971105, 18014398509481983
  %172 = call i64 @mbedtls_timing_hardclock() #7
  %173 = sub i64 %172, %162
  %174 = shl nuw nsw i64 %164, 10
  %175 = udiv i64 %173, %174
  %176 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %171, i64 noundef %175)
  br label %177

177:                                              ; preds = %168, %170, %150
  %.not813 = icmp eq i8 %.sroa.9.2, 0
  br i1 %.not813, label %204, label %178

178:                                              ; preds = %177
  %179 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.36)
  %180 = load ptr, ptr @stdout, align 8, !tbaa !5
  %181 = call i32 @fflush(ptr noundef %180)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %182

182:                                              ; preds = %178, %184
  %.07141113 = phi i64 [ 1, %178 ], [ %186, %184 ]
  %183 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not814 = icmp eq i32 %183, 0
  br i1 %.not814, label %184, label %.lr.ph1115.preheader

184:                                              ; preds = %182
  %185 = call i32 @mbedtls_sha1_ret(ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %3) #7
  %186 = add i64 %.07141113, 1
  %187 = icmp eq i32 %185, 0
  br i1 %187, label %182, label %._crit_edge1116.thread, !llvm.loop !17

._crit_edge1116.thread:                           ; preds = %184
  %188 = call i64 @mbedtls_timing_hardclock() #7
  br label %195

.lr.ph1115.preheader:                             ; preds = %182
  %189 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1115

.lr.ph1115:                                       ; preds = %.lr.ph1115.preheader, %.lr.ph1115
  %.07191114 = phi i64 [ %191, %.lr.ph1115 ], [ 0, %.lr.ph1115.preheader ]
  %190 = call i32 @mbedtls_sha1_ret(ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %3) #7
  %191 = add nuw nsw i64 %.07191114, 1
  %192 = icmp eq i32 %190, 0
  %193 = icmp ult i64 %.07191114, 1023
  %194 = select i1 %192, i1 %193, i1 false
  br i1 %194, label %.lr.ph1115, label %._crit_edge1116, !llvm.loop !18

._crit_edge1116:                                  ; preds = %.lr.ph1115
  br i1 %192, label %197, label %195

195:                                              ; preds = %._crit_edge1116.thread, %._crit_edge1116
  %.1725.lcssa1558 = phi i32 [ %185, %._crit_edge1116.thread ], [ %190, %._crit_edge1116 ]
  call void @mbedtls_strerror(i32 noundef %.1725.lcssa1558, ptr noundef nonnull %3, i64 noundef 200) #7
  %196 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %204

197:                                              ; preds = %._crit_edge1116
  %198 = and i64 %.07141113, 18014398509481983
  %199 = call i64 @mbedtls_timing_hardclock() #7
  %200 = sub i64 %199, %189
  %201 = shl nuw nsw i64 %191, 10
  %202 = udiv i64 %200, %201
  %203 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %198, i64 noundef %202)
  br label %204

204:                                              ; preds = %195, %197, %177
  %.not816 = icmp eq i8 %.sroa.11.2, 0
  br i1 %.not816, label %231, label %205

205:                                              ; preds = %204
  %206 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.37)
  %207 = load ptr, ptr @stdout, align 8, !tbaa !5
  %208 = call i32 @fflush(ptr noundef %207)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %209

209:                                              ; preds = %205, %211
  %.07281121 = phi i64 [ 1, %205 ], [ %213, %211 ]
  %210 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not817 = icmp eq i32 %210, 0
  br i1 %.not817, label %211, label %.lr.ph1123.preheader

211:                                              ; preds = %209
  %212 = call i32 @mbedtls_sha256_ret(ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %3, i32 noundef 0) #7
  %213 = add i64 %.07281121, 1
  %214 = icmp eq i32 %212, 0
  br i1 %214, label %209, label %._crit_edge1124.thread, !llvm.loop !19

._crit_edge1124.thread:                           ; preds = %211
  %215 = call i64 @mbedtls_timing_hardclock() #7
  br label %222

.lr.ph1123.preheader:                             ; preds = %209
  %216 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1123

.lr.ph1123:                                       ; preds = %.lr.ph1123.preheader, %.lr.ph1123
  %.07331122 = phi i64 [ %218, %.lr.ph1123 ], [ 0, %.lr.ph1123.preheader ]
  %217 = call i32 @mbedtls_sha256_ret(ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %3, i32 noundef 0) #7
  %218 = add nuw nsw i64 %.07331122, 1
  %219 = icmp eq i32 %217, 0
  %220 = icmp ult i64 %.07331122, 1023
  %221 = select i1 %219, i1 %220, i1 false
  br i1 %221, label %.lr.ph1123, label %._crit_edge1124, !llvm.loop !20

._crit_edge1124:                                  ; preds = %.lr.ph1123
  br i1 %219, label %224, label %222

222:                                              ; preds = %._crit_edge1124.thread, %._crit_edge1124
  %.1740.lcssa1567 = phi i32 [ %212, %._crit_edge1124.thread ], [ %217, %._crit_edge1124 ]
  call void @mbedtls_strerror(i32 noundef %.1740.lcssa1567, ptr noundef nonnull %3, i64 noundef 200) #7
  %223 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %231

224:                                              ; preds = %._crit_edge1124
  %225 = and i64 %.07281121, 18014398509481983
  %226 = call i64 @mbedtls_timing_hardclock() #7
  %227 = sub i64 %226, %216
  %228 = shl nuw nsw i64 %218, 10
  %229 = udiv i64 %227, %228
  %230 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %225, i64 noundef %229)
  br label %231

231:                                              ; preds = %222, %224, %204
  %.not819 = icmp eq i8 %.sroa.13.2, 0
  br i1 %.not819, label %258, label %232

232:                                              ; preds = %231
  %233 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.38)
  %234 = load ptr, ptr @stdout, align 8, !tbaa !5
  %235 = call i32 @fflush(ptr noundef %234)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %236

236:                                              ; preds = %232, %238
  %.07461129 = phi i64 [ 1, %232 ], [ %240, %238 ]
  %237 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not820 = icmp eq i32 %237, 0
  br i1 %.not820, label %238, label %.lr.ph1131.preheader

238:                                              ; preds = %236
  %239 = call i32 @mbedtls_sha512_ret(ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %3, i32 noundef 0) #7
  %240 = add i64 %.07461129, 1
  %241 = icmp eq i32 %239, 0
  br i1 %241, label %236, label %._crit_edge1132.thread, !llvm.loop !21

._crit_edge1132.thread:                           ; preds = %238
  %242 = call i64 @mbedtls_timing_hardclock() #7
  br label %249

.lr.ph1131.preheader:                             ; preds = %236
  %243 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1131

.lr.ph1131:                                       ; preds = %.lr.ph1131.preheader, %.lr.ph1131
  %.07521130 = phi i64 [ %245, %.lr.ph1131 ], [ 0, %.lr.ph1131.preheader ]
  %244 = call i32 @mbedtls_sha512_ret(ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %3, i32 noundef 0) #7
  %245 = add nuw nsw i64 %.07521130, 1
  %246 = icmp eq i32 %244, 0
  %247 = icmp ult i64 %.07521130, 1023
  %248 = select i1 %246, i1 %247, i1 false
  br i1 %248, label %.lr.ph1131, label %._crit_edge1132, !llvm.loop !22

._crit_edge1132:                                  ; preds = %.lr.ph1131
  br i1 %246, label %251, label %249

249:                                              ; preds = %._crit_edge1132.thread, %._crit_edge1132
  %.1759.lcssa1576 = phi i32 [ %239, %._crit_edge1132.thread ], [ %244, %._crit_edge1132 ]
  call void @mbedtls_strerror(i32 noundef %.1759.lcssa1576, ptr noundef nonnull %3, i64 noundef 200) #7
  %250 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %258

251:                                              ; preds = %._crit_edge1132
  %252 = and i64 %.07461129, 18014398509481983
  %253 = call i64 @mbedtls_timing_hardclock() #7
  %254 = sub i64 %253, %243
  %255 = shl nuw nsw i64 %245, 10
  %256 = udiv i64 %254, %255
  %257 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %252, i64 noundef %256)
  br label %258

258:                                              ; preds = %249, %251, %231
  %.not822 = icmp eq i8 %.sroa.15.2, 0
  br i1 %.not822, label %286, label %259

259:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 264, ptr nonnull %5) #7
  call void @mbedtls_arc4_init(ptr noundef nonnull %5) #7
  call void @mbedtls_arc4_setup(ptr noundef nonnull %5, ptr noundef nonnull %3, i32 noundef 32) #7
  %260 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.39)
  %261 = load ptr, ptr @stdout, align 8, !tbaa !5
  %262 = call i32 @fflush(ptr noundef %261)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %263

263:                                              ; preds = %259, %265
  %.07621137 = phi i64 [ 1, %259 ], [ %267, %265 ]
  %264 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not823 = icmp eq i32 %264, 0
  br i1 %.not823, label %265, label %.lr.ph1139.preheader

265:                                              ; preds = %263
  %266 = call i32 @mbedtls_arc4_crypt(ptr noundef nonnull %5, i64 noundef 1024, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %267 = add i64 %.07621137, 1
  %268 = icmp eq i32 %266, 0
  br i1 %268, label %263, label %._crit_edge1140.thread, !llvm.loop !23

._crit_edge1140.thread:                           ; preds = %265
  %269 = call i64 @mbedtls_timing_hardclock() #7
  br label %276

.lr.ph1139.preheader:                             ; preds = %263
  %270 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1139

.lr.ph1139:                                       ; preds = %.lr.ph1139.preheader, %.lr.ph1139
  %.07651138 = phi i64 [ %272, %.lr.ph1139 ], [ 0, %.lr.ph1139.preheader ]
  %271 = call i32 @mbedtls_arc4_crypt(ptr noundef nonnull %5, i64 noundef 1024, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %272 = add nuw nsw i64 %.07651138, 1
  %273 = icmp eq i32 %271, 0
  %274 = icmp ult i64 %.07651138, 1023
  %275 = select i1 %273, i1 %274, i1 false
  br i1 %275, label %.lr.ph1139, label %._crit_edge1140, !llvm.loop !24

._crit_edge1140:                                  ; preds = %.lr.ph1139
  br i1 %273, label %278, label %276

276:                                              ; preds = %._crit_edge1140.thread, %._crit_edge1140
  %.1771.lcssa1585 = phi i32 [ %266, %._crit_edge1140.thread ], [ %271, %._crit_edge1140 ]
  call void @mbedtls_strerror(i32 noundef %.1771.lcssa1585, ptr noundef nonnull %3, i64 noundef 200) #7
  %277 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %285

278:                                              ; preds = %._crit_edge1140
  %279 = and i64 %.07621137, 18014398509481983
  %280 = call i64 @mbedtls_timing_hardclock() #7
  %281 = sub i64 %280, %270
  %282 = shl nuw nsw i64 %272, 10
  %283 = udiv i64 %281, %282
  %284 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %279, i64 noundef %283)
  br label %285

285:                                              ; preds = %278, %276
  call void @mbedtls_arc4_free(ptr noundef nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 264, ptr nonnull %5) #7
  br label %286

286:                                              ; preds = %285, %258
  %.not825 = icmp eq i8 %.sroa.17.2, 0
  br i1 %.not825, label %315, label %287

287:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %6) #7
  call void @mbedtls_des3_init(ptr noundef nonnull %6) #7
  %288 = call i32 @mbedtls_des3_set3key_enc(ptr noundef nonnull %6, ptr noundef nonnull %3) #7
  %289 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.40)
  %290 = load ptr, ptr @stdout, align 8, !tbaa !5
  %291 = call i32 @fflush(ptr noundef %290)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %292

292:                                              ; preds = %287, %294
  %.07731144 = phi i64 [ 1, %287 ], [ %296, %294 ]
  %293 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not826 = icmp eq i32 %293, 0
  br i1 %.not826, label %294, label %.lr.ph1147.preheader

294:                                              ; preds = %292
  %295 = call i32 @mbedtls_des3_crypt_cbc(ptr noundef nonnull %6, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %296 = add i64 %.07731144, 1
  %297 = icmp eq i32 %295, 0
  br i1 %297, label %292, label %._crit_edge1148.thread, !llvm.loop !25

._crit_edge1148.thread:                           ; preds = %294
  %298 = call i64 @mbedtls_timing_hardclock() #7
  br label %305

.lr.ph1147.preheader:                             ; preds = %292
  %299 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1147

.lr.ph1147:                                       ; preds = %.lr.ph1147.preheader, %.lr.ph1147
  %.07721146 = phi i64 [ %301, %.lr.ph1147 ], [ 0, %.lr.ph1147.preheader ]
  %300 = call i32 @mbedtls_des3_crypt_cbc(ptr noundef nonnull %6, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %301 = add nuw nsw i64 %.07721146, 1
  %302 = icmp eq i32 %300, 0
  %303 = icmp ult i64 %.07721146, 1023
  %304 = select i1 %302, i1 %303, i1 false
  br i1 %304, label %.lr.ph1147, label %._crit_edge1148, !llvm.loop !26

._crit_edge1148:                                  ; preds = %.lr.ph1147
  br i1 %302, label %307, label %305

305:                                              ; preds = %._crit_edge1148.thread, %._crit_edge1148
  %.1769.lcssa1594 = phi i32 [ %295, %._crit_edge1148.thread ], [ %300, %._crit_edge1148 ]
  call void @mbedtls_strerror(i32 noundef %.1769.lcssa1594, ptr noundef nonnull %3, i64 noundef 200) #7
  %306 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %314

307:                                              ; preds = %._crit_edge1148
  %308 = and i64 %.07731144, 18014398509481983
  %309 = call i64 @mbedtls_timing_hardclock() #7
  %310 = sub i64 %309, %299
  %311 = shl nuw nsw i64 %301, 10
  %312 = udiv i64 %310, %311
  %313 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %308, i64 noundef %312)
  br label %314

314:                                              ; preds = %307, %305
  call void @mbedtls_des3_free(ptr noundef nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %6) #7
  br label %315

315:                                              ; preds = %314, %286
  %.not828 = icmp eq i8 %.sroa.19.2, 0
  br i1 %.not828, label %344, label %316

316:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %7) #7
  call void @mbedtls_des_init(ptr noundef nonnull %7) #7
  %317 = call i32 @mbedtls_des_setkey_enc(ptr noundef nonnull %7, ptr noundef nonnull %3) #7
  %318 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.41)
  %319 = load ptr, ptr @stdout, align 8, !tbaa !5
  %320 = call i32 @fflush(ptr noundef %319)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %321

321:                                              ; preds = %316, %323
  %.07671152 = phi i64 [ 1, %316 ], [ %325, %323 ]
  %322 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not829 = icmp eq i32 %322, 0
  br i1 %.not829, label %323, label %.lr.ph1155.preheader

323:                                              ; preds = %321
  %324 = call i32 @mbedtls_des_crypt_cbc(ptr noundef nonnull %7, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %325 = add i64 %.07671152, 1
  %326 = icmp eq i32 %324, 0
  br i1 %326, label %321, label %._crit_edge1156.thread, !llvm.loop !27

._crit_edge1156.thread:                           ; preds = %323
  %327 = call i64 @mbedtls_timing_hardclock() #7
  br label %334

.lr.ph1155.preheader:                             ; preds = %321
  %328 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1155

.lr.ph1155:                                       ; preds = %.lr.ph1155.preheader, %.lr.ph1155
  %.07661154 = phi i64 [ %330, %.lr.ph1155 ], [ 0, %.lr.ph1155.preheader ]
  %329 = call i32 @mbedtls_des_crypt_cbc(ptr noundef nonnull %7, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %330 = add nuw nsw i64 %.07661154, 1
  %331 = icmp eq i32 %329, 0
  %332 = icmp ult i64 %.07661154, 1023
  %333 = select i1 %331, i1 %332, i1 false
  br i1 %333, label %.lr.ph1155, label %._crit_edge1156, !llvm.loop !28

._crit_edge1156:                                  ; preds = %.lr.ph1155
  br i1 %331, label %336, label %334

334:                                              ; preds = %._crit_edge1156.thread, %._crit_edge1156
  %.1764.lcssa1603 = phi i32 [ %324, %._crit_edge1156.thread ], [ %329, %._crit_edge1156 ]
  call void @mbedtls_strerror(i32 noundef %.1764.lcssa1603, ptr noundef nonnull %3, i64 noundef 200) #7
  %335 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %343

336:                                              ; preds = %._crit_edge1156
  %337 = and i64 %.07671152, 18014398509481983
  %338 = call i64 @mbedtls_timing_hardclock() #7
  %339 = sub i64 %338, %328
  %340 = shl nuw nsw i64 %330, 10
  %341 = udiv i64 %339, %340
  %342 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %337, i64 noundef %341)
  br label %343

343:                                              ; preds = %336, %334
  call void @mbedtls_des_free(ptr noundef nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %7) #7
  br label %344

344:                                              ; preds = %343, %315
  %.not831 = icmp eq i8 %.sroa.33.2, 0
  br i1 %.not831, label %373, label %345

345:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %346 = call ptr @mbedtls_cipher_info_from_type(i32 noundef 36) #7
  %347 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.42)
  %348 = load ptr, ptr @stdout, align 8, !tbaa !5
  %349 = call i32 @fflush(ptr noundef %348)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %350

350:                                              ; preds = %345, %352
  %.07611160 = phi i64 [ 1, %345 ], [ %354, %352 ]
  %351 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not832 = icmp eq i32 %351, 0
  br i1 %.not832, label %352, label %.lr.ph1163.preheader

352:                                              ; preds = %350
  %353 = call i32 @mbedtls_cipher_cmac(ptr noundef %346, ptr noundef nonnull %3, i64 noundef 192, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %8) #7
  %354 = add i64 %.07611160, 1
  %355 = icmp eq i32 %353, 0
  br i1 %355, label %350, label %._crit_edge1164.thread, !llvm.loop !29

._crit_edge1164.thread:                           ; preds = %352
  %356 = call i64 @mbedtls_timing_hardclock() #7
  br label %363

.lr.ph1163.preheader:                             ; preds = %350
  %357 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1163

.lr.ph1163:                                       ; preds = %.lr.ph1163.preheader, %.lr.ph1163
  %.07601162 = phi i64 [ %359, %.lr.ph1163 ], [ 0, %.lr.ph1163.preheader ]
  %358 = call i32 @mbedtls_cipher_cmac(ptr noundef %346, ptr noundef nonnull %3, i64 noundef 192, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %8) #7
  %359 = add nuw nsw i64 %.07601162, 1
  %360 = icmp eq i32 %358, 0
  %361 = icmp ult i64 %.07601162, 1023
  %362 = select i1 %360, i1 %361, i1 false
  br i1 %362, label %.lr.ph1163, label %._crit_edge1164, !llvm.loop !30

._crit_edge1164:                                  ; preds = %.lr.ph1163
  br i1 %360, label %365, label %363

363:                                              ; preds = %._crit_edge1164.thread, %._crit_edge1164
  %.1757.lcssa1612 = phi i32 [ %353, %._crit_edge1164.thread ], [ %358, %._crit_edge1164 ]
  call void @mbedtls_strerror(i32 noundef %.1757.lcssa1612, ptr noundef nonnull %3, i64 noundef 200) #7
  %364 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %372

365:                                              ; preds = %._crit_edge1164
  %366 = and i64 %.07611160, 18014398509481983
  %367 = call i64 @mbedtls_timing_hardclock() #7
  %368 = sub i64 %367, %357
  %369 = shl nuw nsw i64 %359, 10
  %370 = udiv i64 %368, %369
  %371 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %366, i64 noundef %370)
  br label %372

372:                                              ; preds = %365, %363
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  br label %373

373:                                              ; preds = %372, %344
  %.not834 = icmp eq i8 %.sroa.21.2, 0
  br i1 %.not834, label %459, label %374

374:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %9) #7
  call void @mbedtls_aes_init(ptr noundef nonnull %9) #7
  %375 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.43, i32 noundef 128) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %376 = call i32 @mbedtls_aes_setkey_enc(ptr noundef nonnull %9, ptr noundef nonnull %3, i32 noundef 128) #7
  %377 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %378 = load ptr, ptr @stdout, align 8, !tbaa !5
  %379 = call i32 @fflush(ptr noundef %378)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %380

380:                                              ; preds = %374, %382
  %.07541168 = phi i64 [ 1, %374 ], [ %384, %382 ]
  %381 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not955 = icmp eq i32 %381, 0
  br i1 %.not955, label %382, label %.lr.ph1171.preheader

382:                                              ; preds = %380
  %383 = call i32 @mbedtls_aes_crypt_cbc(ptr noundef nonnull %9, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %384 = add i64 %.07541168, 1
  %385 = icmp eq i32 %383, 0
  br i1 %385, label %380, label %._crit_edge1172.thread, !llvm.loop !31

._crit_edge1172.thread:                           ; preds = %382
  %386 = call i64 @mbedtls_timing_hardclock() #7
  br label %393

.lr.ph1171.preheader:                             ; preds = %380
  %387 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1171

.lr.ph1171:                                       ; preds = %.lr.ph1171.preheader, %.lr.ph1171
  %.07531170 = phi i64 [ %389, %.lr.ph1171 ], [ 0, %.lr.ph1171.preheader ]
  %388 = call i32 @mbedtls_aes_crypt_cbc(ptr noundef nonnull %9, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %389 = add nuw nsw i64 %.07531170, 1
  %390 = icmp eq i32 %388, 0
  %391 = icmp ult i64 %.07531170, 1023
  %392 = select i1 %390, i1 %391, i1 false
  br i1 %392, label %.lr.ph1171, label %._crit_edge1172, !llvm.loop !32

._crit_edge1172:                                  ; preds = %.lr.ph1171
  br i1 %390, label %395, label %393

393:                                              ; preds = %._crit_edge1172.thread, %._crit_edge1172
  %.1751.lcssa1621 = phi i32 [ %383, %._crit_edge1172.thread ], [ %388, %._crit_edge1172 ]
  call void @mbedtls_strerror(i32 noundef %.1751.lcssa1621, ptr noundef nonnull %3, i64 noundef 200) #7
  %394 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %402

395:                                              ; preds = %._crit_edge1172
  %396 = and i64 %.07541168, 18014398509481983
  %397 = call i64 @mbedtls_timing_hardclock() #7
  %398 = sub i64 %397, %387
  %399 = shl nuw nsw i64 %389, 10
  %400 = udiv i64 %398, %399
  %401 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %396, i64 noundef %400)
  br label %402

402:                                              ; preds = %395, %393
  %403 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.43, i32 noundef 192) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %404 = call i32 @mbedtls_aes_setkey_enc(ptr noundef nonnull %9, ptr noundef nonnull %3, i32 noundef 192) #7
  %405 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %406 = load ptr, ptr @stdout, align 8, !tbaa !5
  %407 = call i32 @fflush(ptr noundef %406)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %408

408:                                              ; preds = %410, %402
  %.07541168.1 = phi i64 [ 1, %402 ], [ %412, %410 ]
  %409 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not955.1 = icmp eq i32 %409, 0
  br i1 %.not955.1, label %410, label %.lr.ph1171.preheader.1

410:                                              ; preds = %408
  %411 = call i32 @mbedtls_aes_crypt_cbc(ptr noundef nonnull %9, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %412 = add i64 %.07541168.1, 1
  %413 = icmp eq i32 %411, 0
  br i1 %413, label %408, label %._crit_edge1172.1.thread, !llvm.loop !31

._crit_edge1172.1.thread:                         ; preds = %410
  %414 = call i64 @mbedtls_timing_hardclock() #7
  br label %421

.lr.ph1171.preheader.1:                           ; preds = %408
  %415 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1171.1

.lr.ph1171.1:                                     ; preds = %.lr.ph1171.1, %.lr.ph1171.preheader.1
  %.07531170.1 = phi i64 [ %417, %.lr.ph1171.1 ], [ 0, %.lr.ph1171.preheader.1 ]
  %416 = call i32 @mbedtls_aes_crypt_cbc(ptr noundef nonnull %9, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %417 = add nuw nsw i64 %.07531170.1, 1
  %418 = icmp eq i32 %416, 0
  %419 = icmp ult i64 %.07531170.1, 1023
  %420 = select i1 %418, i1 %419, i1 false
  br i1 %420, label %.lr.ph1171.1, label %._crit_edge1172.1, !llvm.loop !32

._crit_edge1172.1:                                ; preds = %.lr.ph1171.1
  br i1 %418, label %423, label %421

421:                                              ; preds = %._crit_edge1172.1.thread, %._crit_edge1172.1
  %.1751.lcssa.11630 = phi i32 [ %411, %._crit_edge1172.1.thread ], [ %416, %._crit_edge1172.1 ]
  call void @mbedtls_strerror(i32 noundef %.1751.lcssa.11630, ptr noundef nonnull %3, i64 noundef 200) #7
  %422 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %430

423:                                              ; preds = %._crit_edge1172.1
  %424 = and i64 %.07541168.1, 18014398509481983
  %425 = call i64 @mbedtls_timing_hardclock() #7
  %426 = sub i64 %425, %415
  %427 = shl nuw nsw i64 %417, 10
  %428 = udiv i64 %426, %427
  %429 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %424, i64 noundef %428)
  br label %430

430:                                              ; preds = %423, %421
  %431 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.43, i32 noundef 256) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %432 = call i32 @mbedtls_aes_setkey_enc(ptr noundef nonnull %9, ptr noundef nonnull %3, i32 noundef 256) #7
  %433 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %434 = load ptr, ptr @stdout, align 8, !tbaa !5
  %435 = call i32 @fflush(ptr noundef %434)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %436

436:                                              ; preds = %438, %430
  %.07541168.2 = phi i64 [ 1, %430 ], [ %440, %438 ]
  %437 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not955.2 = icmp eq i32 %437, 0
  br i1 %.not955.2, label %438, label %.lr.ph1171.preheader.2

438:                                              ; preds = %436
  %439 = call i32 @mbedtls_aes_crypt_cbc(ptr noundef nonnull %9, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %440 = add i64 %.07541168.2, 1
  %441 = icmp eq i32 %439, 0
  br i1 %441, label %436, label %._crit_edge1172.2.thread, !llvm.loop !31

._crit_edge1172.2.thread:                         ; preds = %438
  %442 = call i64 @mbedtls_timing_hardclock() #7
  br label %449

.lr.ph1171.preheader.2:                           ; preds = %436
  %443 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1171.2

.lr.ph1171.2:                                     ; preds = %.lr.ph1171.2, %.lr.ph1171.preheader.2
  %.07531170.2 = phi i64 [ %445, %.lr.ph1171.2 ], [ 0, %.lr.ph1171.preheader.2 ]
  %444 = call i32 @mbedtls_aes_crypt_cbc(ptr noundef nonnull %9, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %445 = add nuw nsw i64 %.07531170.2, 1
  %446 = icmp eq i32 %444, 0
  %447 = icmp ult i64 %.07531170.2, 1023
  %448 = select i1 %446, i1 %447, i1 false
  br i1 %448, label %.lr.ph1171.2, label %._crit_edge1172.2, !llvm.loop !32

._crit_edge1172.2:                                ; preds = %.lr.ph1171.2
  br i1 %446, label %451, label %449

449:                                              ; preds = %._crit_edge1172.2.thread, %._crit_edge1172.2
  %.1751.lcssa.21639 = phi i32 [ %439, %._crit_edge1172.2.thread ], [ %444, %._crit_edge1172.2 ]
  call void @mbedtls_strerror(i32 noundef %.1751.lcssa.21639, ptr noundef nonnull %3, i64 noundef 200) #7
  %450 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %458

451:                                              ; preds = %._crit_edge1172.2
  %452 = and i64 %.07541168.2, 18014398509481983
  %453 = call i64 @mbedtls_timing_hardclock() #7
  %454 = sub i64 %453, %443
  %455 = shl nuw nsw i64 %445, 10
  %456 = udiv i64 %454, %455
  %457 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %452, i64 noundef %456)
  br label %458

458:                                              ; preds = %451, %449
  call void @mbedtls_aes_free(ptr noundef nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %9) #7
  br label %459

459:                                              ; preds = %458, %373
  %.not835 = icmp eq i8 %.sroa.27.2, 0
  br i1 %.not835, label %517, label %460

460:                                              ; preds = %459
  call void @llvm.lifetime.start.p0(i64 576, ptr nonnull %10) #7
  call void @mbedtls_aes_xts_init(ptr noundef nonnull %10) #7
  %461 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.44, i32 noundef 128) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %462 = call i32 @mbedtls_aes_xts_setkey_enc(ptr noundef nonnull %10, ptr noundef nonnull %3, i32 noundef 256) #7
  %463 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %464 = load ptr, ptr @stdout, align 8, !tbaa !5
  %465 = call i32 @fflush(ptr noundef %464)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %466

466:                                              ; preds = %460, %468
  %.07481177 = phi i64 [ 1, %460 ], [ %470, %468 ]
  %467 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not953 = icmp eq i32 %467, 0
  br i1 %.not953, label %468, label %.lr.ph1180.preheader

468:                                              ; preds = %466
  %469 = call i32 @mbedtls_aes_crypt_xts(ptr noundef nonnull %10, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %470 = add i64 %.07481177, 1
  %471 = icmp eq i32 %469, 0
  br i1 %471, label %466, label %._crit_edge1181.thread, !llvm.loop !33

._crit_edge1181.thread:                           ; preds = %468
  %472 = call i64 @mbedtls_timing_hardclock() #7
  br label %479

.lr.ph1180.preheader:                             ; preds = %466
  %473 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1180

.lr.ph1180:                                       ; preds = %.lr.ph1180.preheader, %.lr.ph1180
  %.07471179 = phi i64 [ %475, %.lr.ph1180 ], [ 0, %.lr.ph1180.preheader ]
  %474 = call i32 @mbedtls_aes_crypt_xts(ptr noundef nonnull %10, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %475 = add nuw nsw i64 %.07471179, 1
  %476 = icmp eq i32 %474, 0
  %477 = icmp ult i64 %.07471179, 1023
  %478 = select i1 %476, i1 %477, i1 false
  br i1 %478, label %.lr.ph1180, label %._crit_edge1181, !llvm.loop !34

._crit_edge1181:                                  ; preds = %.lr.ph1180
  br i1 %476, label %481, label %479

479:                                              ; preds = %._crit_edge1181.thread, %._crit_edge1181
  %.1745.lcssa1648 = phi i32 [ %469, %._crit_edge1181.thread ], [ %474, %._crit_edge1181 ]
  call void @mbedtls_strerror(i32 noundef %.1745.lcssa1648, ptr noundef nonnull %3, i64 noundef 200) #7
  %480 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %488

481:                                              ; preds = %._crit_edge1181
  %482 = and i64 %.07481177, 18014398509481983
  %483 = call i64 @mbedtls_timing_hardclock() #7
  %484 = sub i64 %483, %473
  %485 = shl nuw nsw i64 %475, 10
  %486 = udiv i64 %484, %485
  %487 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %482, i64 noundef %486)
  br label %488

488:                                              ; preds = %481, %479
  call void @mbedtls_aes_xts_free(ptr noundef nonnull %10) #7
  %489 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.44, i32 noundef 256) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %490 = call i32 @mbedtls_aes_xts_setkey_enc(ptr noundef nonnull %10, ptr noundef nonnull %3, i32 noundef 512) #7
  %491 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %492 = load ptr, ptr @stdout, align 8, !tbaa !5
  %493 = call i32 @fflush(ptr noundef %492)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %494

494:                                              ; preds = %496, %488
  %.07481177.1 = phi i64 [ 1, %488 ], [ %498, %496 ]
  %495 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not953.1 = icmp eq i32 %495, 0
  br i1 %.not953.1, label %496, label %.lr.ph1180.preheader.1

496:                                              ; preds = %494
  %497 = call i32 @mbedtls_aes_crypt_xts(ptr noundef nonnull %10, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %498 = add i64 %.07481177.1, 1
  %499 = icmp eq i32 %497, 0
  br i1 %499, label %494, label %._crit_edge1181.1.thread, !llvm.loop !33

._crit_edge1181.1.thread:                         ; preds = %496
  %500 = call i64 @mbedtls_timing_hardclock() #7
  br label %507

.lr.ph1180.preheader.1:                           ; preds = %494
  %501 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1180.1

.lr.ph1180.1:                                     ; preds = %.lr.ph1180.1, %.lr.ph1180.preheader.1
  %.07471179.1 = phi i64 [ %503, %.lr.ph1180.1 ], [ 0, %.lr.ph1180.preheader.1 ]
  %502 = call i32 @mbedtls_aes_crypt_xts(ptr noundef nonnull %10, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %503 = add nuw nsw i64 %.07471179.1, 1
  %504 = icmp eq i32 %502, 0
  %505 = icmp ult i64 %.07471179.1, 1023
  %506 = select i1 %504, i1 %505, i1 false
  br i1 %506, label %.lr.ph1180.1, label %._crit_edge1181.1, !llvm.loop !34

._crit_edge1181.1:                                ; preds = %.lr.ph1180.1
  br i1 %504, label %509, label %507

507:                                              ; preds = %._crit_edge1181.1.thread, %._crit_edge1181.1
  %.1745.lcssa.11657 = phi i32 [ %497, %._crit_edge1181.1.thread ], [ %502, %._crit_edge1181.1 ]
  call void @mbedtls_strerror(i32 noundef %.1745.lcssa.11657, ptr noundef nonnull %3, i64 noundef 200) #7
  %508 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %516

509:                                              ; preds = %._crit_edge1181.1
  %510 = and i64 %.07481177.1, 18014398509481983
  %511 = call i64 @mbedtls_timing_hardclock() #7
  %512 = sub i64 %511, %501
  %513 = shl nuw nsw i64 %503, 10
  %514 = udiv i64 %512, %513
  %515 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %510, i64 noundef %514)
  br label %516

516:                                              ; preds = %509, %507
  call void @mbedtls_aes_xts_free(ptr noundef nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 576, ptr nonnull %10) #7
  br label %517

517:                                              ; preds = %516, %459
  %.not836 = icmp eq i8 %.sroa.23.2, 0
  br i1 %.not836, label %603, label %518

518:                                              ; preds = %517
  call void @llvm.lifetime.start.p0(i64 424, ptr nonnull %11) #7
  call void @mbedtls_gcm_init(ptr noundef nonnull %11) #7
  %519 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.45, i32 noundef 128) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %520 = call i32 @mbedtls_gcm_setkey(ptr noundef nonnull %11, i32 noundef 2, ptr noundef nonnull %3, i32 noundef 128) #7
  %521 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %522 = load ptr, ptr @stdout, align 8, !tbaa !5
  %523 = call i32 @fflush(ptr noundef %522)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %524

524:                                              ; preds = %518, %526
  %.07421186 = phi i64 [ 1, %518 ], [ %528, %526 ]
  %525 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not951 = icmp eq i32 %525, 0
  br i1 %.not951, label %526, label %.lr.ph1189.preheader

526:                                              ; preds = %524
  %527 = call i32 @mbedtls_gcm_crypt_and_tag(ptr noundef nonnull %11, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, i64 noundef 12, ptr noundef null, i64 noundef 0, ptr noundef nonnull @buf, ptr noundef nonnull @buf, i64 noundef 16, ptr noundef nonnull %3) #7
  %528 = add i64 %.07421186, 1
  %529 = icmp eq i32 %527, 0
  br i1 %529, label %524, label %._crit_edge1190.thread, !llvm.loop !35

._crit_edge1190.thread:                           ; preds = %526
  %530 = call i64 @mbedtls_timing_hardclock() #7
  br label %537

.lr.ph1189.preheader:                             ; preds = %524
  %531 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1189

.lr.ph1189:                                       ; preds = %.lr.ph1189.preheader, %.lr.ph1189
  %.07411188 = phi i64 [ %533, %.lr.ph1189 ], [ 0, %.lr.ph1189.preheader ]
  %532 = call i32 @mbedtls_gcm_crypt_and_tag(ptr noundef nonnull %11, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, i64 noundef 12, ptr noundef null, i64 noundef 0, ptr noundef nonnull @buf, ptr noundef nonnull @buf, i64 noundef 16, ptr noundef nonnull %3) #7
  %533 = add nuw nsw i64 %.07411188, 1
  %534 = icmp eq i32 %532, 0
  %535 = icmp ult i64 %.07411188, 1023
  %536 = select i1 %534, i1 %535, i1 false
  br i1 %536, label %.lr.ph1189, label %._crit_edge1190, !llvm.loop !36

._crit_edge1190:                                  ; preds = %.lr.ph1189
  br i1 %534, label %539, label %537

537:                                              ; preds = %._crit_edge1190.thread, %._crit_edge1190
  %.1738.lcssa1666 = phi i32 [ %527, %._crit_edge1190.thread ], [ %532, %._crit_edge1190 ]
  call void @mbedtls_strerror(i32 noundef %.1738.lcssa1666, ptr noundef nonnull %3, i64 noundef 200) #7
  %538 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %546

539:                                              ; preds = %._crit_edge1190
  %540 = and i64 %.07421186, 18014398509481983
  %541 = call i64 @mbedtls_timing_hardclock() #7
  %542 = sub i64 %541, %531
  %543 = shl nuw nsw i64 %533, 10
  %544 = udiv i64 %542, %543
  %545 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %540, i64 noundef %544)
  br label %546

546:                                              ; preds = %539, %537
  call void @mbedtls_gcm_free(ptr noundef nonnull %11) #7
  %547 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.45, i32 noundef 192) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %548 = call i32 @mbedtls_gcm_setkey(ptr noundef nonnull %11, i32 noundef 2, ptr noundef nonnull %3, i32 noundef 192) #7
  %549 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %550 = load ptr, ptr @stdout, align 8, !tbaa !5
  %551 = call i32 @fflush(ptr noundef %550)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %552

552:                                              ; preds = %554, %546
  %.07421186.1 = phi i64 [ 1, %546 ], [ %556, %554 ]
  %553 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not951.1 = icmp eq i32 %553, 0
  br i1 %.not951.1, label %554, label %.lr.ph1189.preheader.1

554:                                              ; preds = %552
  %555 = call i32 @mbedtls_gcm_crypt_and_tag(ptr noundef nonnull %11, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, i64 noundef 12, ptr noundef null, i64 noundef 0, ptr noundef nonnull @buf, ptr noundef nonnull @buf, i64 noundef 16, ptr noundef nonnull %3) #7
  %556 = add i64 %.07421186.1, 1
  %557 = icmp eq i32 %555, 0
  br i1 %557, label %552, label %._crit_edge1190.1.thread, !llvm.loop !35

._crit_edge1190.1.thread:                         ; preds = %554
  %558 = call i64 @mbedtls_timing_hardclock() #7
  br label %565

.lr.ph1189.preheader.1:                           ; preds = %552
  %559 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1189.1

.lr.ph1189.1:                                     ; preds = %.lr.ph1189.1, %.lr.ph1189.preheader.1
  %.07411188.1 = phi i64 [ %561, %.lr.ph1189.1 ], [ 0, %.lr.ph1189.preheader.1 ]
  %560 = call i32 @mbedtls_gcm_crypt_and_tag(ptr noundef nonnull %11, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, i64 noundef 12, ptr noundef null, i64 noundef 0, ptr noundef nonnull @buf, ptr noundef nonnull @buf, i64 noundef 16, ptr noundef nonnull %3) #7
  %561 = add nuw nsw i64 %.07411188.1, 1
  %562 = icmp eq i32 %560, 0
  %563 = icmp ult i64 %.07411188.1, 1023
  %564 = select i1 %562, i1 %563, i1 false
  br i1 %564, label %.lr.ph1189.1, label %._crit_edge1190.1, !llvm.loop !36

._crit_edge1190.1:                                ; preds = %.lr.ph1189.1
  br i1 %562, label %567, label %565

565:                                              ; preds = %._crit_edge1190.1.thread, %._crit_edge1190.1
  %.1738.lcssa.11675 = phi i32 [ %555, %._crit_edge1190.1.thread ], [ %560, %._crit_edge1190.1 ]
  call void @mbedtls_strerror(i32 noundef %.1738.lcssa.11675, ptr noundef nonnull %3, i64 noundef 200) #7
  %566 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %574

567:                                              ; preds = %._crit_edge1190.1
  %568 = and i64 %.07421186.1, 18014398509481983
  %569 = call i64 @mbedtls_timing_hardclock() #7
  %570 = sub i64 %569, %559
  %571 = shl nuw nsw i64 %561, 10
  %572 = udiv i64 %570, %571
  %573 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %568, i64 noundef %572)
  br label %574

574:                                              ; preds = %567, %565
  call void @mbedtls_gcm_free(ptr noundef nonnull %11) #7
  %575 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.45, i32 noundef 256) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %576 = call i32 @mbedtls_gcm_setkey(ptr noundef nonnull %11, i32 noundef 2, ptr noundef nonnull %3, i32 noundef 256) #7
  %577 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %578 = load ptr, ptr @stdout, align 8, !tbaa !5
  %579 = call i32 @fflush(ptr noundef %578)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %580

580:                                              ; preds = %582, %574
  %.07421186.2 = phi i64 [ 1, %574 ], [ %584, %582 ]
  %581 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not951.2 = icmp eq i32 %581, 0
  br i1 %.not951.2, label %582, label %.lr.ph1189.preheader.2

582:                                              ; preds = %580
  %583 = call i32 @mbedtls_gcm_crypt_and_tag(ptr noundef nonnull %11, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, i64 noundef 12, ptr noundef null, i64 noundef 0, ptr noundef nonnull @buf, ptr noundef nonnull @buf, i64 noundef 16, ptr noundef nonnull %3) #7
  %584 = add i64 %.07421186.2, 1
  %585 = icmp eq i32 %583, 0
  br i1 %585, label %580, label %._crit_edge1190.2.thread, !llvm.loop !35

._crit_edge1190.2.thread:                         ; preds = %582
  %586 = call i64 @mbedtls_timing_hardclock() #7
  br label %593

.lr.ph1189.preheader.2:                           ; preds = %580
  %587 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1189.2

.lr.ph1189.2:                                     ; preds = %.lr.ph1189.2, %.lr.ph1189.preheader.2
  %.07411188.2 = phi i64 [ %589, %.lr.ph1189.2 ], [ 0, %.lr.ph1189.preheader.2 ]
  %588 = call i32 @mbedtls_gcm_crypt_and_tag(ptr noundef nonnull %11, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, i64 noundef 12, ptr noundef null, i64 noundef 0, ptr noundef nonnull @buf, ptr noundef nonnull @buf, i64 noundef 16, ptr noundef nonnull %3) #7
  %589 = add nuw nsw i64 %.07411188.2, 1
  %590 = icmp eq i32 %588, 0
  %591 = icmp ult i64 %.07411188.2, 1023
  %592 = select i1 %590, i1 %591, i1 false
  br i1 %592, label %.lr.ph1189.2, label %._crit_edge1190.2, !llvm.loop !36

._crit_edge1190.2:                                ; preds = %.lr.ph1189.2
  br i1 %590, label %595, label %593

593:                                              ; preds = %._crit_edge1190.2.thread, %._crit_edge1190.2
  %.1738.lcssa.21684 = phi i32 [ %583, %._crit_edge1190.2.thread ], [ %588, %._crit_edge1190.2 ]
  call void @mbedtls_strerror(i32 noundef %.1738.lcssa.21684, ptr noundef nonnull %3, i64 noundef 200) #7
  %594 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %602

595:                                              ; preds = %._crit_edge1190.2
  %596 = and i64 %.07421186.2, 18014398509481983
  %597 = call i64 @mbedtls_timing_hardclock() #7
  %598 = sub i64 %597, %587
  %599 = shl nuw nsw i64 %589, 10
  %600 = udiv i64 %598, %599
  %601 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %596, i64 noundef %600)
  br label %602

602:                                              ; preds = %595, %593
  call void @mbedtls_gcm_free(ptr noundef nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 424, ptr nonnull %11) #7
  br label %603

603:                                              ; preds = %602, %517
  %.not837 = icmp eq i8 %.sroa.25.2, 0
  br i1 %.not837, label %689, label %604

604:                                              ; preds = %603
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %12) #7
  call void @mbedtls_ccm_init(ptr noundef nonnull %12) #7
  %605 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.46, i32 noundef 128) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %606 = call i32 @mbedtls_ccm_setkey(ptr noundef nonnull %12, i32 noundef 2, ptr noundef nonnull %3, i32 noundef 128) #7
  %607 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %608 = load ptr, ptr @stdout, align 8, !tbaa !5
  %609 = call i32 @fflush(ptr noundef %608)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %610

610:                                              ; preds = %604, %612
  %.07351195 = phi i64 [ 1, %604 ], [ %614, %612 ]
  %611 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not949 = icmp eq i32 %611, 0
  br i1 %.not949, label %612, label %.lr.ph1198.preheader

612:                                              ; preds = %610
  %613 = call i32 @mbedtls_ccm_encrypt_and_tag(ptr noundef nonnull %12, i64 noundef 1024, ptr noundef nonnull %3, i64 noundef 12, ptr noundef null, i64 noundef 0, ptr noundef nonnull @buf, ptr noundef nonnull @buf, ptr noundef nonnull %3, i64 noundef 16) #7
  %614 = add i64 %.07351195, 1
  %615 = icmp eq i32 %613, 0
  br i1 %615, label %610, label %._crit_edge1199.thread, !llvm.loop !37

._crit_edge1199.thread:                           ; preds = %612
  %616 = call i64 @mbedtls_timing_hardclock() #7
  br label %623

.lr.ph1198.preheader:                             ; preds = %610
  %617 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1198

.lr.ph1198:                                       ; preds = %.lr.ph1198.preheader, %.lr.ph1198
  %.07341197 = phi i64 [ %619, %.lr.ph1198 ], [ 0, %.lr.ph1198.preheader ]
  %618 = call i32 @mbedtls_ccm_encrypt_and_tag(ptr noundef nonnull %12, i64 noundef 1024, ptr noundef nonnull %3, i64 noundef 12, ptr noundef null, i64 noundef 0, ptr noundef nonnull @buf, ptr noundef nonnull @buf, ptr noundef nonnull %3, i64 noundef 16) #7
  %619 = add nuw nsw i64 %.07341197, 1
  %620 = icmp eq i32 %618, 0
  %621 = icmp ult i64 %.07341197, 1023
  %622 = select i1 %620, i1 %621, i1 false
  br i1 %622, label %.lr.ph1198, label %._crit_edge1199, !llvm.loop !38

._crit_edge1199:                                  ; preds = %.lr.ph1198
  br i1 %620, label %625, label %623

623:                                              ; preds = %._crit_edge1199.thread, %._crit_edge1199
  %.1732.lcssa1693 = phi i32 [ %613, %._crit_edge1199.thread ], [ %618, %._crit_edge1199 ]
  call void @mbedtls_strerror(i32 noundef %.1732.lcssa1693, ptr noundef nonnull %3, i64 noundef 200) #7
  %624 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %632

625:                                              ; preds = %._crit_edge1199
  %626 = and i64 %.07351195, 18014398509481983
  %627 = call i64 @mbedtls_timing_hardclock() #7
  %628 = sub i64 %627, %617
  %629 = shl nuw nsw i64 %619, 10
  %630 = udiv i64 %628, %629
  %631 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %626, i64 noundef %630)
  br label %632

632:                                              ; preds = %625, %623
  call void @mbedtls_ccm_free(ptr noundef nonnull %12) #7
  %633 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.46, i32 noundef 192) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %634 = call i32 @mbedtls_ccm_setkey(ptr noundef nonnull %12, i32 noundef 2, ptr noundef nonnull %3, i32 noundef 192) #7
  %635 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %636 = load ptr, ptr @stdout, align 8, !tbaa !5
  %637 = call i32 @fflush(ptr noundef %636)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %638

638:                                              ; preds = %640, %632
  %.07351195.1 = phi i64 [ 1, %632 ], [ %642, %640 ]
  %639 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not949.1 = icmp eq i32 %639, 0
  br i1 %.not949.1, label %640, label %.lr.ph1198.preheader.1

640:                                              ; preds = %638
  %641 = call i32 @mbedtls_ccm_encrypt_and_tag(ptr noundef nonnull %12, i64 noundef 1024, ptr noundef nonnull %3, i64 noundef 12, ptr noundef null, i64 noundef 0, ptr noundef nonnull @buf, ptr noundef nonnull @buf, ptr noundef nonnull %3, i64 noundef 16) #7
  %642 = add i64 %.07351195.1, 1
  %643 = icmp eq i32 %641, 0
  br i1 %643, label %638, label %._crit_edge1199.1.thread, !llvm.loop !37

._crit_edge1199.1.thread:                         ; preds = %640
  %644 = call i64 @mbedtls_timing_hardclock() #7
  br label %651

.lr.ph1198.preheader.1:                           ; preds = %638
  %645 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1198.1

.lr.ph1198.1:                                     ; preds = %.lr.ph1198.1, %.lr.ph1198.preheader.1
  %.07341197.1 = phi i64 [ %647, %.lr.ph1198.1 ], [ 0, %.lr.ph1198.preheader.1 ]
  %646 = call i32 @mbedtls_ccm_encrypt_and_tag(ptr noundef nonnull %12, i64 noundef 1024, ptr noundef nonnull %3, i64 noundef 12, ptr noundef null, i64 noundef 0, ptr noundef nonnull @buf, ptr noundef nonnull @buf, ptr noundef nonnull %3, i64 noundef 16) #7
  %647 = add nuw nsw i64 %.07341197.1, 1
  %648 = icmp eq i32 %646, 0
  %649 = icmp ult i64 %.07341197.1, 1023
  %650 = select i1 %648, i1 %649, i1 false
  br i1 %650, label %.lr.ph1198.1, label %._crit_edge1199.1, !llvm.loop !38

._crit_edge1199.1:                                ; preds = %.lr.ph1198.1
  br i1 %648, label %653, label %651

651:                                              ; preds = %._crit_edge1199.1.thread, %._crit_edge1199.1
  %.1732.lcssa.11702 = phi i32 [ %641, %._crit_edge1199.1.thread ], [ %646, %._crit_edge1199.1 ]
  call void @mbedtls_strerror(i32 noundef %.1732.lcssa.11702, ptr noundef nonnull %3, i64 noundef 200) #7
  %652 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %660

653:                                              ; preds = %._crit_edge1199.1
  %654 = and i64 %.07351195.1, 18014398509481983
  %655 = call i64 @mbedtls_timing_hardclock() #7
  %656 = sub i64 %655, %645
  %657 = shl nuw nsw i64 %647, 10
  %658 = udiv i64 %656, %657
  %659 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %654, i64 noundef %658)
  br label %660

660:                                              ; preds = %653, %651
  call void @mbedtls_ccm_free(ptr noundef nonnull %12) #7
  %661 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.46, i32 noundef 256) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %662 = call i32 @mbedtls_ccm_setkey(ptr noundef nonnull %12, i32 noundef 2, ptr noundef nonnull %3, i32 noundef 256) #7
  %663 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %664 = load ptr, ptr @stdout, align 8, !tbaa !5
  %665 = call i32 @fflush(ptr noundef %664)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %666

666:                                              ; preds = %668, %660
  %.07351195.2 = phi i64 [ 1, %660 ], [ %670, %668 ]
  %667 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not949.2 = icmp eq i32 %667, 0
  br i1 %.not949.2, label %668, label %.lr.ph1198.preheader.2

668:                                              ; preds = %666
  %669 = call i32 @mbedtls_ccm_encrypt_and_tag(ptr noundef nonnull %12, i64 noundef 1024, ptr noundef nonnull %3, i64 noundef 12, ptr noundef null, i64 noundef 0, ptr noundef nonnull @buf, ptr noundef nonnull @buf, ptr noundef nonnull %3, i64 noundef 16) #7
  %670 = add i64 %.07351195.2, 1
  %671 = icmp eq i32 %669, 0
  br i1 %671, label %666, label %._crit_edge1199.2.thread, !llvm.loop !37

._crit_edge1199.2.thread:                         ; preds = %668
  %672 = call i64 @mbedtls_timing_hardclock() #7
  br label %679

.lr.ph1198.preheader.2:                           ; preds = %666
  %673 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1198.2

.lr.ph1198.2:                                     ; preds = %.lr.ph1198.2, %.lr.ph1198.preheader.2
  %.07341197.2 = phi i64 [ %675, %.lr.ph1198.2 ], [ 0, %.lr.ph1198.preheader.2 ]
  %674 = call i32 @mbedtls_ccm_encrypt_and_tag(ptr noundef nonnull %12, i64 noundef 1024, ptr noundef nonnull %3, i64 noundef 12, ptr noundef null, i64 noundef 0, ptr noundef nonnull @buf, ptr noundef nonnull @buf, ptr noundef nonnull %3, i64 noundef 16) #7
  %675 = add nuw nsw i64 %.07341197.2, 1
  %676 = icmp eq i32 %674, 0
  %677 = icmp ult i64 %.07341197.2, 1023
  %678 = select i1 %676, i1 %677, i1 false
  br i1 %678, label %.lr.ph1198.2, label %._crit_edge1199.2, !llvm.loop !38

._crit_edge1199.2:                                ; preds = %.lr.ph1198.2
  br i1 %676, label %681, label %679

679:                                              ; preds = %._crit_edge1199.2.thread, %._crit_edge1199.2
  %.1732.lcssa.21711 = phi i32 [ %669, %._crit_edge1199.2.thread ], [ %674, %._crit_edge1199.2 ]
  call void @mbedtls_strerror(i32 noundef %.1732.lcssa.21711, ptr noundef nonnull %3, i64 noundef 200) #7
  %680 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %688

681:                                              ; preds = %._crit_edge1199.2
  %682 = and i64 %.07351195.2, 18014398509481983
  %683 = call i64 @mbedtls_timing_hardclock() #7
  %684 = sub i64 %683, %673
  %685 = shl nuw nsw i64 %675, 10
  %686 = udiv i64 %684, %685
  %687 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %682, i64 noundef %686)
  br label %688

688:                                              ; preds = %681, %679
  call void @mbedtls_ccm_free(ptr noundef nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %12) #7
  br label %689

689:                                              ; preds = %688, %603
  %.not838 = icmp eq i8 %.sroa.29.2, 0
  br i1 %.not838, label %719, label %690

690:                                              ; preds = %689
  call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %13) #7
  call void @mbedtls_chachapoly_init(ptr noundef nonnull %13) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %691 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.47) #7
  %692 = call i32 @mbedtls_chachapoly_setkey(ptr noundef nonnull %13, ptr noundef nonnull %3) #7
  %693 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %694 = load ptr, ptr @stdout, align 8, !tbaa !5
  %695 = call i32 @fflush(ptr noundef %694)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %696

696:                                              ; preds = %690, %698
  %.07301204 = phi i64 [ 1, %690 ], [ %700, %698 ]
  %697 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not839 = icmp eq i32 %697, 0
  br i1 %.not839, label %698, label %.lr.ph1207.preheader

698:                                              ; preds = %696
  %699 = call i32 @mbedtls_chachapoly_encrypt_and_tag(ptr noundef nonnull %13, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef null, i64 noundef 0, ptr noundef nonnull @buf, ptr noundef nonnull @buf, ptr noundef nonnull %3) #7
  %700 = add i64 %.07301204, 1
  %701 = icmp eq i32 %699, 0
  br i1 %701, label %696, label %._crit_edge1208.thread, !llvm.loop !39

._crit_edge1208.thread:                           ; preds = %698
  %702 = call i64 @mbedtls_timing_hardclock() #7
  br label %709

.lr.ph1207.preheader:                             ; preds = %696
  %703 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1207

.lr.ph1207:                                       ; preds = %.lr.ph1207.preheader, %.lr.ph1207
  %.07291206 = phi i64 [ %705, %.lr.ph1207 ], [ 0, %.lr.ph1207.preheader ]
  %704 = call i32 @mbedtls_chachapoly_encrypt_and_tag(ptr noundef nonnull %13, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef null, i64 noundef 0, ptr noundef nonnull @buf, ptr noundef nonnull @buf, ptr noundef nonnull %3) #7
  %705 = add nuw nsw i64 %.07291206, 1
  %706 = icmp eq i32 %704, 0
  %707 = icmp ult i64 %.07291206, 1023
  %708 = select i1 %706, i1 %707, i1 false
  br i1 %708, label %.lr.ph1207, label %._crit_edge1208, !llvm.loop !40

._crit_edge1208:                                  ; preds = %.lr.ph1207
  br i1 %706, label %711, label %709

709:                                              ; preds = %._crit_edge1208.thread, %._crit_edge1208
  %.1727.lcssa1720 = phi i32 [ %699, %._crit_edge1208.thread ], [ %704, %._crit_edge1208 ]
  call void @mbedtls_strerror(i32 noundef %.1727.lcssa1720, ptr noundef nonnull %3, i64 noundef 200) #7
  %710 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %718

711:                                              ; preds = %._crit_edge1208
  %712 = and i64 %.07301204, 18014398509481983
  %713 = call i64 @mbedtls_timing_hardclock() #7
  %714 = sub i64 %713, %703
  %715 = shl nuw nsw i64 %705, 10
  %716 = udiv i64 %714, %715
  %717 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %712, i64 noundef %716)
  br label %718

718:                                              ; preds = %711, %709
  call void @mbedtls_chachapoly_free(ptr noundef nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %13) #7
  br label %719

719:                                              ; preds = %718, %689
  %.not841 = icmp eq i8 %.sroa.31.2, 0
  br i1 %.not841, label %834, label %720

720:                                              ; preds = %719
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #7
  %721 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.48, i32 noundef 128) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %722 = call ptr @mbedtls_cipher_info_from_type(i32 noundef 2) #7
  %723 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %724 = load ptr, ptr @stdout, align 8, !tbaa !5
  %725 = call i32 @fflush(ptr noundef %724)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %726

726:                                              ; preds = %720, %728
  %.07211212 = phi i64 [ 1, %720 ], [ %730, %728 ]
  %727 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not947 = icmp eq i32 %727, 0
  br i1 %.not947, label %728, label %.lr.ph1215

728:                                              ; preds = %726
  %729 = call i32 @mbedtls_cipher_cmac(ptr noundef %722, ptr noundef nonnull %3, i64 noundef 128, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %14) #7
  %730 = add i64 %.07211212, 1
  %731 = icmp eq i32 %729, 0
  br i1 %731, label %726, label %._crit_edge1216.thread, !llvm.loop !41

._crit_edge1216.thread:                           ; preds = %728
  %732 = call i64 @mbedtls_timing_hardclock() #7
  br label %740

.lr.ph1215:                                       ; preds = %726
  %733 = call i64 @mbedtls_timing_hardclock() #7
  br label %734

734:                                              ; preds = %.lr.ph1215, %734
  %.07201214 = phi i64 [ 0, %.lr.ph1215 ], [ %736, %734 ]
  %735 = call i32 @mbedtls_cipher_cmac(ptr noundef %722, ptr noundef nonnull %3, i64 noundef 128, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %14) #7
  %736 = add nuw nsw i64 %.07201214, 1
  %737 = icmp eq i32 %735, 0
  %738 = icmp ult i64 %.07201214, 1023
  %739 = select i1 %737, i1 %738, i1 false
  br i1 %739, label %734, label %._crit_edge1216, !llvm.loop !42

._crit_edge1216:                                  ; preds = %734
  br i1 %737, label %742, label %740

740:                                              ; preds = %._crit_edge1216.thread, %._crit_edge1216
  %.1718.lcssa1729 = phi i32 [ %729, %._crit_edge1216.thread ], [ %735, %._crit_edge1216 ]
  call void @mbedtls_strerror(i32 noundef %.1718.lcssa1729, ptr noundef nonnull %3, i64 noundef 200) #7
  %741 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %749

742:                                              ; preds = %._crit_edge1216
  %743 = and i64 %.07211212, 18014398509481983
  %744 = call i64 @mbedtls_timing_hardclock() #7
  %745 = sub i64 %744, %733
  %746 = shl nuw nsw i64 %736, 10
  %747 = udiv i64 %745, %746
  %748 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %743, i64 noundef %747)
  br label %749

749:                                              ; preds = %742, %740
  %750 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.48, i32 noundef 192) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %751 = call ptr @mbedtls_cipher_info_from_type(i32 noundef 3) #7
  %752 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %753 = load ptr, ptr @stdout, align 8, !tbaa !5
  %754 = call i32 @fflush(ptr noundef %753)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %755

755:                                              ; preds = %757, %749
  %.07211212.1 = phi i64 [ 1, %749 ], [ %759, %757 ]
  %756 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not947.1 = icmp eq i32 %756, 0
  br i1 %.not947.1, label %757, label %.lr.ph1215.1

757:                                              ; preds = %755
  %758 = call i32 @mbedtls_cipher_cmac(ptr noundef %751, ptr noundef nonnull %3, i64 noundef 192, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %14) #7
  %759 = add i64 %.07211212.1, 1
  %760 = icmp eq i32 %758, 0
  br i1 %760, label %755, label %._crit_edge1216.1.thread, !llvm.loop !41

._crit_edge1216.1.thread:                         ; preds = %757
  %761 = call i64 @mbedtls_timing_hardclock() #7
  br label %769

.lr.ph1215.1:                                     ; preds = %755
  %762 = call i64 @mbedtls_timing_hardclock() #7
  br label %763

763:                                              ; preds = %763, %.lr.ph1215.1
  %.07201214.1 = phi i64 [ 0, %.lr.ph1215.1 ], [ %765, %763 ]
  %764 = call i32 @mbedtls_cipher_cmac(ptr noundef %751, ptr noundef nonnull %3, i64 noundef 192, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %14) #7
  %765 = add nuw nsw i64 %.07201214.1, 1
  %766 = icmp eq i32 %764, 0
  %767 = icmp ult i64 %.07201214.1, 1023
  %768 = select i1 %766, i1 %767, i1 false
  br i1 %768, label %763, label %._crit_edge1216.1, !llvm.loop !42

._crit_edge1216.1:                                ; preds = %763
  br i1 %766, label %771, label %769

769:                                              ; preds = %._crit_edge1216.1.thread, %._crit_edge1216.1
  %.1718.lcssa.11738 = phi i32 [ %758, %._crit_edge1216.1.thread ], [ %764, %._crit_edge1216.1 ]
  call void @mbedtls_strerror(i32 noundef %.1718.lcssa.11738, ptr noundef nonnull %3, i64 noundef 200) #7
  %770 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %778

771:                                              ; preds = %._crit_edge1216.1
  %772 = and i64 %.07211212.1, 18014398509481983
  %773 = call i64 @mbedtls_timing_hardclock() #7
  %774 = sub i64 %773, %762
  %775 = shl nuw nsw i64 %765, 10
  %776 = udiv i64 %774, %775
  %777 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %772, i64 noundef %776)
  br label %778

778:                                              ; preds = %771, %769
  %779 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.48, i32 noundef 256) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %780 = call ptr @mbedtls_cipher_info_from_type(i32 noundef 4) #7
  %781 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %782 = load ptr, ptr @stdout, align 8, !tbaa !5
  %783 = call i32 @fflush(ptr noundef %782)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %784

784:                                              ; preds = %786, %778
  %.07211212.2 = phi i64 [ 1, %778 ], [ %788, %786 ]
  %785 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not947.2 = icmp eq i32 %785, 0
  br i1 %.not947.2, label %786, label %.lr.ph1215.2

786:                                              ; preds = %784
  %787 = call i32 @mbedtls_cipher_cmac(ptr noundef %780, ptr noundef nonnull %3, i64 noundef 256, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %14) #7
  %788 = add i64 %.07211212.2, 1
  %789 = icmp eq i32 %787, 0
  br i1 %789, label %784, label %._crit_edge1216.2.thread, !llvm.loop !41

._crit_edge1216.2.thread:                         ; preds = %786
  %790 = call i64 @mbedtls_timing_hardclock() #7
  br label %798

.lr.ph1215.2:                                     ; preds = %784
  %791 = call i64 @mbedtls_timing_hardclock() #7
  br label %792

792:                                              ; preds = %792, %.lr.ph1215.2
  %.07201214.2 = phi i64 [ 0, %.lr.ph1215.2 ], [ %794, %792 ]
  %793 = call i32 @mbedtls_cipher_cmac(ptr noundef %780, ptr noundef nonnull %3, i64 noundef 256, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %14) #7
  %794 = add nuw nsw i64 %.07201214.2, 1
  %795 = icmp eq i32 %793, 0
  %796 = icmp ult i64 %.07201214.2, 1023
  %797 = select i1 %795, i1 %796, i1 false
  br i1 %797, label %792, label %._crit_edge1216.2, !llvm.loop !42

._crit_edge1216.2:                                ; preds = %792
  br i1 %795, label %800, label %798

798:                                              ; preds = %._crit_edge1216.2.thread, %._crit_edge1216.2
  %.1718.lcssa.21747 = phi i32 [ %787, %._crit_edge1216.2.thread ], [ %793, %._crit_edge1216.2 ]
  call void @mbedtls_strerror(i32 noundef %.1718.lcssa.21747, ptr noundef nonnull %3, i64 noundef 200) #7
  %799 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %807

800:                                              ; preds = %._crit_edge1216.2
  %801 = and i64 %.07211212.2, 18014398509481983
  %802 = call i64 @mbedtls_timing_hardclock() #7
  %803 = sub i64 %802, %791
  %804 = shl nuw nsw i64 %794, 10
  %805 = udiv i64 %803, %804
  %806 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %801, i64 noundef %805)
  br label %807

807:                                              ; preds = %800, %798
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %808 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.49)
  %809 = load ptr, ptr @stdout, align 8, !tbaa !5
  %810 = call i32 @fflush(ptr noundef %809)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %811

811:                                              ; preds = %807, %813
  %.07161222 = phi i64 [ 1, %807 ], [ %815, %813 ]
  %812 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not842 = icmp eq i32 %812, 0
  br i1 %.not842, label %813, label %.lr.ph1225.preheader

813:                                              ; preds = %811
  %814 = call i32 @mbedtls_aes_cmac_prf_128(ptr noundef nonnull %3, i64 noundef 16, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %14) #7
  %815 = add i64 %.07161222, 1
  %816 = icmp eq i32 %814, 0
  br i1 %816, label %811, label %._crit_edge1226.thread, !llvm.loop !43

._crit_edge1226.thread:                           ; preds = %813
  %817 = call i64 @mbedtls_timing_hardclock() #7
  br label %824

.lr.ph1225.preheader:                             ; preds = %811
  %818 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1225

.lr.ph1225:                                       ; preds = %.lr.ph1225.preheader, %.lr.ph1225
  %.07151224 = phi i64 [ %820, %.lr.ph1225 ], [ 0, %.lr.ph1225.preheader ]
  %819 = call i32 @mbedtls_aes_cmac_prf_128(ptr noundef nonnull %3, i64 noundef 16, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %14) #7
  %820 = add nuw nsw i64 %.07151224, 1
  %821 = icmp eq i32 %819, 0
  %822 = icmp ult i64 %.07151224, 1023
  %823 = select i1 %821, i1 %822, i1 false
  br i1 %823, label %.lr.ph1225, label %._crit_edge1226, !llvm.loop !44

._crit_edge1226:                                  ; preds = %.lr.ph1225
  br i1 %821, label %826, label %824

824:                                              ; preds = %._crit_edge1226.thread, %._crit_edge1226
  %.1713.lcssa1756 = phi i32 [ %814, %._crit_edge1226.thread ], [ %819, %._crit_edge1226 ]
  call void @mbedtls_strerror(i32 noundef %.1713.lcssa1756, ptr noundef nonnull %3, i64 noundef 200) #7
  %825 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %833

826:                                              ; preds = %._crit_edge1226
  %827 = and i64 %.07161222, 18014398509481983
  %828 = call i64 @mbedtls_timing_hardclock() #7
  %829 = sub i64 %828, %818
  %830 = shl nuw nsw i64 %820, 10
  %831 = udiv i64 %829, %830
  %832 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %827, i64 noundef %831)
  br label %833

833:                                              ; preds = %826, %824
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  br label %834

834:                                              ; preds = %833, %719
  %.not844 = icmp eq i8 %.sroa.36.2, 0
  br i1 %.not844, label %920, label %835

835:                                              ; preds = %834
  call void @llvm.lifetime.start.p0(i64 276, ptr nonnull %15) #7
  call void @mbedtls_camellia_init(ptr noundef nonnull %15) #7
  %836 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.50, i32 noundef 128) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %837 = call i32 @mbedtls_camellia_setkey_enc(ptr noundef nonnull %15, ptr noundef nonnull %3, i32 noundef 128) #7
  %838 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %839 = load ptr, ptr @stdout, align 8, !tbaa !5
  %840 = call i32 @fflush(ptr noundef %839)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %841

841:                                              ; preds = %835, %843
  %.07101230 = phi i64 [ 1, %835 ], [ %845, %843 ]
  %842 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not945 = icmp eq i32 %842, 0
  br i1 %.not945, label %843, label %.lr.ph1233.preheader

843:                                              ; preds = %841
  %844 = call i32 @mbedtls_camellia_crypt_cbc(ptr noundef nonnull %15, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %845 = add i64 %.07101230, 1
  %846 = icmp eq i32 %844, 0
  br i1 %846, label %841, label %._crit_edge1234.thread, !llvm.loop !45

._crit_edge1234.thread:                           ; preds = %843
  %847 = call i64 @mbedtls_timing_hardclock() #7
  br label %854

.lr.ph1233.preheader:                             ; preds = %841
  %848 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1233

.lr.ph1233:                                       ; preds = %.lr.ph1233.preheader, %.lr.ph1233
  %.07091232 = phi i64 [ %850, %.lr.ph1233 ], [ 0, %.lr.ph1233.preheader ]
  %849 = call i32 @mbedtls_camellia_crypt_cbc(ptr noundef nonnull %15, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %850 = add nuw nsw i64 %.07091232, 1
  %851 = icmp eq i32 %849, 0
  %852 = icmp ult i64 %.07091232, 1023
  %853 = select i1 %851, i1 %852, i1 false
  br i1 %853, label %.lr.ph1233, label %._crit_edge1234, !llvm.loop !46

._crit_edge1234:                                  ; preds = %.lr.ph1233
  br i1 %851, label %856, label %854

854:                                              ; preds = %._crit_edge1234.thread, %._crit_edge1234
  %.1706.lcssa1765 = phi i32 [ %844, %._crit_edge1234.thread ], [ %849, %._crit_edge1234 ]
  call void @mbedtls_strerror(i32 noundef %.1706.lcssa1765, ptr noundef nonnull %3, i64 noundef 200) #7
  %855 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %863

856:                                              ; preds = %._crit_edge1234
  %857 = and i64 %.07101230, 18014398509481983
  %858 = call i64 @mbedtls_timing_hardclock() #7
  %859 = sub i64 %858, %848
  %860 = shl nuw nsw i64 %850, 10
  %861 = udiv i64 %859, %860
  %862 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %857, i64 noundef %861)
  br label %863

863:                                              ; preds = %856, %854
  %864 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.50, i32 noundef 192) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %865 = call i32 @mbedtls_camellia_setkey_enc(ptr noundef nonnull %15, ptr noundef nonnull %3, i32 noundef 192) #7
  %866 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %867 = load ptr, ptr @stdout, align 8, !tbaa !5
  %868 = call i32 @fflush(ptr noundef %867)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %869

869:                                              ; preds = %871, %863
  %.07101230.1 = phi i64 [ 1, %863 ], [ %873, %871 ]
  %870 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not945.1 = icmp eq i32 %870, 0
  br i1 %.not945.1, label %871, label %.lr.ph1233.preheader.1

871:                                              ; preds = %869
  %872 = call i32 @mbedtls_camellia_crypt_cbc(ptr noundef nonnull %15, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %873 = add i64 %.07101230.1, 1
  %874 = icmp eq i32 %872, 0
  br i1 %874, label %869, label %._crit_edge1234.1.thread, !llvm.loop !45

._crit_edge1234.1.thread:                         ; preds = %871
  %875 = call i64 @mbedtls_timing_hardclock() #7
  br label %882

.lr.ph1233.preheader.1:                           ; preds = %869
  %876 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1233.1

.lr.ph1233.1:                                     ; preds = %.lr.ph1233.1, %.lr.ph1233.preheader.1
  %.07091232.1 = phi i64 [ %878, %.lr.ph1233.1 ], [ 0, %.lr.ph1233.preheader.1 ]
  %877 = call i32 @mbedtls_camellia_crypt_cbc(ptr noundef nonnull %15, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %878 = add nuw nsw i64 %.07091232.1, 1
  %879 = icmp eq i32 %877, 0
  %880 = icmp ult i64 %.07091232.1, 1023
  %881 = select i1 %879, i1 %880, i1 false
  br i1 %881, label %.lr.ph1233.1, label %._crit_edge1234.1, !llvm.loop !46

._crit_edge1234.1:                                ; preds = %.lr.ph1233.1
  br i1 %879, label %884, label %882

882:                                              ; preds = %._crit_edge1234.1.thread, %._crit_edge1234.1
  %.1706.lcssa.11774 = phi i32 [ %872, %._crit_edge1234.1.thread ], [ %877, %._crit_edge1234.1 ]
  call void @mbedtls_strerror(i32 noundef %.1706.lcssa.11774, ptr noundef nonnull %3, i64 noundef 200) #7
  %883 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %891

884:                                              ; preds = %._crit_edge1234.1
  %885 = and i64 %.07101230.1, 18014398509481983
  %886 = call i64 @mbedtls_timing_hardclock() #7
  %887 = sub i64 %886, %876
  %888 = shl nuw nsw i64 %878, 10
  %889 = udiv i64 %887, %888
  %890 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %885, i64 noundef %889)
  br label %891

891:                                              ; preds = %884, %882
  %892 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.50, i32 noundef 256) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %893 = call i32 @mbedtls_camellia_setkey_enc(ptr noundef nonnull %15, ptr noundef nonnull %3, i32 noundef 256) #7
  %894 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %895 = load ptr, ptr @stdout, align 8, !tbaa !5
  %896 = call i32 @fflush(ptr noundef %895)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %897

897:                                              ; preds = %899, %891
  %.07101230.2 = phi i64 [ 1, %891 ], [ %901, %899 ]
  %898 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not945.2 = icmp eq i32 %898, 0
  br i1 %.not945.2, label %899, label %.lr.ph1233.preheader.2

899:                                              ; preds = %897
  %900 = call i32 @mbedtls_camellia_crypt_cbc(ptr noundef nonnull %15, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %901 = add i64 %.07101230.2, 1
  %902 = icmp eq i32 %900, 0
  br i1 %902, label %897, label %._crit_edge1234.2.thread, !llvm.loop !45

._crit_edge1234.2.thread:                         ; preds = %899
  %903 = call i64 @mbedtls_timing_hardclock() #7
  br label %910

.lr.ph1233.preheader.2:                           ; preds = %897
  %904 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1233.2

.lr.ph1233.2:                                     ; preds = %.lr.ph1233.2, %.lr.ph1233.preheader.2
  %.07091232.2 = phi i64 [ %906, %.lr.ph1233.2 ], [ 0, %.lr.ph1233.preheader.2 ]
  %905 = call i32 @mbedtls_camellia_crypt_cbc(ptr noundef nonnull %15, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %906 = add nuw nsw i64 %.07091232.2, 1
  %907 = icmp eq i32 %905, 0
  %908 = icmp ult i64 %.07091232.2, 1023
  %909 = select i1 %907, i1 %908, i1 false
  br i1 %909, label %.lr.ph1233.2, label %._crit_edge1234.2, !llvm.loop !46

._crit_edge1234.2:                                ; preds = %.lr.ph1233.2
  br i1 %907, label %912, label %910

910:                                              ; preds = %._crit_edge1234.2.thread, %._crit_edge1234.2
  %.1706.lcssa.21783 = phi i32 [ %900, %._crit_edge1234.2.thread ], [ %905, %._crit_edge1234.2 ]
  call void @mbedtls_strerror(i32 noundef %.1706.lcssa.21783, ptr noundef nonnull %3, i64 noundef 200) #7
  %911 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %919

912:                                              ; preds = %._crit_edge1234.2
  %913 = and i64 %.07101230.2, 18014398509481983
  %914 = call i64 @mbedtls_timing_hardclock() #7
  %915 = sub i64 %914, %904
  %916 = shl nuw nsw i64 %906, 10
  %917 = udiv i64 %915, %916
  %918 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %913, i64 noundef %917)
  br label %919

919:                                              ; preds = %912, %910
  call void @mbedtls_camellia_free(ptr noundef nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 276, ptr nonnull %15) #7
  br label %920

920:                                              ; preds = %919, %834
  %.not845 = icmp eq i8 %.sroa.40.2, 0
  br i1 %.not845, label %947, label %921

921:                                              ; preds = %920
  %922 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.51)
  %923 = load ptr, ptr @stdout, align 8, !tbaa !5
  %924 = call i32 @fflush(ptr noundef %923)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %925

925:                                              ; preds = %921, %927
  %.07041239 = phi i64 [ 1, %921 ], [ %929, %927 ]
  %926 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not846 = icmp eq i32 %926, 0
  br i1 %.not846, label %927, label %.lr.ph1242.preheader

927:                                              ; preds = %925
  %928 = call i32 @mbedtls_chacha20_crypt(ptr noundef nonnull @buf, ptr noundef nonnull @buf, i32 noundef 0, i64 noundef 1024, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %929 = add i64 %.07041239, 1
  %930 = icmp eq i32 %928, 0
  br i1 %930, label %925, label %._crit_edge1243.thread, !llvm.loop !47

._crit_edge1243.thread:                           ; preds = %927
  %931 = call i64 @mbedtls_timing_hardclock() #7
  br label %938

.lr.ph1242.preheader:                             ; preds = %925
  %932 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1242

.lr.ph1242:                                       ; preds = %.lr.ph1242.preheader, %.lr.ph1242
  %.07031241 = phi i64 [ %934, %.lr.ph1242 ], [ 0, %.lr.ph1242.preheader ]
  %933 = call i32 @mbedtls_chacha20_crypt(ptr noundef nonnull @buf, ptr noundef nonnull @buf, i32 noundef 0, i64 noundef 1024, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %934 = add nuw nsw i64 %.07031241, 1
  %935 = icmp eq i32 %933, 0
  %936 = icmp ult i64 %.07031241, 1023
  %937 = select i1 %935, i1 %936, i1 false
  br i1 %937, label %.lr.ph1242, label %._crit_edge1243, !llvm.loop !48

._crit_edge1243:                                  ; preds = %.lr.ph1242
  br i1 %935, label %940, label %938

938:                                              ; preds = %._crit_edge1243.thread, %._crit_edge1243
  %.1701.lcssa1792 = phi i32 [ %928, %._crit_edge1243.thread ], [ %933, %._crit_edge1243 ]
  call void @mbedtls_strerror(i32 noundef %.1701.lcssa1792, ptr noundef nonnull %3, i64 noundef 200) #7
  %939 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %947

940:                                              ; preds = %._crit_edge1243
  %941 = and i64 %.07041239, 18014398509481983
  %942 = call i64 @mbedtls_timing_hardclock() #7
  %943 = sub i64 %942, %932
  %944 = shl nuw nsw i64 %934, 10
  %945 = udiv i64 %943, %944
  %946 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %941, i64 noundef %945)
  br label %947

947:                                              ; preds = %938, %940, %920
  %.not848 = icmp eq i8 %.sroa.42.2, 0
  br i1 %.not848, label %974, label %948

948:                                              ; preds = %947
  %949 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.52)
  %950 = load ptr, ptr @stdout, align 8, !tbaa !5
  %951 = call i32 @fflush(ptr noundef %950)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %952

952:                                              ; preds = %948, %954
  %.06991247 = phi i64 [ 1, %948 ], [ %956, %954 ]
  %953 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not849 = icmp eq i32 %953, 0
  br i1 %.not849, label %954, label %.lr.ph1250.preheader

954:                                              ; preds = %952
  %955 = call i32 @mbedtls_poly1305_mac(ptr noundef nonnull @buf, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull @buf) #7
  %956 = add i64 %.06991247, 1
  %957 = icmp eq i32 %955, 0
  br i1 %957, label %952, label %._crit_edge1251.thread, !llvm.loop !49

._crit_edge1251.thread:                           ; preds = %954
  %958 = call i64 @mbedtls_timing_hardclock() #7
  br label %965

.lr.ph1250.preheader:                             ; preds = %952
  %959 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1250

.lr.ph1250:                                       ; preds = %.lr.ph1250.preheader, %.lr.ph1250
  %.06981249 = phi i64 [ %961, %.lr.ph1250 ], [ 0, %.lr.ph1250.preheader ]
  %960 = call i32 @mbedtls_poly1305_mac(ptr noundef nonnull @buf, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull @buf) #7
  %961 = add nuw nsw i64 %.06981249, 1
  %962 = icmp eq i32 %960, 0
  %963 = icmp ult i64 %.06981249, 1023
  %964 = select i1 %962, i1 %963, i1 false
  br i1 %964, label %.lr.ph1250, label %._crit_edge1251, !llvm.loop !50

._crit_edge1251:                                  ; preds = %.lr.ph1250
  br i1 %962, label %967, label %965

965:                                              ; preds = %._crit_edge1251.thread, %._crit_edge1251
  %.1696.lcssa1801 = phi i32 [ %955, %._crit_edge1251.thread ], [ %960, %._crit_edge1251 ]
  call void @mbedtls_strerror(i32 noundef %.1696.lcssa1801, ptr noundef nonnull %3, i64 noundef 200) #7
  %966 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %974

967:                                              ; preds = %._crit_edge1251
  %968 = and i64 %.06991247, 18014398509481983
  %969 = call i64 @mbedtls_timing_hardclock() #7
  %970 = sub i64 %969, %959
  %971 = shl nuw nsw i64 %961, 10
  %972 = udiv i64 %970, %971
  %973 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %968, i64 noundef %972)
  br label %974

974:                                              ; preds = %965, %967, %947
  %.not851 = icmp eq i8 %.sroa.38.2, 0
  br i1 %.not851, label %1060, label %975

975:                                              ; preds = %974
  call void @llvm.lifetime.start.p0(i64 4168, ptr nonnull %16) #7
  call void @mbedtls_blowfish_init(ptr noundef nonnull %16) #7
  %976 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.53, i32 noundef 128) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %977 = call i32 @mbedtls_blowfish_setkey(ptr noundef nonnull %16, ptr noundef nonnull %3, i32 noundef 128) #7
  %978 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %979 = load ptr, ptr @stdout, align 8, !tbaa !5
  %980 = call i32 @fflush(ptr noundef %979)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %981

981:                                              ; preds = %975, %983
  %.06931255 = phi i64 [ 1, %975 ], [ %985, %983 ]
  %982 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not943 = icmp eq i32 %982, 0
  br i1 %.not943, label %983, label %.lr.ph1258.preheader

983:                                              ; preds = %981
  %984 = call i32 @mbedtls_blowfish_crypt_cbc(ptr noundef nonnull %16, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %985 = add i64 %.06931255, 1
  %986 = icmp eq i32 %984, 0
  br i1 %986, label %981, label %._crit_edge1259.thread, !llvm.loop !51

._crit_edge1259.thread:                           ; preds = %983
  %987 = call i64 @mbedtls_timing_hardclock() #7
  br label %994

.lr.ph1258.preheader:                             ; preds = %981
  %988 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1258

.lr.ph1258:                                       ; preds = %.lr.ph1258.preheader, %.lr.ph1258
  %.06921257 = phi i64 [ %990, %.lr.ph1258 ], [ 0, %.lr.ph1258.preheader ]
  %989 = call i32 @mbedtls_blowfish_crypt_cbc(ptr noundef nonnull %16, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %990 = add nuw nsw i64 %.06921257, 1
  %991 = icmp eq i32 %989, 0
  %992 = icmp ult i64 %.06921257, 1023
  %993 = select i1 %991, i1 %992, i1 false
  br i1 %993, label %.lr.ph1258, label %._crit_edge1259, !llvm.loop !52

._crit_edge1259:                                  ; preds = %.lr.ph1258
  br i1 %991, label %996, label %994

994:                                              ; preds = %._crit_edge1259.thread, %._crit_edge1259
  %.1689.lcssa1810 = phi i32 [ %984, %._crit_edge1259.thread ], [ %989, %._crit_edge1259 ]
  call void @mbedtls_strerror(i32 noundef %.1689.lcssa1810, ptr noundef nonnull %3, i64 noundef 200) #7
  %995 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1003

996:                                              ; preds = %._crit_edge1259
  %997 = and i64 %.06931255, 18014398509481983
  %998 = call i64 @mbedtls_timing_hardclock() #7
  %999 = sub i64 %998, %988
  %1000 = shl nuw nsw i64 %990, 10
  %1001 = udiv i64 %999, %1000
  %1002 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %997, i64 noundef %1001)
  br label %1003

1003:                                             ; preds = %996, %994
  %1004 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.53, i32 noundef 192) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %1005 = call i32 @mbedtls_blowfish_setkey(ptr noundef nonnull %16, ptr noundef nonnull %3, i32 noundef 192) #7
  %1006 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %1007 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1008 = call i32 @fflush(ptr noundef %1007)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %1009

1009:                                             ; preds = %1011, %1003
  %.06931255.1 = phi i64 [ 1, %1003 ], [ %1013, %1011 ]
  %1010 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not943.1 = icmp eq i32 %1010, 0
  br i1 %.not943.1, label %1011, label %.lr.ph1258.preheader.1

1011:                                             ; preds = %1009
  %1012 = call i32 @mbedtls_blowfish_crypt_cbc(ptr noundef nonnull %16, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %1013 = add i64 %.06931255.1, 1
  %1014 = icmp eq i32 %1012, 0
  br i1 %1014, label %1009, label %._crit_edge1259.1.thread, !llvm.loop !51

._crit_edge1259.1.thread:                         ; preds = %1011
  %1015 = call i64 @mbedtls_timing_hardclock() #7
  br label %1022

.lr.ph1258.preheader.1:                           ; preds = %1009
  %1016 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1258.1

.lr.ph1258.1:                                     ; preds = %.lr.ph1258.1, %.lr.ph1258.preheader.1
  %.06921257.1 = phi i64 [ %1018, %.lr.ph1258.1 ], [ 0, %.lr.ph1258.preheader.1 ]
  %1017 = call i32 @mbedtls_blowfish_crypt_cbc(ptr noundef nonnull %16, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %1018 = add nuw nsw i64 %.06921257.1, 1
  %1019 = icmp eq i32 %1017, 0
  %1020 = icmp ult i64 %.06921257.1, 1023
  %1021 = select i1 %1019, i1 %1020, i1 false
  br i1 %1021, label %.lr.ph1258.1, label %._crit_edge1259.1, !llvm.loop !52

._crit_edge1259.1:                                ; preds = %.lr.ph1258.1
  br i1 %1019, label %1024, label %1022

1022:                                             ; preds = %._crit_edge1259.1.thread, %._crit_edge1259.1
  %.1689.lcssa.11819 = phi i32 [ %1012, %._crit_edge1259.1.thread ], [ %1017, %._crit_edge1259.1 ]
  call void @mbedtls_strerror(i32 noundef %.1689.lcssa.11819, ptr noundef nonnull %3, i64 noundef 200) #7
  %1023 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1031

1024:                                             ; preds = %._crit_edge1259.1
  %1025 = and i64 %.06931255.1, 18014398509481983
  %1026 = call i64 @mbedtls_timing_hardclock() #7
  %1027 = sub i64 %1026, %1016
  %1028 = shl nuw nsw i64 %1018, 10
  %1029 = udiv i64 %1027, %1028
  %1030 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %1025, i64 noundef %1029)
  br label %1031

1031:                                             ; preds = %1024, %1022
  %1032 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.53, i32 noundef 256) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 0, i64 1024, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %3, i8 0, i64 200, i1 false)
  %1033 = call i32 @mbedtls_blowfish_setkey(ptr noundef nonnull %16, ptr noundef nonnull %3, i32 noundef 256) #7
  %1034 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %1035 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1036 = call i32 @fflush(ptr noundef %1035)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %1037

1037:                                             ; preds = %1039, %1031
  %.06931255.2 = phi i64 [ 1, %1031 ], [ %1041, %1039 ]
  %1038 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not943.2 = icmp eq i32 %1038, 0
  br i1 %.not943.2, label %1039, label %.lr.ph1258.preheader.2

1039:                                             ; preds = %1037
  %1040 = call i32 @mbedtls_blowfish_crypt_cbc(ptr noundef nonnull %16, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %1041 = add i64 %.06931255.2, 1
  %1042 = icmp eq i32 %1040, 0
  br i1 %1042, label %1037, label %._crit_edge1259.2.thread, !llvm.loop !51

._crit_edge1259.2.thread:                         ; preds = %1039
  %1043 = call i64 @mbedtls_timing_hardclock() #7
  br label %1050

.lr.ph1258.preheader.2:                           ; preds = %1037
  %1044 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1258.2

.lr.ph1258.2:                                     ; preds = %.lr.ph1258.2, %.lr.ph1258.preheader.2
  %.06921257.2 = phi i64 [ %1046, %.lr.ph1258.2 ], [ 0, %.lr.ph1258.preheader.2 ]
  %1045 = call i32 @mbedtls_blowfish_crypt_cbc(ptr noundef nonnull %16, i32 noundef 1, i64 noundef 1024, ptr noundef nonnull %3, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %1046 = add nuw nsw i64 %.06921257.2, 1
  %1047 = icmp eq i32 %1045, 0
  %1048 = icmp ult i64 %.06921257.2, 1023
  %1049 = select i1 %1047, i1 %1048, i1 false
  br i1 %1049, label %.lr.ph1258.2, label %._crit_edge1259.2, !llvm.loop !52

._crit_edge1259.2:                                ; preds = %.lr.ph1258.2
  br i1 %1047, label %1052, label %1050

1050:                                             ; preds = %._crit_edge1259.2.thread, %._crit_edge1259.2
  %.1689.lcssa.21828 = phi i32 [ %1040, %._crit_edge1259.2.thread ], [ %1045, %._crit_edge1259.2 ]
  call void @mbedtls_strerror(i32 noundef %.1689.lcssa.21828, ptr noundef nonnull %3, i64 noundef 200) #7
  %1051 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1059

1052:                                             ; preds = %._crit_edge1259.2
  %1053 = and i64 %.06931255.2, 18014398509481983
  %1054 = call i64 @mbedtls_timing_hardclock() #7
  %1055 = sub i64 %1054, %1044
  %1056 = shl nuw nsw i64 %1046, 10
  %1057 = udiv i64 %1055, %1056
  %1058 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %1053, i64 noundef %1057)
  br label %1059

1059:                                             ; preds = %1052, %1050
  call void @mbedtls_blowfish_free(ptr noundef nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 4168, ptr nonnull %16) #7
  br label %1060

1060:                                             ; preds = %1059, %974
  %.not852 = icmp eq i8 %.sroa.45.2, 0
  br i1 %.not852, label %1120, label %1061

1061:                                             ; preds = %1060
  call void @llvm.lifetime.start.p0(i64 344, ptr nonnull %17) #7
  call void @mbedtls_ctr_drbg_init(ptr noundef nonnull %17) #7
  %1062 = call i32 @mbedtls_ctr_drbg_seed(ptr noundef nonnull %17, ptr noundef nonnull @myrand, ptr noundef null, ptr noundef null, i64 noundef 0) #7
  %.not853 = icmp eq i32 %1062, 0
  br i1 %.not853, label %1064, label %1063

1063:                                             ; preds = %1061
  call void @exit(i32 noundef 1) #9
  unreachable

1064:                                             ; preds = %1061
  %1065 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.54)
  %1066 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1067 = call i32 @fflush(ptr noundef %1066)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %1068

1068:                                             ; preds = %1064, %1070
  %.06871264 = phi i64 [ 1, %1064 ], [ %1072, %1070 ]
  %1069 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not854 = icmp eq i32 %1069, 0
  br i1 %.not854, label %1070, label %.lr.ph1267.preheader

1070:                                             ; preds = %1068
  %1071 = call i32 @mbedtls_ctr_drbg_random(ptr noundef nonnull %17, ptr noundef nonnull @buf, i64 noundef 1024) #7
  %1072 = add i64 %.06871264, 1
  %1073 = icmp eq i32 %1071, 0
  br i1 %1073, label %1068, label %._crit_edge1268.thread, !llvm.loop !53

._crit_edge1268.thread:                           ; preds = %1070
  %1074 = call i64 @mbedtls_timing_hardclock() #7
  br label %1081

.lr.ph1267.preheader:                             ; preds = %1068
  %1075 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1267

.lr.ph1267:                                       ; preds = %.lr.ph1267.preheader, %.lr.ph1267
  %.06861266 = phi i64 [ %1077, %.lr.ph1267 ], [ 0, %.lr.ph1267.preheader ]
  %1076 = call i32 @mbedtls_ctr_drbg_random(ptr noundef nonnull %17, ptr noundef nonnull @buf, i64 noundef 1024) #7
  %1077 = add nuw nsw i64 %.06861266, 1
  %1078 = icmp eq i32 %1076, 0
  %1079 = icmp ult i64 %.06861266, 1023
  %1080 = select i1 %1078, i1 %1079, i1 false
  br i1 %1080, label %.lr.ph1267, label %._crit_edge1268, !llvm.loop !54

._crit_edge1268:                                  ; preds = %.lr.ph1267
  br i1 %1078, label %1083, label %1081

1081:                                             ; preds = %._crit_edge1268.thread, %._crit_edge1268
  %.1684.lcssa1837 = phi i32 [ %1071, %._crit_edge1268.thread ], [ %1076, %._crit_edge1268 ]
  call void @mbedtls_strerror(i32 noundef %.1684.lcssa1837, ptr noundef nonnull %3, i64 noundef 200) #7
  %1082 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1090

1083:                                             ; preds = %._crit_edge1268
  %1084 = and i64 %.06871264, 18014398509481983
  %1085 = call i64 @mbedtls_timing_hardclock() #7
  %1086 = sub i64 %1085, %1075
  %1087 = shl nuw nsw i64 %1077, 10
  %1088 = udiv i64 %1086, %1087
  %1089 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %1084, i64 noundef %1088)
  br label %1090

1090:                                             ; preds = %1083, %1081
  call void @mbedtls_ctr_drbg_free(ptr noundef nonnull %17) #7
  call void @mbedtls_ctr_drbg_init(ptr noundef nonnull %17) #7
  %1091 = call i32 @mbedtls_ctr_drbg_seed(ptr noundef nonnull %17, ptr noundef nonnull @myrand, ptr noundef null, ptr noundef null, i64 noundef 0) #7
  %.not856 = icmp eq i32 %1091, 0
  br i1 %.not856, label %1093, label %1092

1092:                                             ; preds = %1090
  call void @exit(i32 noundef 1) #9
  unreachable

1093:                                             ; preds = %1090
  call void @mbedtls_ctr_drbg_set_prediction_resistance(ptr noundef nonnull %17, i32 noundef 1) #7
  %1094 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.55)
  %1095 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1096 = call i32 @fflush(ptr noundef %1095)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %1097

1097:                                             ; preds = %1093, %1099
  %.06821272 = phi i64 [ 1, %1093 ], [ %1101, %1099 ]
  %1098 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not857 = icmp eq i32 %1098, 0
  br i1 %.not857, label %1099, label %.lr.ph1275.preheader

1099:                                             ; preds = %1097
  %1100 = call i32 @mbedtls_ctr_drbg_random(ptr noundef nonnull %17, ptr noundef nonnull @buf, i64 noundef 1024) #7
  %1101 = add i64 %.06821272, 1
  %1102 = icmp eq i32 %1100, 0
  br i1 %1102, label %1097, label %._crit_edge1276.thread, !llvm.loop !55

._crit_edge1276.thread:                           ; preds = %1099
  %1103 = call i64 @mbedtls_timing_hardclock() #7
  br label %1110

.lr.ph1275.preheader:                             ; preds = %1097
  %1104 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1275

.lr.ph1275:                                       ; preds = %.lr.ph1275.preheader, %.lr.ph1275
  %.06811274 = phi i64 [ %1106, %.lr.ph1275 ], [ 0, %.lr.ph1275.preheader ]
  %1105 = call i32 @mbedtls_ctr_drbg_random(ptr noundef nonnull %17, ptr noundef nonnull @buf, i64 noundef 1024) #7
  %1106 = add nuw nsw i64 %.06811274, 1
  %1107 = icmp eq i32 %1105, 0
  %1108 = icmp ult i64 %.06811274, 1023
  %1109 = select i1 %1107, i1 %1108, i1 false
  br i1 %1109, label %.lr.ph1275, label %._crit_edge1276, !llvm.loop !56

._crit_edge1276:                                  ; preds = %.lr.ph1275
  br i1 %1107, label %1112, label %1110

1110:                                             ; preds = %._crit_edge1276.thread, %._crit_edge1276
  %.1679.lcssa1846 = phi i32 [ %1100, %._crit_edge1276.thread ], [ %1105, %._crit_edge1276 ]
  call void @mbedtls_strerror(i32 noundef %.1679.lcssa1846, ptr noundef nonnull %3, i64 noundef 200) #7
  %1111 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1119

1112:                                             ; preds = %._crit_edge1276
  %1113 = and i64 %.06821272, 18014398509481983
  %1114 = call i64 @mbedtls_timing_hardclock() #7
  %1115 = sub i64 %1114, %1104
  %1116 = shl nuw nsw i64 %1106, 10
  %1117 = udiv i64 %1115, %1116
  %1118 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %1113, i64 noundef %1117)
  br label %1119

1119:                                             ; preds = %1112, %1110
  call void @mbedtls_ctr_drbg_free(ptr noundef nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 344, ptr nonnull %17) #7
  br label %1120

1120:                                             ; preds = %1119, %1060
  %.not859 = icmp eq i8 %.sroa.47.2, 0
  br i1 %.not859, label %1246, label %1121

1121:                                             ; preds = %1120
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %18) #7
  call void @mbedtls_hmac_drbg_init(ptr noundef nonnull %18) #7
  %1122 = call ptr @mbedtls_md_info_from_type(i32 noundef 4) #7
  %1123 = icmp eq ptr %1122, null
  br i1 %1123, label %1124, label %1125

1124:                                             ; preds = %1121
  call void @exit(i32 noundef 1) #9
  unreachable

1125:                                             ; preds = %1121
  %1126 = call i32 @mbedtls_hmac_drbg_seed(ptr noundef nonnull %18, ptr noundef nonnull %1122, ptr noundef nonnull @myrand, ptr noundef null, ptr noundef null, i64 noundef 0) #7
  %.not860 = icmp eq i32 %1126, 0
  br i1 %.not860, label %1128, label %1127

1127:                                             ; preds = %1125
  call void @exit(i32 noundef 1) #9
  unreachable

1128:                                             ; preds = %1125
  %1129 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.56)
  %1130 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1131 = call i32 @fflush(ptr noundef %1130)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %1132

1132:                                             ; preds = %1128, %1134
  %.06771280 = phi i64 [ 1, %1128 ], [ %1136, %1134 ]
  %1133 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not861 = icmp eq i32 %1133, 0
  br i1 %.not861, label %1134, label %.lr.ph1283.preheader

1134:                                             ; preds = %1132
  %1135 = call i32 @mbedtls_hmac_drbg_random(ptr noundef nonnull %18, ptr noundef nonnull @buf, i64 noundef 1024) #7
  %1136 = add i64 %.06771280, 1
  %1137 = icmp eq i32 %1135, 0
  br i1 %1137, label %1132, label %._crit_edge1284.thread, !llvm.loop !57

._crit_edge1284.thread:                           ; preds = %1134
  %1138 = call i64 @mbedtls_timing_hardclock() #7
  br label %1145

.lr.ph1283.preheader:                             ; preds = %1132
  %1139 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1283

.lr.ph1283:                                       ; preds = %.lr.ph1283.preheader, %.lr.ph1283
  %.06761282 = phi i64 [ %1141, %.lr.ph1283 ], [ 0, %.lr.ph1283.preheader ]
  %1140 = call i32 @mbedtls_hmac_drbg_random(ptr noundef nonnull %18, ptr noundef nonnull @buf, i64 noundef 1024) #7
  %1141 = add nuw nsw i64 %.06761282, 1
  %1142 = icmp eq i32 %1140, 0
  %1143 = icmp ult i64 %.06761282, 1023
  %1144 = select i1 %1142, i1 %1143, i1 false
  br i1 %1144, label %.lr.ph1283, label %._crit_edge1284, !llvm.loop !58

._crit_edge1284:                                  ; preds = %.lr.ph1283
  br i1 %1142, label %1147, label %1145

1145:                                             ; preds = %._crit_edge1284.thread, %._crit_edge1284
  %.1675.lcssa1855 = phi i32 [ %1135, %._crit_edge1284.thread ], [ %1140, %._crit_edge1284 ]
  call void @mbedtls_strerror(i32 noundef %.1675.lcssa1855, ptr noundef nonnull %3, i64 noundef 200) #7
  %1146 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1154

1147:                                             ; preds = %._crit_edge1284
  %1148 = and i64 %.06771280, 18014398509481983
  %1149 = call i64 @mbedtls_timing_hardclock() #7
  %1150 = sub i64 %1149, %1139
  %1151 = shl nuw nsw i64 %1141, 10
  %1152 = udiv i64 %1150, %1151
  %1153 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %1148, i64 noundef %1152)
  br label %1154

1154:                                             ; preds = %1147, %1145
  %1155 = call i32 @mbedtls_hmac_drbg_seed(ptr noundef nonnull %18, ptr noundef nonnull %1122, ptr noundef nonnull @myrand, ptr noundef null, ptr noundef null, i64 noundef 0) #7
  %.not863 = icmp eq i32 %1155, 0
  br i1 %.not863, label %1157, label %1156

1156:                                             ; preds = %1154
  call void @exit(i32 noundef 1) #9
  unreachable

1157:                                             ; preds = %1154
  call void @mbedtls_hmac_drbg_set_prediction_resistance(ptr noundef nonnull %18, i32 noundef 1) #7
  %1158 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.57)
  %1159 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1160 = call i32 @fflush(ptr noundef %1159)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %1161

1161:                                             ; preds = %1157, %1163
  %.06731288 = phi i64 [ 1, %1157 ], [ %1165, %1163 ]
  %1162 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not864 = icmp eq i32 %1162, 0
  br i1 %.not864, label %1163, label %.lr.ph1291.preheader

1163:                                             ; preds = %1161
  %1164 = call i32 @mbedtls_hmac_drbg_random(ptr noundef nonnull %18, ptr noundef nonnull @buf, i64 noundef 1024) #7
  %1165 = add i64 %.06731288, 1
  %1166 = icmp eq i32 %1164, 0
  br i1 %1166, label %1161, label %._crit_edge1292.thread, !llvm.loop !59

._crit_edge1292.thread:                           ; preds = %1163
  %1167 = call i64 @mbedtls_timing_hardclock() #7
  br label %1174

.lr.ph1291.preheader:                             ; preds = %1161
  %1168 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1291

.lr.ph1291:                                       ; preds = %.lr.ph1291.preheader, %.lr.ph1291
  %.06721290 = phi i64 [ %1170, %.lr.ph1291 ], [ 0, %.lr.ph1291.preheader ]
  %1169 = call i32 @mbedtls_hmac_drbg_random(ptr noundef nonnull %18, ptr noundef nonnull @buf, i64 noundef 1024) #7
  %1170 = add nuw nsw i64 %.06721290, 1
  %1171 = icmp eq i32 %1169, 0
  %1172 = icmp ult i64 %.06721290, 1023
  %1173 = select i1 %1171, i1 %1172, i1 false
  br i1 %1173, label %.lr.ph1291, label %._crit_edge1292, !llvm.loop !60

._crit_edge1292:                                  ; preds = %.lr.ph1291
  br i1 %1171, label %1176, label %1174

1174:                                             ; preds = %._crit_edge1292.thread, %._crit_edge1292
  %.1671.lcssa1864 = phi i32 [ %1164, %._crit_edge1292.thread ], [ %1169, %._crit_edge1292 ]
  call void @mbedtls_strerror(i32 noundef %.1671.lcssa1864, ptr noundef nonnull %3, i64 noundef 200) #7
  %1175 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1183

1176:                                             ; preds = %._crit_edge1292
  %1177 = and i64 %.06731288, 18014398509481983
  %1178 = call i64 @mbedtls_timing_hardclock() #7
  %1179 = sub i64 %1178, %1168
  %1180 = shl nuw nsw i64 %1170, 10
  %1181 = udiv i64 %1179, %1180
  %1182 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %1177, i64 noundef %1181)
  br label %1183

1183:                                             ; preds = %1176, %1174
  %1184 = call ptr @mbedtls_md_info_from_type(i32 noundef 6) #7
  %1185 = icmp eq ptr %1184, null
  br i1 %1185, label %1186, label %1187

1186:                                             ; preds = %1183
  call void @exit(i32 noundef 1) #9
  unreachable

1187:                                             ; preds = %1183
  %1188 = call i32 @mbedtls_hmac_drbg_seed(ptr noundef nonnull %18, ptr noundef nonnull %1184, ptr noundef nonnull @myrand, ptr noundef null, ptr noundef null, i64 noundef 0) #7
  %.not866 = icmp eq i32 %1188, 0
  br i1 %.not866, label %1190, label %1189

1189:                                             ; preds = %1187
  call void @exit(i32 noundef 1) #9
  unreachable

1190:                                             ; preds = %1187
  %1191 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.58)
  %1192 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1193 = call i32 @fflush(ptr noundef %1192)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %1194

1194:                                             ; preds = %1190, %1196
  %.06691296 = phi i64 [ 1, %1190 ], [ %1198, %1196 ]
  %1195 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not867 = icmp eq i32 %1195, 0
  br i1 %.not867, label %1196, label %.lr.ph1299.preheader

1196:                                             ; preds = %1194
  %1197 = call i32 @mbedtls_hmac_drbg_random(ptr noundef nonnull %18, ptr noundef nonnull @buf, i64 noundef 1024) #7
  %1198 = add i64 %.06691296, 1
  %1199 = icmp eq i32 %1197, 0
  br i1 %1199, label %1194, label %._crit_edge1300.thread, !llvm.loop !61

._crit_edge1300.thread:                           ; preds = %1196
  %1200 = call i64 @mbedtls_timing_hardclock() #7
  br label %1207

.lr.ph1299.preheader:                             ; preds = %1194
  %1201 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1299

.lr.ph1299:                                       ; preds = %.lr.ph1299.preheader, %.lr.ph1299
  %.06681298 = phi i64 [ %1203, %.lr.ph1299 ], [ 0, %.lr.ph1299.preheader ]
  %1202 = call i32 @mbedtls_hmac_drbg_random(ptr noundef nonnull %18, ptr noundef nonnull @buf, i64 noundef 1024) #7
  %1203 = add nuw nsw i64 %.06681298, 1
  %1204 = icmp eq i32 %1202, 0
  %1205 = icmp ult i64 %.06681298, 1023
  %1206 = select i1 %1204, i1 %1205, i1 false
  br i1 %1206, label %.lr.ph1299, label %._crit_edge1300, !llvm.loop !62

._crit_edge1300:                                  ; preds = %.lr.ph1299
  br i1 %1204, label %1209, label %1207

1207:                                             ; preds = %._crit_edge1300.thread, %._crit_edge1300
  %.1667.lcssa1873 = phi i32 [ %1197, %._crit_edge1300.thread ], [ %1202, %._crit_edge1300 ]
  call void @mbedtls_strerror(i32 noundef %.1667.lcssa1873, ptr noundef nonnull %3, i64 noundef 200) #7
  %1208 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1216

1209:                                             ; preds = %._crit_edge1300
  %1210 = and i64 %.06691296, 18014398509481983
  %1211 = call i64 @mbedtls_timing_hardclock() #7
  %1212 = sub i64 %1211, %1201
  %1213 = shl nuw nsw i64 %1203, 10
  %1214 = udiv i64 %1212, %1213
  %1215 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %1210, i64 noundef %1214)
  br label %1216

1216:                                             ; preds = %1209, %1207
  %1217 = call i32 @mbedtls_hmac_drbg_seed(ptr noundef nonnull %18, ptr noundef nonnull %1184, ptr noundef nonnull @myrand, ptr noundef null, ptr noundef null, i64 noundef 0) #7
  %.not869 = icmp eq i32 %1217, 0
  br i1 %.not869, label %1219, label %1218

1218:                                             ; preds = %1216
  call void @exit(i32 noundef 1) #9
  unreachable

1219:                                             ; preds = %1216
  call void @mbedtls_hmac_drbg_set_prediction_resistance(ptr noundef nonnull %18, i32 noundef 1) #7
  %1220 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull @.str.59)
  %1221 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1222 = call i32 @fflush(ptr noundef %1221)
  call void @mbedtls_set_alarm(i32 noundef 1) #7
  br label %1223

1223:                                             ; preds = %1219, %1225
  %.06651304 = phi i64 [ 1, %1219 ], [ %1227, %1225 ]
  %1224 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not870 = icmp eq i32 %1224, 0
  br i1 %.not870, label %1225, label %.lr.ph1307.preheader

1225:                                             ; preds = %1223
  %1226 = call i32 @mbedtls_hmac_drbg_random(ptr noundef nonnull %18, ptr noundef nonnull @buf, i64 noundef 1024) #7
  %1227 = add i64 %.06651304, 1
  %1228 = icmp eq i32 %1226, 0
  br i1 %1228, label %1223, label %._crit_edge1308.thread, !llvm.loop !63

._crit_edge1308.thread:                           ; preds = %1225
  %1229 = call i64 @mbedtls_timing_hardclock() #7
  br label %1236

.lr.ph1307.preheader:                             ; preds = %1223
  %1230 = call i64 @mbedtls_timing_hardclock() #7
  br label %.lr.ph1307

.lr.ph1307:                                       ; preds = %.lr.ph1307.preheader, %.lr.ph1307
  %.06641306 = phi i64 [ %1232, %.lr.ph1307 ], [ 0, %.lr.ph1307.preheader ]
  %1231 = call i32 @mbedtls_hmac_drbg_random(ptr noundef nonnull %18, ptr noundef nonnull @buf, i64 noundef 1024) #7
  %1232 = add nuw nsw i64 %.06641306, 1
  %1233 = icmp eq i32 %1231, 0
  %1234 = icmp ult i64 %.06641306, 1023
  %1235 = select i1 %1233, i1 %1234, i1 false
  br i1 %1235, label %.lr.ph1307, label %._crit_edge1308, !llvm.loop !64

._crit_edge1308:                                  ; preds = %.lr.ph1307
  br i1 %1233, label %1238, label %1236

1236:                                             ; preds = %._crit_edge1308.thread, %._crit_edge1308
  %.1663.lcssa1882 = phi i32 [ %1226, %._crit_edge1308.thread ], [ %1231, %._crit_edge1308 ]
  call void @mbedtls_strerror(i32 noundef %.1663.lcssa1882, ptr noundef nonnull %3, i64 noundef 200) #7
  %1237 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1245

1238:                                             ; preds = %._crit_edge1308
  %1239 = and i64 %.06651304, 18014398509481983
  %1240 = call i64 @mbedtls_timing_hardclock() #7
  %1241 = sub i64 %1240, %1230
  %1242 = shl nuw nsw i64 %1232, 10
  %1243 = udiv i64 %1241, %1242
  %1244 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %1239, i64 noundef %1243)
  br label %1245

1245:                                             ; preds = %1238, %1236
  call void @mbedtls_hmac_drbg_free(ptr noundef nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %18) #7
  br label %1246

1246:                                             ; preds = %1245, %1120
  %.not872 = icmp eq i8 %.sroa.49.2, 0
  br i1 %.not872, label %1324, label %1247

1247:                                             ; preds = %1246
  call void @llvm.lifetime.start.p0(i64 336, ptr nonnull %19) #7
  %1248 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.60, i32 noundef 2048) #7
  call void @mbedtls_rsa_init(ptr noundef nonnull %19, i32 noundef 0, i32 noundef 0) #7
  %1249 = call i32 @mbedtls_rsa_gen_key(ptr noundef nonnull %19, ptr noundef nonnull @myrand, ptr noundef null, i32 noundef 2048, i32 noundef 65537) #7
  %1250 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %1251 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1252 = call i32 @fflush(ptr noundef %1251)
  call void @mbedtls_set_alarm(i32 noundef 3) #7
  %1253 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not9391312 = icmp eq i32 %1253, 0
  br i1 %.not9391312, label %.lr.ph1315, label %.thread

.lr.ph1315:                                       ; preds = %1247, %.lr.ph1315
  %.06601313 = phi i64 [ %1255, %.lr.ph1315 ], [ 1, %1247 ]
  store i8 0, ptr @buf, align 16, !tbaa !65
  %1254 = call i32 @mbedtls_rsa_public(ptr noundef nonnull %19, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %1255 = add i64 %.06601313, 1
  %1256 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not939 = icmp eq i32 %1256, 0
  %.not940 = icmp eq i32 %1254, 0
  %1257 = select i1 %.not939, i1 %.not940, i1 false
  br i1 %1257, label %.lr.ph1315, label %._crit_edge1316, !llvm.loop !66

._crit_edge1316:                                  ; preds = %.lr.ph1315
  %1258 = icmp eq i32 %1254, -114
  br i1 %1258, label %1259, label %1261

1259:                                             ; preds = %._crit_edge1316
  %1260 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.61)
  br label %1267

1261:                                             ; preds = %._crit_edge1316
  br i1 %.not940, label %.thread, label %1262

1262:                                             ; preds = %1261
  call void @mbedtls_strerror(i32 noundef %1254, ptr noundef nonnull %3, i64 noundef 200) #7
  %1263 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1267

.thread:                                          ; preds = %1247, %1261
  %.0660.lcssa18861892 = phi i64 [ %1255, %1261 ], [ 1, %1247 ]
  %1264 = udiv i64 %.0660.lcssa18861892, 3
  %1265 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.62, i64 noundef %1264)
  %1266 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  br label %1267

1267:                                             ; preds = %1262, %.thread, %1259
  %1268 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %1269 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1270 = call i32 @fflush(ptr noundef %1269)
  call void @mbedtls_set_alarm(i32 noundef 3) #7
  %1271 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not9411320 = icmp eq i32 %1271, 0
  br i1 %.not9411320, label %.lr.ph1323, label %.thread1899

.lr.ph1323:                                       ; preds = %1267, %.lr.ph1323
  %.06581321 = phi i64 [ %1273, %.lr.ph1323 ], [ 1, %1267 ]
  store i8 0, ptr @buf, align 16, !tbaa !65
  %1272 = call i32 @mbedtls_rsa_private(ptr noundef nonnull %19, ptr noundef nonnull @myrand, ptr noundef null, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %1273 = add i64 %.06581321, 1
  %1274 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not941 = icmp eq i32 %1274, 0
  %.not942 = icmp eq i32 %1272, 0
  %1275 = select i1 %.not941, i1 %.not942, i1 false
  br i1 %1275, label %.lr.ph1323, label %._crit_edge1324, !llvm.loop !67

._crit_edge1324:                                  ; preds = %.lr.ph1323
  %1276 = icmp eq i32 %1272, -114
  br i1 %1276, label %1277, label %1279

1277:                                             ; preds = %._crit_edge1324
  %1278 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.61)
  br label %1285

1279:                                             ; preds = %._crit_edge1324
  br i1 %.not942, label %.thread1899, label %1280

1280:                                             ; preds = %1279
  call void @mbedtls_strerror(i32 noundef %1272, ptr noundef nonnull %3, i64 noundef 200) #7
  %1281 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1285

.thread1899:                                      ; preds = %1267, %1279
  %.0658.lcssa18961903 = phi i64 [ %1273, %1279 ], [ 1, %1267 ]
  %1282 = udiv i64 %.0658.lcssa18961903, 3
  %1283 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.63, i64 noundef %1282)
  %1284 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  br label %1285

1285:                                             ; preds = %1280, %.thread1899, %1277
  call void @mbedtls_rsa_free(ptr noundef nonnull %19) #7
  %1286 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.60, i32 noundef 4096) #7
  call void @mbedtls_rsa_init(ptr noundef nonnull %19, i32 noundef 0, i32 noundef 0) #7
  %1287 = call i32 @mbedtls_rsa_gen_key(ptr noundef nonnull %19, ptr noundef nonnull @myrand, ptr noundef null, i32 noundef 4096, i32 noundef 65537) #7
  %1288 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %1289 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1290 = call i32 @fflush(ptr noundef %1289)
  call void @mbedtls_set_alarm(i32 noundef 3) #7
  %1291 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not9391312.1 = icmp eq i32 %1291, 0
  br i1 %.not9391312.1, label %.lr.ph1315.1, label %.thread1910

.lr.ph1315.1:                                     ; preds = %1285, %.lr.ph1315.1
  %.06601313.1 = phi i64 [ %1293, %.lr.ph1315.1 ], [ 1, %1285 ]
  store i8 0, ptr @buf, align 16, !tbaa !65
  %1292 = call i32 @mbedtls_rsa_public(ptr noundef nonnull %19, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %1293 = add i64 %.06601313.1, 1
  %1294 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not939.1 = icmp eq i32 %1294, 0
  %.not940.1 = icmp eq i32 %1292, 0
  %1295 = select i1 %.not939.1, i1 %.not940.1, i1 false
  br i1 %1295, label %.lr.ph1315.1, label %._crit_edge1316.1, !llvm.loop !66

._crit_edge1316.1:                                ; preds = %.lr.ph1315.1
  %1296 = icmp eq i32 %1292, -114
  br i1 %1296, label %1303, label %1297

1297:                                             ; preds = %._crit_edge1316.1
  br i1 %.not940.1, label %.thread1910, label %1298

1298:                                             ; preds = %1297
  call void @mbedtls_strerror(i32 noundef %1292, ptr noundef nonnull %3, i64 noundef 200) #7
  %1299 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1305

.thread1910:                                      ; preds = %1285, %1297
  %.0660.lcssa.119071914 = phi i64 [ %1293, %1297 ], [ 1, %1285 ]
  %1300 = udiv i64 %.0660.lcssa.119071914, 3
  %1301 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.62, i64 noundef %1300)
  %1302 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  br label %1305

1303:                                             ; preds = %._crit_edge1316.1
  %1304 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.61)
  br label %1305

1305:                                             ; preds = %1303, %.thread1910, %1298
  %1306 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %1307 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1308 = call i32 @fflush(ptr noundef %1307)
  call void @mbedtls_set_alarm(i32 noundef 3) #7
  %1309 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not9411320.1 = icmp eq i32 %1309, 0
  br i1 %.not9411320.1, label %.lr.ph1323.1, label %.thread1921

.lr.ph1323.1:                                     ; preds = %1305, %.lr.ph1323.1
  %.06581321.1 = phi i64 [ %1311, %.lr.ph1323.1 ], [ 1, %1305 ]
  store i8 0, ptr @buf, align 16, !tbaa !65
  %1310 = call i32 @mbedtls_rsa_private(ptr noundef nonnull %19, ptr noundef nonnull @myrand, ptr noundef null, ptr noundef nonnull @buf, ptr noundef nonnull @buf) #7
  %1311 = add i64 %.06581321.1, 1
  %1312 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not941.1 = icmp eq i32 %1312, 0
  %.not942.1 = icmp eq i32 %1310, 0
  %1313 = select i1 %.not941.1, i1 %.not942.1, i1 false
  br i1 %1313, label %.lr.ph1323.1, label %._crit_edge1324.1, !llvm.loop !67

._crit_edge1324.1:                                ; preds = %.lr.ph1323.1
  %1314 = icmp eq i32 %1310, -114
  br i1 %1314, label %1321, label %1315

1315:                                             ; preds = %._crit_edge1324.1
  br i1 %.not942.1, label %.thread1921, label %1316

1316:                                             ; preds = %1315
  call void @mbedtls_strerror(i32 noundef %1310, ptr noundef nonnull %3, i64 noundef 200) #7
  %1317 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1323

.thread1921:                                      ; preds = %1305, %1315
  %.0658.lcssa.119181925 = phi i64 [ %1311, %1315 ], [ 1, %1305 ]
  %1318 = udiv i64 %.0658.lcssa.119181925, 3
  %1319 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.63, i64 noundef %1318)
  %1320 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  br label %1323

1321:                                             ; preds = %._crit_edge1324.1
  %1322 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.61)
  br label %1323

1323:                                             ; preds = %1321, %.thread1921, %1316
  call void @mbedtls_rsa_free(ptr noundef nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 336, ptr nonnull %19) #7
  br label %1324

1324:                                             ; preds = %1323, %1246
  %.not873 = icmp eq i8 %.sroa.51.2, 0
  br i1 %.not873, label %1444, label %1325

1325:                                             ; preds = %1324
  call void @llvm.lifetime.start.p0(i64 248, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  %1326 = getelementptr inbounds i8, ptr %20, i64 8
  %1327 = getelementptr inbounds i8, ptr %20, i64 32
  %1328 = getelementptr inbounds i8, ptr %20, i64 104
  %1329 = getelementptr inbounds i8, ptr %20, i64 80
  call void @mbedtls_dhm_init(ptr noundef nonnull %20) #7
  %1330 = load ptr, ptr @__const.main.dhm_P, align 16, !tbaa !5
  %1331 = load i64, ptr @__const.main.dhm_P_size, align 16, !tbaa !68
  %1332 = call i32 @mbedtls_mpi_read_binary(ptr noundef nonnull %1326, ptr noundef %1330, i64 noundef %1331) #7
  %.not932 = icmp eq i32 %1332, 0
  br i1 %.not932, label %1333, label %1337

1333:                                             ; preds = %1325
  %1334 = load ptr, ptr @__const.main.dhm_G, align 16, !tbaa !5
  %1335 = load i64, ptr @__const.main.dhm_G_size, align 16, !tbaa !68
  %1336 = call i32 @mbedtls_mpi_read_binary(ptr noundef nonnull %1327, ptr noundef %1334, i64 noundef %1335) #7
  %.not933 = icmp eq i32 %1336, 0
  br i1 %.not933, label %1338, label %1337

1337:                                             ; preds = %1391, %1387, %1333, %1325
  call void @exit(i32 noundef 1) #9
  unreachable

1338:                                             ; preds = %1333
  %1339 = call i64 @mbedtls_mpi_size(ptr noundef nonnull %1326) #7
  store i64 %1339, ptr %20, align 8, !tbaa !70
  %1340 = trunc i64 %1339 to i32
  %1341 = call i32 @mbedtls_dhm_make_public(ptr noundef nonnull %20, i32 noundef %1340, ptr noundef nonnull @buf, i64 noundef %1339, ptr noundef nonnull @myrand, ptr noundef null) #7
  %1342 = call i32 @mbedtls_mpi_copy(ptr noundef nonnull %1328, ptr noundef nonnull %1329) #7
  %.not934 = icmp eq i32 %1342, 0
  br i1 %.not934, label %1344, label %1343

1343:                                             ; preds = %1395, %1338
  call void @exit(i32 noundef 1) #9
  unreachable

1344:                                             ; preds = %1338
  %1345 = load i32, ptr @__const.main.dhm_sizes, align 4, !tbaa !11
  %1346 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.64, i32 noundef %1345) #7
  %1347 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %1348 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1349 = call i32 @fflush(ptr noundef %1348)
  call void @mbedtls_set_alarm(i32 noundef 3) #7
  %1350 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not9351329 = icmp eq i32 %1350, 0
  br i1 %.not9351329, label %.lr.ph1332, label %.thread1932

.lr.ph1332:                                       ; preds = %1344, %.lr.ph1332
  %.06561330 = phi i64 [ %1356, %.lr.ph1332 ], [ 1, %1344 ]
  %1351 = load i64, ptr %20, align 8, !tbaa !70
  %1352 = trunc i64 %1351 to i32
  %1353 = call i32 @mbedtls_dhm_make_public(ptr noundef nonnull %20, i32 noundef %1352, ptr noundef nonnull @buf, i64 noundef %1351, ptr noundef nonnull @myrand, ptr noundef null) #7
  %1354 = call i32 @mbedtls_dhm_calc_secret(ptr noundef nonnull %20, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %21, ptr noundef nonnull @myrand, ptr noundef null) #7
  %1355 = or i32 %1354, %1353
  %1356 = add i64 %.06561330, 1
  %1357 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not935 = icmp eq i32 %1357, 0
  %.not936 = icmp eq i32 %1355, 0
  %1358 = select i1 %.not935, i1 %.not936, i1 false
  br i1 %1358, label %.lr.ph1332, label %._crit_edge1333, !llvm.loop !73

._crit_edge1333:                                  ; preds = %.lr.ph1332
  %1359 = icmp eq i32 %1355, -114
  br i1 %1359, label %1360, label %1362

1360:                                             ; preds = %._crit_edge1333
  %1361 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.61)
  br label %1368

1362:                                             ; preds = %._crit_edge1333
  br i1 %.not936, label %.thread1932, label %1363

1363:                                             ; preds = %1362
  call void @mbedtls_strerror(i32 noundef %1355, ptr noundef nonnull %3, i64 noundef 200) #7
  %1364 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1368

.thread1932:                                      ; preds = %1344, %1362
  %.0656.lcssa19291936 = phi i64 [ %1356, %1362 ], [ 1, %1344 ]
  %1365 = udiv i64 %.0656.lcssa19291936, 3
  %1366 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.65, i64 noundef %1365)
  %1367 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  br label %1368

1368:                                             ; preds = %1363, %.thread1932, %1360
  %1369 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.66, i32 noundef %1345) #7
  %1370 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %1371 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1372 = call i32 @fflush(ptr noundef %1371)
  call void @mbedtls_set_alarm(i32 noundef 3) #7
  %1373 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not9371337 = icmp eq i32 %1373, 0
  br i1 %.not9371337, label %.lr.ph1340, label %.thread1943

.lr.ph1340:                                       ; preds = %1368, %.lr.ph1340
  %.06541338 = phi i64 [ %1375, %.lr.ph1340 ], [ 1, %1368 ]
  %1374 = call i32 @mbedtls_dhm_calc_secret(ptr noundef nonnull %20, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %21, ptr noundef nonnull @myrand, ptr noundef null) #7
  %1375 = add i64 %.06541338, 1
  %1376 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not937 = icmp eq i32 %1376, 0
  %.not938 = icmp eq i32 %1374, 0
  %1377 = select i1 %.not937, i1 %.not938, i1 false
  br i1 %1377, label %.lr.ph1340, label %._crit_edge1341, !llvm.loop !74

._crit_edge1341:                                  ; preds = %.lr.ph1340
  %1378 = icmp eq i32 %1374, -114
  br i1 %1378, label %1379, label %1381

1379:                                             ; preds = %._crit_edge1341
  %1380 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.61)
  br label %1387

1381:                                             ; preds = %._crit_edge1341
  br i1 %.not938, label %.thread1943, label %1382

1382:                                             ; preds = %1381
  call void @mbedtls_strerror(i32 noundef %1374, ptr noundef nonnull %3, i64 noundef 200) #7
  %1383 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1387

.thread1943:                                      ; preds = %1368, %1381
  %.0654.lcssa19401947 = phi i64 [ %1375, %1381 ], [ 1, %1368 ]
  %1384 = udiv i64 %.0654.lcssa19401947, 3
  %1385 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.65, i64 noundef %1384)
  %1386 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  br label %1387

1387:                                             ; preds = %1382, %.thread1943, %1379
  call void @mbedtls_dhm_free(ptr noundef nonnull %20) #7
  call void @mbedtls_dhm_init(ptr noundef nonnull %20) #7
  %1388 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.dhm_P, i64 8), align 8, !tbaa !5
  %1389 = load i64, ptr getelementptr inbounds (i8, ptr @__const.main.dhm_P_size, i64 8), align 8, !tbaa !68
  %1390 = call i32 @mbedtls_mpi_read_binary(ptr noundef nonnull %1326, ptr noundef %1388, i64 noundef %1389) #7
  %.not932.1 = icmp eq i32 %1390, 0
  br i1 %.not932.1, label %1391, label %1337

1391:                                             ; preds = %1387
  %1392 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.dhm_G, i64 8), align 8, !tbaa !5
  %1393 = load i64, ptr getelementptr inbounds (i8, ptr @__const.main.dhm_G_size, i64 8), align 8, !tbaa !68
  %1394 = call i32 @mbedtls_mpi_read_binary(ptr noundef nonnull %1327, ptr noundef %1392, i64 noundef %1393) #7
  %.not933.1 = icmp eq i32 %1394, 0
  br i1 %.not933.1, label %1395, label %1337

1395:                                             ; preds = %1391
  %1396 = call i64 @mbedtls_mpi_size(ptr noundef nonnull %1326) #7
  store i64 %1396, ptr %20, align 8, !tbaa !70
  %1397 = trunc i64 %1396 to i32
  %1398 = call i32 @mbedtls_dhm_make_public(ptr noundef nonnull %20, i32 noundef %1397, ptr noundef nonnull @buf, i64 noundef %1396, ptr noundef nonnull @myrand, ptr noundef null) #7
  %1399 = call i32 @mbedtls_mpi_copy(ptr noundef nonnull %1328, ptr noundef nonnull %1329) #7
  %.not934.1 = icmp eq i32 %1399, 0
  br i1 %.not934.1, label %1400, label %1343

1400:                                             ; preds = %1395
  %1401 = load i32, ptr getelementptr inbounds (i8, ptr @__const.main.dhm_sizes, i64 4), align 4, !tbaa !11
  %1402 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.64, i32 noundef %1401) #7
  %1403 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %1404 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1405 = call i32 @fflush(ptr noundef %1404)
  call void @mbedtls_set_alarm(i32 noundef 3) #7
  %1406 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not9351329.1 = icmp eq i32 %1406, 0
  br i1 %.not9351329.1, label %.lr.ph1332.1, label %.thread1954

.lr.ph1332.1:                                     ; preds = %1400, %.lr.ph1332.1
  %.06561330.1 = phi i64 [ %1412, %.lr.ph1332.1 ], [ 1, %1400 ]
  %1407 = load i64, ptr %20, align 8, !tbaa !70
  %1408 = trunc i64 %1407 to i32
  %1409 = call i32 @mbedtls_dhm_make_public(ptr noundef nonnull %20, i32 noundef %1408, ptr noundef nonnull @buf, i64 noundef %1407, ptr noundef nonnull @myrand, ptr noundef null) #7
  %1410 = call i32 @mbedtls_dhm_calc_secret(ptr noundef nonnull %20, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %21, ptr noundef nonnull @myrand, ptr noundef null) #7
  %1411 = or i32 %1410, %1409
  %1412 = add i64 %.06561330.1, 1
  %1413 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not935.1 = icmp eq i32 %1413, 0
  %.not936.1 = icmp eq i32 %1411, 0
  %1414 = select i1 %.not935.1, i1 %.not936.1, i1 false
  br i1 %1414, label %.lr.ph1332.1, label %._crit_edge1333.1, !llvm.loop !73

._crit_edge1333.1:                                ; preds = %.lr.ph1332.1
  %1415 = icmp eq i32 %1411, -114
  br i1 %1415, label %1422, label %1416

1416:                                             ; preds = %._crit_edge1333.1
  br i1 %.not936.1, label %.thread1954, label %1417

1417:                                             ; preds = %1416
  call void @mbedtls_strerror(i32 noundef %1411, ptr noundef nonnull %3, i64 noundef 200) #7
  %1418 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1424

.thread1954:                                      ; preds = %1400, %1416
  %.0656.lcssa.119511958 = phi i64 [ %1412, %1416 ], [ 1, %1400 ]
  %1419 = udiv i64 %.0656.lcssa.119511958, 3
  %1420 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.65, i64 noundef %1419)
  %1421 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  br label %1424

1422:                                             ; preds = %._crit_edge1333.1
  %1423 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.61)
  br label %1424

1424:                                             ; preds = %1422, %.thread1954, %1417
  %1425 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.66, i32 noundef %1401) #7
  %1426 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %1427 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1428 = call i32 @fflush(ptr noundef %1427)
  call void @mbedtls_set_alarm(i32 noundef 3) #7
  %1429 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not9371337.1 = icmp eq i32 %1429, 0
  br i1 %.not9371337.1, label %.lr.ph1340.1, label %.thread1965

.lr.ph1340.1:                                     ; preds = %1424, %.lr.ph1340.1
  %.06541338.1 = phi i64 [ %1431, %.lr.ph1340.1 ], [ 1, %1424 ]
  %1430 = call i32 @mbedtls_dhm_calc_secret(ptr noundef nonnull %20, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull %21, ptr noundef nonnull @myrand, ptr noundef null) #7
  %1431 = add i64 %.06541338.1, 1
  %1432 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not937.1 = icmp eq i32 %1432, 0
  %.not938.1 = icmp eq i32 %1430, 0
  %1433 = select i1 %.not937.1, i1 %.not938.1, i1 false
  br i1 %1433, label %.lr.ph1340.1, label %._crit_edge1341.1, !llvm.loop !74

._crit_edge1341.1:                                ; preds = %.lr.ph1340.1
  %1434 = icmp eq i32 %1430, -114
  br i1 %1434, label %1441, label %1435

1435:                                             ; preds = %._crit_edge1341.1
  br i1 %.not938.1, label %.thread1965, label %1436

1436:                                             ; preds = %1435
  call void @mbedtls_strerror(i32 noundef %1430, ptr noundef nonnull %3, i64 noundef 200) #7
  %1437 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1443

.thread1965:                                      ; preds = %1424, %1435
  %.0654.lcssa.119621969 = phi i64 [ %1431, %1435 ], [ 1, %1424 ]
  %1438 = udiv i64 %.0654.lcssa.119621969, 3
  %1439 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.65, i64 noundef %1438)
  %1440 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  br label %1443

1441:                                             ; preds = %._crit_edge1341.1
  %1442 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.61)
  br label %1443

1443:                                             ; preds = %1441, %.thread1965, %1436
  call void @mbedtls_dhm_free(ptr noundef nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 248, ptr nonnull %20) #7
  br label %1444

1444:                                             ; preds = %1443, %1324
  %.not874 = icmp eq i8 %.sroa.53.2, 0
  br i1 %.not874, label %1524, label %1445

1445:                                             ; preds = %1444
  call void @llvm.lifetime.start.p0(i64 344, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) @buf, i8 42, i64 1024, i1 false)
  %1446 = call ptr @mbedtls_ecp_curve_list() #7
  %1447 = load i32, ptr %1446, align 8, !tbaa !75
  %.not8751354 = icmp eq i32 %1447, 0
  br i1 %.not8751354, label %._crit_edge1359, label %.lr.ph1358

.lr.ph1358:                                       ; preds = %1445, %1480
  %1448 = phi i32 [ %1482, %1480 ], [ %1447, %1445 ]
  %.06511355 = phi ptr [ %1481, %1480 ], [ %1446, %1445 ]
  %1449 = call i32 @mbedtls_ecdsa_can_do(i32 noundef %1448) #7
  %.not928 = icmp eq i32 %1449, 0
  br i1 %.not928, label %1480, label %1450

1450:                                             ; preds = %.lr.ph1358
  call void @mbedtls_ecdsa_init(ptr noundef nonnull %22) #7
  %1451 = load i32, ptr %.06511355, align 8, !tbaa !75
  %1452 = call i32 @mbedtls_ecdsa_genkey(ptr noundef nonnull %22, i32 noundef %1451, ptr noundef nonnull @myrand, ptr noundef null) #7
  %.not929 = icmp eq i32 %1452, 0
  br i1 %.not929, label %1454, label %1453

1453:                                             ; preds = %1450
  call void @exit(i32 noundef 1) #9
  unreachable

1454:                                             ; preds = %1450
  call void @ecp_clear_precomputed(ptr noundef nonnull %22)
  %1455 = getelementptr inbounds i8, ptr %.06511355, i64 8
  %1456 = load ptr, ptr %1455, align 8, !tbaa !78
  %1457 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.67, ptr noundef %1456) #7
  %1458 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %1459 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1460 = call i32 @fflush(ptr noundef %1459)
  call void @mbedtls_set_alarm(i32 noundef 3) #7
  %1461 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not9301346 = icmp eq i32 %1461, 0
  br i1 %.not9301346, label %.lr.ph1349, label %.thread1976

.lr.ph1349:                                       ; preds = %1454
  %1462 = getelementptr inbounds i8, ptr %.06511355, i64 6
  br label %1463

1463:                                             ; preds = %.lr.ph1349, %1463
  %.06501347 = phi i64 [ 1, %.lr.ph1349 ], [ %1467, %1463 ]
  %1464 = load i16, ptr %1462, align 2, !tbaa !79
  %1465 = zext i16 %1464 to i64
  %1466 = call i32 @mbedtls_ecdsa_write_signature(ptr noundef nonnull %22, i32 noundef 6, ptr noundef nonnull @buf, i64 noundef %1465, ptr noundef nonnull %3, ptr noundef nonnull %23, ptr noundef nonnull @myrand, ptr noundef null) #7
  %1467 = add i64 %.06501347, 1
  %1468 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not930 = icmp eq i32 %1468, 0
  %.not931 = icmp eq i32 %1466, 0
  %1469 = select i1 %.not930, i1 %.not931, i1 false
  br i1 %1469, label %1463, label %._crit_edge1350, !llvm.loop !80

._crit_edge1350:                                  ; preds = %1463
  %1470 = icmp eq i32 %1466, -114
  br i1 %1470, label %1471, label %1473

1471:                                             ; preds = %._crit_edge1350
  %1472 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.61)
  br label %1479

1473:                                             ; preds = %._crit_edge1350
  br i1 %.not931, label %.thread1976, label %1474

1474:                                             ; preds = %1473
  call void @mbedtls_strerror(i32 noundef %1466, ptr noundef nonnull %3, i64 noundef 200) #7
  %1475 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1479

.thread1976:                                      ; preds = %1454, %1473
  %.0650.lcssa19731980 = phi i64 [ %1467, %1473 ], [ 1, %1454 ]
  %1476 = udiv i64 %.0650.lcssa19731980, 3
  %1477 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.68, i64 noundef %1476)
  %1478 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  br label %1479

1479:                                             ; preds = %1474, %.thread1976, %1471
  call void @mbedtls_ecdsa_free(ptr noundef nonnull %22) #7
  br label %1480

1480:                                             ; preds = %.lr.ph1358, %1479
  %1481 = getelementptr inbounds i8, ptr %.06511355, i64 16
  %1482 = load i32, ptr %1481, align 8, !tbaa !75
  %.not875 = icmp eq i32 %1482, 0
  br i1 %.not875, label %._crit_edge1359, label %.lr.ph1358, !llvm.loop !81

._crit_edge1359:                                  ; preds = %1480, %1445
  %1483 = call ptr @mbedtls_ecp_curve_list() #7
  %1484 = load i32, ptr %1483, align 8, !tbaa !75
  %.not8761368 = icmp eq i32 %1484, 0
  br i1 %.not8761368, label %._crit_edge1372, label %.lr.ph1371

.lr.ph1371:                                       ; preds = %._crit_edge1359, %1521
  %1485 = phi i32 [ %1523, %1521 ], [ %1484, %._crit_edge1359 ]
  %.16521369 = phi ptr [ %1522, %1521 ], [ %1483, %._crit_edge1359 ]
  %1486 = call i32 @mbedtls_ecdsa_can_do(i32 noundef %1485) #7
  %.not923 = icmp eq i32 %1486, 0
  br i1 %.not923, label %1521, label %1487

1487:                                             ; preds = %.lr.ph1371
  call void @mbedtls_ecdsa_init(ptr noundef nonnull %22) #7
  %1488 = load i32, ptr %.16521369, align 8, !tbaa !75
  %1489 = call i32 @mbedtls_ecdsa_genkey(ptr noundef nonnull %22, i32 noundef %1488, ptr noundef nonnull @myrand, ptr noundef null) #7
  %.not924 = icmp eq i32 %1489, 0
  br i1 %.not924, label %1490, label %1495

1490:                                             ; preds = %1487
  %1491 = getelementptr inbounds i8, ptr %.16521369, i64 6
  %1492 = load i16, ptr %1491, align 2, !tbaa !79
  %1493 = zext i16 %1492 to i64
  %1494 = call i32 @mbedtls_ecdsa_write_signature(ptr noundef nonnull %22, i32 noundef 6, ptr noundef nonnull @buf, i64 noundef %1493, ptr noundef nonnull %3, ptr noundef nonnull %23, ptr noundef nonnull @myrand, ptr noundef null) #7
  %.not925 = icmp eq i32 %1494, 0
  br i1 %.not925, label %1496, label %1495

1495:                                             ; preds = %1490, %1487
  call void @exit(i32 noundef 1) #9
  unreachable

1496:                                             ; preds = %1490
  call void @ecp_clear_precomputed(ptr noundef nonnull %22)
  %1497 = getelementptr inbounds i8, ptr %.16521369, i64 8
  %1498 = load ptr, ptr %1497, align 8, !tbaa !78
  %1499 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.67, ptr noundef %1498) #7
  %1500 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %1501 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1502 = call i32 @fflush(ptr noundef %1501)
  call void @mbedtls_set_alarm(i32 noundef 3) #7
  %1503 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not9261360 = icmp eq i32 %1503, 0
  br i1 %.not9261360, label %.lr.ph1363, label %.thread1987

.lr.ph1363:                                       ; preds = %1496, %.lr.ph1363
  %.06481361 = phi i64 [ %1508, %.lr.ph1363 ], [ 1, %1496 ]
  %1504 = load i16, ptr %1491, align 2, !tbaa !79
  %1505 = zext i16 %1504 to i64
  %1506 = load i64, ptr %23, align 8, !tbaa !68
  %1507 = call i32 @mbedtls_ecdsa_read_signature(ptr noundef nonnull %22, ptr noundef nonnull @buf, i64 noundef %1505, ptr noundef nonnull %3, i64 noundef %1506) #7
  %1508 = add i64 %.06481361, 1
  %1509 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not926 = icmp eq i32 %1509, 0
  %.not927 = icmp eq i32 %1507, 0
  %1510 = select i1 %.not926, i1 %.not927, i1 false
  br i1 %1510, label %.lr.ph1363, label %._crit_edge1364, !llvm.loop !82

._crit_edge1364:                                  ; preds = %.lr.ph1363
  %1511 = icmp eq i32 %1507, -114
  br i1 %1511, label %1512, label %1514

1512:                                             ; preds = %._crit_edge1364
  %1513 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.61)
  br label %1520

1514:                                             ; preds = %._crit_edge1364
  br i1 %.not927, label %.thread1987, label %1515

1515:                                             ; preds = %1514
  call void @mbedtls_strerror(i32 noundef %1507, ptr noundef nonnull %3, i64 noundef 200) #7
  %1516 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef nonnull %3)
  br label %1520

.thread1987:                                      ; preds = %1496, %1514
  %.0648.lcssa19841991 = phi i64 [ %1508, %1514 ], [ 1, %1496 ]
  %1517 = udiv i64 %.0648.lcssa19841991, 3
  %1518 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.69, i64 noundef %1517)
  %1519 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  br label %1520

1520:                                             ; preds = %1515, %.thread1987, %1512
  call void @mbedtls_ecdsa_free(ptr noundef nonnull %22) #7
  br label %1521

1521:                                             ; preds = %.lr.ph1371, %1520
  %1522 = getelementptr inbounds i8, ptr %.16521369, i64 16
  %1523 = load i32, ptr %1522, align 8, !tbaa !75
  %.not876 = icmp eq i32 %1523, 0
  br i1 %.not876, label %._crit_edge1372, label %.lr.ph1371, !llvm.loop !83

._crit_edge1372:                                  ; preds = %1521, %._crit_edge1359
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 344, ptr nonnull %22) #7
  br label %1524

1524:                                             ; preds = %._crit_edge1372, %1444
  %.not877 = icmp eq i8 %.sroa.55.2, 0
  br i1 %.not877, label %.critedge984, label %1525

1525:                                             ; preds = %1524
  call void @llvm.lifetime.start.p0(i64 616, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #7
  %1526 = call ptr @mbedtls_ecp_curve_list() #7
  %1527 = load i32, ptr %1526, align 8, !tbaa !75
  %.not8781379 = icmp eq i32 %1527, 0
  br i1 %.not8781379, label %.preheader1033, label %.lr.ph1382

.lr.ph1382:                                       ; preds = %1525
  %1528 = getelementptr inbounds i8, ptr %24, i64 344
  %1529 = getelementptr inbounds i8, ptr %24, i64 272
  br label %1534

.preheader1033:                                   ; preds = %1573, %1525
  %1530 = load i32, ptr @__const.main.montgomery_curve_list, align 16, !tbaa !75
  %.not8791389 = icmp eq i32 %1530, 0
  br i1 %.not8791389, label %._crit_edge1392, label %.lr.ph1391

.lr.ph1391:                                       ; preds = %.preheader1033
  %1531 = getelementptr inbounds i8, ptr %24, i64 248
  %1532 = getelementptr inbounds i8, ptr %24, i64 344
  %1533 = getelementptr inbounds i8, ptr %24, i64 272
  br label %1576

1534:                                             ; preds = %.lr.ph1382, %1573
  %1535 = phi i32 [ %1527, %.lr.ph1382 ], [ %1575, %1573 ]
  %.06431380 = phi ptr [ %1526, %.lr.ph1382 ], [ %1574, %1573 ]
  %1536 = call i32 @mbedtls_ecdh_can_do(i32 noundef %1535) #7
  %.not916 = icmp eq i32 %1536, 0
  br i1 %.not916, label %1573, label %1537

1537:                                             ; preds = %1534
  call void @mbedtls_ecdh_init(ptr noundef nonnull %24) #7
  %1538 = load i32, ptr %.06431380, align 8, !tbaa !75
  %1539 = call i32 @mbedtls_ecp_group_load(ptr noundef nonnull %24, i32 noundef %1538) #7
  switch i32 %1539, label %1540 [
    i32 -114, label %1541
    i32 0, label %1543
  ]

1540:                                             ; preds = %1537
  call void @exit(i32 noundef 1) #9
  unreachable

1541:                                             ; preds = %1537
  %1542 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1573

1543:                                             ; preds = %1537
  %1544 = call i32 @mbedtls_ecdh_make_public(ptr noundef nonnull %24, ptr noundef nonnull %26, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull @myrand, ptr noundef null) #7
  switch i32 %1544, label %1545 [
    i32 -114, label %1546
    i32 0, label %1548
  ]

1545:                                             ; preds = %1543
  call void @exit(i32 noundef 1) #9
  unreachable

1546:                                             ; preds = %1543
  %1547 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1573

1548:                                             ; preds = %1543
  %1549 = call i32 @mbedtls_ecp_copy(ptr noundef nonnull %1528, ptr noundef nonnull %1529) #7
  switch i32 %1549, label %1550 [
    i32 -114, label %1551
    i32 0, label %1553
  ]

1550:                                             ; preds = %1548
  call void @exit(i32 noundef 1) #9
  unreachable

1551:                                             ; preds = %1548
  %1552 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1573

1553:                                             ; preds = %1548
  call void @ecp_clear_precomputed(ptr noundef nonnull %24)
  %1554 = getelementptr inbounds i8, ptr %.06431380, i64 8
  %1555 = load ptr, ptr %1554, align 8, !tbaa !78
  %1556 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.73, ptr noundef %1555) #7
  %1557 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %1558 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1559 = call i32 @fflush(ptr noundef %1558)
  call void @mbedtls_set_alarm(i32 noundef 3) #7
  %1560 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not9201373 = icmp eq i32 %1560, 0
  br i1 %.not9201373, label %.lr.ph1376, label %._crit_edge1377

.lr.ph1376:                                       ; preds = %1553, %1567
  %.06401374 = phi i64 [ %1568, %1567 ], [ 1, %1553 ]
  %1561 = call i32 @mbedtls_ecdh_make_public(ptr noundef nonnull %24, ptr noundef nonnull %26, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull @myrand, ptr noundef null) #7
  switch i32 %1561, label %1562 [
    i32 -114, label %.sink.split
    i32 0, label %1563
  ]

1562:                                             ; preds = %.lr.ph1376
  call void @exit(i32 noundef 1) #9
  unreachable

1563:                                             ; preds = %.lr.ph1376
  %1564 = call i32 @mbedtls_ecdh_calc_secret(ptr noundef nonnull %24, ptr noundef nonnull %26, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull @myrand, ptr noundef null) #7
  switch i32 %1564, label %1565 [
    i32 -114, label %.sink.split
    i32 0, label %1567
  ]

1565:                                             ; preds = %1563
  call void @exit(i32 noundef 1) #9
  unreachable

.sink.split:                                      ; preds = %1563, %.lr.ph1376
  %1566 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1567

1567:                                             ; preds = %.sink.split, %1563
  %1568 = add i64 %.06401374, 1
  %1569 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not920 = icmp eq i32 %1569, 0
  br i1 %.not920, label %.lr.ph1376, label %._crit_edge1377, !llvm.loop !84

._crit_edge1377:                                  ; preds = %1567, %1553
  %.0640.lcssa = phi i64 [ 1, %1553 ], [ %1568, %1567 ]
  %1570 = udiv i64 %.0640.lcssa, 3
  %1571 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.65, i64 noundef %1570)
  %1572 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  call void @mbedtls_ecdh_free(ptr noundef nonnull %24) #7
  br label %1573

1573:                                             ; preds = %1551, %1546, %1541, %1534, %._crit_edge1377
  %1574 = getelementptr inbounds i8, ptr %.06431380, i64 16
  %1575 = load i32, ptr %1574, align 8, !tbaa !75
  %.not878 = icmp eq i32 %1575, 0
  br i1 %.not878, label %.preheader1033, label %1534, !llvm.loop !85

1576:                                             ; preds = %.lr.ph1391, %1607
  %1577 = phi i32 [ %1530, %.lr.ph1391 ], [ %1609, %1607 ]
  %.16441390 = phi ptr [ @__const.main.montgomery_curve_list, %.lr.ph1391 ], [ %1608, %1607 ]
  call void @mbedtls_ecdh_init(ptr noundef nonnull %24) #7
  call void @mbedtls_mpi_init(ptr noundef nonnull %25) #7
  %1578 = call i32 @mbedtls_ecp_group_load(ptr noundef nonnull %24, i32 noundef %1577) #7
  switch i32 %1578, label %1579 [
    i32 -114, label %1580
    i32 0, label %1582
  ]

1579:                                             ; preds = %1576
  call void @exit(i32 noundef 1) #9
  unreachable

1580:                                             ; preds = %1576
  %1581 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1607

1582:                                             ; preds = %1576
  %1583 = call i32 @mbedtls_ecdh_gen_public(ptr noundef nonnull %24, ptr noundef nonnull %1531, ptr noundef nonnull %1532, ptr noundef nonnull @myrand, ptr noundef null) #7
  switch i32 %1583, label %1584 [
    i32 -114, label %1585
    i32 0, label %1587
  ]

1584:                                             ; preds = %1582
  call void @exit(i32 noundef 1) #9
  unreachable

1585:                                             ; preds = %1582
  %1586 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1607

1587:                                             ; preds = %1582
  %1588 = getelementptr inbounds i8, ptr %.16441390, i64 8
  %1589 = load ptr, ptr %1588, align 8, !tbaa !78
  %1590 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.73, ptr noundef %1589) #7
  %1591 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %1592 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1593 = call i32 @fflush(ptr noundef %1592)
  call void @mbedtls_set_alarm(i32 noundef 3) #7
  %1594 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not9131383 = icmp eq i32 %1594, 0
  br i1 %.not9131383, label %.lr.ph1386, label %._crit_edge1387

.lr.ph1386:                                       ; preds = %1587, %1601
  %.06391384 = phi i64 [ %1602, %1601 ], [ 1, %1587 ]
  %1595 = call i32 @mbedtls_ecdh_gen_public(ptr noundef nonnull %24, ptr noundef nonnull %1531, ptr noundef nonnull %1533, ptr noundef nonnull @myrand, ptr noundef null) #7
  switch i32 %1595, label %1596 [
    i32 -114, label %.sink.split2211
    i32 0, label %1597
  ]

1596:                                             ; preds = %.lr.ph1386
  call void @exit(i32 noundef 1) #9
  unreachable

1597:                                             ; preds = %.lr.ph1386
  %1598 = call i32 @mbedtls_ecdh_compute_shared(ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %1532, ptr noundef nonnull %1531, ptr noundef nonnull @myrand, ptr noundef null) #7
  switch i32 %1598, label %1599 [
    i32 -114, label %.sink.split2211
    i32 0, label %1601
  ]

1599:                                             ; preds = %1597
  call void @exit(i32 noundef 1) #9
  unreachable

.sink.split2211:                                  ; preds = %1597, %.lr.ph1386
  %1600 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1601

1601:                                             ; preds = %.sink.split2211, %1597
  %1602 = add i64 %.06391384, 1
  %1603 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not913 = icmp eq i32 %1603, 0
  br i1 %.not913, label %.lr.ph1386, label %._crit_edge1387, !llvm.loop !86

._crit_edge1387:                                  ; preds = %1601, %1587
  %.0639.lcssa = phi i64 [ 1, %1587 ], [ %1602, %1601 ]
  %1604 = udiv i64 %.0639.lcssa, 3
  %1605 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.65, i64 noundef %1604)
  %1606 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  call void @mbedtls_ecdh_free(ptr noundef nonnull %24) #7
  call void @mbedtls_mpi_free(ptr noundef nonnull %25) #7
  br label %1607

1607:                                             ; preds = %1585, %1580, %._crit_edge1387
  %1608 = getelementptr inbounds i8, ptr %.16441390, i64 16
  %1609 = load i32, ptr %1608, align 8, !tbaa !75
  %.not879 = icmp eq i32 %1609, 0
  br i1 %.not879, label %._crit_edge1392, label %1576, !llvm.loop !87

._crit_edge1392:                                  ; preds = %1607, %.preheader1033
  %1610 = call ptr @mbedtls_ecp_curve_list() #7
  %1611 = load i32, ptr %1610, align 8, !tbaa !75
  %.not8801399 = icmp eq i32 %1611, 0
  br i1 %.not8801399, label %.preheader, label %.lr.ph1402

.lr.ph1402:                                       ; preds = %._crit_edge1392
  %1612 = getelementptr inbounds i8, ptr %24, i64 344
  %1613 = getelementptr inbounds i8, ptr %24, i64 272
  br label %1617

.preheader:                                       ; preds = %1659, %._crit_edge1392
  br i1 %.not8791389, label %._crit_edge1412, label %.lr.ph1411

.lr.ph1411:                                       ; preds = %.preheader
  %1614 = getelementptr inbounds i8, ptr %24, i64 248
  %1615 = getelementptr inbounds i8, ptr %24, i64 344
  %1616 = getelementptr inbounds i8, ptr %24, i64 272
  br label %1662

1617:                                             ; preds = %.lr.ph1402, %1659
  %1618 = phi i32 [ %1611, %.lr.ph1402 ], [ %1661, %1659 ]
  %.26451400 = phi ptr [ %1610, %.lr.ph1402 ], [ %1660, %1659 ]
  %1619 = call i32 @mbedtls_ecdh_can_do(i32 noundef %1618) #7
  %.not904 = icmp eq i32 %1619, 0
  br i1 %.not904, label %1659, label %1620

1620:                                             ; preds = %1617
  call void @mbedtls_ecdh_init(ptr noundef nonnull %24) #7
  %1621 = load i32, ptr %.26451400, align 8, !tbaa !75
  %1622 = call i32 @mbedtls_ecp_group_load(ptr noundef nonnull %24, i32 noundef %1621) #7
  switch i32 %1622, label %1623 [
    i32 -114, label %1624
    i32 0, label %1626
  ]

1623:                                             ; preds = %1620
  call void @exit(i32 noundef 1) #9
  unreachable

1624:                                             ; preds = %1620
  %1625 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1659

1626:                                             ; preds = %1620
  %1627 = call i32 @mbedtls_ecdh_make_public(ptr noundef nonnull %24, ptr noundef nonnull %26, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull @myrand, ptr noundef null) #7
  switch i32 %1627, label %1628 [
    i32 -114, label %1629
    i32 0, label %1631
  ]

1628:                                             ; preds = %1626
  call void @exit(i32 noundef 1) #9
  unreachable

1629:                                             ; preds = %1626
  %1630 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1659

1631:                                             ; preds = %1626
  %1632 = call i32 @mbedtls_ecp_copy(ptr noundef nonnull %1612, ptr noundef nonnull %1613) #7
  switch i32 %1632, label %1633 [
    i32 -114, label %1634
    i32 0, label %1636
  ]

1633:                                             ; preds = %1631
  call void @exit(i32 noundef 1) #9
  unreachable

1634:                                             ; preds = %1631
  %1635 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1659

1636:                                             ; preds = %1631
  %1637 = call i32 @mbedtls_ecdh_make_public(ptr noundef nonnull %24, ptr noundef nonnull %26, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull @myrand, ptr noundef null) #7
  switch i32 %1637, label %1638 [
    i32 -114, label %1639
    i32 0, label %1641
  ]

1638:                                             ; preds = %1636
  call void @exit(i32 noundef 1) #9
  unreachable

1639:                                             ; preds = %1636
  %1640 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1659

1641:                                             ; preds = %1636
  call void @ecp_clear_precomputed(ptr noundef nonnull %24)
  %1642 = getelementptr inbounds i8, ptr %.26451400, i64 8
  %1643 = load ptr, ptr %1642, align 8, !tbaa !78
  %1644 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.74, ptr noundef %1643) #7
  %1645 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %1646 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1647 = call i32 @fflush(ptr noundef %1646)
  call void @mbedtls_set_alarm(i32 noundef 3) #7
  %1648 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not9091393 = icmp eq i32 %1648, 0
  br i1 %.not9091393, label %.lr.ph1396, label %._crit_edge1397

.lr.ph1396:                                       ; preds = %1641, %1653
  %.06381394 = phi i64 [ %1654, %1653 ], [ 1, %1641 ]
  %1649 = call i32 @mbedtls_ecdh_calc_secret(ptr noundef nonnull %24, ptr noundef nonnull %26, ptr noundef nonnull @buf, i64 noundef 1024, ptr noundef nonnull @myrand, ptr noundef null) #7
  switch i32 %1649, label %1652 [
    i32 -114, label %1650
    i32 0, label %1653
  ]

1650:                                             ; preds = %.lr.ph1396
  %1651 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1653

1652:                                             ; preds = %.lr.ph1396
  call void @exit(i32 noundef 1) #9
  unreachable

1653:                                             ; preds = %.lr.ph1396, %1650
  %1654 = add i64 %.06381394, 1
  %1655 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not909 = icmp eq i32 %1655, 0
  br i1 %.not909, label %.lr.ph1396, label %._crit_edge1397, !llvm.loop !88

._crit_edge1397:                                  ; preds = %1653, %1641
  %.0638.lcssa = phi i64 [ 1, %1641 ], [ %1654, %1653 ]
  %1656 = udiv i64 %.0638.lcssa, 3
  %1657 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.65, i64 noundef %1656)
  %1658 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  call void @mbedtls_ecdh_free(ptr noundef nonnull %24) #7
  br label %1659

1659:                                             ; preds = %1639, %1634, %1629, %1624, %1617, %._crit_edge1397
  %1660 = getelementptr inbounds i8, ptr %.26451400, i64 16
  %1661 = load i32, ptr %1660, align 8, !tbaa !75
  %.not880 = icmp eq i32 %1661, 0
  br i1 %.not880, label %.preheader, label %1617, !llvm.loop !89

1662:                                             ; preds = %.lr.ph1411, %1696
  %1663 = phi i32 [ %1530, %.lr.ph1411 ], [ %1698, %1696 ]
  %.36461410 = phi ptr [ @__const.main.montgomery_curve_list, %.lr.ph1411 ], [ %1697, %1696 ]
  call void @mbedtls_ecdh_init(ptr noundef nonnull %24) #7
  call void @mbedtls_mpi_init(ptr noundef nonnull %25) #7
  %1664 = call i32 @mbedtls_ecp_group_load(ptr noundef nonnull %24, i32 noundef %1663) #7
  switch i32 %1664, label %1665 [
    i32 -114, label %1666
    i32 0, label %1668
  ]

1665:                                             ; preds = %1662
  call void @exit(i32 noundef 1) #9
  unreachable

1666:                                             ; preds = %1662
  %1667 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1696

1668:                                             ; preds = %1662
  %1669 = call i32 @mbedtls_ecdh_gen_public(ptr noundef nonnull %24, ptr noundef nonnull %1614, ptr noundef nonnull %1615, ptr noundef nonnull @myrand, ptr noundef null) #7
  switch i32 %1669, label %1670 [
    i32 -114, label %1671
    i32 0, label %1673
  ]

1670:                                             ; preds = %1668
  call void @exit(i32 noundef 1) #9
  unreachable

1671:                                             ; preds = %1668
  %1672 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1696

1673:                                             ; preds = %1668
  %1674 = call i32 @mbedtls_ecdh_gen_public(ptr noundef nonnull %24, ptr noundef nonnull %1614, ptr noundef nonnull %1616, ptr noundef nonnull @myrand, ptr noundef null) #7
  switch i32 %1674, label %1675 [
    i32 -114, label %1676
    i32 0, label %1678
  ]

1675:                                             ; preds = %1673
  call void @exit(i32 noundef 1) #9
  unreachable

1676:                                             ; preds = %1673
  %1677 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1696

1678:                                             ; preds = %1673
  %1679 = getelementptr inbounds i8, ptr %.36461410, i64 8
  %1680 = load ptr, ptr %1679, align 8, !tbaa !78
  %1681 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.74, ptr noundef %1680) #7
  %1682 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %1683 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1684 = call i32 @fflush(ptr noundef %1683)
  call void @mbedtls_set_alarm(i32 noundef 3) #7
  %1685 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not9021403 = icmp eq i32 %1685, 0
  br i1 %.not9021403, label %.lr.ph1406, label %._crit_edge1407

.lr.ph1406:                                       ; preds = %1678, %1690
  %.06371404 = phi i64 [ %1691, %1690 ], [ 1, %1678 ]
  %1686 = call i32 @mbedtls_ecdh_compute_shared(ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %1615, ptr noundef nonnull %1614, ptr noundef nonnull @myrand, ptr noundef null) #7
  switch i32 %1686, label %1689 [
    i32 -114, label %1687
    i32 0, label %1690
  ]

1687:                                             ; preds = %.lr.ph1406
  %1688 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1690

1689:                                             ; preds = %.lr.ph1406
  call void @exit(i32 noundef 1) #9
  unreachable

1690:                                             ; preds = %.lr.ph1406, %1687
  %1691 = add i64 %.06371404, 1
  %1692 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not902 = icmp eq i32 %1692, 0
  br i1 %.not902, label %.lr.ph1406, label %._crit_edge1407, !llvm.loop !90

._crit_edge1407:                                  ; preds = %1690, %1678
  %.0637.lcssa = phi i64 [ 1, %1678 ], [ %1691, %1690 ]
  %1693 = udiv i64 %.0637.lcssa, 3
  %1694 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.65, i64 noundef %1693)
  %1695 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  call void @mbedtls_ecdh_free(ptr noundef nonnull %24) #7
  call void @mbedtls_mpi_free(ptr noundef nonnull %25) #7
  br label %1696

1696:                                             ; preds = %1676, %1671, %1666, %._crit_edge1407
  %1697 = getelementptr inbounds i8, ptr %.36461410, i64 16
  %1698 = load i32, ptr %1697, align 8, !tbaa !75
  %.not881 = icmp eq i32 %1698, 0
  br i1 %.not881, label %._crit_edge1412, label %1662, !llvm.loop !91

._crit_edge1412:                                  ; preds = %1696, %.preheader
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 616, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 616, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 616, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %29) #7
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %30) #7
  %1699 = call ptr @mbedtls_ecp_curve_list() #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #7
  %1700 = load i32, ptr %1699, align 8, !tbaa !75
  %.not8821419 = icmp eq i32 %1700, 0
  br i1 %.not8821419, label %._crit_edge1423, label %.lr.ph1422

.lr.ph1422:                                       ; preds = %._crit_edge1412, %1750
  %1701 = phi i32 [ %1752, %1750 ], [ %1700, %._crit_edge1412 ]
  %.06361420 = phi ptr [ %1751, %1750 ], [ %1699, %._crit_edge1412 ]
  %1702 = call i32 @mbedtls_ecdh_can_do(i32 noundef %1701) #7
  %.not883 = icmp eq i32 %1702, 0
  br i1 %.not883, label %1750, label %1703

1703:                                             ; preds = %.lr.ph1422
  call void @mbedtls_ecdh_init(ptr noundef nonnull %27) #7
  call void @mbedtls_ecdh_init(ptr noundef nonnull %28) #7
  %1704 = getelementptr inbounds i8, ptr %.06361420, i64 8
  %1705 = load ptr, ptr %1704, align 8, !tbaa !78
  %1706 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 25, ptr noundef nonnull @.str.73, ptr noundef %1705) #7
  %1707 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.31, ptr noundef nonnull %4)
  %1708 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1709 = call i32 @fflush(ptr noundef %1708)
  call void @mbedtls_set_alarm(i32 noundef 3) #7
  %1710 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not8841413 = icmp eq i32 %1710, 0
  br i1 %.not8841413, label %.lr.ph1416, label %._crit_edge1417

.lr.ph1416:                                       ; preds = %1703, %1744
  %.06351414 = phi i64 [ %1745, %1744 ], [ 1, %1703 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #7
  store ptr %29, ptr %32, align 8, !tbaa !5
  %1711 = load i32, ptr %.06361420, align 8, !tbaa !75
  %1712 = call i32 @mbedtls_ecdh_setup(ptr noundef nonnull %27, i32 noundef %1711) #7
  switch i32 %1712, label %1714 [
    i32 -114, label %.thread1026
    i32 0, label %1715
  ]

.thread1026:                                      ; preds = %.lr.ph1416
  %1713 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1744

1714:                                             ; preds = %.lr.ph1416
  call void @exit(i32 noundef 1) #9
  unreachable

1715:                                             ; preds = %.lr.ph1416
  %1716 = call i32 @mbedtls_ecdh_make_params(ptr noundef nonnull %27, ptr noundef nonnull %31, ptr noundef nonnull %29, i64 noundef 1024, ptr noundef nonnull @myrand, ptr noundef null) #7
  switch i32 %1716, label %1718 [
    i32 -114, label %.thread1027
    i32 0, label %1719
  ]

.thread1027:                                      ; preds = %1715
  %1717 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1744

1718:                                             ; preds = %1715
  call void @exit(i32 noundef 1) #9
  unreachable

1719:                                             ; preds = %1715
  %1720 = load ptr, ptr %32, align 8, !tbaa !5
  %1721 = load i64, ptr %31, align 8, !tbaa !68
  %1722 = getelementptr inbounds i8, ptr %1720, i64 %1721
  %1723 = call i32 @mbedtls_ecdh_read_params(ptr noundef nonnull %28, ptr noundef nonnull %32, ptr noundef %1722) #7
  switch i32 %1723, label %1725 [
    i32 -114, label %.thread1028
    i32 0, label %1726
  ]

.thread1028:                                      ; preds = %1719
  %1724 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1744

1725:                                             ; preds = %1719
  call void @exit(i32 noundef 1) #9
  unreachable

1726:                                             ; preds = %1719
  %1727 = call i32 @mbedtls_ecdh_make_public(ptr noundef nonnull %28, ptr noundef nonnull %31, ptr noundef nonnull %30, i64 noundef 1024, ptr noundef nonnull @myrand, ptr noundef null) #7
  switch i32 %1727, label %1729 [
    i32 -114, label %.thread1029
    i32 0, label %1730
  ]

.thread1029:                                      ; preds = %1726
  %1728 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1744

1729:                                             ; preds = %1726
  call void @exit(i32 noundef 1) #9
  unreachable

1730:                                             ; preds = %1726
  %1731 = load i64, ptr %31, align 8, !tbaa !68
  %1732 = call i32 @mbedtls_ecdh_read_public(ptr noundef nonnull %27, ptr noundef nonnull %30, i64 noundef %1731) #7
  switch i32 %1732, label %1734 [
    i32 -114, label %.thread1030
    i32 0, label %1735
  ]

.thread1030:                                      ; preds = %1730
  %1733 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1744

1734:                                             ; preds = %1730
  call void @exit(i32 noundef 1) #9
  unreachable

1735:                                             ; preds = %1730
  %1736 = call i32 @mbedtls_ecdh_calc_secret(ptr noundef nonnull %27, ptr noundef nonnull %31, ptr noundef nonnull %29, i64 noundef 1024, ptr noundef nonnull @myrand, ptr noundef null) #7
  switch i32 %1736, label %1738 [
    i32 -114, label %.thread1031
    i32 0, label %1739
  ]

.thread1031:                                      ; preds = %1735
  %1737 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1744

1738:                                             ; preds = %1735
  call void @exit(i32 noundef 1) #9
  unreachable

1739:                                             ; preds = %1735
  %1740 = call i32 @mbedtls_ecdh_calc_secret(ptr noundef nonnull %28, ptr noundef nonnull %31, ptr noundef nonnull %30, i64 noundef 1024, ptr noundef nonnull @myrand, ptr noundef null) #7
  switch i32 %1740, label %1742 [
    i32 -114, label %.thread1032
    i32 0, label %1743
  ]

.thread1032:                                      ; preds = %1739
  %1741 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  br label %1744

1742:                                             ; preds = %1739
  call void @exit(i32 noundef 1) #9
  unreachable

1743:                                             ; preds = %1739
  call void @mbedtls_ecdh_free(ptr noundef nonnull %28) #7
  call void @mbedtls_ecdh_free(ptr noundef nonnull %27) #7
  br label %1744

1744:                                             ; preds = %.thread1032, %.thread1031, %.thread1030, %.thread1029, %.thread1028, %.thread1027, %.thread1026, %1743
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  %1745 = add i64 %.06351414, 1
  %1746 = load volatile i32, ptr @mbedtls_timing_alarmed, align 4, !tbaa !11
  %.not884 = icmp eq i32 %1746, 0
  br i1 %.not884, label %.lr.ph1416, label %._crit_edge1417, !llvm.loop !92

._crit_edge1417:                                  ; preds = %1744, %1703
  %.0635.lcssa = phi i64 [ 1, %1703 ], [ %1745, %1744 ]
  %1747 = udiv i64 %.0635.lcssa, 3
  %1748 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.75, i64 noundef %1747)
  %1749 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  br label %1750

1750:                                             ; preds = %.lr.ph1422, %._crit_edge1417
  %1751 = getelementptr inbounds i8, ptr %.06361420, i64 16
  %1752 = load i32, ptr %1751, align 8, !tbaa !75
  %.not882 = icmp eq i32 %1752, 0
  br i1 %.not882, label %._crit_edge1423, label %.lr.ph1422, !llvm.loop !93

._crit_edge1423:                                  ; preds = %1750, %._crit_edge1412
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 616, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 616, ptr nonnull %27) #7
  br label %.critedge984

.critedge984:                                     ; preds = %1524, %._crit_edge1423
  %1753 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30)
  call void @llvm.lifetime.end.p0(i64 25, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %3) #7
  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) #2

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

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

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

declare void @mbedtls_set_alarm(i32 noundef) local_unnamed_addr #5

declare i32 @mbedtls_md5_ret(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #5

declare i64 @mbedtls_timing_hardclock() local_unnamed_addr #5

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

declare i32 @mbedtls_ripemd160_ret(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_sha1_ret(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_sha256_ret(ptr noundef, i64 noundef, ptr noundef, i32 noundef) local_unnamed_addr #5

declare i32 @mbedtls_sha512_ret(ptr noundef, i64 noundef, ptr noundef, i32 noundef) local_unnamed_addr #5

declare void @mbedtls_arc4_init(ptr noundef) local_unnamed_addr #5

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

declare i32 @mbedtls_arc4_crypt(ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @mbedtls_arc4_free(ptr noundef) local_unnamed_addr #5

declare void @mbedtls_des3_init(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_des3_set3key_enc(ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_des3_crypt_cbc(ptr noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @mbedtls_des3_free(ptr noundef) local_unnamed_addr #5

declare void @mbedtls_des_init(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_des_setkey_enc(ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_des_crypt_cbc(ptr noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @mbedtls_des_free(ptr noundef) local_unnamed_addr #5

declare ptr @mbedtls_cipher_info_from_type(i32 noundef) local_unnamed_addr #5

declare i32 @mbedtls_cipher_cmac(ptr noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #5

declare void @mbedtls_aes_init(ptr noundef) local_unnamed_addr #5

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

declare i32 @mbedtls_aes_setkey_enc(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #5

declare i32 @mbedtls_aes_crypt_cbc(ptr noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @mbedtls_aes_free(ptr noundef) local_unnamed_addr #5

declare void @mbedtls_aes_xts_init(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_aes_xts_setkey_enc(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #5

declare i32 @mbedtls_aes_crypt_xts(ptr noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @mbedtls_aes_xts_free(ptr noundef) local_unnamed_addr #5

declare void @mbedtls_gcm_init(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_gcm_setkey(ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #5

declare i32 @mbedtls_gcm_crypt_and_tag(ptr noundef, i32 noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #5

declare void @mbedtls_gcm_free(ptr noundef) local_unnamed_addr #5

declare void @mbedtls_ccm_init(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_ccm_setkey(ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #5

declare i32 @mbedtls_ccm_encrypt_and_tag(ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #5

declare void @mbedtls_ccm_free(ptr noundef) local_unnamed_addr #5

declare void @mbedtls_chachapoly_init(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_chachapoly_setkey(ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_chachapoly_encrypt_and_tag(ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @mbedtls_chachapoly_free(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_aes_cmac_prf_128(ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #5

declare void @mbedtls_camellia_init(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_camellia_setkey_enc(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #5

declare i32 @mbedtls_camellia_crypt_cbc(ptr noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @mbedtls_camellia_free(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_chacha20_crypt(ptr noundef, ptr noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_poly1305_mac(ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #5

declare void @mbedtls_blowfish_init(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_blowfish_setkey(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #5

declare i32 @mbedtls_blowfish_crypt_cbc(ptr noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @mbedtls_blowfish_free(ptr noundef) local_unnamed_addr #5

declare void @mbedtls_ctr_drbg_init(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_ctr_drbg_seed(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare hidden i32 @myrand(ptr noundef, ptr noundef, i64 noundef) #0

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #6

declare i32 @mbedtls_ctr_drbg_random(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #5

declare void @mbedtls_ctr_drbg_free(ptr noundef) local_unnamed_addr #5

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

declare void @mbedtls_hmac_drbg_init(ptr noundef) local_unnamed_addr #5

declare ptr @mbedtls_md_info_from_type(i32 noundef) local_unnamed_addr #5

declare i32 @mbedtls_hmac_drbg_seed(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #5

declare i32 @mbedtls_hmac_drbg_random(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #5

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

declare void @mbedtls_hmac_drbg_free(ptr noundef) local_unnamed_addr #5

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

declare i32 @mbedtls_rsa_gen_key(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #5

declare i32 @mbedtls_rsa_public(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_rsa_private(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @mbedtls_rsa_free(ptr noundef) local_unnamed_addr #5

declare void @mbedtls_dhm_init(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_mpi_read_binary(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #5

declare i64 @mbedtls_mpi_size(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_dhm_make_public(ptr noundef, i32 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_mpi_copy(ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_dhm_calc_secret(ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @mbedtls_dhm_free(ptr noundef) local_unnamed_addr #5

declare ptr @mbedtls_ecp_curve_list() local_unnamed_addr #5

declare i32 @mbedtls_ecdsa_can_do(i32 noundef) local_unnamed_addr #5

declare void @mbedtls_ecdsa_init(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_ecdsa_genkey(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_ecdsa_write_signature(ptr noundef, i32 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @mbedtls_ecdsa_free(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_ecdsa_read_signature(ptr noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef) local_unnamed_addr #5

declare i32 @mbedtls_ecdh_can_do(i32 noundef) local_unnamed_addr #5

declare void @mbedtls_ecdh_init(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_ecp_group_load(ptr noundef, i32 noundef) local_unnamed_addr #5

declare i32 @mbedtls_ecdh_make_public(ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_ecp_copy(ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_ecdh_calc_secret(ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @mbedtls_ecdh_free(ptr noundef) local_unnamed_addr #5

declare void @mbedtls_mpi_init(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_ecdh_gen_public(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_ecdh_compute_shared(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @mbedtls_mpi_free(ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_ecdh_setup(ptr noundef, i32 noundef) local_unnamed_addr #5

declare i32 @mbedtls_ecdh_make_params(ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_ecdh_read_params(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @mbedtls_ecdh_read_public(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = distinct !{!18, !10}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10}
!22 = distinct !{!22, !10}
!23 = distinct !{!23, !10}
!24 = distinct !{!24, !10}
!25 = distinct !{!25, !10}
!26 = distinct !{!26, !10}
!27 = distinct !{!27, !10}
!28 = distinct !{!28, !10}
!29 = distinct !{!29, !10}
!30 = distinct !{!30, !10}
!31 = distinct !{!31, !10}
!32 = distinct !{!32, !10}
!33 = distinct !{!33, !10}
!34 = distinct !{!34, !10}
!35 = distinct !{!35, !10}
!36 = distinct !{!36, !10}
!37 = distinct !{!37, !10}
!38 = distinct !{!38, !10}
!39 = distinct !{!39, !10}
!40 = distinct !{!40, !10}
!41 = distinct !{!41, !10}
!42 = distinct !{!42, !10}
!43 = distinct !{!43, !10}
!44 = distinct !{!44, !10}
!45 = distinct !{!45, !10}
!46 = distinct !{!46, !10}
!47 = distinct !{!47, !10}
!48 = distinct !{!48, !10}
!49 = distinct !{!49, !10}
!50 = distinct !{!50, !10}
!51 = distinct !{!51, !10}
!52 = distinct !{!52, !10}
!53 = distinct !{!53, !10}
!54 = distinct !{!54, !10}
!55 = distinct !{!55, !10}
!56 = distinct !{!56, !10}
!57 = distinct !{!57, !10}
!58 = distinct !{!58, !10}
!59 = distinct !{!59, !10}
!60 = distinct !{!60, !10}
!61 = distinct !{!61, !10}
!62 = distinct !{!62, !10}
!63 = distinct !{!63, !10}
!64 = distinct !{!64, !10}
!65 = !{!7, !7, i64 0}
!66 = distinct !{!66, !10}
!67 = distinct !{!67, !10}
!68 = !{!69, !69, i64 0}
!69 = !{!"long", !7, i64 0}
!70 = !{!71, !69, i64 0}
!71 = !{!"mbedtls_dhm_context", !69, i64 0, !72, i64 8, !72, i64 32, !72, i64 56, !72, i64 80, !72, i64 104, !72, i64 128, !72, i64 152, !72, i64 176, !72, i64 200, !72, i64 224}
!72 = !{!"mbedtls_mpi", !12, i64 0, !69, i64 8, !6, i64 16}
!73 = distinct !{!73, !10}
!74 = distinct !{!74, !10}
!75 = !{!76, !12, i64 0}
!76 = !{!"mbedtls_ecp_curve_info", !12, i64 0, !77, i64 4, !77, i64 6, !6, i64 8}
!77 = !{!"short", !7, i64 0}
!78 = !{!76, !6, i64 8}
!79 = !{!76, !77, i64 6}
!80 = distinct !{!80, !10}
!81 = distinct !{!81, !10}
!82 = distinct !{!82, !10}
!83 = distinct !{!83, !10}
!84 = distinct !{!84, !10}
!85 = distinct !{!85, !10}
!86 = distinct !{!86, !10}
!87 = distinct !{!87, !10}
!88 = distinct !{!88, !10}
!89 = distinct !{!89, !10}
!90 = distinct !{!90, !10}
!91 = distinct !{!91, !10}
!92 = distinct !{!92, !10}
!93 = distinct !{!93, !10}


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