/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: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Termination of the given C Problem could not be shown: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 171 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: Global variables: Name: pc_0 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: pc_1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: pc_2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: E_0 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: E_1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: E_2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: E_3 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: _I_21_1_0 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: _I_21_1_1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: _I_21_1_2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: _pc_21_1_0 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: _pc_21_1_1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: _pc_21_1_2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: _E_21_1_0 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: _E_21_1_1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: _E_21_1_2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: _E_21_1_3 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: I_0 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: I_1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: I_2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Function declarations and definitions: *BasicFunctionTypename: "__VERIFIER_assume" returnParam: i32 parameters: () variableLength: true visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "setpc" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (x0 i32, x1 i32, value i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca i32, align 4 %3 = alloca i32, align 4 store %x0, %1 store %x1, %2 store %value, %3 %4 = load %1 %5 = mul 3 %4 %6 = load %2 %7 = add %5 %6 switch %7, %17 [0, %8 1, %11 2, %14] 8: %9 = load %3 %10 = trunc i32 %9 to i8 store %10, @pc_0 br %17 11: %12 = load %3 %13 = trunc i32 %12 to i8 store %13, @pc_1 br %17 14: %15 = load %3 %16 = trunc i32 %15 to i8 store %16, @pc_2 br %17 17: ret void *BasicFunctionTypename: "getE" linkageType: EXTERNALLY_VISIBLE returnParam: i8 signext parameters: (x0 i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = alloca i32, align 4 store %x0, %2 %3 = load %2 switch %3, %12 [0, %4 1, %6 2, %8 3, %10] 4: %5 = load @E_0 store %5, %1 br %12 6: %7 = load @E_1 store %7, %1 br %12 8: %9 = load @E_2 store %9, %1 br %12 10: %11 = load @E_3 store %11, %1 br %12 12: %13 = load %1 ret %13 *BasicFunctionTypename: "get_I_21_1" linkageType: EXTERNALLY_VISIBLE returnParam: i8 signext parameters: (x0 i32, x1 i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = alloca i32, align 4 %3 = alloca i32, align 4 store %x0, %2 store %x1, %3 %4 = load %2 %5 = mul 3 %4 %6 = load %3 %7 = add %5 %6 switch %7, %14 [0, %8 1, %10 2, %12] 8: %9 = load @_I_21_1_0 store %9, %1 br %14 10: %11 = load @_I_21_1_1 store %11, %1 br %14 12: %13 = load @_I_21_1_2 store %13, %1 br %14 14: %15 = load %1 ret %15 *BasicFunctionTypename: "get_pc_21_1" linkageType: EXTERNALLY_VISIBLE returnParam: i8 zeroext parameters: (x0 i32, x1 i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = alloca i32, align 4 %3 = alloca i32, align 4 store %x0, %2 store %x1, %3 %4 = load %2 %5 = mul 3 %4 %6 = load %3 %7 = add %5 %6 switch %7, %14 [0, %8 1, %10 2, %12] 8: %9 = load @_pc_21_1_0 store %9, %1 br %14 10: %11 = load @_pc_21_1_1 store %11, %1 br %14 12: %13 = load @_pc_21_1_2 store %13, %1 br %14 14: %15 = load %1 ret %15 *BasicFunctionTypename: "getpc" linkageType: EXTERNALLY_VISIBLE returnParam: i8 zeroext parameters: (x0 i32, x1 i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = alloca i32, align 4 %3 = alloca i32, align 4 store %x0, %2 store %x1, %3 %4 = load %2 %5 = mul 3 %4 %6 = load %3 %7 = add %5 %6 switch %7, %14 [0, %8 1, %10 2, %12] 8: %9 = load @pc_0 store %9, %1 br %14 10: %11 = load @pc_1 store %11, %1 br %14 12: %13 = load @pc_2 store %13, %1 br %14 14: %15 = load %1 ret %15 *BasicFunctionTypename: "get_E_21_1" linkageType: EXTERNALLY_VISIBLE returnParam: i8 signext parameters: (x0 i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = alloca i32, align 4 store %x0, %2 %3 = load %2 switch %3, %12 [0, %4 1, %6 2, %8 3, %10] 4: %5 = load @_E_21_1_0 store %5, %1 br %12 6: %7 = load @_E_21_1_1 store %7, %1 br %12 8: %9 = load @_E_21_1_2 store %9, %1 br %12 10: %11 = load @_E_21_1_3 store %11, %1 br %12 12: %13 = load %1 ret %13 *BasicFunctionTypename: "getI" linkageType: EXTERNALLY_VISIBLE returnParam: i8 signext parameters: (x0 i32, x1 i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = alloca i32, align 4 %3 = alloca i32, align 4 store %x0, %2 store %x1, %3 %4 = load %2 %5 = mul 3 %4 %6 = load %3 %7 = add %5 %6 switch %7, %14 [0, %8 1, %10 2, %12] 8: %9 = load @I_0 store %9, %1 br %14 10: %11 = load @I_1 store %11, %1 br %14 12: %13 = load @I_2 store %13, %1 br %14 14: %15 = load %1 ret %15 *BasicFunctionTypename: "setI" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (x0 i32, x1 i32, value i8 signext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca i32, align 4 %3 = alloca i8, align 1 store %x0, %1 store %x1, %2 store %value, %3 %4 = load %1 %5 = mul 3 %4 %6 = load %2 %7 = add %5 %6 switch %7, %14 [0, %8 1, %10 2, %12] 8: %9 = load %3 store %9, @I_0 br %14 10: %11 = load %3 store %11, @I_1 br %14 12: %13 = load %3 store %13, @I_2 br %14 14: ret void *BasicFunctionTypename: "attr" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (id i8 zeroext, key i8 zeroext, value i8 signext, check i1 zeroext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = alloca i8, align 1 %3 = alloca i8, align 1 %4 = alloca i8, align 1 store %id, %1 store %key, %2 store %value, %3 %5 = zext i1 %check to i8 store %5, %4 %6 = load %1 %7 = zext i8 %6 to i32 %8 = load %2 %9 = zext i8 %8 to i32 %10 = load %3 Unnamed Call-Instruction = call BasicVoidType @setI(i32 %7, i32 %9, i8 signext %10) ret void *BasicFunctionTypename: "_0_13" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (tid i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %val0 = alloca i8, align 1 store %tid, %1 %2 = call signext i8 @getE(i32 0) %3 = sext i8 %2 to i32 %4 = load %1 %5 = icmp ne %3 %4 %6 = zext i1 %5 to i32 %7 = call i32 (...)* @__VERIFIER_assume(i32 %6) %8 = call signext i8 @getE(i32 1) %9 = sext i8 %8 to i32 %10 = icmp eq %9 1 %11 = zext i1 %10 to i32 %12 = call i32 (...)* @__VERIFIER_assume(i32 %11) %13 = call signext i8 @getE(i32 2) %14 = sext i8 %13 to i32 %15 = icmp eq %14 3 br %15, %16, %21 16: %17 = load %1 %18 = call signext i8 @getI(i32 %17, i32 0) %19 = sext i8 %18 to i32 %20 = icmp eq %19 2 br %21 21: %22 = phi [0, %0], [%20, %16] %23 = zext i1 %22 to i32 %24 = call i32 (...)* @__VERIFIER_assume(i32 %23) store 3, %val0 %25 = load %1 %26 = trunc i32 %25 to i8 %27 = load %val0 Unnamed Call-Instruction = call BasicVoidType @attr(i8 zeroext %26, i8 zeroext 0, i8 signext %27, i1 zeroext 1) %28 = load %1 Unnamed Call-Instruction = call BasicVoidType @setpc(i32 %28, i32 0, i32 12) ret void *BasicFunctionTypename: "_0_6" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (tid i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %val0 = alloca i8, align 1 store %tid, %1 store 2, %val0 %2 = load %1 %3 = trunc i32 %2 to i8 %4 = load %val0 Unnamed Call-Instruction = call BasicVoidType @attr(i8 zeroext %3, i8 zeroext 0, i8 signext %4, i1 zeroext 1) %5 = load %1 Unnamed Call-Instruction = call BasicVoidType @setpc(i32 %5, i32 0, i32 5) ret void *BasicFunctionTypename: "_0_3" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (tid i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %val0 = alloca i8, align 1 store %tid, %1 %2 = call signext i8 @getE(i32 1) %3 = sext i8 %2 to i32 %4 = icmp eq %3 2 br %4, %5, %10 5: %6 = call signext i8 @getE(i32 0) %7 = sext i8 %6 to i32 %8 = load %1 %9 = icmp eq %7 %8 br %10 10: %11 = phi [0, %0], [%9, %5] %12 = zext i1 %11 to i32 %13 = call i32 (...)* @__VERIFIER_assume(i32 %12) %14 = load %1 %15 = call signext i8 @getI(i32 %14, i32 0) %16 = sext i8 %15 to i32 %17 = icmp eq %16 1 br %17, %18, %22 18: %19 = call signext i8 @getE(i32 3) %20 = sext i8 %19 to i32 %21 = icmp eq %20 0 br %22 22: %23 = phi [0, %10], [%21, %18] %24 = zext i1 %23 to i32 %25 = call i32 (...)* @__VERIFIER_assume(i32 %24) store 3, %val0 %26 = load %1 %27 = trunc i32 %26 to i8 %28 = load %val0 Unnamed Call-Instruction = call BasicVoidType @attr(i8 zeroext %27, i8 zeroext 0, i8 signext %28, i1 zeroext 1) %29 = load %1 Unnamed Call-Instruction = call BasicVoidType @setpc(i32 %29, i32 0, i32 2) ret void *BasicFunctionTypename: "_0_11" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (tid i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %val0 = alloca i8, align 1 store %tid, %1 %2 = call signext i8 @getE(i32 0) %3 = sext i8 %2 to i32 %4 = load %1 %5 = icmp ne %3 %4 %6 = zext i1 %5 to i32 %7 = call i32 (...)* @__VERIFIER_assume(i32 %6) %8 = call signext i8 @getE(i32 1) %9 = sext i8 %8 to i32 %10 = icmp eq %9 1 %11 = zext i1 %10 to i32 %12 = call i32 (...)* @__VERIFIER_assume(i32 %11) %13 = call signext i8 @getE(i32 2) %14 = sext i8 %13 to i32 %15 = icmp eq %14 0 br %15, %16, %21 16: %17 = load %1 %18 = call signext i8 @getI(i32 %17, i32 0) %19 = sext i8 %18 to i32 %20 = icmp eq %19 3 br %21 21: %22 = phi [0, %0], [%20, %16] %23 = zext i1 %22 to i32 %24 = call i32 (...)* @__VERIFIER_assume(i32 %23) store 2, %val0 %25 = load %1 %26 = trunc i32 %25 to i8 %27 = load %val0 Unnamed Call-Instruction = call BasicVoidType @attr(i8 zeroext %26, i8 zeroext 0, i8 signext %27, i1 zeroext 1) %28 = load %1 Unnamed Call-Instruction = call BasicVoidType @setpc(i32 %28, i32 0, i32 10) ret void *BasicFunctionTypename: "_0_9" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (tid i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %val0 = alloca i8, align 1 store %tid, %1 %2 = call signext i8 @getE(i32 0) %3 = sext i8 %2 to i32 %4 = load %1 %5 = icmp ne %3 %4 %6 = zext i1 %5 to i32 %7 = call i32 (...)* @__VERIFIER_assume(i32 %6) %8 = call signext i8 @getE(i32 1) %9 = sext i8 %8 to i32 %10 = icmp eq %9 1 %11 = zext i1 %10 to i32 %12 = call i32 (...)* @__VERIFIER_assume(i32 %11) %13 = call signext i8 @getE(i32 2) %14 = sext i8 %13 to i32 %15 = icmp eq %14 1 br %15, %16, %21 16: %17 = load %1 %18 = call signext i8 @getI(i32 %17, i32 0) %19 = sext i8 %18 to i32 %20 = icmp eq %19 2 br %21 21: %22 = phi [0, %0], [%20, %16] %23 = zext i1 %22 to i32 %24 = call i32 (...)* @__VERIFIER_assume(i32 %23) store 3, %val0 %25 = load %1 %26 = trunc i32 %25 to i8 %27 = load %val0 Unnamed Call-Instruction = call BasicVoidType @attr(i8 zeroext %26, i8 zeroext 0, i8 signext %27, i1 zeroext 1) %28 = load %1 Unnamed Call-Instruction = call BasicVoidType @setpc(i32 %28, i32 0, i32 8) ret void *BasicFunctionTypename: "setE" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (x0 i32, value i8 signext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca i8, align 1 store %x0, %1 store %value, %2 %3 = load %1 switch %3, %12 [0, %4 1, %6 2, %8 3, %10] 4: %5 = load %2 store %5, @E_0 br %12 6: %7 = load %2 store %7, @E_1 br %12 8: %9 = load %2 store %9, @E_2 br %12 10: %11 = load %2 store %11, @E_3 br %12 12: ret void *BasicFunctionTypename: "init" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %i = alloca i8, align 1 %j = alloca i8, align 1 %1 = call i32 @__VERIFIER_nondet_int() %2 = trunc i32 %1 to i8 store %2, %i %3 = call i32 @__VERIFIER_nondet_int() %4 = trunc i32 %3 to i8 store %4, %j %5 = call zeroext i8 @get_pc_21_1(i32 0, i32 0) %6 = zext i8 %5 to i32 %7 = icmp eq %6 3 br %7, %28, %8 8: %9 = call zeroext i8 @get_pc_21_1(i32 0, i32 0) %10 = zext i8 %9 to i32 %11 = icmp eq %10 4 br %11, %28, %12 12: %13 = call zeroext i8 @get_pc_21_1(i32 0, i32 0) %14 = zext i8 %13 to i32 %15 = icmp eq %14 7 br %15, %28, %16 16: %17 = call zeroext i8 @get_pc_21_1(i32 0, i32 0) %18 = zext i8 %17 to i32 %19 = icmp eq %18 9 br %19, %28, %20 20: %21 = call zeroext i8 @get_pc_21_1(i32 0, i32 0) %22 = zext i8 %21 to i32 %23 = icmp eq %22 11 br %23, %28, %24 24: %25 = call zeroext i8 @get_pc_21_1(i32 0, i32 0) %26 = zext i8 %25 to i32 %27 = icmp eq %26 13 br %28 28: %29 = phi [1, %20], [1, %16], [1, %12], [1, %8], [1, %0], [%27, %24] %30 = zext i1 %29 to i32 %31 = call i32 (...)* @__VERIFIER_assume(i32 %30) %32 = call zeroext i8 @get_pc_21_1(i32 1, i32 0) %33 = zext i8 %32 to i32 %34 = icmp eq %33 3 br %34, %55, %35 35: %36 = call zeroext i8 @get_pc_21_1(i32 1, i32 0) %37 = zext i8 %36 to i32 %38 = icmp eq %37 4 br %38, %55, %39 39: %40 = call zeroext i8 @get_pc_21_1(i32 1, i32 0) %41 = zext i8 %40 to i32 %42 = icmp eq %41 7 br %42, %55, %43 43: %44 = call zeroext i8 @get_pc_21_1(i32 1, i32 0) %45 = zext i8 %44 to i32 %46 = icmp eq %45 9 br %46, %55, %47 47: %48 = call zeroext i8 @get_pc_21_1(i32 1, i32 0) %49 = zext i8 %48 to i32 %50 = icmp eq %49 11 br %50, %55, %51 51: %52 = call zeroext i8 @get_pc_21_1(i32 1, i32 0) %53 = zext i8 %52 to i32 %54 = icmp eq %53 13 br %55 55: %56 = phi [1, %47], [1, %43], [1, %39], [1, %35], [1, %28], [%54, %51] %57 = zext i1 %56 to i32 %58 = call i32 (...)* @__VERIFIER_assume(i32 %57) %59 = call zeroext i8 @get_pc_21_1(i32 2, i32 0) %60 = zext i8 %59 to i32 %61 = icmp eq %60 3 br %61, %82, %62 62: %63 = call zeroext i8 @get_pc_21_1(i32 2, i32 0) %64 = zext i8 %63 to i32 %65 = icmp eq %64 4 br %65, %82, %66 66: %67 = call zeroext i8 @get_pc_21_1(i32 2, i32 0) %68 = zext i8 %67 to i32 %69 = icmp eq %68 7 br %69, %82, %70 70: %71 = call zeroext i8 @get_pc_21_1(i32 2, i32 0) %72 = zext i8 %71 to i32 %73 = icmp eq %72 9 br %73, %82, %74 74: %75 = call zeroext i8 @get_pc_21_1(i32 2, i32 0) %76 = zext i8 %75 to i32 %77 = icmp eq %76 11 br %77, %82, %78 78: %79 = call zeroext i8 @get_pc_21_1(i32 2, i32 0) %80 = zext i8 %79 to i32 %81 = icmp eq %80 13 br %82 82: %83 = phi [1, %74], [1, %70], [1, %66], [1, %62], [1, %55], [%81, %78] %84 = zext i1 %83 to i32 %85 = call i32 (...)* @__VERIFIER_assume(i32 %84) %86 = call signext i8 @get_E_21_1(i32 0) %87 = sext i8 %86 to i32 %88 = icmp eq %87 -1 %89 = zext i1 %88 to i32 %90 = call i32 (...)* @__VERIFIER_assume(i32 %89) %91 = call signext i8 @get_E_21_1(i32 1) %92 = sext i8 %91 to i32 %93 = icmp eq %92 0 %94 = zext i1 %93 to i32 %95 = call i32 (...)* @__VERIFIER_assume(i32 %94) %96 = call signext i8 @get_E_21_1(i32 2) %97 = sext i8 %96 to i32 %98 = icmp eq %97 -1 %99 = zext i1 %98 to i32 %100 = call i32 (...)* @__VERIFIER_assume(i32 %99) %101 = call signext i8 @get_E_21_1(i32 3) %102 = sext i8 %101 to i32 %103 = icmp eq %102 -1 %104 = zext i1 %103 to i32 %105 = call i32 (...)* @__VERIFIER_assume(i32 %104) %106 = call signext i8 @get_I_21_1(i32 0, i32 0) %107 = sext i8 %106 to i32 %108 = icmp eq %107 0 %109 = zext i1 %108 to i32 %110 = call i32 (...)* @__VERIFIER_assume(i32 %109) %111 = call signext i8 @get_I_21_1(i32 1, i32 0) %112 = sext i8 %111 to i32 %113 = icmp eq %112 0 %114 = zext i1 %113 to i32 %115 = call i32 (...)* @__VERIFIER_assume(i32 %114) %116 = call signext i8 @get_I_21_1(i32 2, i32 0) %117 = sext i8 %116 to i32 %118 = icmp eq %117 1 %119 = zext i1 %118 to i32 %120 = call i32 (...)* @__VERIFIER_assume(i32 %119) store 0, %i br %121 121: %122 = load %i %123 = zext i8 %122 to i32 %124 = icmp slt %123 4 br %124, %125, %134 125: %126 = load %i %127 = zext i8 %126 to i32 %128 = load %i %129 = zext i8 %128 to i32 %130 = call signext i8 @get_E_21_1(i32 %129) Unnamed Call-Instruction = call BasicVoidType @setE(i32 %127, i8 signext %130) br %131 131: %132 = load %i %133 = add %132 1 store %133, %i br %121 134: store 0, %i br %135 135: %136 = load %i %137 = zext i8 %136 to i32 %138 = icmp slt %137 3 br %138, %139, %180 139: store 0, %j br %140 140: %141 = load %j %142 = zext i8 %141 to i32 %143 = icmp slt %142 1 br %143, %144, %158 144: %145 = load %i %146 = zext i8 %145 to i32 %147 = load %j %148 = zext i8 %147 to i32 %149 = load %i %150 = zext i8 %149 to i32 %151 = load %j %152 = zext i8 %151 to i32 %153 = call zeroext i8 @get_pc_21_1(i32 %150, i32 %152) %154 = zext i8 %153 to i32 Unnamed Call-Instruction = call BasicVoidType @setpc(i32 %146, i32 %148, i32 %154) br %155 155: %156 = load %j %157 = add %156 1 store %157, %j br %140 158: store 0, %j br %159 159: %160 = load %j %161 = zext i8 %160 to i32 %162 = icmp slt %161 1 br %162, %163, %176 163: %164 = load %i %165 = zext i8 %164 to i32 %166 = load %j %167 = zext i8 %166 to i32 %168 = load %i %169 = zext i8 %168 to i32 %170 = load %j %171 = zext i8 %170 to i32 %172 = call signext i8 @get_I_21_1(i32 %169, i32 %171) Unnamed Call-Instruction = call BasicVoidType @setI(i32 %165, i32 %167, i8 signext %172) br %173 173: %174 = load %j %175 = add %174 1 store %175, %j br %159 176: br %177 177: %178 = load %i %179 = add %178 1 store %179, %i br %135 180: ret void *BasicFunctionTypename: "env" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (id i8 zeroext, key i8 zeroext, value i8 signext, check i1 zeroext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = alloca i8, align 1 %3 = alloca i8, align 1 %4 = alloca i8, align 1 store %id, %1 store %key, %2 store %value, %3 %5 = zext i1 %check to i8 store %5, %4 %6 = load %2 %7 = zext i8 %6 to i32 %8 = load %3 Unnamed Call-Instruction = call BasicVoidType @setE(i32 %7, i8 signext %8) ret void *BasicFunctionTypename: "_0_7" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (tid i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %val0 = alloca i8, align 1 %val1 = alloca i8, align 1 store %tid, %1 %2 = call signext i8 @getE(i32 0) %3 = sext i8 %2 to i32 %4 = load %1 %5 = icmp ne %3 %4 %6 = zext i1 %5 to i32 %7 = call i32 (...)* @__VERIFIER_assume(i32 %6) %8 = call signext i8 @getE(i32 1) %9 = sext i8 %8 to i32 %10 = icmp eq %9 1 %11 = zext i1 %10 to i32 %12 = call i32 (...)* @__VERIFIER_assume(i32 %11) %13 = call signext i8 @getE(i32 2) %14 = sext i8 %13 to i32 %15 = icmp eq %14 1 br %15, %16, %21 16: %17 = load %1 %18 = call signext i8 @getI(i32 %17, i32 0) %19 = sext i8 %18 to i32 %20 = icmp eq %19 0 br %21 21: %22 = phi [0, %0], [%20, %16] %23 = zext i1 %22 to i32 %24 = call i32 (...)* @__VERIFIER_assume(i32 %23) store 2, %val0 %25 = load %1 %26 = call signext i8 @getI(i32 %25, i32 0) store %26, %val1 %27 = load %1 %28 = trunc i32 %27 to i8 %29 = load %val0 Unnamed Call-Instruction = call BasicVoidType @env(i8 zeroext %28, i8 zeroext 1, i8 signext %29, i1 zeroext 1) %30 = load %1 %31 = trunc i32 %30 to i8 %32 = load %val1 Unnamed Call-Instruction = call BasicVoidType @env(i8 zeroext %31, i8 zeroext 3, i8 signext %32, i1 zeroext 0) %33 = load %1 Unnamed Call-Instruction = call BasicVoidType @setpc(i32 %33, i32 0, i32 6) ret void *BasicFunctionTypename: "_0_8" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (tid i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %val0 = alloca i8, align 1 %val1 = alloca i8, align 1 %pc0 = alloca i8, align 1 store %tid, %1 store -1, %val0 store 0, %val1 %2 = load %1 %3 = trunc i32 %2 to i8 %4 = load %val0 Unnamed Call-Instruction = call BasicVoidType @env(i8 zeroext %3, i8 zeroext 0, i8 signext %4, i1 zeroext 1) %5 = load %1 %6 = trunc i32 %5 to i8 %7 = load %val1 Unnamed Call-Instruction = call BasicVoidType @env(i8 zeroext %6, i8 zeroext 1, i8 signext %7, i1 zeroext 0) %8 = call i32 @__VERIFIER_nondet_int() %9 = trunc i32 %8 to i8 store %9, %pc0 %10 = load %pc0 %11 = zext i8 %10 to i32 %12 = icmp eq %11 3 br %12, %33, %13 13: %14 = load %pc0 %15 = zext i8 %14 to i32 %16 = icmp eq %15 4 br %16, %33, %17 17: %18 = load %pc0 %19 = zext i8 %18 to i32 %20 = icmp eq %19 7 br %20, %33, %21 21: %22 = load %pc0 %23 = zext i8 %22 to i32 %24 = icmp eq %23 9 br %24, %33, %25 25: %26 = load %pc0 %27 = zext i8 %26 to i32 %28 = icmp eq %27 11 br %28, %33, %29 29: %30 = load %pc0 %31 = zext i8 %30 to i32 %32 = icmp eq %31 13 br %33 33: %34 = phi [1, %25], [1, %21], [1, %17], [1, %13], [1, %0], [%32, %29] %35 = zext i1 %34 to i32 %36 = call i32 (...)* @__VERIFIER_assume(i32 %35) %37 = load %1 %38 = load %pc0 %39 = zext i8 %38 to i32 Unnamed Call-Instruction = call BasicVoidType @setpc(i32 %37, i32 0, i32 %39) ret void *BasicFunctionTypename: "_0_2" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (tid i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %val0 = alloca i8, align 1 %pc0 = alloca i8, align 1 store %tid, %1 store 3, %val0 %2 = load %1 %3 = trunc i32 %2 to i8 %4 = load %val0 Unnamed Call-Instruction = call BasicVoidType @env(i8 zeroext %3, i8 zeroext 1, i8 signext %4, i1 zeroext 1) %5 = call i32 @__VERIFIER_nondet_int() %6 = trunc i32 %5 to i8 store %6, %pc0 %7 = load %pc0 %8 = zext i8 %7 to i32 %9 = icmp eq %8 3 br %9, %30, %10 10: %11 = load %pc0 %12 = zext i8 %11 to i32 %13 = icmp eq %12 4 br %13, %30, %14 14: %15 = load %pc0 %16 = zext i8 %15 to i32 %17 = icmp eq %16 7 br %17, %30, %18 18: %19 = load %pc0 %20 = zext i8 %19 to i32 %21 = icmp eq %20 9 br %21, %30, %22 22: %23 = load %pc0 %24 = zext i8 %23 to i32 %25 = icmp eq %24 11 br %25, %30, %26 26: %27 = load %pc0 %28 = zext i8 %27 to i32 %29 = icmp eq %28 13 br %30 30: %31 = phi [1, %22], [1, %18], [1, %14], [1, %10], [1, %0], [%29, %26] %32 = zext i1 %31 to i32 %33 = call i32 (...)* @__VERIFIER_assume(i32 %32) %34 = load %1 %35 = load %pc0 %36 = zext i8 %35 to i32 Unnamed Call-Instruction = call BasicVoidType @setpc(i32 %34, i32 0, i32 %36) ret void *BasicFunctionTypename: "_0_12" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (tid i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %val0 = alloca i8, align 1 %val1 = alloca i8, align 1 %pc0 = alloca i8, align 1 store %tid, %1 store -1, %val0 store 0, %val1 %2 = load %1 %3 = trunc i32 %2 to i8 %4 = load %val0 Unnamed Call-Instruction = call BasicVoidType @env(i8 zeroext %3, i8 zeroext 0, i8 signext %4, i1 zeroext 1) %5 = load %1 %6 = trunc i32 %5 to i8 %7 = load %val1 Unnamed Call-Instruction = call BasicVoidType @env(i8 zeroext %6, i8 zeroext 1, i8 signext %7, i1 zeroext 0) %8 = call i32 @__VERIFIER_nondet_int() %9 = trunc i32 %8 to i8 store %9, %pc0 %10 = load %pc0 %11 = zext i8 %10 to i32 %12 = icmp eq %11 3 br %12, %33, %13 13: %14 = load %pc0 %15 = zext i8 %14 to i32 %16 = icmp eq %15 4 br %16, %33, %17 17: %18 = load %pc0 %19 = zext i8 %18 to i32 %20 = icmp eq %19 7 br %20, %33, %21 21: %22 = load %pc0 %23 = zext i8 %22 to i32 %24 = icmp eq %23 9 br %24, %33, %25 25: %26 = load %pc0 %27 = zext i8 %26 to i32 %28 = icmp eq %27 11 br %28, %33, %29 29: %30 = load %pc0 %31 = zext i8 %30 to i32 %32 = icmp eq %31 13 br %33 33: %34 = phi [1, %25], [1, %21], [1, %17], [1, %13], [1, %0], [%32, %29] %35 = zext i1 %34 to i32 %36 = call i32 (...)* @__VERIFIER_assume(i32 %35) %37 = load %1 %38 = load %pc0 %39 = zext i8 %38 to i32 Unnamed Call-Instruction = call BasicVoidType @setpc(i32 %37, i32 0, i32 %39) ret void *BasicFunctionTypename: "_0_5" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (tid i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %val0 = alloca i8, align 1 %val1 = alloca i8, align 1 %val2 = alloca i8, align 1 %pc0 = alloca i8, align 1 store %tid, %1 %2 = call signext i8 @getE(i32 1) %3 = sext i8 %2 to i32 %4 = icmp eq %3 3 %5 = zext i1 %4 to i32 %6 = call i32 (...)* @__VERIFIER_assume(i32 %5) store -1, %val0 store -1, %val1 store 0, %val2 %7 = load %1 %8 = trunc i32 %7 to i8 %9 = load %val0 Unnamed Call-Instruction = call BasicVoidType @env(i8 zeroext %8, i8 zeroext 0, i8 signext %9, i1 zeroext 1) %10 = load %1 %11 = trunc i32 %10 to i8 %12 = load %val1 Unnamed Call-Instruction = call BasicVoidType @env(i8 zeroext %11, i8 zeroext 3, i8 signext %12, i1 zeroext 0) %13 = load %1 %14 = trunc i32 %13 to i8 %15 = load %val2 Unnamed Call-Instruction = call BasicVoidType @env(i8 zeroext %14, i8 zeroext 1, i8 signext %15, i1 zeroext 0) %16 = call i32 @__VERIFIER_nondet_int() %17 = trunc i32 %16 to i8 store %17, %pc0 %18 = load %pc0 %19 = zext i8 %18 to i32 %20 = icmp eq %19 3 br %20, %41, %21 21: %22 = load %pc0 %23 = zext i8 %22 to i32 %24 = icmp eq %23 4 br %24, %41, %25 25: %26 = load %pc0 %27 = zext i8 %26 to i32 %28 = icmp eq %27 7 br %28, %41, %29 29: %30 = load %pc0 %31 = zext i8 %30 to i32 %32 = icmp eq %31 9 br %32, %41, %33 33: %34 = load %pc0 %35 = zext i8 %34 to i32 %36 = icmp eq %35 11 br %36, %41, %37 37: %38 = load %pc0 %39 = zext i8 %38 to i32 %40 = icmp eq %39 13 br %41 41: %42 = phi [1, %33], [1, %29], [1, %25], [1, %21], [1, %0], [%40, %37] %43 = zext i1 %42 to i32 %44 = call i32 (...)* @__VERIFIER_assume(i32 %43) %45 = load %1 %46 = load %pc0 %47 = zext i8 %46 to i32 Unnamed Call-Instruction = call BasicVoidType @setpc(i32 %45, i32 0, i32 %47) ret void *BasicFunctionTypename: "_0_4" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (tid i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %val0 = alloca i8, align 1 %val1 = alloca i8, align 1 %val2 = alloca i8, align 1 %pc0 = alloca i8, align 1 store %tid, %1 %2 = call signext i8 @getE(i32 0) %3 = sext i8 %2 to i32 %4 = load %1 %5 = icmp ne %3 %4 %6 = zext i1 %5 to i32 %7 = call i32 (...)* @__VERIFIER_assume(i32 %6) %8 = call signext i8 @getE(i32 1) %9 = sext i8 %8 to i32 %10 = icmp eq %9 0 %11 = zext i1 %10 to i32 %12 = call i32 (...)* @__VERIFIER_assume(i32 %11) %13 = load %1 %14 = call signext i8 @getI(i32 %13, i32 0) %15 = sext i8 %14 to i32 %16 = icmp ne %15 2 %17 = zext i1 %16 to i32 %18 = call i32 (...)* @__VERIFIER_assume(i32 %17) %19 = load %1 %20 = trunc i32 %19 to i8 store %20, %val0 %21 = load %1 %22 = call signext i8 @getI(i32 %21, i32 0) store %22, %val1 store 1, %val2 %23 = load %1 %24 = trunc i32 %23 to i8 %25 = load %val0 Unnamed Call-Instruction = call BasicVoidType @env(i8 zeroext %24, i8 zeroext 0, i8 signext %25, i1 zeroext 1) %26 = load %1 %27 = trunc i32 %26 to i8 %28 = load %val1 Unnamed Call-Instruction = call BasicVoidType @env(i8 zeroext %27, i8 zeroext 2, i8 signext %28, i1 zeroext 0) %29 = load %1 %30 = trunc i32 %29 to i8 %31 = load %val2 Unnamed Call-Instruction = call BasicVoidType @env(i8 zeroext %30, i8 zeroext 1, i8 signext %31, i1 zeroext 0) %32 = call i32 @__VERIFIER_nondet_int() %33 = trunc i32 %32 to i8 store %33, %pc0 %34 = load %pc0 %35 = zext i8 %34 to i32 %36 = icmp eq %35 3 br %36, %57, %37 37: %38 = load %pc0 %39 = zext i8 %38 to i32 %40 = icmp eq %39 4 br %40, %57, %41 41: %42 = load %pc0 %43 = zext i8 %42 to i32 %44 = icmp eq %43 7 br %44, %57, %45 45: %46 = load %pc0 %47 = zext i8 %46 to i32 %48 = icmp eq %47 9 br %48, %57, %49 49: %50 = load %pc0 %51 = zext i8 %50 to i32 %52 = icmp eq %51 11 br %52, %57, %53 53: %54 = load %pc0 %55 = zext i8 %54 to i32 %56 = icmp eq %55 13 br %57 57: %58 = phi [1, %49], [1, %45], [1, %41], [1, %37], [1, %0], [%56, %53] %59 = zext i1 %58 to i32 %60 = call i32 (...)* @__VERIFIER_assume(i32 %59) %61 = load %1 %62 = load %pc0 %63 = zext i8 %62 to i32 Unnamed Call-Instruction = call BasicVoidType @setpc(i32 %61, i32 0, i32 %63) ret void *BasicFunctionTypename: "_0_10" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (tid i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %val0 = alloca i8, align 1 %val1 = alloca i8, align 1 %pc0 = alloca i8, align 1 store %tid, %1 store -1, %val0 store 0, %val1 %2 = load %1 %3 = trunc i32 %2 to i8 %4 = load %val0 Unnamed Call-Instruction = call BasicVoidType @env(i8 zeroext %3, i8 zeroext 0, i8 signext %4, i1 zeroext 1) %5 = load %1 %6 = trunc i32 %5 to i8 %7 = load %val1 Unnamed Call-Instruction = call BasicVoidType @env(i8 zeroext %6, i8 zeroext 1, i8 signext %7, i1 zeroext 0) %8 = call i32 @__VERIFIER_nondet_int() %9 = trunc i32 %8 to i8 store %9, %pc0 %10 = load %pc0 %11 = zext i8 %10 to i32 %12 = icmp eq %11 3 br %12, %33, %13 13: %14 = load %pc0 %15 = zext i8 %14 to i32 %16 = icmp eq %15 4 br %16, %33, %17 17: %18 = load %pc0 %19 = zext i8 %18 to i32 %20 = icmp eq %19 7 br %20, %33, %21 21: %22 = load %pc0 %23 = zext i8 %22 to i32 %24 = icmp eq %23 9 br %24, %33, %25 25: %26 = load %pc0 %27 = zext i8 %26 to i32 %28 = icmp eq %27 11 br %28, %33, %29 29: %30 = load %pc0 %31 = zext i8 %30 to i32 %32 = icmp eq %31 13 br %33 33: %34 = phi [1, %25], [1, %21], [1, %17], [1, %13], [1, %0], [%32, %29] %35 = zext i1 %34 to i32 %36 = call i32 (...)* @__VERIFIER_assume(i32 %35) %37 = load %1 %38 = load %pc0 %39 = zext i8 %38 to i32 Unnamed Call-Instruction = call BasicVoidType @setpc(i32 %37, i32 0, i32 %39) ret void *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %firstAgent = alloca i8, align 1 %newagent = alloca i8, align 1 store 0, %1 Unnamed Call-Instruction = call BasicVoidType @init() %2 = call i32 @__VERIFIER_nondet_int() %3 = trunc i32 %2 to i8 store %3, %firstAgent br %4 4: %5 = call i32 @__VERIFIER_nondet_int() %6 = trunc i32 %5 to i8 store %6, %newagent %7 = load %newagent %8 = zext i8 %7 to i32 %9 = icmp slt %8 3 %10 = zext i1 %9 to i32 %11 = call i32 (...)* @__VERIFIER_assume(i32 %10) %12 = load %newagent store %12, %firstAgent %13 = load %firstAgent %14 = zext i8 %13 to i32 %15 = icmp slt %14 3 %16 = zext i1 %15 to i32 %17 = call i32 (...)* @__VERIFIER_assume(i32 %16) %18 = load %firstAgent %19 = zext i8 %18 to i32 %20 = call zeroext i8 @getpc(i32 %19, i32 0) %21 = zext i8 %20 to i32 switch %21, %58 [2, %22 3, %25 4, %28 5, %31 6, %34 7, %37 8, %40 9, %43 10, %46 11, %49 12, %52 13, %55] 22: %23 = load %firstAgent %24 = zext i8 %23 to i32 Unnamed Call-Instruction = call BasicVoidType @_0_2(i32 %24) br %59 25: %26 = load %firstAgent %27 = zext i8 %26 to i32 Unnamed Call-Instruction = call BasicVoidType @_0_3(i32 %27) br %59 28: %29 = load %firstAgent %30 = zext i8 %29 to i32 Unnamed Call-Instruction = call BasicVoidType @_0_4(i32 %30) br %59 31: %32 = load %firstAgent %33 = zext i8 %32 to i32 Unnamed Call-Instruction = call BasicVoidType @_0_5(i32 %33) br %59 34: %35 = load %firstAgent %36 = zext i8 %35 to i32 Unnamed Call-Instruction = call BasicVoidType @_0_6(i32 %36) br %59 37: %38 = load %firstAgent %39 = zext i8 %38 to i32 Unnamed Call-Instruction = call BasicVoidType @_0_7(i32 %39) br %59 40: %41 = load %firstAgent %42 = zext i8 %41 to i32 Unnamed Call-Instruction = call BasicVoidType @_0_8(i32 %42) br %59 43: %44 = load %firstAgent %45 = zext i8 %44 to i32 Unnamed Call-Instruction = call BasicVoidType @_0_9(i32 %45) br %59 46: %47 = load %firstAgent %48 = zext i8 %47 to i32 Unnamed Call-Instruction = call BasicVoidType @_0_10(i32 %48) br %59 49: %50 = load %firstAgent %51 = zext i8 %50 to i32 Unnamed Call-Instruction = call BasicVoidType @_0_11(i32 %51) br %59 52: %53 = load %firstAgent %54 = zext i8 %53 to i32 Unnamed Call-Instruction = call BasicVoidType @_0_12(i32 %54) br %59 55: %56 = load %firstAgent %57 = zext i8 %56 to i32 Unnamed Call-Instruction = call BasicVoidType @_0_13(i32 %57) br %59 58: br %59 59: %60 = call signext i8 @getI(i32 2, i32 0) %61 = sext i8 %60 to i32 %62 = icmp eq %61 0 br %62, %67, %63 63: %64 = call signext i8 @getI(i32 2, i32 0) %65 = sext i8 %64 to i32 %66 = icmp eq %65 2 br %66, %67, %84 67: %68 = call signext i8 @getI(i32 0, i32 0) %69 = sext i8 %68 to i32 %70 = icmp eq %69 0 br %70, %75, %71 71: %72 = call signext i8 @getI(i32 0, i32 0) %73 = sext i8 %72 to i32 %74 = icmp eq %73 2 br %74, %75, %84 75: %76 = call signext i8 @getI(i32 1, i32 0) %77 = sext i8 %76 to i32 %78 = icmp eq %77 0 br %78, %83, %79 79: %80 = call signext i8 @getI(i32 1, i32 0) %81 = sext i8 %80 to i32 %82 = icmp eq %81 2 br %82, %83, %84 83: ret 0 84: br %4 Analyze Termination of all function calls matching the pattern: main()