/export/starexec/sandbox2/solver/bin/starexec_run_c /export/starexec/sandbox2/benchmark/theBenchmark.c /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- MAYBE proof of /export/starexec/sandbox2/benchmark/theBenchmark.c # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given C Problem could not be shown: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 168 ms] (2) LLVM problem ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox2/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. ---------------------------------------- (2) Obligation: LLVM Problem Aliases: Data layout: "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" Machine: "x86_64-pc-linux-gnu" Type definitions: union.__CS__u --> BasicStructureType(elementType: [3 x i32]) Global variables: Name: __CS_round initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: null section: null Name: __CS_ret initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: null section: null Name: __CS_ret_PREEMPTED initVal: 1 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: true linkageType: null section: null Name: __CS_ret_ERROR initVal: 2 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: true linkageType: null section: null Name: __CS_ret_FINISHED initVal: 4 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: true linkageType: null section: null Name: __CS_error initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: null section: null Name: __THREAD_UNUSED initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: true linkageType: null section: null Name: __THREAD_RUNNING initVal: 1 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: true linkageType: null section: null Name: __THREAD_FINISHED initVal: 2 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: true linkageType: null section: null Name: __CS_thread_index initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: __CS_thread_lockedon initVal: ((null,null,null),(null,null,null),(null,null,null)) type: [3 x [3 x *i8]] addrSpace: null alignment: 16 threadLocal: false constant: false linkageType: COMMON section: null Name: __CS_thread_status initVal: ((0,0,0),(0,0,0),(0,0,0)) type: [3 x [3 x i8]] addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: __CS_thread_allocated initVal: (0,0,0) type: [3 x i8] addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null 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 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 Name: flag1 initVal: (0,0,0) type: [3 x i32] addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: null section: null Name: flag2 initVal: (0,0,0) type: [3 x i32] addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: null section: null Name: turn initVal: (0,0,0) type: [3 x i32] addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Name: x initVal: (0,0,0) type: [3 x i32] addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Name: __CS_u initVal: {(0,0,0)} type: BasicTypeName typeName: union.__CS__uBasicStructureType(elementType: [3 x i32]) addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Function declarations and definitions: *BasicFunctionTypename: "__VERIFIER_error" returnParam: BasicVoidType parameters: () variableLength: true visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "__VERIFIER_assume" returnParam: BasicVoidType parameters: (i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "nondet_int" returnParam: i32 parameters: () variableLength: true visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "__VERIFIER_assert" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (cond i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 store %cond, %1 %2 = load %1 %3 = icmp ne %2 0 br %3, %6, %4 4: br %5 5: Unnamed Call-Instruction = call BasicVoidType (...)* @__VERIFIER_error() noreturn unreachable 6: ret void *BasicFunctionTypename: "__CS_cs" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %k = alloca i8, align 1 %1 = load @__CS_round %2 = zext i8 %1 to i32 %3 = load %k %4 = zext i8 %3 to i32 %5 = add %2 %4 %6 = icmp slt %5 3 %7 = zext i1 %6 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %7) %8 = load %k %9 = zext i8 %8 to i32 %10 = load @__CS_round %11 = zext i8 %10 to i32 %12 = add %11 %9 %13 = trunc i32 %12 to i8 store %13, @__CS_round %14 = call i32 (...)* @nondet_int() %15 = icmp ne %14 0 br %15, %16, %21 16: %17 = load @__CS_round %18 = zext i8 %17 to i32 %19 = icmp eq %18 2 br %19, %20, %21 20: br %24 21: %22 = load @__CS_ret %23 = zext i8 %22 to i32 br %24 24: %25 = phi [1, %20], [%23, %21] %26 = trunc i32 %25 to i8 store %26, @__CS_ret ret void *BasicFunctionTypename: "__CS_pthread_mutex_init" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (mutex *i8, attr *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca *i8, align 8 %2 = alloca *i8, align 8 store %mutex, %1 store %attr, %2 ret 0 *BasicFunctionTypename: "__CS_pthread_mutex_destroy" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (lock *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca *i8, align 8 store %lock, %1 %2 = load %1 %3 = load %2 %4 = zext i8 %3 to i32 %5 = load @__CS_thread_index %6 = zext i8 %5 to i32 %7 = icmp ne %4 %6 br %7, %8, %14 8: %9 = load %1 %10 = load %9 %11 = zext i8 %10 to i32 %12 = icmp ne %11 0 br %12, %13, %14 13: store 1, @__CS_error store 2, @__CS_ret br %16 14: %15 = load %1 store 0, %15 br %16 16: ret 0 *BasicFunctionTypename: "__CS_pthread_mutex_lock" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (lock *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca *i8, align 8 store %lock, %2 %3 = load %2 %4 = load %3 %5 = zext i8 %4 to i32 %6 = icmp eq %5 0 br %6, %7, %13 7: %8 = load @__CS_thread_index %9 = zext i8 %8 to i32 %10 = add %9 1 %11 = trunc i32 %10 to i8 %12 = load %2 store %11, %12 br %14 13: store 1, @__CS_ret store 1, %1 br %15 14: store 0, %1 br %15 15: %16 = load %1 ret %16 *BasicFunctionTypename: "__CS_pthread_mutex_unlock" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (lock *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca *i8, align 8 store %lock, %2 %3 = load %2 %4 = load %3 %5 = zext i8 %4 to i32 %6 = load @__CS_thread_index %7 = zext i8 %6 to i32 %8 = add %7 1 %9 = icmp ne %5 %8 br %9, %10, %11 10: store 1, @__CS_error store 2, @__CS_ret store 1, %1 br %14 11: %12 = load %2 store 0, %12 br %13 13: store 0, %1 br %14 14: %15 = load %1 ret %15 *BasicFunctionTypename: "__CS_pthread_cond_init" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (cond *i8, attr *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca *i8, align 8 %2 = alloca *i8, align 8 store %cond, %1 store %attr, %2 ret 0 *BasicFunctionTypename: "__CS_pthread_cond_signal" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (cond *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca *i8, align 8 %j = alloca i32, align 4 store %cond, %1 store 0, %j br %2 2: %3 = load %j %4 = icmp sle %3 2 br %4, %5, %26 5: %6 = load %j %7 = sext i32 %6 to i64 %8 = load @__CS_round %9 = zext i8 %8 to i64 %10 = getelementptr @__CS_thread_lockedon, 0, %9 %11 = getelementptr %10, 0, %7 %12 = load %11 %13 = load %1 %14 = icmp eq %12 %13 br %14, %15, %22 15: %16 = load %j %17 = sext i32 %16 to i64 %18 = load @__CS_round %19 = zext i8 %18 to i64 %20 = getelementptr @__CS_thread_lockedon, 0, %19 %21 = getelementptr %20, 0, %17 store null, %21 br %22 22: br %23 23: %24 = load %j %25 = add %24 1 store %25, %j br %2 26: ret 0 *BasicFunctionTypename: "__CS_pthread_cond_broadcast" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (cond *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca *i8, align 8 %j = alloca i32, align 4 store %cond, %1 store 0, %j br %2 2: %3 = load %j %4 = icmp sle %3 2 br %4, %5, %26 5: %6 = load %j %7 = sext i32 %6 to i64 %8 = load @__CS_round %9 = zext i8 %8 to i64 %10 = getelementptr @__CS_thread_lockedon, 0, %9 %11 = getelementptr %10, 0, %7 %12 = load %11 %13 = load %1 %14 = icmp eq %12 %13 br %14, %15, %22 15: %16 = load %j %17 = sext i32 %16 to i64 %18 = load @__CS_round %19 = zext i8 %18 to i64 %20 = getelementptr @__CS_thread_lockedon, 0, %19 %21 = getelementptr %20, 0, %17 store null, %21 br %22 22: br %23 23: %24 = load %j %25 = add %24 1 store %25, %j br %2 26: ret 0 *BasicFunctionTypename: "__CS_pthread_cond_wait" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (cond *i8, lock *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca *i8, align 8 %3 = alloca *i8, align 8 store %cond, %2 store %lock, %3 %4 = load %3 %5 = load %4 %6 = zext i8 %5 to i32 %7 = load @__CS_thread_index %8 = zext i8 %7 to i32 %9 = add %8 1 %10 = icmp ne %6 %9 br %10, %11, %12 11: store 1, @__CS_error store 2, @__CS_ret store 1, %1 br %34 12: %13 = load %3 store 0, %13 br %14 14: %15 = load %2 %16 = load @__CS_thread_index %17 = zext i8 %16 to i64 %18 = load @__CS_round %19 = zext i8 %18 to i64 %20 = getelementptr @__CS_thread_lockedon, 0, %19 %21 = getelementptr %20, 0, %17 store %15, %21 store 1, @__CS_ret %22 = load %3 %23 = load %22 %24 = zext i8 %23 to i32 %25 = icmp eq %24 0 br %25, %26, %32 26: %27 = load @__CS_thread_index %28 = zext i8 %27 to i32 %29 = add %28 1 %30 = trunc i32 %29 to i8 %31 = load %3 store %30, %31 br %33 32: store 1, @__CS_ret store 1, %1 br %34 33: store 0, %1 br %34 34: %35 = load %1 ret %35 *BasicFunctionTypename: "__CS_assert" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (expr i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 store %expr, %1 %2 = load %1 %3 = icmp ne %2 0 br %3, %5, %4 4: store 1, @__CS_error store 2, @__CS_ret br %5 5: ret void *BasicFunctionTypename: "__CS_assume" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (expr i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 store %expr, %1 %2 = load %1 %3 = icmp ne %2 0 br %3, %5, %4 4: store 1, @__CS_ret br %5 5: ret void *BasicFunctionTypename: "__CS_pthread_join" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (thread i8 zeroext, value_ptr **i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca i8, align 1 %3 = alloca **i8, align 8 store %thread, %2 store %value_ptr, %3 %4 = load %2 %5 = zext i8 %4 to i32 %6 = icmp ne %5 123 br %6, %7, %12 7: %8 = load %2 %9 = zext i8 %8 to i32 %10 = icmp sgt %9 3 br %10, %11, %12 11: store 1, @__CS_error store 2, @__CS_ret store 0, %1 br %49 12: %13 = load %2 %14 = zext i8 %13 to i32 %15 = icmp eq %14 123 br %15, %26, %16 16: %17 = load %2 %18 = zext i8 %17 to i64 %19 = load @__CS_round %20 = zext i8 %19 to i64 %21 = getelementptr @__CS_thread_status, 0, %20 %22 = getelementptr %21, 0, %18 %23 = load %22 %24 = zext i8 %23 to i32 %25 = icmp eq %24 1 br %25, %26, %27 26: store 1, @__CS_ret store 0, %1 br %49 27: %28 = load %2 %29 = zext i8 %28 to i64 %30 = load @__CS_round %31 = zext i8 %30 to i64 %32 = getelementptr @__CS_thread_status, 0, %31 %33 = getelementptr %32, 0, %29 %34 = load %33 %35 = zext i8 %34 to i32 %36 = icmp eq %35 0 br %36, %37, %38 37: store 1, @__CS_error store 2, @__CS_ret store 0, %1 br %49 38: %39 = load %2 %40 = zext i8 %39 to i64 %41 = load @__CS_round %42 = zext i8 %41 to i64 %43 = getelementptr @__CS_thread_status, 0, %42 %44 = getelementptr %43, 0, %40 %45 = load %44 %46 = zext i8 %45 to i32 %47 = icmp eq %46 2 %48 = zext i1 %47 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %48) store 0, %1 br %49 49: %50 = load %1 ret %50 *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 0: %1 = alloca i32, align 4 %2 = alloca *i8, align 8 %3 = alloca *i8, align 8 %4 = alloca *BasicFunctionType varArgs: falsereturnType: *i8paramTypes: (*i8), align 8 %5 = alloca *i8, align 8 store %id1, %2 store %attr, %3 store %t1, %4 store %arg, %5 %6 = load @__CS_thread_index %7 = zext i8 %6 to i32 %8 = icmp eq %7 2 br %8, %9, %11 9: %10 = load %2 store 123, %10 store -1, %1 br %35 11: %12 = load @__CS_thread_index %13 = add %12 1 store %13, @__CS_thread_index %14 = load @__CS_thread_index %15 = zext i8 %14 to i64 %16 = getelementptr @__CS_thread_allocated, 0, %15 store 1, %16 %17 = load @__CS_round %18 = load @__CS_thread_index %19 = zext i8 %18 to i64 %20 = getelementptr @__CS_thread_born_round, 0, %19 store %17, %20 %21 = load %4 %22 = load @__CS_thread_index %23 = zext i8 %22 to i64 %24 = getelementptr @__CS_thread, 0, %23 store %21, %24 %25 = load @__CS_thread_index %26 = zext i8 %25 to i64 %27 = load @__CS_round %28 = zext i8 %27 to i64 %29 = getelementptr @__CS_thread_status, 0, %28 %30 = getelementptr %29, 0, %26 store 1, %30 %31 = load @__CS_thread_index %32 = load %2 store %31, %32 %33 = load @__CS_thread_index %34 = zext i8 %33 to i32 store %34, %1 br %35 35: %36 = load %1 ret %36 *BasicFunctionTypename: "thr1" linkageType: EXTERNALLY_VISIBLE returnParam: *i8 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca *i8, align 8 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %2 = load @__CS_ret %3 = zext i8 %2 to i32 %4 = icmp ne %3 0 br %4, %5, %6 5: store null, %1 br %92 6: %7 = load @__CS_round %8 = zext i8 %7 to i64 %9 = getelementptr @flag1, 0, %8 store 1, %9 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %10 = load @__CS_ret %11 = zext i8 %10 to i32 %12 = icmp ne %11 0 br %12, %13, %14 13: store null, %1 br %92 14: %15 = load @__CS_round %16 = zext i8 %15 to i64 %17 = getelementptr @turn, 0, %16 store 1, %17 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %18 = load @__CS_ret %19 = zext i8 %18 to i32 %20 = icmp ne %19 0 br %20, %21, %22 21: store null, %1 br %92 22: br %23 23: %24 = load @__CS_round %25 = zext i8 %24 to i64 %26 = getelementptr @flag2, 0, %25 %27 = load %26 %28 = icmp eq %27 1 br %28, %29, %35 29: %30 = load @__CS_round %31 = zext i8 %30 to i64 %32 = getelementptr @turn, 0, %31 %33 = load %32 %34 = icmp eq %33 1 br %35 35: %36 = phi [0, %23], [%34, %29] br %36, %37, %43 37: Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %38 = load @__CS_ret %39 = zext i8 %38 to i32 %40 = icmp ne %39 0 br %40, %41, %42 41: store null, %1 br %92 42: br %23 43: Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %44 = load @__CS_ret %45 = zext i8 %44 to i32 %46 = icmp ne %45 0 br %46, %47, %48 47: store null, %1 br %92 48: Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %49 = load @__CS_ret %50 = zext i8 %49 to i32 %51 = icmp ne %50 0 br %51, %52, %53 52: store null, %1 br %92 53: %54 = load @__CS_round %55 = zext i8 %54 to i64 %56 = getelementptr @x, 0, %55 store 0, %56 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %57 = load @__CS_ret %58 = zext i8 %57 to i32 %59 = icmp ne %58 0 br %59, %60, %61 60: store null, %1 br %92 61: %62 = load @__CS_round %63 = zext i8 %62 to i64 %64 = getelementptr @x, 0, %63 %65 = load %64 %66 = icmp sle %65 0 br %66, %74, %67 67: Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %68 = load @__CS_ret %69 = zext i8 %68 to i32 %70 = icmp ne %69 0 br %70, %71, %72 71: store null, %1 br %92 72: br %73 73: store 1, @__CS_error store 2, @__CS_ret store null, %1 br %92 74: Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %75 = load @__CS_ret %76 = zext i8 %75 to i32 %77 = icmp ne %76 0 br %77, %78, %79 78: store null, %1 br %92 79: Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %80 = load @__CS_ret %81 = zext i8 %80 to i32 %82 = icmp ne %81 0 br %82, %83, %84 83: store null, %1 br %92 84: %85 = load @__CS_round %86 = zext i8 %85 to i64 %87 = getelementptr @flag1, 0, %86 store 0, %87 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %88 = load @__CS_ret %89 = zext i8 %88 to i32 %90 = icmp ne %89 0 br %90, %91, %92 91: store null, %1 br %92 92: %93 = load %1 ret %93 *BasicFunctionTypename: "thr2" linkageType: EXTERNALLY_VISIBLE returnParam: *i8 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca *i8, align 8 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %2 = load @__CS_ret %3 = zext i8 %2 to i32 %4 = icmp ne %3 0 br %4, %5, %6 5: store null, %1 br %92 6: %7 = load @__CS_round %8 = zext i8 %7 to i64 %9 = getelementptr @flag2, 0, %8 store 1, %9 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %10 = load @__CS_ret %11 = zext i8 %10 to i32 %12 = icmp ne %11 0 br %12, %13, %14 13: store null, %1 br %92 14: %15 = load @__CS_round %16 = zext i8 %15 to i64 %17 = getelementptr @turn, 0, %16 store 0, %17 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %18 = load @__CS_ret %19 = zext i8 %18 to i32 %20 = icmp ne %19 0 br %20, %21, %22 21: store null, %1 br %92 22: br %23 23: %24 = load @__CS_round %25 = zext i8 %24 to i64 %26 = getelementptr @flag1, 0, %25 %27 = load %26 %28 = icmp eq %27 1 br %28, %29, %35 29: %30 = load @__CS_round %31 = zext i8 %30 to i64 %32 = getelementptr @turn, 0, %31 %33 = load %32 %34 = icmp eq %33 0 br %35 35: %36 = phi [0, %23], [%34, %29] br %36, %37, %43 37: Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %38 = load @__CS_ret %39 = zext i8 %38 to i32 %40 = icmp ne %39 0 br %40, %41, %42 41: store null, %1 br %92 42: br %23 43: Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %44 = load @__CS_ret %45 = zext i8 %44 to i32 %46 = icmp ne %45 0 br %46, %47, %48 47: store null, %1 br %92 48: Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %49 = load @__CS_ret %50 = zext i8 %49 to i32 %51 = icmp ne %50 0 br %51, %52, %53 52: store null, %1 br %92 53: %54 = load @__CS_round %55 = zext i8 %54 to i64 %56 = getelementptr @x, 0, %55 store 1, %56 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %57 = load @__CS_ret %58 = zext i8 %57 to i32 %59 = icmp ne %58 0 br %59, %60, %61 60: store null, %1 br %92 61: %62 = load @__CS_round %63 = zext i8 %62 to i64 %64 = getelementptr @x, 0, %63 %65 = load %64 %66 = icmp sge %65 1 br %66, %74, %67 67: Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %68 = load @__CS_ret %69 = zext i8 %68 to i32 %70 = icmp ne %69 0 br %70, %71, %72 71: store null, %1 br %92 72: br %73 73: store 1, @__CS_error store 2, @__CS_ret store null, %1 br %92 74: Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %75 = load @__CS_ret %76 = zext i8 %75 to i32 %77 = icmp ne %76 0 br %77, %78, %79 78: store null, %1 br %92 79: Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %80 = load @__CS_ret %81 = zext i8 %80 to i32 %82 = icmp ne %81 0 br %82, %83, %84 83: store null, %1 br %92 84: %85 = load @__CS_round %86 = zext i8 %85 to i64 %87 = getelementptr @flag2, 0, %86 store 0, %87 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %88 = load @__CS_ret %89 = zext i8 %88 to i32 %90 = icmp ne %89 0 br %90, %91, %92 91: store null, %1 br %92 92: %93 = load %1 ret %93 *BasicFunctionTypename: "main_thread" linkageType: EXTERNALLY_VISIBLE returnParam: *i8 parameters: (arg *i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca *i8, align 8 %2 = alloca *i8, align 8 %t1 = alloca i8, align 1 %t2 = alloca i8, align 1 store %arg, %2 Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %3 = load @__CS_ret %4 = zext i8 %3 to i32 %5 = icmp ne %4 0 br %5, %6, %7 6: store null, %1 br %33 7: %8 = call i32 @__CS_pthread_create(*i8 %t1, *i8 null, *BasicFunctionType varArgs: falsereturnType: *i8paramTypes: (*i8) aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMConversionConstExpr@77afc829, *i8 null) Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %9 = load @__CS_ret %10 = zext i8 %9 to i32 %11 = icmp ne %10 0 br %11, %12, %13 12: store null, %1 br %33 13: %14 = call i32 @__CS_pthread_create(*i8 %t2, *i8 null, *BasicFunctionType varArgs: falsereturnType: *i8paramTypes: (*i8) aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMConversionConstExpr@797fb52f, *i8 null) Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %15 = load @__CS_ret %16 = zext i8 %15 to i32 %17 = icmp ne %16 0 br %17, %18, %19 18: store null, %1 br %33 19: %20 = load %t1 %21 = call i32 @__CS_pthread_join(i8 zeroext %20, **i8 null) Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %22 = load @__CS_ret %23 = zext i8 %22 to i32 %24 = icmp ne %23 0 br %24, %25, %26 25: store null, %1 br %33 26: %27 = load %t2 %28 = call i32 @__CS_pthread_join(i8 zeroext %27, **i8 null) Unnamed Call-Instruction = call BasicVoidType @__CS_cs() %29 = load @__CS_ret %30 = zext i8 %29 to i32 %31 = icmp ne %30 0 br %31, %32, %33 32: store null, %1 br %33 33: %34 = load %1 ret %34 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %__CS_cp___CS_thread_status = alloca [3 x [3 x i8]], align 1 %__CS_cp___CS_thread_lockedon = alloca [3 x [3 x *i8]], align 16 %__CS_cp_flag1 = alloca [3 x i32], align 4 %__CS_cp_flag2 = alloca [3 x i32], align 4 %__CS_cp_turn = alloca [3 x i32], align 4 %__CS_cp_x = alloca [3 x i32], align 4 store 0, %1 %2 = getelementptr %__CS_cp___CS_thread_status, 0, 1 %3 = getelementptr %2, 0, 0 %4 = load %3 store %4, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@6fdb0111 %5 = getelementptr %__CS_cp___CS_thread_status, 0, 2 %6 = getelementptr %5, 0, 0 %7 = load %6 store %7, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@611cf29a %8 = getelementptr %__CS_cp___CS_thread_status, 0, 1 %9 = getelementptr %8, 0, 1 %10 = load %9 store %10, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@65236a61 %11 = getelementptr %__CS_cp___CS_thread_status, 0, 2 %12 = getelementptr %11, 0, 1 %13 = load %12 store %13, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@2021f8a1 %14 = getelementptr %__CS_cp___CS_thread_status, 0, 1 %15 = getelementptr %14, 0, 2 %16 = load %15 store %16, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@1745b63d %17 = getelementptr %__CS_cp___CS_thread_status, 0, 2 %18 = getelementptr %17, 0, 2 %19 = load %18 store %19, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@11cb1e6d %20 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 1 %21 = getelementptr %20, 0, 0 %22 = load %21 store %22, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@6f450e57 %23 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 2 %24 = getelementptr %23, 0, 0 %25 = load %24 store %25, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@400e07ee %26 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 1 %27 = getelementptr %26, 0, 1 %28 = load %27 store %28, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@7ac0a58c %29 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 2 %30 = getelementptr %29, 0, 1 %31 = load %30 store %31, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@33b1e4cf %32 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 1 %33 = getelementptr %32, 0, 2 %34 = load %33 store %34, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@74416358 %35 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 2 %36 = getelementptr %35, 0, 2 %37 = load %36 store %37, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@44403b49 %38 = getelementptr %__CS_cp_flag1, 0, 1 %39 = load %38 store %39, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@3bd30a88 %40 = getelementptr %__CS_cp_flag1, 0, 2 %41 = load %40 store %41, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@7f816a1 %42 = getelementptr %__CS_cp_flag2, 0, 1 %43 = load %42 store %43, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@785ceea5 %44 = getelementptr %__CS_cp_flag2, 0, 2 %45 = load %44 store %45, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@3d031894 %46 = getelementptr %__CS_cp_turn, 0, 1 %47 = load %46 store %47, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@1ea7d2f6 %48 = getelementptr %__CS_cp_turn, 0, 2 %49 = load %48 store %49, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@592d829d %50 = getelementptr %__CS_cp_x, 0, 1 %51 = load %50 store %51, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@461b76db %52 = getelementptr %__CS_cp_x, 0, 2 %53 = load %52 store %53, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@63f91134 store 0, @__CS_round store 0, @__CS_thread_index %54 = load @__CS_round store %54, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@43e95fdf store 1, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@76651455 store @main_thread, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@6bd519ec store 1, aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@408ed513 %55 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@49106d7a %56 = zext i8 %55 to i32 %57 = icmp eq %56 1 br %57, %58, %71 58: %59 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@17890fb1 store %59, @__CS_round store 0, @__CS_ret %60 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@54507ed5 %61 = call *i8 %60(*i8 null) %62 = load @__CS_ret %63 = zext i8 %62 to i32 %64 = icmp ne %63 1 br %64, %65, %70 65: %66 = load @__CS_round %67 = zext i8 %66 to i64 %68 = getelementptr @__CS_thread_status, 0, %67 %69 = getelementptr %68, 0, 0 store 2, %69 br %70 70: br %71 71: %72 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@62401f01 %73 = zext i8 %72 to i32 %74 = icmp eq %73 1 br %74, %75, %88 75: %76 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@2871d58e store %76, @__CS_round store 0, @__CS_ret %77 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@775aa3b6 %78 = call *i8 %77(*i8 null) %79 = load @__CS_ret %80 = zext i8 %79 to i32 %81 = icmp ne %80 1 br %81, %82, %87 82: %83 = load @__CS_round %84 = zext i8 %83 to i64 %85 = getelementptr @__CS_thread_status, 0, %84 %86 = getelementptr %85, 0, 1 store 2, %86 br %87 87: br %88 88: %89 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@202bcd5e %90 = zext i8 %89 to i32 %91 = icmp eq %90 1 br %91, %92, %105 92: %93 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@42f1664d store %93, @__CS_round store 0, @__CS_ret %94 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@648a1638 %95 = call *i8 %94(*i8 null) %96 = load @__CS_ret %97 = zext i8 %96 to i32 %98 = icmp ne %97 1 br %98, %99, %104 99: %100 = load @__CS_round %101 = zext i8 %100 to i64 %102 = getelementptr @__CS_thread_status, 0, %101 %103 = getelementptr %102, 0, 2 store 2, %103 br %104 104: br %105 105: %106 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@46ef5e0c %107 = zext i8 %106 to i32 %108 = getelementptr %__CS_cp___CS_thread_status, 0, 1 %109 = getelementptr %108, 0, 0 %110 = load %109 %111 = zext i8 %110 to i32 %112 = icmp eq %107 %111 %113 = zext i1 %112 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %113) %114 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@38d03ab2 %115 = zext i8 %114 to i32 %116 = getelementptr %__CS_cp___CS_thread_status, 0, 2 %117 = getelementptr %116, 0, 0 %118 = load %117 %119 = zext i8 %118 to i32 %120 = icmp eq %115 %119 %121 = zext i1 %120 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %121) %122 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@71dae0eb %123 = zext i8 %122 to i32 %124 = getelementptr %__CS_cp___CS_thread_status, 0, 1 %125 = getelementptr %124, 0, 1 %126 = load %125 %127 = zext i8 %126 to i32 %128 = icmp eq %123 %127 %129 = zext i1 %128 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %129) %130 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@4555033e %131 = zext i8 %130 to i32 %132 = getelementptr %__CS_cp___CS_thread_status, 0, 2 %133 = getelementptr %132, 0, 1 %134 = load %133 %135 = zext i8 %134 to i32 %136 = icmp eq %131 %135 %137 = zext i1 %136 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %137) %138 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@79f63aa6 %139 = zext i8 %138 to i32 %140 = getelementptr %__CS_cp___CS_thread_status, 0, 1 %141 = getelementptr %140, 0, 2 %142 = load %141 %143 = zext i8 %142 to i32 %144 = icmp eq %139 %143 %145 = zext i1 %144 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %145) %146 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@40ca9a80 %147 = zext i8 %146 to i32 %148 = getelementptr %__CS_cp___CS_thread_status, 0, 2 %149 = getelementptr %148, 0, 2 %150 = load %149 %151 = zext i8 %150 to i32 %152 = icmp eq %147 %151 %153 = zext i1 %152 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %153) %154 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@66b1f7ca %155 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 1 %156 = getelementptr %155, 0, 0 %157 = load %156 %158 = icmp eq %154 %157 %159 = zext i1 %158 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %159) %160 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@b9054d1 %161 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 2 %162 = getelementptr %161, 0, 0 %163 = load %162 %164 = icmp eq %160 %163 %165 = zext i1 %164 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %165) %166 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@437b6c0f %167 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 1 %168 = getelementptr %167, 0, 1 %169 = load %168 %170 = icmp eq %166 %169 %171 = zext i1 %170 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %171) %172 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@5771e07a %173 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 2 %174 = getelementptr %173, 0, 1 %175 = load %174 %176 = icmp eq %172 %175 %177 = zext i1 %176 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %177) %178 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@3e1742f9 %179 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 1 %180 = getelementptr %179, 0, 2 %181 = load %180 %182 = icmp eq %178 %181 %183 = zext i1 %182 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %183) %184 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@3728af36 %185 = getelementptr %__CS_cp___CS_thread_lockedon, 0, 2 %186 = getelementptr %185, 0, 2 %187 = load %186 %188 = icmp eq %184 %187 %189 = zext i1 %188 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %189) %190 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@2faba6c8 %191 = getelementptr %__CS_cp_flag1, 0, 1 %192 = load %191 %193 = icmp eq %190 %192 %194 = zext i1 %193 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %194) %195 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@7701f177 %196 = getelementptr %__CS_cp_flag1, 0, 2 %197 = load %196 %198 = icmp eq %195 %197 %199 = zext i1 %198 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %199) %200 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@738575e4 %201 = getelementptr %__CS_cp_flag2, 0, 1 %202 = load %201 %203 = icmp eq %200 %202 %204 = zext i1 %203 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %204) %205 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@1a625bd %206 = getelementptr %__CS_cp_flag2, 0, 2 %207 = load %206 %208 = icmp eq %205 %207 %209 = zext i1 %208 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %209) %210 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@73c94ea7 %211 = getelementptr %__CS_cp_turn, 0, 1 %212 = load %211 %213 = icmp eq %210 %212 %214 = zext i1 %213 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %214) %215 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@b3b83e0 %216 = getelementptr %__CS_cp_turn, 0, 2 %217 = load %216 %218 = icmp eq %215 %217 %219 = zext i1 %218 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %219) %220 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@53c9fd36 %221 = getelementptr %__CS_cp_x, 0, 1 %222 = load %221 %223 = icmp eq %220 %222 %224 = zext i1 %223 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %224) %225 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@63f2a13f %226 = getelementptr %__CS_cp_x, 0, 2 %227 = load %226 %228 = icmp eq %225 %227 %229 = zext i1 %228 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i32 %229) %230 = load @__CS_error %231 = zext i8 %230 to i32 %232 = icmp ne %231 1 %233 = zext i1 %232 to i32 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assert(i32 %233) %234 = load %1 ret %234 Analyze Termination of all function calls matching the pattern: main()