/export/starexec/sandbox/solver/bin/starexec_run_c /export/starexec/sandbox/benchmark/theBenchmark.c /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- MAYBE proof of /export/starexec/sandbox/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, 269 ms] (2) LLVM problem ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox/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: __LABS_time initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: tupleStart initVal: \00\01 type: [2 x i8] addrSpace: null alignment: 1 threadLocal: false constant: true linkageType: null section: null Name: tupleEnd initVal: \00\01 type: [2 x i8] addrSpace: null alignment: 1 threadLocal: false constant: true linkageType: null section: null Name: I initVal: ((0),(0),(0)) type: [3 x [1 x i8]] addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: Ltstamp initVal: ((0,0),(0,0),(0,0)) type: [3 x [2 x i8]] addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: HinCnt initVal: (0,0,0) type: [3 x i8] addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: Hin initVal: ((0,0),(0,0),(0,0)) type: [3 x [2 x i8]] addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: HoutCnt initVal: (0,0,0) type: [3 x i8] addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: Hout initVal: ((0,0),(0,0),(0,0)) type: [3 x [2 x i8]] addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: Lvalue initVal: ((0,0),(0,0),(0,0)) type: [3 x [2 x i8]] addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: pc initVal: ((0),(0),(0)) type: [3 x [1 x 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: "__abs" linkageType: EXTERNALLY_VISIBLE returnParam: i8 signext parameters: (x i8 signext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 store %x, %1 %2 = load %1 %3 = sext i8 %2 to i32 %4 = icmp sgt %3 0 br %4, %5, %8 5: %6 = load %1 %7 = sext i8 %6 to i32 br %12 8: %9 = load %1 %10 = sext i8 %9 to i32 %11 = sub 0 %10 br %12 12: %13 = phi [%7, %5], [%11, %8] %14 = trunc i32 %13 to i8 ret %14 *BasicFunctionTypename: "now" linkageType: EXTERNALLY_VISIBLE returnParam: i8 zeroext parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = load @__LABS_time %2 = add %1 1 store %2, @__LABS_time ret %2 *BasicFunctionTypename: "link" linkageType: EXTERNALLY_VISIBLE returnParam: i1 zeroext parameters: (__LABS_link1 i8 zeroext, __LABS_link2 i8 zeroext, key i8 zeroext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = alloca i8, align 1 %3 = alloca i8, align 1 %__LABS_link = alloca i8, align 1 store %__LABS_link1, %1 store %__LABS_link2, %2 store %key, %3 store 0, %__LABS_link %4 = load %3 %5 = zext i8 %4 to i32 %6 = icmp sge %5 0 br %6, %7, %44 7: %8 = load %3 %9 = zext i8 %8 to i32 %10 = icmp sle %9 0 br %10, %11, %44 11: %12 = load %1 %13 = zext i8 %12 to i64 %14 = getelementptr @I, 0, %13 %15 = getelementptr %14, 0, 0 %16 = load %15 %17 = sext i8 %16 to i32 %18 = load %2 %19 = zext i8 %18 to i64 %20 = getelementptr @I, 0, %19 %21 = getelementptr %20, 0, 0 %22 = load %21 %23 = sext i8 %22 to i32 %24 = sub %17 %23 %25 = icmp sge %24 0 br %25, %26, %41 26: %27 = load %1 %28 = zext i8 %27 to i64 %29 = getelementptr @I, 0, %28 %30 = getelementptr %29, 0, 0 %31 = load %30 %32 = sext i8 %31 to i32 %33 = load %2 %34 = zext i8 %33 to i64 %35 = getelementptr @I, 0, %34 %36 = getelementptr %35, 0, 0 %37 = load %36 %38 = sext i8 %37 to i32 %39 = sub %32 %38 %40 = icmp sle %39 2 br %41 41: %42 = phi [0, %11], [%40, %26] %43 = zext i1 %42 to i8 store %43, %__LABS_link br %86 44: %45 = load %3 %46 = zext i8 %45 to i32 %47 = icmp sge %46 1 br %47, %48, %85 48: %49 = load %3 %50 = zext i8 %49 to i32 %51 = icmp sle %50 1 br %51, %52, %85 52: %53 = load %2 %54 = zext i8 %53 to i64 %55 = getelementptr @I, 0, %54 %56 = getelementptr %55, 0, 0 %57 = load %56 %58 = sext i8 %57 to i32 %59 = load %1 %60 = zext i8 %59 to i64 %61 = getelementptr @I, 0, %60 %62 = getelementptr %61, 0, 0 %63 = load %62 %64 = sext i8 %63 to i32 %65 = sub %58 %64 %66 = icmp sgt %65 0 br %66, %67, %82 67: %68 = load %2 %69 = zext i8 %68 to i64 %70 = getelementptr @I, 0, %69 %71 = getelementptr %70, 0, 0 %72 = load %71 %73 = sext i8 %72 to i32 %74 = load %1 %75 = zext i8 %74 to i64 %76 = getelementptr @I, 0, %75 %77 = getelementptr %76, 0, 0 %78 = load %77 %79 = sext i8 %78 to i32 %80 = sub %73 %79 %81 = icmp sle %80 2 br %82 82: %83 = phi [0, %52], [%81, %67] %84 = zext i1 %83 to i8 store %84, %__LABS_link br %85 85: br %86 86: %87 = load %__LABS_link %88 = trunc i8 %87 to i1 ret %88 *BasicFunctionTypename: "timeof" linkageType: EXTERNALLY_VISIBLE returnParam: i8 zeroext parameters: (id i8 zeroext, key i8 zeroext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = alloca i8, align 1 store %id, %1 store %key, %2 %3 = load %2 %4 = zext i8 %3 to i64 %5 = getelementptr @tupleStart, 0, %4 %6 = load %5 %7 = zext i8 %6 to i64 %8 = load %1 %9 = zext i8 %8 to i64 %10 = getelementptr @Ltstamp, 0, %9 %11 = getelementptr %10, 0, %7 %12 = load %11 ret %12 *BasicFunctionTypename: "setHin" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (id i8 zeroext, key i8 zeroext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = alloca i8, align 1 store %id, %1 store %key, %2 %3 = load %1 %4 = zext i8 %3 to i64 %5 = getelementptr @HinCnt, 0, %4 %6 = load %5 %7 = zext i8 %6 to i32 %8 = load %2 %9 = zext i8 %8 to i64 %10 = getelementptr @tupleStart, 0, %9 %11 = load %10 %12 = zext i8 %11 to i64 %13 = load %1 %14 = zext i8 %13 to i64 %15 = getelementptr @Hin, 0, %14 %16 = getelementptr %15, 0, %12 %17 = load %16 %18 = trunc i8 %17 to i1 %19 = xor %18 1 %20 = zext i1 %19 to i32 %21 = add %7 %20 %22 = trunc i32 %21 to i8 %23 = load %1 %24 = zext i8 %23 to i64 %25 = getelementptr @HinCnt, 0, %24 store %22, %25 %26 = load %2 %27 = zext i8 %26 to i64 %28 = getelementptr @tupleStart, 0, %27 %29 = load %28 %30 = zext i8 %29 to i64 %31 = load %1 %32 = zext i8 %31 to i64 %33 = getelementptr @Hin, 0, %32 %34 = getelementptr %33, 0, %30 store 1, %34 ret void *BasicFunctionTypename: "clearHin" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (id i8 zeroext, key i8 zeroext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = alloca i8, align 1 store %id, %1 store %key, %2 %3 = load %1 %4 = zext i8 %3 to i64 %5 = getelementptr @HinCnt, 0, %4 %6 = load %5 %7 = zext i8 %6 to i32 %8 = load %2 %9 = zext i8 %8 to i64 %10 = getelementptr @tupleStart, 0, %9 %11 = load %10 %12 = zext i8 %11 to i64 %13 = load %1 %14 = zext i8 %13 to i64 %15 = getelementptr @Hin, 0, %14 %16 = getelementptr %15, 0, %12 %17 = load %16 %18 = trunc i8 %17 to i1 %19 = zext i1 %18 to i32 %20 = sub %7 %19 %21 = trunc i32 %20 to i8 %22 = load %1 %23 = zext i8 %22 to i64 %24 = getelementptr @HinCnt, 0, %23 store %21, %24 %25 = load %2 %26 = zext i8 %25 to i64 %27 = getelementptr @tupleStart, 0, %26 %28 = load %27 %29 = zext i8 %28 to i64 %30 = load %1 %31 = zext i8 %30 to i64 %32 = getelementptr @Hin, 0, %31 %33 = getelementptr %32, 0, %29 store 0, %33 ret void *BasicFunctionTypename: "setHout" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (id i8 zeroext, key i8 zeroext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = alloca i8, align 1 store %id, %1 store %key, %2 %3 = load %1 %4 = zext i8 %3 to i64 %5 = getelementptr @HoutCnt, 0, %4 %6 = load %5 %7 = zext i8 %6 to i32 %8 = load %2 %9 = zext i8 %8 to i64 %10 = getelementptr @tupleStart, 0, %9 %11 = load %10 %12 = zext i8 %11 to i64 %13 = load %1 %14 = zext i8 %13 to i64 %15 = getelementptr @Hout, 0, %14 %16 = getelementptr %15, 0, %12 %17 = load %16 %18 = trunc i8 %17 to i1 %19 = xor %18 1 %20 = zext i1 %19 to i32 %21 = add %7 %20 %22 = trunc i32 %21 to i8 %23 = load %1 %24 = zext i8 %23 to i64 %25 = getelementptr @HoutCnt, 0, %24 store %22, %25 %26 = load %2 %27 = zext i8 %26 to i64 %28 = getelementptr @tupleStart, 0, %27 %29 = load %28 %30 = zext i8 %29 to i64 %31 = load %1 %32 = zext i8 %31 to i64 %33 = getelementptr @Hout, 0, %32 %34 = getelementptr %33, 0, %30 store 1, %34 ret void *BasicFunctionTypename: "clearHout" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (id i8 zeroext, key i8 zeroext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = alloca i8, align 1 store %id, %1 store %key, %2 %3 = load %1 %4 = zext i8 %3 to i64 %5 = getelementptr @HoutCnt, 0, %4 %6 = load %5 %7 = zext i8 %6 to i32 %8 = load %2 %9 = zext i8 %8 to i64 %10 = getelementptr @tupleStart, 0, %9 %11 = load %10 %12 = zext i8 %11 to i64 %13 = load %1 %14 = zext i8 %13 to i64 %15 = getelementptr @Hout, 0, %14 %16 = getelementptr %15, 0, %12 %17 = load %16 %18 = trunc i8 %17 to i1 %19 = zext i1 %18 to i32 %20 = sub %7 %19 %21 = trunc i32 %20 to i8 %22 = load %1 %23 = zext i8 %22 to i64 %24 = getelementptr @HoutCnt, 0, %23 store %21, %24 %25 = load %2 %26 = zext i8 %25 to i64 %27 = getelementptr @tupleStart, 0, %26 %28 = load %27 %29 = zext i8 %28 to i64 %30 = load %1 %31 = zext i8 %30 to i64 %32 = getelementptr @Hout, 0, %31 %33 = getelementptr %32, 0, %29 store 0, %33 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 %4 %7 = trunc i8 %6 to i1 br %7, %8, %15 8: %9 = load %1 %10 = zext i8 %9 to i64 %11 = getelementptr @HoutCnt, 0, %10 %12 = load %11 %13 = zext i8 %12 to i32 %14 = icmp eq %13 0 br %15 15: %16 = phi [1, %0], [%14, %8] %17 = zext i1 %16 to i32 %18 = call i32 (...)* @__VERIFIER_assume(i32 %17) %19 = load %4 %20 = trunc i8 %19 to i1 br %20, %21, %28 21: %22 = load %1 %23 = zext i8 %22 to i64 %24 = getelementptr @HinCnt, 0, %23 %25 = load %24 %26 = zext i8 %25 to i32 %27 = icmp eq %26 0 br %28 28: %29 = phi [1, %15], [%27, %21] %30 = zext i1 %29 to i32 %31 = call i32 (...)* @__VERIFIER_assume(i32 %30) %32 = load %3 %33 = load %2 %34 = zext i8 %33 to i64 %35 = load %1 %36 = zext i8 %35 to i64 %37 = getelementptr @I, 0, %36 %38 = getelementptr %37, 0, %34 store %32, %38 %39 = call zeroext i8 @now() ret void *BasicFunctionTypename: "lstig" 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 %4 %7 = trunc i8 %6 to i1 br %7, %8, %15 8: %9 = load %1 %10 = zext i8 %9 to i64 %11 = getelementptr @HoutCnt, 0, %10 %12 = load %11 %13 = zext i8 %12 to i32 %14 = icmp eq %13 0 br %15 15: %16 = phi [1, %0], [%14, %8] %17 = zext i1 %16 to i32 %18 = call i32 (...)* @__VERIFIER_assume(i32 %17) %19 = load %4 %20 = trunc i8 %19 to i1 br %20, %21, %28 21: %22 = load %1 %23 = zext i8 %22 to i64 %24 = getelementptr @HinCnt, 0, %23 %25 = load %24 %26 = zext i8 %25 to i32 %27 = icmp eq %26 0 br %28 28: %29 = phi [1, %15], [%27, %21] %30 = zext i1 %29 to i32 %31 = call i32 (...)* @__VERIFIER_assume(i32 %30) %32 = load %3 %33 = load %2 %34 = zext i8 %33 to i64 %35 = load %1 %36 = zext i8 %35 to i64 %37 = getelementptr @Lvalue, 0, %36 %38 = getelementptr %37, 0, %34 store %32, %38 %39 = call zeroext i8 @now() %40 = load %2 %41 = zext i8 %40 to i64 %42 = getelementptr @tupleStart, 0, %41 %43 = load %42 %44 = zext i8 %43 to i64 %45 = load %1 %46 = zext i8 %45 to i64 %47 = getelementptr @Ltstamp, 0, %46 %48 = getelementptr %47, 0, %44 store %39, %48 %49 = load %1 %50 = load %2 Unnamed Call-Instruction = call BasicVoidType @setHout(i8 zeroext %49, i8 zeroext %50) ret void *BasicFunctionTypename: "confirm" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %guessedcomp = alloca i8, align 1 %guessedkey = alloca i8, align 1 %i = alloca i8, align 1 %t = alloca i8, align 1 %k = alloca i8, align 1 %next = alloca i8, align 1 %1 = call i32 @__VERIFIER_nondet_int() %2 = trunc i32 %1 to i8 store %2, %guessedcomp %3 = load %guessedcomp %4 = zext i8 %3 to i32 %5 = icmp slt %4 3 %6 = zext i1 %5 to i32 %7 = call i32 (...)* @__VERIFIER_assume(i32 %6) %8 = load %guessedcomp %9 = zext i8 %8 to i64 %10 = getelementptr @HinCnt, 0, %9 %11 = load %10 %12 = zext i8 %11 to i32 %13 = icmp sgt %12 0 %14 = zext i1 %13 to i32 %15 = call i32 (...)* @__VERIFIER_assume(i32 %14) %16 = call i32 @__VERIFIER_nondet_int() %17 = trunc i32 %16 to i8 store %17, %guessedkey %18 = load %guessedkey %19 = zext i8 %18 to i32 %20 = icmp slt %19 2 %21 = zext i1 %20 to i32 %22 = call i32 (...)* @__VERIFIER_assume(i32 %21) %23 = load %guessedkey %24 = zext i8 %23 to i64 %25 = load %guessedcomp %26 = zext i8 %25 to i64 %27 = getelementptr @Hin, 0, %26 %28 = getelementptr %27, 0, %24 %29 = load %28 %30 = trunc i8 %29 to i1 %31 = zext i1 %30 to i32 %32 = icmp eq %31 1 %33 = zext i1 %32 to i32 %34 = call i32 (...)* @__VERIFIER_assume(i32 %33) %35 = call i32 @__VERIFIER_nondet_int() %36 = trunc i32 %35 to i8 store %36, %i %37 = load %guessedcomp %38 = load %guessedkey %39 = call zeroext i8 @timeof(i8 zeroext %37, i8 zeroext %38) store %39, %t store 0, %i br %40 40: %41 = load %i %42 = zext i8 %41 to i32 %43 = icmp slt %42 3 br %43, %44, %130 44: %45 = load %guessedcomp %46 = zext i8 %45 to i32 %47 = load %i %48 = zext i8 %47 to i32 %49 = icmp ne %46 %48 br %49, %50, %126 50: %51 = load %i %52 = load %guessedkey %53 = call zeroext i8 @timeof(i8 zeroext %51, i8 zeroext %52) %54 = zext i8 %53 to i32 %55 = load %t %56 = zext i8 %55 to i32 %57 = icmp ne %54 %56 br %57, %58, %126 58: %59 = load %guessedcomp %60 = load %i %61 = load %guessedkey %62 = call zeroext i1 @link(i8 zeroext %59, i8 zeroext %60, i8 zeroext %61) br %62, %63, %126 63: %64 = load %i %65 = load %guessedkey Unnamed Call-Instruction = call BasicVoidType @setHout(i8 zeroext %64, i8 zeroext %65) %66 = load %i %67 = load %guessedkey %68 = call zeroext i8 @timeof(i8 zeroext %66, i8 zeroext %67) %69 = zext i8 %68 to i32 %70 = load %t %71 = zext i8 %70 to i32 %72 = icmp slt %69 %71 br %72, %73, %125 73: %74 = call i32 @__VERIFIER_nondet_int() %75 = trunc i32 %74 to i8 store %75, %k %76 = call i32 @__VERIFIER_nondet_int() %77 = trunc i32 %76 to i8 store %77, %next %78 = load %i %79 = load %guessedkey Unnamed Call-Instruction = call BasicVoidType @clearHin(i8 zeroext %78, i8 zeroext %79) store 0, %k br %80 80: %81 = load %k %82 = zext i8 %81 to i32 %83 = icmp slt %82 1 br %83, %84, %117 84: %85 = load %guessedkey %86 = zext i8 %85 to i32 %87 = load %k %88 = zext i8 %87 to i32 %89 = add %86 %88 %90 = trunc i32 %89 to i8 store %90, %next %91 = load %next %92 = zext i8 %91 to i32 %93 = load %guessedkey %94 = zext i8 %93 to i64 %95 = getelementptr @tupleEnd, 0, %94 %96 = load %95 %97 = zext i8 %96 to i32 %98 = icmp sle %92 %97 br %98, %99, %113 99: %100 = load %next %101 = zext i8 %100 to i64 %102 = load %guessedcomp %103 = zext i8 %102 to i64 %104 = getelementptr @Lvalue, 0, %103 %105 = getelementptr %104, 0, %101 %106 = load %105 %107 = load %next %108 = zext i8 %107 to i64 %109 = load %i %110 = zext i8 %109 to i64 %111 = getelementptr @Lvalue, 0, %110 %112 = getelementptr %111, 0, %108 store %106, %112 br %113 113: br %114 114: %115 = load %k %116 = add %115 1 store %116, %k br %80 117: %118 = load %t %119 = load %guessedkey %120 = zext i8 %119 to i64 %121 = load %i %122 = zext i8 %121 to i64 %123 = getelementptr @Ltstamp, 0, %122 %124 = getelementptr %123, 0, %120 store %118, %124 br %125 125: br %126 126: br %127 127: %128 = load %i %129 = add %128 1 store %129, %i br %40 130: %131 = load %guessedcomp %132 = load %guessedkey Unnamed Call-Instruction = call BasicVoidType @clearHin(i8 zeroext %131, i8 zeroext %132) ret void *BasicFunctionTypename: "propagate" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %guessedcomp = alloca i8, align 1 %guessedkey = alloca i8, align 1 %i = alloca i8, align 1 %t = alloca i8, align 1 %k = alloca i8, align 1 %next = alloca i8, align 1 %1 = call i32 @__VERIFIER_nondet_int() %2 = trunc i32 %1 to i8 store %2, %guessedcomp %3 = load %guessedcomp %4 = zext i8 %3 to i32 %5 = icmp slt %4 3 %6 = zext i1 %5 to i32 %7 = call i32 (...)* @__VERIFIER_assume(i32 %6) %8 = load %guessedcomp %9 = zext i8 %8 to i64 %10 = getelementptr @HoutCnt, 0, %9 %11 = load %10 %12 = zext i8 %11 to i32 %13 = icmp sgt %12 0 %14 = zext i1 %13 to i32 %15 = call i32 (...)* @__VERIFIER_assume(i32 %14) %16 = call i32 @__VERIFIER_nondet_int() %17 = trunc i32 %16 to i8 store %17, %guessedkey %18 = load %guessedkey %19 = zext i8 %18 to i32 %20 = icmp slt %19 2 %21 = zext i1 %20 to i32 %22 = call i32 (...)* @__VERIFIER_assume(i32 %21) %23 = load %guessedkey %24 = zext i8 %23 to i64 %25 = load %guessedcomp %26 = zext i8 %25 to i64 %27 = getelementptr @Hout, 0, %26 %28 = getelementptr %27, 0, %24 %29 = load %28 %30 = trunc i8 %29 to i1 %31 = zext i1 %30 to i32 %32 = icmp eq %31 1 %33 = zext i1 %32 to i32 %34 = call i32 (...)* @__VERIFIER_assume(i32 %33) %35 = call i32 @__VERIFIER_nondet_int() %36 = trunc i32 %35 to i8 store %36, %i %37 = load %guessedcomp %38 = load %guessedkey %39 = call zeroext i8 @timeof(i8 zeroext %37, i8 zeroext %38) store %39, %t store 0, %i br %40 40: %41 = load %i %42 = zext i8 %41 to i32 %43 = icmp slt %42 3 br %43, %44, %121 44: %45 = load %guessedcomp %46 = zext i8 %45 to i32 %47 = load %i %48 = zext i8 %47 to i32 %49 = icmp ne %46 %48 br %49, %50, %117 50: %51 = load %i %52 = load %guessedkey %53 = call zeroext i8 @timeof(i8 zeroext %51, i8 zeroext %52) %54 = zext i8 %53 to i32 %55 = load %t %56 = zext i8 %55 to i32 %57 = icmp slt %54 %56 br %57, %58, %117 58: %59 = load %guessedcomp %60 = load %i %61 = load %guessedkey %62 = call zeroext i1 @link(i8 zeroext %59, i8 zeroext %60, i8 zeroext %61) br %62, %63, %117 63: %64 = load %i %65 = load %guessedkey Unnamed Call-Instruction = call BasicVoidType @setHout(i8 zeroext %64, i8 zeroext %65) %66 = load %i %67 = load %guessedkey Unnamed Call-Instruction = call BasicVoidType @clearHin(i8 zeroext %66, i8 zeroext %67) %68 = call i32 @__VERIFIER_nondet_int() %69 = trunc i32 %68 to i8 store %69, %k %70 = call i32 @__VERIFIER_nondet_int() %71 = trunc i32 %70 to i8 store %71, %next store 0, %k br %72 72: %73 = load %k %74 = zext i8 %73 to i32 %75 = icmp slt %74 1 br %75, %76, %109 76: %77 = load %guessedkey %78 = zext i8 %77 to i32 %79 = load %k %80 = zext i8 %79 to i32 %81 = add %78 %80 %82 = trunc i32 %81 to i8 store %82, %next %83 = load %next %84 = zext i8 %83 to i32 %85 = load %guessedkey %86 = zext i8 %85 to i64 %87 = getelementptr @tupleEnd, 0, %86 %88 = load %87 %89 = zext i8 %88 to i32 %90 = icmp sle %84 %89 br %90, %91, %105 91: %92 = load %next %93 = zext i8 %92 to i64 %94 = load %guessedcomp %95 = zext i8 %94 to i64 %96 = getelementptr @Lvalue, 0, %95 %97 = getelementptr %96, 0, %93 %98 = load %97 %99 = load %next %100 = zext i8 %99 to i64 %101 = load %i %102 = zext i8 %101 to i64 %103 = getelementptr @Lvalue, 0, %102 %104 = getelementptr %103, 0, %100 store %98, %104 br %105 105: br %106 106: %107 = load %k %108 = add %107 1 store %108, %k br %72 109: %110 = load %t %111 = load %guessedkey %112 = zext i8 %111 to i64 %113 = load %i %114 = zext i8 %113 to i64 %115 = getelementptr @Ltstamp, 0, %114 %116 = getelementptr %115, 0, %112 store %110, %116 br %117 117: br %118 118: %119 = load %i %120 = add %119 1 store %120, %i br %40 121: %122 = load %guessedcomp %123 = load %guessedkey Unnamed Call-Instruction = call BasicVoidType @clearHout(i8 zeroext %122, i8 zeroext %123) ret void *BasicFunctionTypename: "init" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %_I = alloca [3 x [1 x i8]], align 1 %_pc = alloca [3 x [1 x i8]], align 1 %_Lvalue = alloca [3 x [2 x i8]], align 1 %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 store 0, %i br %5 5: %6 = load %i %7 = zext i8 %6 to i32 %8 = icmp slt %7 3 br %8, %9, %46 9: store 0, %j br %10 10: %11 = load %j %12 = zext i8 %11 to i32 %13 = icmp slt %12 2 br %13, %14, %36 14: %15 = load %j %16 = zext i8 %15 to i64 %17 = load %i %18 = zext i8 %17 to i64 %19 = getelementptr @Ltstamp, 0, %18 %20 = getelementptr %19, 0, %16 store 0, %20 %21 = load %j %22 = zext i8 %21 to i64 %23 = load %i %24 = zext i8 %23 to i64 %25 = getelementptr @Hin, 0, %24 %26 = getelementptr %25, 0, %22 store 0, %26 %27 = load %j %28 = zext i8 %27 to i64 %29 = load %i %30 = zext i8 %29 to i64 %31 = getelementptr @Hout, 0, %30 %32 = getelementptr %31, 0, %28 store 0, %32 br %33 33: %34 = load %j %35 = add %34 1 store %35, %j br %10 36: %37 = load %i %38 = zext i8 %37 to i64 %39 = getelementptr @HinCnt, 0, %38 store 0, %39 %40 = load %i %41 = zext i8 %40 to i64 %42 = getelementptr @HoutCnt, 0, %41 store 0, %42 br %43 43: %44 = load %i %45 = add %44 1 store %45, %i br %5 46: %47 = getelementptr %_pc, 0, 0 %48 = getelementptr %47, 0, 0 store 6, %48 %49 = getelementptr %_pc, 0, 1 %50 = getelementptr %49, 0, 0 store 6, %50 %51 = getelementptr %_pc, 0, 2 %52 = getelementptr %51, 0, 0 store 6, %52 %53 = getelementptr %_Lvalue, 0, 0 %54 = getelementptr %53, 0, 0 %55 = load %54 %56 = sext i8 %55 to i32 %57 = icmp eq %56 -128 %58 = zext i1 %57 to i32 %59 = call i32 (...)* @__VERIFIER_assume(i32 %58) %60 = getelementptr %_Lvalue, 0, 1 %61 = getelementptr %60, 0, 0 %62 = load %61 %63 = sext i8 %62 to i32 %64 = icmp eq %63 -128 %65 = zext i1 %64 to i32 %66 = call i32 (...)* @__VERIFIER_assume(i32 %65) %67 = getelementptr %_Lvalue, 0, 2 %68 = getelementptr %67, 0, 0 %69 = load %68 %70 = sext i8 %69 to i32 %71 = icmp eq %70 -128 %72 = zext i1 %71 to i32 %73 = call i32 (...)* @__VERIFIER_assume(i32 %72) %74 = getelementptr %_Lvalue, 0, 0 %75 = getelementptr %74, 0, 1 %76 = load %75 %77 = sext i8 %76 to i32 %78 = icmp eq %77 -128 %79 = zext i1 %78 to i32 %80 = call i32 (...)* @__VERIFIER_assume(i32 %79) %81 = getelementptr %_Lvalue, 0, 1 %82 = getelementptr %81, 0, 1 %83 = load %82 %84 = sext i8 %83 to i32 %85 = icmp eq %84 -128 %86 = zext i1 %85 to i32 %87 = call i32 (...)* @__VERIFIER_assume(i32 %86) %88 = getelementptr %_Lvalue, 0, 2 %89 = getelementptr %88, 0, 1 %90 = load %89 %91 = sext i8 %90 to i32 %92 = icmp eq %91 -128 %93 = zext i1 %92 to i32 %94 = call i32 (...)* @__VERIFIER_assume(i32 %93) %95 = getelementptr %_I, 0, 0 %96 = getelementptr %95, 0, 0 %97 = load %96 %98 = sext i8 %97 to i32 %99 = icmp sge %98 1 br %99, %100, %106 100: %101 = getelementptr %_I, 0, 0 %102 = getelementptr %101, 0, 0 %103 = load %102 %104 = sext i8 %103 to i32 %105 = icmp slt %104 10 br %106 106: %107 = phi [0, %46], [%105, %100] %108 = zext i1 %107 to i32 %109 = call i32 (...)* @__VERIFIER_assume(i32 %108) %110 = getelementptr %_I, 0, 1 %111 = getelementptr %110, 0, 0 %112 = load %111 %113 = sext i8 %112 to i32 %114 = icmp sge %113 1 br %114, %115, %121 115: %116 = getelementptr %_I, 0, 1 %117 = getelementptr %116, 0, 0 %118 = load %117 %119 = sext i8 %118 to i32 %120 = icmp slt %119 10 br %121 121: %122 = phi [0, %106], [%120, %115] %123 = zext i1 %122 to i32 %124 = call i32 (...)* @__VERIFIER_assume(i32 %123) %125 = getelementptr %_I, 0, 2 %126 = getelementptr %125, 0, 0 %127 = load %126 %128 = sext i8 %127 to i32 %129 = icmp sge %128 1 br %129, %130, %136 130: %131 = getelementptr %_I, 0, 2 %132 = getelementptr %131, 0, 0 %133 = load %132 %134 = sext i8 %133 to i32 %135 = icmp slt %134 10 br %136 136: %137 = phi [0, %121], [%135, %130] %138 = zext i1 %137 to i32 %139 = call i32 (...)* @__VERIFIER_assume(i32 %138) %140 = call zeroext i8 @now() %141 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@761759df %142 = zext i8 %141 to i64 %143 = getelementptr aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@7be71713, 0, %142 store %140, %143 %144 = call zeroext i8 @now() %145 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@cc3a128 %146 = zext i8 %145 to i64 %147 = getelementptr aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@345aa2b0, 0, %146 store %144, %147 %148 = call zeroext i8 @now() %149 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@78cfdc45 %150 = zext i8 %149 to i64 %151 = getelementptr aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@3bd303c0, 0, %150 store %148, %151 %152 = call zeroext i8 @now() %153 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@2a082f73 %154 = zext i8 %153 to i64 %155 = getelementptr aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@4ba647a0, 0, %154 store %152, %155 %156 = call zeroext i8 @now() %157 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@4d8d8765 %158 = zext i8 %157 to i64 %159 = getelementptr aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@6ee35017, 0, %158 store %156, %159 %160 = call zeroext i8 @now() %161 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@5fb990f %162 = zext i8 %161 to i64 %163 = getelementptr aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@7c994557, 0, %162 store %160, %163 %164 = call zeroext i8 @now() store 0, %i br %165 165: %166 = load %i %167 = zext i8 %166 to i32 %168 = icmp slt %167 3 br %168, %169, %239 169: store 0, %j br %170 170: %171 = load %j %172 = zext i8 %171 to i32 %173 = icmp slt %172 1 br %173, %174, %191 174: %175 = load %j %176 = zext i8 %175 to i64 %177 = load %i %178 = zext i8 %177 to i64 %179 = getelementptr %_pc, 0, %178 %180 = getelementptr %179, 0, %176 %181 = load %180 %182 = load %j %183 = zext i8 %182 to i64 %184 = load %i %185 = zext i8 %184 to i64 %186 = getelementptr @pc, 0, %185 %187 = getelementptr %186, 0, %183 store %181, %187 br %188 188: %189 = load %j %190 = add %189 1 store %190, %j br %170 191: store 0, %j br %192 192: %193 = load %j %194 = zext i8 %193 to i32 %195 = icmp slt %194 1 br %195, %196, %213 196: %197 = load %j %198 = zext i8 %197 to i64 %199 = load %i %200 = zext i8 %199 to i64 %201 = getelementptr %_I, 0, %200 %202 = getelementptr %201, 0, %198 %203 = load %202 %204 = load %j %205 = zext i8 %204 to i64 %206 = load %i %207 = zext i8 %206 to i64 %208 = getelementptr @I, 0, %207 %209 = getelementptr %208, 0, %205 store %203, %209 br %210 210: %211 = load %j %212 = add %211 1 store %212, %j br %192 213: store 0, %j br %214 214: %215 = load %j %216 = zext i8 %215 to i32 %217 = icmp slt %216 2 br %217, %218, %235 218: %219 = load %j %220 = zext i8 %219 to i64 %221 = load %i %222 = zext i8 %221 to i64 %223 = getelementptr %_Lvalue, 0, %222 %224 = getelementptr %223, 0, %220 %225 = load %224 %226 = load %j %227 = zext i8 %226 to i64 %228 = load %i %229 = zext i8 %228 to i64 %230 = getelementptr @Lvalue, 0, %229 %231 = getelementptr %230, 0, %227 store %225, %231 br %232 232: %233 = load %j %234 = add %233 1 store %234, %j br %214 235: br %236 236: %237 = load %i %238 = add %237 1 store %238, %i br %165 239: 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 store %tid, %1 %2 = load %1 %3 = sext i32 %2 to i64 %4 = getelementptr @Lvalue, 0, %3 %5 = getelementptr %4, 0, 0 %6 = load %5 %7 = sext i8 %6 to i32 %8 = load %1 %9 = icmp ne %7 %8 br %9, %10, %18 10: %11 = load %1 %12 = sext i32 %11 to i64 %13 = getelementptr @Lvalue, 0, %12 %14 = getelementptr %13, 0, 0 %15 = load %14 %16 = sext i8 %15 to i32 %17 = icmp ne %16 -128 br %18 18: %19 = phi [0, %0], [%17, %10] %20 = zext i1 %19 to i32 %21 = call i32 (...)* @__VERIFIER_assume(i32 %20) %22 = load %1 %23 = sext i32 %22 to i64 %24 = getelementptr @I, 0, %23 %25 = getelementptr %24, 0, 0 %26 = load %25 %27 = sext i8 %26 to i32 %28 = icmp sgt %27 0 %29 = zext i1 %28 to i32 %30 = call i32 (...)* @__VERIFIER_assume(i32 %29) %31 = load %1 %32 = sext i32 %31 to i64 %33 = getelementptr @I, 0, %32 %34 = getelementptr %33, 0, 0 %35 = load %34 %36 = sext i8 %35 to i32 %37 = sub %36 1 %38 = trunc i32 %37 to i8 store %38, %val0 %39 = load %1 %40 = trunc i32 %39 to i8 %41 = load %val0 Unnamed Call-Instruction = call BasicVoidType @attr(i8 zeroext %40, i8 zeroext 0, i8 signext %41, i1 zeroext 1) %42 = load %1 %43 = trunc i32 %42 to i8 Unnamed Call-Instruction = call BasicVoidType @setHin(i8 zeroext %43, i8 zeroext 0) %44 = load %1 %45 = sext i32 %44 to i64 %46 = getelementptr @pc, 0, %45 %47 = getelementptr %46, 0, 0 store 6, %47 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 = load %1 %3 = sext i32 %2 to i64 %4 = getelementptr @Lvalue, 0, %3 %5 = getelementptr %4, 0, 0 %6 = load %5 %7 = sext i8 %6 to i32 %8 = load %1 %9 = icmp ne %7 %8 br %9, %10, %18 10: %11 = load %1 %12 = sext i32 %11 to i64 %13 = getelementptr @Lvalue, 0, %12 %14 = getelementptr %13, 0, 0 %15 = load %14 %16 = sext i8 %15 to i32 %17 = icmp ne %16 -128 br %18 18: %19 = phi [0, %0], [%17, %10] %20 = zext i1 %19 to i32 %21 = call i32 (...)* @__VERIFIER_assume(i32 %20) %22 = load %1 %23 = sext i32 %22 to i64 %24 = getelementptr @I, 0, %23 %25 = getelementptr %24, 0, 0 %26 = load %25 %27 = sext i8 %26 to i32 %28 = icmp eq %27 0 %29 = zext i1 %28 to i32 %30 = call i32 (...)* @__VERIFIER_assume(i32 %29) %31 = load %1 %32 = sext i32 %31 to i64 %33 = getelementptr @I, 0, %32 %34 = getelementptr %33, 0, 0 %35 = load %34 %36 = sext i8 %35 to i32 %37 = add %36 1 %38 = trunc i32 %37 to i8 store %38, %val0 %39 = load %1 %40 = trunc i32 %39 to i8 %41 = load %val0 Unnamed Call-Instruction = call BasicVoidType @attr(i8 zeroext %40, i8 zeroext 0, i8 signext %41, i1 zeroext 1) %42 = load %1 %43 = trunc i32 %42 to i8 Unnamed Call-Instruction = call BasicVoidType @setHin(i8 zeroext %43, i8 zeroext 0) %44 = load %1 %45 = sext i32 %44 to i64 %46 = getelementptr @pc, 0, %45 %47 = getelementptr %46, 0, 0 store 6, %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 store %tid, %1 %2 = load %1 %3 = sext i32 %2 to i64 %4 = getelementptr @Lvalue, 0, %3 %5 = getelementptr %4, 0, 1 %6 = load %5 %7 = sext i8 %6 to i32 %8 = load %1 %9 = icmp ne %7 %8 br %9, %10, %18 10: %11 = load %1 %12 = sext i32 %11 to i64 %13 = getelementptr @Lvalue, 0, %12 %14 = getelementptr %13, 0, 1 %15 = load %14 %16 = sext i8 %15 to i32 %17 = icmp ne %16 -128 br %18 18: %19 = phi [0, %0], [%17, %10] %20 = zext i1 %19 to i32 %21 = call i32 (...)* @__VERIFIER_assume(i32 %20) %22 = load %1 %23 = sext i32 %22 to i64 %24 = getelementptr @I, 0, %23 %25 = getelementptr %24, 0, 0 %26 = load %25 %27 = sext i8 %26 to i32 %28 = icmp slt %27 9 %29 = zext i1 %28 to i32 %30 = call i32 (...)* @__VERIFIER_assume(i32 %29) %31 = load %1 %32 = sext i32 %31 to i64 %33 = getelementptr @I, 0, %32 %34 = getelementptr %33, 0, 0 %35 = load %34 %36 = sext i8 %35 to i32 %37 = add %36 1 %38 = trunc i32 %37 to i8 store %38, %val0 %39 = load %1 %40 = trunc i32 %39 to i8 %41 = load %val0 Unnamed Call-Instruction = call BasicVoidType @attr(i8 zeroext %40, i8 zeroext 0, i8 signext %41, i1 zeroext 1) %42 = load %1 %43 = trunc i32 %42 to i8 Unnamed Call-Instruction = call BasicVoidType @setHin(i8 zeroext %43, i8 zeroext 1) %44 = load %1 %45 = sext i32 %44 to i64 %46 = getelementptr @pc, 0, %45 %47 = getelementptr %46, 0, 0 store 6, %47 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 store %tid, %1 %2 = load %1 %3 = sext i32 %2 to i64 %4 = getelementptr @Lvalue, 0, %3 %5 = getelementptr %4, 0, 1 %6 = load %5 %7 = sext i8 %6 to i32 %8 = load %1 %9 = icmp ne %7 %8 br %9, %10, %18 10: %11 = load %1 %12 = sext i32 %11 to i64 %13 = getelementptr @Lvalue, 0, %12 %14 = getelementptr %13, 0, 1 %15 = load %14 %16 = sext i8 %15 to i32 %17 = icmp ne %16 -128 br %18 18: %19 = phi [0, %0], [%17, %10] %20 = zext i1 %19 to i32 %21 = call i32 (...)* @__VERIFIER_assume(i32 %20) %22 = load %1 %23 = sext i32 %22 to i64 %24 = getelementptr @I, 0, %23 %25 = getelementptr %24, 0, 0 %26 = load %25 %27 = sext i8 %26 to i32 %28 = icmp eq %27 9 %29 = zext i1 %28 to i32 %30 = call i32 (...)* @__VERIFIER_assume(i32 %29) %31 = load %1 %32 = sext i32 %31 to i64 %33 = getelementptr @I, 0, %32 %34 = getelementptr %33, 0, 0 %35 = load %34 %36 = sext i8 %35 to i32 %37 = sub %36 1 %38 = trunc i32 %37 to i8 store %38, %val0 %39 = load %1 %40 = trunc i32 %39 to i8 %41 = load %val0 Unnamed Call-Instruction = call BasicVoidType @attr(i8 zeroext %40, i8 zeroext 0, i8 signext %41, i1 zeroext 1) %42 = load %1 %43 = trunc i32 %42 to i8 Unnamed Call-Instruction = call BasicVoidType @setHin(i8 zeroext %43, i8 zeroext 1) %44 = load %1 %45 = sext i32 %44 to i64 %46 = getelementptr @pc, 0, %45 %47 = getelementptr %46, 0, 0 store 6, %47 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 %val1 = alloca i8, align 1 %pc0 = alloca i8, align 1 store %tid, %1 %2 = load %1 %3 = trunc i32 %2 to i8 store %3, %val0 %4 = load %1 %5 = trunc i32 %4 to i8 store %5, %val1 %6 = load %1 %7 = trunc i32 %6 to i8 %8 = load %val0 Unnamed Call-Instruction = call BasicVoidType @lstig(i8 zeroext %7, i8 zeroext 0, i8 signext %8, i1 zeroext 1) %9 = load %1 %10 = trunc i32 %9 to i8 %11 = load %val1 Unnamed Call-Instruction = call BasicVoidType @lstig(i8 zeroext %10, i8 zeroext 1, i8 signext %11, i1 zeroext 0) %12 = call i32 @__VERIFIER_nondet_int() %13 = trunc i32 %12 to i8 store %13, %pc0 %14 = load %pc0 %15 = zext i8 %14 to i32 %16 = icmp eq %15 2 br %16, %29, %17 17: %18 = load %pc0 %19 = zext i8 %18 to i32 %20 = icmp eq %19 3 br %20, %29, %21 21: %22 = load %pc0 %23 = zext i8 %22 to i32 %24 = icmp eq %23 4 br %24, %29, %25 25: %26 = load %pc0 %27 = zext i8 %26 to i32 %28 = icmp eq %27 5 br %29 29: %30 = phi [1, %21], [1, %17], [1, %0], [%28, %25] %31 = zext i1 %30 to i32 %32 = call i32 (...)* @__VERIFIER_assume(i32 %31) %33 = load %pc0 %34 = load %1 %35 = sext i32 %34 to i64 %36 = getelementptr @pc, 0, %35 %37 = getelementptr %36, 0, 0 store %33, %37 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 %propagate_or_confirm = alloca i8, align 1 store 0, %1 Unnamed Call-Instruction = call BasicVoidType @init() store 0, %firstAgent br %2 2: %3 = call i32 @__VERIFIER_nondet_int() %4 = icmp ne %3 0 br %4, %5, %42 5: %6 = load %firstAgent %7 = zext i8 %6 to i32 %8 = icmp slt %7 3 %9 = zext i1 %8 to i32 %10 = call i32 (...)* @__VERIFIER_assume(i32 %9) %11 = load %firstAgent %12 = zext i8 %11 to i64 %13 = getelementptr @pc, 0, %12 %14 = getelementptr %13, 0, 0 %15 = load %14 %16 = zext i8 %15 to i32 switch %16, %32 [2, %17 3, %20 4, %23 5, %26 6, %29] 17: %18 = load %firstAgent %19 = zext i8 %18 to i32 Unnamed Call-Instruction = call BasicVoidType @_0_2(i32 %19) br %33 20: %21 = load %firstAgent %22 = zext i8 %21 to i32 Unnamed Call-Instruction = call BasicVoidType @_0_3(i32 %22) br %33 23: %24 = load %firstAgent %25 = zext i8 %24 to i32 Unnamed Call-Instruction = call BasicVoidType @_0_4(i32 %25) br %33 26: %27 = load %firstAgent %28 = zext i8 %27 to i32 Unnamed Call-Instruction = call BasicVoidType @_0_5(i32 %28) br %33 29: %30 = load %firstAgent %31 = zext i8 %30 to i32 Unnamed Call-Instruction = call BasicVoidType @_0_6(i32 %31) br %33 32: br %33 33: %34 = load %firstAgent %35 = zext i8 %34 to i32 %36 = icmp eq %35 2 br %36, %37, %38 37: store 0, %firstAgent br %41 38: %39 = load %firstAgent %40 = add %39 1 store %40, %firstAgent br %41 41: br %51 42: %43 = call i32 @__VERIFIER_nondet_int() %44 = icmp ne %43 0 %45 = zext i1 %44 to i8 store %45, %propagate_or_confirm %46 = load %propagate_or_confirm %47 = trunc i8 %46 to i1 br %47, %48, %49 48: Unnamed Call-Instruction = call BasicVoidType @propagate() br %50 49: Unnamed Call-Instruction = call BasicVoidType @confirm() br %50 50: br %51 51: %52 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@5d8e430e %53 = sext i8 %52 to i32 %54 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@2999c340 %55 = sext i8 %54 to i32 %56 = sub %53 %55 %57 = trunc i32 %56 to i8 %58 = call signext i8 @__abs(i8 signext %57) %59 = sext i8 %58 to i32 %60 = icmp sge %59 2 br %60, %61, %112 61: %62 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@7073149d %63 = sext i8 %62 to i32 %64 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@46f64439 %65 = sext i8 %64 to i32 %66 = sub %63 %65 %67 = trunc i32 %66 to i8 %68 = call signext i8 @__abs(i8 signext %67) %69 = sext i8 %68 to i32 %70 = icmp sge %69 2 br %70, %71, %112 71: %72 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@694ff9da %73 = sext i8 %72 to i32 %74 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@e2ba470 %75 = sext i8 %74 to i32 %76 = sub %73 %75 %77 = trunc i32 %76 to i8 %78 = call signext i8 @__abs(i8 signext %77) %79 = sext i8 %78 to i32 %80 = icmp sge %79 2 br %80, %81, %112 81: %82 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@66948ed4 %83 = sext i8 %82 to i32 %84 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@1237d9b3 %85 = sext i8 %84 to i32 %86 = sub %83 %85 %87 = trunc i32 %86 to i8 %88 = call signext i8 @__abs(i8 signext %87) %89 = sext i8 %88 to i32 %90 = icmp sge %89 2 br %90, %91, %112 91: %92 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@4207306 %93 = sext i8 %92 to i32 %94 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@577b4fd6 %95 = sext i8 %94 to i32 %96 = sub %93 %95 %97 = trunc i32 %96 to i8 %98 = call signext i8 @__abs(i8 signext %97) %99 = sext i8 %98 to i32 %100 = icmp sge %99 2 br %100, %101, %112 101: %102 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@155b99c3 %103 = sext i8 %102 to i32 %104 = load aprove.InputModules.Programs.llvm.internalStructures.literals.const_expr.LLVMGetElementPtrConstExpr@390d209a %105 = sext i8 %104 to i32 %106 = sub %103 %105 %107 = trunc i32 %106 to i8 %108 = call signext i8 @__abs(i8 signext %107) %109 = sext i8 %108 to i32 %110 = icmp sge %109 2 br %110, %111, %112 111: ret 0 112: br %2 Analyze Termination of all function calls matching the pattern: main()