6.36/2.72 MAYBE 6.46/2.82 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 6.46/2.82 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 6.46/2.82 6.46/2.82 6.46/2.82 Termination of the given C Problem could not be shown: 6.46/2.82 6.46/2.82 (0) C Problem 6.46/2.82 (1) CToLLVMProof [EQUIVALENT, 162 ms] 6.46/2.82 (2) LLVM problem 6.46/2.82 6.46/2.82 6.46/2.82 ---------------------------------------- 6.46/2.82 6.46/2.82 (0) 6.46/2.82 Obligation: 6.46/2.82 c file /export/starexec/sandbox/benchmark/theBenchmark.c 6.46/2.82 ---------------------------------------- 6.46/2.82 6.46/2.82 (1) CToLLVMProof (EQUIVALENT) 6.46/2.82 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 6.46/2.82 ---------------------------------------- 6.46/2.82 6.46/2.82 (2) 6.46/2.82 Obligation: 6.46/2.82 LLVM Problem 6.46/2.82 6.46/2.82 Aliases: 6.46/2.82 6.46/2.82 Data layout: 6.46/2.82 6.46/2.82 "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" 6.46/2.82 6.46/2.82 Machine: 6.46/2.82 6.46/2.82 "x86_64-pc-linux-gnu" 6.46/2.82 6.46/2.82 Type definitions: 6.46/2.82 6.46/2.82 union.__CS__u --> BasicStructureType(elementType: [2 x i32]) 6.46/2.82 6.46/2.82 Global variables: 6.46/2.82 6.46/2.82 Name: __CS_round initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: null section: null 6.46/2.82 6.46/2.82 Name: __CS_ret initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: null section: null 6.46/2.82 6.46/2.82 Name: __CS_ret_PREEMPTED initVal: 1 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: true linkageType: null section: null 6.46/2.82 6.46/2.82 Name: __CS_ret_ERROR initVal: 2 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: true linkageType: null section: null 6.46/2.82 6.46/2.82 Name: __CS_ret_FINISHED initVal: 4 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: true linkageType: null section: null 6.46/2.82 6.46/2.82 Name: __CS_error initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: null section: null 6.46/2.82 6.46/2.82 Name: __THREAD_UNUSED initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: true linkageType: null section: null 6.46/2.82 6.46/2.82 Name: __THREAD_RUNNING initVal: 1 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: true linkageType: null section: null 6.46/2.82 6.46/2.82 Name: __THREAD_FINISHED initVal: 2 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: true linkageType: null section: null 6.46/2.82 6.46/2.82 Name: __CS_thread_index initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null 6.46/2.82 6.46/2.82 Name: __CS_thread_lockedon initVal: ((null,null,null),(null,null,null)) type: [2 x [3 x *i8]] addrSpace: null alignment: 16 threadLocal: false constant: false linkageType: COMMON section: null 6.46/2.82 6.46/2.82 Name: __CS_thread_status initVal: ((0,0,0),(0,0,0)) type: [2 x [3 x i8]] addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null 6.46/2.82 6.46/2.82 Name: __CS_thread_allocated initVal: (0,0,0) type: [3 x i8] addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null 6.46/2.82 6.46/2.82 Name: __CS_thread_born_round initVal: (0,0,0) type: [3 x i8] addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null 6.46/2.82 6.46/2.82 Name: __CS_thread initVal: (null,null,null) type: [3 x *BasicFunctionType varArgs: falsereturnType: *i8paramTypes: (*i8)] addrSpace: null alignment: 16 threadLocal: false constant: false linkageType: COMMON section: null 6.46/2.82 6.46/2.82 Name: ma initVal: (0,0) type: [2 x i8] addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null 6.46/2.82 6.46/2.82 Name: data1 initVal: (0,0) type: [2 x i32] addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null 6.46/2.82 6.46/2.82 Name: data2 initVal: (0,0) type: [2 x i32] addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null 6.46/2.82 6.46/2.82 Name: mb initVal: (0,0) type: [2 x i8] addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null 6.46/2.82 6.46/2.82 Name: __CS_u initVal: {(0,0)} type: BasicTypeName typeName: union.__CS__uBasicStructureType(elementType: [2 x i32]) addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null 6.46/2.82 6.46/2.82 Function declarations and definitions: 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "__VERIFIER_error" returnParam: BasicVoidType parameters: () variableLength: true visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 *BasicFunctionTypename: "__VERIFIER_assume" returnParam: BasicVoidType parameters: (i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 *BasicFunctionTypename: "nondet_int" returnParam: i32 parameters: () variableLength: true visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 *BasicFunctionTypename: "__VERIFIER_assert" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (cond i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %1 = alloca i32, align 4 6.46/2.82 store %cond, %1 6.46/2.82 %2 = load %1 6.46/2.82 %3 = icmp ne %2 0 6.46/2.82 br %3, %6, %4 6.46/2.82 4: 6.46/2.82 br %5 6.46/2.82 5: 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType (...)* @__VERIFIER_error() noreturn 6.46/2.82 unreachable 6.46/2.82 6: 6.46/2.82 ret void 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "__CS_cs" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %k = alloca i8, align 1 6.46/2.82 %1 = load @__CS_round 6.46/2.82 %2 = zext i8 %1 to i32 6.46/2.82 %3 = load %k 6.46/2.82 %4 = zext i8 %3 to i32 6.46/2.82 %5 = add %2 %4 6.46/2.82 %6 = icmp slt %5 2 6.46/2.82 %7 = zext i1 %6 to i32 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %7) 6.46/2.82 %8 = load %k 6.46/2.82 %9 = zext i8 %8 to i32 6.46/2.82 %10 = load @__CS_round 6.46/2.82 %11 = zext i8 %10 to i32 6.46/2.82 %12 = add %11 %9 6.46/2.82 %13 = trunc i32 %12 to i8 6.46/2.82 store %13, @__CS_round 6.46/2.82 %14 = call i32 (...)* @nondet_int() 6.46/2.82 %15 = icmp ne %14 0 6.46/2.82 br %15, %16, %21 6.46/2.82 16: 6.46/2.82 %17 = load @__CS_round 6.46/2.82 %18 = zext i8 %17 to i32 6.46/2.82 %19 = icmp eq %18 1 6.46/2.82 br %19, %20, %21 6.46/2.82 20: 6.46/2.82 br %24 6.46/2.82 21: 6.46/2.82 %22 = load @__CS_ret 6.46/2.82 %23 = zext i8 %22 to i32 6.46/2.82 br %24 6.46/2.82 24: 6.46/2.82 %25 = phi [1, %20], [%23, %21] 6.46/2.82 %26 = trunc i32 %25 to i8 6.46/2.82 store %26, @__CS_ret 6.46/2.82 ret void 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "__CS_pthread_mutex_init" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (mutex *i8, attr *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %1 = alloca *i8, align 8 6.46/2.82 %2 = alloca *i8, align 8 6.46/2.82 store %mutex, %1 6.46/2.82 store %attr, %2 6.46/2.82 ret 0 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "__CS_pthread_mutex_destroy" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (lock *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %1 = alloca *i8, align 8 6.46/2.82 store %lock, %1 6.46/2.82 %2 = load %1 6.46/2.82 %3 = load %2 6.46/2.82 %4 = zext i8 %3 to i32 6.46/2.82 %5 = load @__CS_thread_index 6.46/2.82 %6 = zext i8 %5 to i32 6.46/2.82 %7 = icmp ne %4 %6 6.46/2.82 br %7, %8, %14 6.46/2.82 8: 6.46/2.82 %9 = load %1 6.46/2.82 %10 = load %9 6.46/2.82 %11 = zext i8 %10 to i32 6.46/2.82 %12 = icmp ne %11 0 6.46/2.82 br %12, %13, %14 6.46/2.82 13: 6.46/2.82 store 1, @__CS_error 6.46/2.82 store 2, @__CS_ret 6.46/2.82 br %16 6.46/2.82 14: 6.46/2.82 %15 = load %1 6.46/2.82 store 0, %15 6.46/2.82 br %16 6.46/2.82 16: 6.46/2.82 ret 0 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "__CS_pthread_mutex_lock" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (lock *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %1 = alloca i32, align 4 6.46/2.82 %2 = alloca *i8, align 8 6.46/2.82 store %lock, %2 6.46/2.82 %3 = load %2 6.46/2.82 %4 = load %3 6.46/2.82 %5 = zext i8 %4 to i32 6.46/2.82 %6 = icmp eq %5 0 6.46/2.82 br %6, %7, %13 6.46/2.82 7: 6.46/2.82 %8 = load @__CS_thread_index 6.46/2.82 %9 = zext i8 %8 to i32 6.46/2.82 %10 = add %9 1 6.46/2.82 %11 = trunc i32 %10 to i8 6.46/2.82 %12 = load %2 6.46/2.82 store %11, %12 6.46/2.82 br %14 6.46/2.82 13: 6.46/2.82 store 1, @__CS_ret 6.46/2.82 store 1, %1 6.46/2.82 br %15 6.46/2.82 14: 6.46/2.82 store 0, %1 6.46/2.82 br %15 6.46/2.82 15: 6.46/2.82 %16 = load %1 6.46/2.82 ret %16 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "__CS_pthread_mutex_unlock" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (lock *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %1 = alloca i32, align 4 6.46/2.82 %2 = alloca *i8, align 8 6.46/2.82 store %lock, %2 6.46/2.82 %3 = load %2 6.46/2.82 %4 = load %3 6.46/2.82 %5 = zext i8 %4 to i32 6.46/2.82 %6 = load @__CS_thread_index 6.46/2.82 %7 = zext i8 %6 to i32 6.46/2.82 %8 = add %7 1 6.46/2.82 %9 = icmp ne %5 %8 6.46/2.82 br %9, %10, %11 6.46/2.82 10: 6.46/2.82 store 1, @__CS_error 6.46/2.82 store 2, @__CS_ret 6.46/2.82 store 1, %1 6.46/2.82 br %14 6.46/2.82 11: 6.46/2.82 %12 = load %2 6.46/2.82 store 0, %12 6.46/2.82 br %13 6.46/2.82 13: 6.46/2.82 store 0, %1 6.46/2.82 br %14 6.46/2.82 14: 6.46/2.82 %15 = load %1 6.46/2.82 ret %15 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "__CS_pthread_cond_init" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (cond *i8, attr *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %1 = alloca *i8, align 8 6.46/2.82 %2 = alloca *i8, align 8 6.46/2.82 store %cond, %1 6.46/2.82 store %attr, %2 6.46/2.82 ret 0 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "__CS_pthread_cond_signal" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (cond *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %1 = alloca *i8, align 8 6.46/2.82 %j = alloca i32, align 4 6.46/2.82 store %cond, %1 6.46/2.82 store 0, %j 6.46/2.82 br %2 6.46/2.82 2: 6.46/2.82 %3 = load %j 6.46/2.82 %4 = icmp sle %3 2 6.46/2.82 br %4, %5, %26 6.46/2.82 5: 6.46/2.82 %6 = load %j 6.46/2.82 %7 = sext i32 %6 to i64 6.46/2.82 %8 = load @__CS_round 6.46/2.82 %9 = zext i8 %8 to i64 6.46/2.82 %10 = getelementptr @__CS_thread_lockedon, 0, %9 6.46/2.82 %11 = getelementptr %10, 0, %7 6.46/2.82 %12 = load %11 6.46/2.82 %13 = load %1 6.46/2.82 %14 = icmp eq %12 %13 6.46/2.82 br %14, %15, %22 6.46/2.82 15: 6.46/2.82 %16 = load %j 6.46/2.82 %17 = sext i32 %16 to i64 6.46/2.82 %18 = load @__CS_round 6.46/2.82 %19 = zext i8 %18 to i64 6.46/2.82 %20 = getelementptr @__CS_thread_lockedon, 0, %19 6.46/2.82 %21 = getelementptr %20, 0, %17 6.46/2.82 store null, %21 6.46/2.82 br %22 6.46/2.82 22: 6.46/2.82 br %23 6.46/2.82 23: 6.46/2.82 %24 = load %j 6.46/2.82 %25 = add %24 1 6.46/2.82 store %25, %j 6.46/2.82 br %2 6.46/2.82 26: 6.46/2.82 ret 0 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "__CS_pthread_cond_broadcast" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (cond *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %1 = alloca *i8, align 8 6.46/2.82 %j = alloca i32, align 4 6.46/2.82 store %cond, %1 6.46/2.82 store 0, %j 6.46/2.82 br %2 6.46/2.82 2: 6.46/2.82 %3 = load %j 6.46/2.82 %4 = icmp sle %3 2 6.46/2.82 br %4, %5, %26 6.46/2.82 5: 6.46/2.82 %6 = load %j 6.46/2.82 %7 = sext i32 %6 to i64 6.46/2.82 %8 = load @__CS_round 6.46/2.82 %9 = zext i8 %8 to i64 6.46/2.82 %10 = getelementptr @__CS_thread_lockedon, 0, %9 6.46/2.82 %11 = getelementptr %10, 0, %7 6.46/2.82 %12 = load %11 6.46/2.82 %13 = load %1 6.46/2.82 %14 = icmp eq %12 %13 6.46/2.82 br %14, %15, %22 6.46/2.82 15: 6.46/2.82 %16 = load %j 6.46/2.82 %17 = sext i32 %16 to i64 6.46/2.82 %18 = load @__CS_round 6.46/2.82 %19 = zext i8 %18 to i64 6.46/2.82 %20 = getelementptr @__CS_thread_lockedon, 0, %19 6.46/2.82 %21 = getelementptr %20, 0, %17 6.46/2.82 store null, %21 6.46/2.82 br %22 6.46/2.82 22: 6.46/2.82 br %23 6.46/2.82 23: 6.46/2.82 %24 = load %j 6.46/2.82 %25 = add %24 1 6.46/2.82 store %25, %j 6.46/2.82 br %2 6.46/2.82 26: 6.46/2.82 ret 0 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "__CS_pthread_cond_wait" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (cond *i8, lock *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %1 = alloca i32, align 4 6.46/2.82 %2 = alloca *i8, align 8 6.46/2.82 %3 = alloca *i8, align 8 6.46/2.82 store %cond, %2 6.46/2.82 store %lock, %3 6.46/2.82 %4 = load %3 6.46/2.82 %5 = load %4 6.46/2.82 %6 = zext i8 %5 to i32 6.46/2.82 %7 = load @__CS_thread_index 6.46/2.82 %8 = zext i8 %7 to i32 6.46/2.82 %9 = add %8 1 6.46/2.82 %10 = icmp ne %6 %9 6.46/2.82 br %10, %11, %12 6.46/2.82 11: 6.46/2.82 store 1, @__CS_error 6.46/2.82 store 2, @__CS_ret 6.46/2.82 store 1, %1 6.46/2.82 br %34 6.46/2.82 12: 6.46/2.82 %13 = load %3 6.46/2.82 store 0, %13 6.46/2.82 br %14 6.46/2.82 14: 6.46/2.82 %15 = load %2 6.46/2.82 %16 = load @__CS_thread_index 6.46/2.82 %17 = zext i8 %16 to i64 6.46/2.82 %18 = load @__CS_round 6.46/2.82 %19 = zext i8 %18 to i64 6.46/2.82 %20 = getelementptr @__CS_thread_lockedon, 0, %19 6.46/2.82 %21 = getelementptr %20, 0, %17 6.46/2.82 store %15, %21 6.46/2.82 store 1, @__CS_ret 6.46/2.82 %22 = load %3 6.46/2.82 %23 = load %22 6.46/2.82 %24 = zext i8 %23 to i32 6.46/2.82 %25 = icmp eq %24 0 6.46/2.82 br %25, %26, %32 6.46/2.82 26: 6.46/2.82 %27 = load @__CS_thread_index 6.46/2.82 %28 = zext i8 %27 to i32 6.46/2.82 %29 = add %28 1 6.46/2.82 %30 = trunc i32 %29 to i8 6.46/2.82 %31 = load %3 6.46/2.82 store %30, %31 6.46/2.82 br %33 6.46/2.82 32: 6.46/2.82 store 1, @__CS_ret 6.46/2.82 store 1, %1 6.46/2.82 br %34 6.46/2.82 33: 6.46/2.82 store 0, %1 6.46/2.82 br %34 6.46/2.82 34: 6.46/2.82 %35 = load %1 6.46/2.82 ret %35 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "__CS_assert" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (expr i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %1 = alloca i32, align 4 6.46/2.82 store %expr, %1 6.46/2.82 %2 = load %1 6.46/2.82 %3 = icmp ne %2 0 6.46/2.82 br %3, %5, %4 6.46/2.82 4: 6.46/2.82 store 1, @__CS_error 6.46/2.82 store 2, @__CS_ret 6.46/2.82 br %5 6.46/2.82 5: 6.46/2.82 ret void 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "__CS_assume" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (expr i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %1 = alloca i32, align 4 6.46/2.82 store %expr, %1 6.46/2.82 %2 = load %1 6.46/2.82 %3 = icmp ne %2 0 6.46/2.82 br %3, %5, %4 6.46/2.82 4: 6.46/2.82 store 1, @__CS_ret 6.46/2.82 br %5 6.46/2.82 5: 6.46/2.82 ret void 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "__CS_pthread_join" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (thread i8 zeroext, value_ptr **i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %1 = alloca i32, align 4 6.46/2.82 %2 = alloca i8, align 1 6.46/2.82 %3 = alloca **i8, align 8 6.46/2.82 store %thread, %2 6.46/2.82 store %value_ptr, %3 6.46/2.82 %4 = load %2 6.46/2.82 %5 = zext i8 %4 to i32 6.46/2.82 %6 = icmp ne %5 123 6.46/2.82 br %6, %7, %12 6.46/2.82 7: 6.46/2.82 %8 = load %2 6.46/2.82 %9 = zext i8 %8 to i32 6.46/2.82 %10 = icmp sgt %9 3 6.46/2.82 br %10, %11, %12 6.46/2.82 11: 6.46/2.82 store 1, @__CS_error 6.46/2.82 store 2, @__CS_ret 6.46/2.82 store 0, %1 6.46/2.82 br %49 6.46/2.82 12: 6.46/2.82 %13 = load %2 6.46/2.82 %14 = zext i8 %13 to i32 6.46/2.82 %15 = icmp eq %14 123 6.46/2.82 br %15, %26, %16 6.46/2.82 16: 6.46/2.82 %17 = load %2 6.46/2.82 %18 = zext i8 %17 to i64 6.46/2.82 %19 = load @__CS_round 6.46/2.82 %20 = zext i8 %19 to i64 6.46/2.82 %21 = getelementptr @__CS_thread_status, 0, %20 6.46/2.82 %22 = getelementptr %21, 0, %18 6.46/2.82 %23 = load %22 6.46/2.82 %24 = zext i8 %23 to i32 6.46/2.82 %25 = icmp eq %24 1 6.46/2.82 br %25, %26, %27 6.46/2.82 26: 6.46/2.82 store 1, @__CS_ret 6.46/2.82 store 0, %1 6.46/2.82 br %49 6.46/2.82 27: 6.46/2.82 %28 = load %2 6.46/2.82 %29 = zext i8 %28 to i64 6.46/2.82 %30 = load @__CS_round 6.46/2.82 %31 = zext i8 %30 to i64 6.46/2.82 %32 = getelementptr @__CS_thread_status, 0, %31 6.46/2.82 %33 = getelementptr %32, 0, %29 6.46/2.82 %34 = load %33 6.46/2.82 %35 = zext i8 %34 to i32 6.46/2.82 %36 = icmp eq %35 0 6.46/2.82 br %36, %37, %38 6.46/2.82 37: 6.46/2.82 store 1, @__CS_error 6.46/2.82 store 2, @__CS_ret 6.46/2.82 store 0, %1 6.46/2.82 br %49 6.46/2.82 38: 6.46/2.82 %39 = load %2 6.46/2.82 %40 = zext i8 %39 to i64 6.46/2.82 %41 = load @__CS_round 6.46/2.82 %42 = zext i8 %41 to i64 6.46/2.82 %43 = getelementptr @__CS_thread_status, 0, %42 6.46/2.82 %44 = getelementptr %43, 0, %40 6.46/2.82 %45 = load %44 6.46/2.82 %46 = zext i8 %45 to i32 6.46/2.82 %47 = icmp eq %46 2 6.46/2.82 %48 = zext i1 %47 to i32 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %48) 6.46/2.82 store 0, %1 6.46/2.82 br %49 6.46/2.82 49: 6.46/2.82 %50 = load %1 6.46/2.82 ret %50 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "__CS_pthread_create" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (id1 *i8, attr *i8, t1 *BasicFunctionType varArgs: falsereturnType: *i8paramTypes: (*i8), arg *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %1 = alloca i32, align 4 6.46/2.82 %2 = alloca *i8, align 8 6.46/2.82 %3 = alloca *i8, align 8 6.46/2.82 %4 = alloca *BasicFunctionType varArgs: falsereturnType: *i8paramTypes: (*i8), align 8 6.46/2.82 %5 = alloca *i8, align 8 6.46/2.82 store %id1, %2 6.46/2.82 store %attr, %3 6.46/2.82 store %t1, %4 6.46/2.82 store %arg, %5 6.46/2.82 %6 = load @__CS_thread_index 6.46/2.82 %7 = zext i8 %6 to i32 6.46/2.82 %8 = icmp eq %7 2 6.46/2.82 br %8, %9, %11 6.46/2.82 9: 6.46/2.82 %10 = load %2 6.46/2.82 store 123, %10 6.46/2.82 store -1, %1 6.46/2.82 br %35 6.46/2.82 11: 6.46/2.82 %12 = load @__CS_thread_index 6.46/2.82 %13 = add %12 1 6.46/2.82 store %13, @__CS_thread_index 6.46/2.82 %14 = load @__CS_thread_index 6.46/2.82 %15 = zext i8 %14 to i64 6.46/2.82 %16 = getelementptr @__CS_thread_allocated, 0, %15 6.46/2.82 store 1, %16 6.46/2.82 %17 = load @__CS_round 6.46/2.82 %18 = load @__CS_thread_index 6.46/2.82 %19 = zext i8 %18 to i64 6.46/2.82 %20 = getelementptr @__CS_thread_born_round, 0, %19 6.46/2.82 store %17, %20 6.46/2.82 %21 = load %4 6.46/2.82 %22 = load @__CS_thread_index 6.46/2.82 %23 = zext i8 %22 to i64 6.46/2.82 %24 = getelementptr @__CS_thread, 0, %23 6.46/2.82 store %21, %24 6.46/2.82 %25 = load @__CS_thread_index 6.46/2.82 %26 = zext i8 %25 to i64 6.46/2.82 %27 = load @__CS_round 6.46/2.82 %28 = zext i8 %27 to i64 6.46/2.82 %29 = getelementptr @__CS_thread_status, 0, %28 6.46/2.82 %30 = getelementptr %29, 0, %26 6.46/2.82 store 1, %30 6.46/2.82 %31 = load @__CS_thread_index 6.46/2.82 %32 = load %2 6.46/2.82 store %31, %32 6.46/2.82 %33 = load @__CS_thread_index 6.46/2.82 %34 = zext i8 %33 to i32 6.46/2.82 store %34, %1 6.46/2.82 br %35 6.46/2.82 35: 6.46/2.82 %36 = load %1 6.46/2.82 ret %36 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "thread1" linkageType: EXTERNALLY_VISIBLE returnParam: *i8 parameters: (arg *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %1 = alloca *i8, align 8 6.46/2.82 %2 = alloca *i8, align 8 6.46/2.82 store %arg, %2 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %3 = load @__CS_ret 6.46/2.82 %4 = zext i8 %3 to i32 6.46/2.82 %5 = icmp ne %4 0 6.46/2.82 br %5, %6, %7 6.46/2.82 6: 6.46/2.82 store null, %1 6.46/2.82 br %63 6.46/2.82 7: 6.46/2.82 %8 = load @__CS_round 6.46/2.82 %9 = zext i8 %8 to i64 6.46/2.82 %10 = getelementptr @ma, 0, %9 6.46/2.82 %11 = call i32 @__CS_pthread_mutex_lock(*i8 %10) 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %12 = load @__CS_ret 6.46/2.82 %13 = zext i8 %12 to i32 6.46/2.82 %14 = icmp ne %13 0 6.46/2.82 br %14, %15, %16 6.46/2.82 15: 6.46/2.82 store null, %1 6.46/2.82 br %63 6.46/2.82 16: 6.46/2.82 %17 = load @__CS_round 6.46/2.82 %18 = zext i8 %17 to i64 6.46/2.82 %19 = getelementptr @data1, 0, %18 6.46/2.82 %20 = load %19 6.46/2.82 %21 = add %20 1 6.46/2.82 store %21, %19 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %22 = load @__CS_ret 6.46/2.82 %23 = zext i8 %22 to i32 6.46/2.82 %24 = icmp ne %23 0 6.46/2.82 br %24, %25, %26 6.46/2.82 25: 6.46/2.82 store null, %1 6.46/2.82 br %63 6.46/2.82 26: 6.46/2.82 %27 = load @__CS_round 6.46/2.82 %28 = zext i8 %27 to i64 6.46/2.82 %29 = getelementptr @ma, 0, %28 6.46/2.82 %30 = call i32 @__CS_pthread_mutex_unlock(*i8 %29) 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %31 = load @__CS_ret 6.46/2.82 %32 = zext i8 %31 to i32 6.46/2.82 %33 = icmp ne %32 0 6.46/2.82 br %33, %34, %35 6.46/2.82 34: 6.46/2.82 store null, %1 6.46/2.82 br %63 6.46/2.82 35: 6.46/2.82 %36 = load @__CS_round 6.46/2.82 %37 = zext i8 %36 to i64 6.46/2.82 %38 = getelementptr @ma, 0, %37 6.46/2.82 %39 = call i32 @__CS_pthread_mutex_lock(*i8 %38) 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %40 = load @__CS_ret 6.46/2.82 %41 = zext i8 %40 to i32 6.46/2.82 %42 = icmp ne %41 0 6.46/2.82 br %42, %43, %44 6.46/2.82 43: 6.46/2.82 store null, %1 6.46/2.82 br %63 6.46/2.82 44: 6.46/2.82 %45 = load @__CS_round 6.46/2.82 %46 = zext i8 %45 to i64 6.46/2.82 %47 = getelementptr @data2, 0, %46 6.46/2.82 %48 = load %47 6.46/2.82 %49 = add %48 1 6.46/2.82 store %49, %47 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %50 = load @__CS_ret 6.46/2.82 %51 = zext i8 %50 to i32 6.46/2.82 %52 = icmp ne %51 0 6.46/2.82 br %52, %53, %54 6.46/2.82 53: 6.46/2.82 store null, %1 6.46/2.82 br %63 6.46/2.82 54: 6.46/2.82 %55 = load @__CS_round 6.46/2.82 %56 = zext i8 %55 to i64 6.46/2.82 %57 = getelementptr @ma, 0, %56 6.46/2.82 %58 = call i32 @__CS_pthread_mutex_unlock(*i8 %57) 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %59 = load @__CS_ret 6.46/2.82 %60 = zext i8 %59 to i32 6.46/2.82 %61 = icmp ne %60 0 6.46/2.82 br %61, %62, %63 6.46/2.82 62: 6.46/2.82 store null, %1 6.46/2.82 br %63 6.46/2.82 63: 6.46/2.82 %64 = load %1 6.46/2.82 ret %64 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "thread2" linkageType: EXTERNALLY_VISIBLE returnParam: *i8 parameters: (arg *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %1 = alloca *i8, align 8 6.46/2.82 %2 = alloca *i8, align 8 6.46/2.82 store %arg, %2 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %3 = load @__CS_ret 6.46/2.82 %4 = zext i8 %3 to i32 6.46/2.82 %5 = icmp ne %4 0 6.46/2.82 br %5, %6, %7 6.46/2.82 6: 6.46/2.82 store null, %1 6.46/2.82 br %63 6.46/2.82 7: 6.46/2.82 %8 = load @__CS_round 6.46/2.82 %9 = zext i8 %8 to i64 6.46/2.82 %10 = getelementptr @ma, 0, %9 6.46/2.82 %11 = call i32 @__CS_pthread_mutex_lock(*i8 %10) 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %12 = load @__CS_ret 6.46/2.82 %13 = zext i8 %12 to i32 6.46/2.82 %14 = icmp ne %13 0 6.46/2.82 br %14, %15, %16 6.46/2.82 15: 6.46/2.82 store null, %1 6.46/2.82 br %63 6.46/2.82 16: 6.46/2.82 %17 = load @__CS_round 6.46/2.82 %18 = zext i8 %17 to i64 6.46/2.82 %19 = getelementptr @data1, 0, %18 6.46/2.82 %20 = load %19 6.46/2.82 %21 = add %20 5 6.46/2.82 store %21, %19 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %22 = load @__CS_ret 6.46/2.82 %23 = zext i8 %22 to i32 6.46/2.82 %24 = icmp ne %23 0 6.46/2.82 br %24, %25, %26 6.46/2.82 25: 6.46/2.82 store null, %1 6.46/2.82 br %63 6.46/2.82 26: 6.46/2.82 %27 = load @__CS_round 6.46/2.82 %28 = zext i8 %27 to i64 6.46/2.82 %29 = getelementptr @ma, 0, %28 6.46/2.82 %30 = call i32 @__CS_pthread_mutex_unlock(*i8 %29) 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %31 = load @__CS_ret 6.46/2.82 %32 = zext i8 %31 to i32 6.46/2.82 %33 = icmp ne %32 0 6.46/2.82 br %33, %34, %35 6.46/2.82 34: 6.46/2.82 store null, %1 6.46/2.82 br %63 6.46/2.82 35: 6.46/2.82 %36 = load @__CS_round 6.46/2.82 %37 = zext i8 %36 to i64 6.46/2.82 %38 = getelementptr @ma, 0, %37 6.46/2.82 %39 = call i32 @__CS_pthread_mutex_lock(*i8 %38) 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %40 = load @__CS_ret 6.46/2.82 %41 = zext i8 %40 to i32 6.46/2.82 %42 = icmp ne %41 0 6.46/2.82 br %42, %43, %44 6.46/2.82 43: 6.46/2.82 store null, %1 6.46/2.82 br %63 6.46/2.82 44: 6.46/2.82 %45 = load @__CS_round 6.46/2.82 %46 = zext i8 %45 to i64 6.46/2.82 %47 = getelementptr @data2, 0, %46 6.46/2.82 %48 = load %47 6.46/2.82 %49 = sub %48 6 6.46/2.82 store %49, %47 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %50 = load @__CS_ret 6.46/2.82 %51 = zext i8 %50 to i32 6.46/2.82 %52 = icmp ne %51 0 6.46/2.82 br %52, %53, %54 6.46/2.82 53: 6.46/2.82 store null, %1 6.46/2.82 br %63 6.46/2.82 54: 6.46/2.82 %55 = load @__CS_round 6.46/2.82 %56 = zext i8 %55 to i64 6.46/2.82 %57 = getelementptr @ma, 0, %56 6.46/2.82 %58 = call i32 @__CS_pthread_mutex_unlock(*i8 %57) 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %59 = load @__CS_ret 6.46/2.82 %60 = zext i8 %59 to i32 6.46/2.82 %61 = icmp ne %60 0 6.46/2.82 br %61, %62, %63 6.46/2.82 62: 6.46/2.82 store null, %1 6.46/2.82 br %63 6.46/2.82 63: 6.46/2.82 %64 = load %1 6.46/2.82 ret %64 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "main_thread" linkageType: EXTERNALLY_VISIBLE returnParam: *i8 parameters: (arg *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %1 = alloca *i8, align 8 6.46/2.82 %2 = alloca *i8, align 8 6.46/2.82 %t1 = alloca i8, align 1 6.46/2.82 %t2 = alloca i8, align 1 6.46/2.82 store %arg, %2 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %3 = load @__CS_ret 6.46/2.82 %4 = zext i8 %3 to i32 6.46/2.82 %5 = icmp ne %4 0 6.46/2.82 br %5, %6, %7 6.46/2.82 6: 6.46/2.82 store null, %1 6.46/2.82 br %91 6.46/2.82 7: 6.46/2.82 %8 = load @__CS_round 6.46/2.82 %9 = zext i8 %8 to i64 6.46/2.82 %10 = getelementptr @ma, 0, %9 6.46/2.82 %11 = call i32 @__CS_pthread_mutex_init(*i8 %10, *i8 null) 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %12 = load @__CS_ret 6.46/2.82 %13 = zext i8 %12 to i32 6.46/2.82 %14 = icmp ne %13 0 6.46/2.82 br %14, %15, %16 6.46/2.82 15: 6.46/2.82 store null, %1 6.46/2.82 br %91 6.46/2.82 16: 6.46/2.82 %17 = load @__CS_round 6.46/2.82 %18 = zext i8 %17 to i64 6.46/2.82 %19 = getelementptr @mb, 0, %18 6.46/2.82 %20 = call i32 @__CS_pthread_mutex_init(*i8 %19, *i8 null) 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %21 = load @__CS_ret 6.46/2.82 %22 = zext i8 %21 to i32 6.46/2.82 %23 = icmp ne %22 0 6.46/2.82 br %23, %24, %25 6.46/2.82 24: 6.46/2.82 store null, %1 6.46/2.82 br %91 6.46/2.82 25: 6.46/2.82 %26 = load @__CS_round 6.46/2.82 %27 = zext i8 %26 to i64 6.46/2.82 %28 = getelementptr @data1, 0, %27 6.46/2.82 store 10, %28 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %29 = load @__CS_ret 6.46/2.82 %30 = zext i8 %29 to i32 6.46/2.82 %31 = icmp ne %30 0 6.46/2.82 br %31, %32, %33 6.46/2.82 32: 6.46/2.82 store null, %1 6.46/2.82 br %91 6.46/2.82 33: 6.46/2.82 %34 = load @__CS_round 6.46/2.82 %35 = zext i8 %34 to i64 6.46/2.82 %36 = getelementptr @data2, 0, %35 6.46/2.82 store 10, %36 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %37 = load @__CS_ret 6.46/2.82 %38 = zext i8 %37 to i32 6.46/2.82 %39 = icmp ne %38 0 6.46/2.82 br %39, %40, %41 6.46/2.82 40: 6.46/2.82 store null, %1 6.46/2.82 br %91 6.46/2.82 41: 6.46/2.82 %42 = call i32 @__CS_pthread_create(*i8 %t1, *i8 null, *BasicFunctionType varArgs: falsereturnType: *i8paramTypes: (*i8) @thread1, *i8 null) 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %43 = load @__CS_ret 6.46/2.82 %44 = zext i8 %43 to i32 6.46/2.82 %45 = icmp ne %44 0 6.46/2.82 br %45, %46, %47 6.46/2.82 46: 6.46/2.82 store null, %1 6.46/2.82 br %91 6.46/2.82 47: 6.46/2.82 %48 = call i32 @__CS_pthread_create(*i8 %t2, *i8 null, *BasicFunctionType varArgs: falsereturnType: *i8paramTypes: (*i8) @thread2, *i8 null) 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %49 = load @__CS_ret 6.46/2.82 %50 = zext i8 %49 to i32 6.46/2.82 %51 = icmp ne %50 0 6.46/2.82 br %51, %52, %53 6.46/2.82 52: 6.46/2.82 store null, %1 6.46/2.82 br %91 6.46/2.82 53: 6.46/2.82 %54 = load %t1 6.46/2.82 %55 = call i32 @__CS_pthread_join(i8 zeroext %54, **i8 null) 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %56 = load @__CS_ret 6.46/2.82 %57 = zext i8 %56 to i32 6.46/2.82 %58 = icmp ne %57 0 6.46/2.82 br %58, %59, %60 6.46/2.82 59: 6.46/2.82 store null, %1 6.46/2.82 br %91 6.46/2.82 60: 6.46/2.82 %61 = load %t2 6.46/2.82 %62 = call i32 @__CS_pthread_join(i8 zeroext %61, **i8 null) 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %63 = load @__CS_ret 6.46/2.82 %64 = zext i8 %63 to i32 6.46/2.82 %65 = icmp ne %64 0 6.46/2.82 br %65, %66, %67 6.46/2.82 66: 6.46/2.82 store null, %1 6.46/2.82 br %91 6.46/2.82 67: 6.46/2.82 %68 = load @__CS_round 6.46/2.82 %69 = zext i8 %68 to i64 6.46/2.82 %70 = getelementptr @data1, 0, %69 6.46/2.82 %71 = load %70 6.46/2.82 %72 = icmp eq %71 16 6.46/2.82 br %72, %73, %86 6.46/2.82 73: 6.46/2.82 %74 = load @__CS_round 6.46/2.82 %75 = zext i8 %74 to i64 6.46/2.82 %76 = getelementptr @data2, 0, %75 6.46/2.82 %77 = load %76 6.46/2.82 %78 = icmp eq %77 5 6.46/2.82 br %78, %79, %86 6.46/2.82 79: 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %80 = load @__CS_ret 6.46/2.82 %81 = zext i8 %80 to i32 6.46/2.82 %82 = icmp ne %81 0 6.46/2.82 br %82, %83, %84 6.46/2.82 83: 6.46/2.82 store null, %1 6.46/2.82 br %91 6.46/2.82 84: 6.46/2.82 br %85 6.46/2.82 85: 6.46/2.82 store 1, @__CS_error 6.46/2.82 store 2, @__CS_ret 6.46/2.82 store null, %1 6.46/2.82 br %91 6.46/2.82 86: 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() 6.46/2.82 %87 = load @__CS_ret 6.46/2.82 %88 = zext i8 %87 to i32 6.46/2.82 %89 = icmp ne %88 0 6.46/2.82 br %89, %90, %91 6.46/2.82 90: 6.46/2.82 store null, %1 6.46/2.82 br %91 6.46/2.82 91: 6.46/2.82 %92 = load %1 6.46/2.82 ret %92 6.46/2.82 6.46/2.82 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.46/2.82 0: 6.46/2.82 %1 = alloca i32, align 4 6.46/2.82 %__CS_cp___CS_thread_status = alloca [2 x [3 x i8]], align 1 6.46/2.82 %__CS_cp___CS_thread_lockedon = alloca [2 x [3 x *i8]], align 16 6.46/2.82 %__CS_cp_ma = alloca [2 x i8], align 1 6.46/2.82 %__CS_cp_mb = alloca [2 x i8], align 1 6.46/2.82 %__CS_cp_data1 = alloca [2 x i32], align 4 6.46/2.82 %__CS_cp_data2 = alloca [2 x i32], align 4 6.46/2.82 store 0, %1 6.46/2.82 %2 = getelementptr %__CS_cp___CS_thread_status, 0, 1 6.46/2.82 %3 = getelementptr %2, 0, 0 6.46/2.82 %4 = load %3 6.46/2.82 store %4, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@761759df 6.46/2.82 %5 = getelementptr %__CS_cp___CS_thread_status, 0, 1 6.46/2.82 %6 = getelementptr %5, 0, 1 6.46/2.82 %7 = load %6 6.46/2.82 store %7, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@7be71713 6.46/2.82 %8 = getelementptr %__CS_cp___CS_thread_status, 0, 1 6.46/2.82 %9 = getelementptr %8, 0, 2 6.46/2.82 %10 = load %9 6.46/2.82 store %10, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@cc3a128 6.46/2.82 %11 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 1 6.46/2.82 %12 = getelementptr %11, 0, 0 6.46/2.82 %13 = load %12 6.46/2.82 store %13, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@345aa2b0 6.46/2.82 %14 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 1 6.46/2.82 %15 = getelementptr %14, 0, 1 6.46/2.82 %16 = load %15 6.46/2.82 store %16, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@78cfdc45 6.46/2.82 %17 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 1 6.46/2.82 %18 = getelementptr %17, 0, 2 6.46/2.82 %19 = load %18 6.46/2.82 store %19, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@3bd303c0 6.46/2.82 %20 = getelementptr %__CS_cp_ma, 0, 1 6.46/2.82 %21 = load %20 6.46/2.82 store %21, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@2a082f73 6.46/2.82 %22 = getelementptr %__CS_cp_mb, 0, 1 6.46/2.82 %23 = load %22 6.46/2.82 store %23, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@4ba647a0 6.46/2.82 %24 = getelementptr %__CS_cp_data1, 0, 1 6.46/2.82 %25 = load %24 6.46/2.82 store %25, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@4d8d8765 6.46/2.82 %26 = getelementptr %__CS_cp_data2, 0, 1 6.46/2.82 %27 = load %26 6.46/2.82 store %27, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@6ee35017 6.46/2.82 store 0, @__CS_round 6.46/2.82 store 0, @__CS_thread_index 6.46/2.82 %28 = load @__CS_round 6.46/2.82 store %28, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@5fb990f 6.46/2.82 store 1, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@7c994557 6.46/2.82 store @main_thread, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@5d8e430e 6.46/2.82 store 1, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@2999c340 6.46/2.82 %29 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@7073149d 6.46/2.82 %30 = zext i8 %29 to i32 6.46/2.82 %31 = icmp eq %30 1 6.46/2.82 br %31, %32, %45 6.46/2.82 32: 6.46/2.82 %33 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@46f64439 6.46/2.82 store %33, @__CS_round 6.46/2.82 store 0, @__CS_ret 6.46/2.82 %34 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@694ff9da 6.46/2.82 %35 = call *i8 %34(*i8 null) 6.46/2.82 %36 = load @__CS_ret 6.46/2.82 %37 = zext i8 %36 to i32 6.46/2.82 %38 = icmp ne %37 1 6.46/2.82 br %38, %39, %44 6.46/2.82 39: 6.46/2.82 %40 = load @__CS_round 6.46/2.82 %41 = zext i8 %40 to i64 6.46/2.82 %42 = getelementptr @__CS_thread_status, 0, %41 6.46/2.82 %43 = getelementptr %42, 0, 0 6.46/2.82 store 2, %43 6.46/2.82 br %44 6.46/2.82 44: 6.46/2.82 br %45 6.46/2.82 45: 6.46/2.82 %46 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@e2ba470 6.46/2.82 %47 = zext i8 %46 to i32 6.46/2.82 %48 = icmp eq %47 1 6.46/2.82 br %48, %49, %62 6.46/2.82 49: 6.46/2.82 %50 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@66948ed4 6.46/2.82 store %50, @__CS_round 6.46/2.82 store 0, @__CS_ret 6.46/2.82 %51 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@1237d9b3 6.46/2.82 %52 = call *i8 %51(*i8 null) 6.46/2.82 %53 = load @__CS_ret 6.46/2.82 %54 = zext i8 %53 to i32 6.46/2.82 %55 = icmp ne %54 1 6.46/2.82 br %55, %56, %61 6.46/2.82 56: 6.46/2.82 %57 = load @__CS_round 6.46/2.82 %58 = zext i8 %57 to i64 6.46/2.82 %59 = getelementptr @__CS_thread_status, 0, %58 6.46/2.82 %60 = getelementptr %59, 0, 1 6.46/2.82 store 2, %60 6.46/2.82 br %61 6.46/2.82 61: 6.46/2.82 br %62 6.46/2.82 62: 6.46/2.82 %63 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@4207306 6.46/2.82 %64 = zext i8 %63 to i32 6.46/2.82 %65 = icmp eq %64 1 6.46/2.82 br %65, %66, %79 6.46/2.82 66: 6.46/2.82 %67 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@577b4fd6 6.46/2.82 store %67, @__CS_round 6.46/2.82 store 0, @__CS_ret 6.46/2.82 %68 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@155b99c3 6.46/2.82 %69 = call *i8 %68(*i8 null) 6.46/2.82 %70 = load @__CS_ret 6.46/2.82 %71 = zext i8 %70 to i32 6.46/2.82 %72 = icmp ne %71 1 6.46/2.82 br %72, %73, %78 6.46/2.82 73: 6.46/2.82 %74 = load @__CS_round 6.46/2.82 %75 = zext i8 %74 to i64 6.46/2.82 %76 = getelementptr @__CS_thread_status, 0, %75 6.46/2.82 %77 = getelementptr %76, 0, 2 6.46/2.82 store 2, %77 6.46/2.82 br %78 6.46/2.82 78: 6.46/2.82 br %79 6.46/2.82 79: 6.46/2.82 %80 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@390d209a 6.46/2.82 %81 = zext i8 %80 to i32 6.46/2.82 %82 = getelementptr %__CS_cp___CS_thread_status, 0, 1 6.46/2.82 %83 = getelementptr %82, 0, 0 6.46/2.82 %84 = load %83 6.46/2.82 %85 = zext i8 %84 to i32 6.46/2.82 %86 = icmp eq %81 %85 6.46/2.82 %87 = zext i1 %86 to i32 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %87) 6.46/2.82 %88 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@3e32ccfe 6.46/2.82 %89 = zext i8 %88 to i32 6.46/2.82 %90 = getelementptr %__CS_cp___CS_thread_status, 0, 1 6.46/2.82 %91 = getelementptr %90, 0, 1 6.46/2.82 %92 = load %91 6.46/2.82 %93 = zext i8 %92 to i32 6.46/2.82 %94 = icmp eq %89 %93 6.46/2.82 %95 = zext i1 %94 to i32 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %95) 6.46/2.82 %96 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@333a3111 6.46/2.82 %97 = zext i8 %96 to i32 6.46/2.82 %98 = getelementptr %__CS_cp___CS_thread_status, 0, 1 6.46/2.82 %99 = getelementptr %98, 0, 2 6.46/2.82 %100 = load %99 6.46/2.82 %101 = zext i8 %100 to i32 6.46/2.82 %102 = icmp eq %97 %101 6.46/2.82 %103 = zext i1 %102 to i32 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %103) 6.46/2.82 %104 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@7a662334 6.46/2.82 %105 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 1 6.46/2.82 %106 = getelementptr %105, 0, 0 6.46/2.82 %107 = load %106 6.46/2.82 %108 = icmp eq %104 %107 6.46/2.82 %109 = zext i1 %108 to i32 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %109) 6.46/2.82 %110 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@2abfc512 6.46/2.82 %111 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 1 6.46/2.82 %112 = getelementptr %111, 0, 1 6.46/2.82 %113 = load %112 6.46/2.82 %114 = icmp eq %110 %113 6.46/2.82 %115 = zext i1 %114 to i32 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %115) 6.46/2.82 %116 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@242a987 6.46/2.82 %117 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 1 6.46/2.82 %118 = getelementptr %117, 0, 2 6.46/2.82 %119 = load %118 6.46/2.82 %120 = icmp eq %116 %119 6.46/2.82 %121 = zext i1 %120 to i32 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %121) 6.46/2.82 %122 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@6012b267 6.46/2.82 %123 = zext i8 %122 to i32 6.46/2.82 %124 = getelementptr %__CS_cp_ma, 0, 1 6.46/2.82 %125 = load %124 6.46/2.82 %126 = zext i8 %125 to i32 6.46/2.82 %127 = icmp eq %123 %126 6.46/2.82 %128 = zext i1 %127 to i32 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %128) 6.46/2.82 %129 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@2ba642d2 6.46/2.82 %130 = zext i8 %129 to i32 6.46/2.82 %131 = getelementptr %__CS_cp_mb, 0, 1 6.46/2.82 %132 = load %131 6.46/2.82 %133 = zext i8 %132 to i32 6.46/2.82 %134 = icmp eq %130 %133 6.46/2.82 %135 = zext i1 %134 to i32 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %135) 6.46/2.82 %136 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@7fe595e1 6.46/2.82 %137 = getelementptr %__CS_cp_data1, 0, 1 6.46/2.82 %138 = load %137 6.46/2.82 %139 = icmp eq %136 %138 6.46/2.82 %140 = zext i1 %139 to i32 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %140) 6.46/2.82 %141 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@687c050b 6.46/2.82 %142 = getelementptr %__CS_cp_data2, 0, 1 6.46/2.82 %143 = load %142 6.46/2.82 %144 = icmp eq %141 %143 6.46/2.82 %145 = zext i1 %144 to i32 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %145) 6.46/2.82 %146 = load @__CS_error 6.46/2.82 %147 = zext i8 %146 to i32 6.46/2.82 %148 = icmp ne %147 1 6.46/2.82 %149 = zext i1 %148 to i32 6.46/2.82 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assert(i32 %149) 6.46/2.82 %150 = load %1 6.46/2.82 ret %150 6.46/2.82 6.46/2.82 6.46/2.82 Analyze Termination of all function calls matching the pattern: 6.46/2.82 main() 6.68/2.85 EOF