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