// verifast_options{disable_overflow_check target:ILP32} extern void abort(void); //@ requires true; //@ ensures true; void reach_error() //@ requires false; //@ ensures true; {}void assume_abort_if_not(int cond) //@ requires true; //@ ensures true; { if(!cond) {abort();} } void __VERIFIER_assert(int cond) //@ requires (cond != 0); //@ ensures (cond != 0); { if (!(cond)) { ERROR: {reach_error();abort();} } return; } int __VERIFIER_nondet_int(); //@ requires true; //@ ensures true; int main () { //@ open_module(); int in; int inlen = __VERIFIER_nondet_int(); int bufferlen = __VERIFIER_nondet_int(); int buf; int buflim; if(bufferlen >1);else goto END; if(inlen > 0);else goto END; if(bufferlen < inlen);else goto END; buf = 0; in = 0; buflim = bufferlen - 2; while (__VERIFIER_nondet_int()) //@ invariant (((((((2 + buflim) == bufferlen) && (in == 0)) && (0 <= buflim)) && (buf == 0)) && ((bufferlen + 1) <= inlen)) || (((((((bufferlen + in) + 1) <= (buf + inlen)) && ((2 + buflim) == bufferlen)) && (1 <= in)) && (0 <= buf)) && (buf <= buflim))); { if (buf == buflim) break; __VERIFIER_assert(0<=buf); __VERIFIER_assert(buf