/*
 * gcd program (terminating) based on 
 * (Dershowitz, Lindenstrauss, Sagiv and Serebrenik, 2001)
 *
 * Date: 15.12.2013
 * Author: Amir Ben-Amram, amirben@cs.mta.ac.il
 *
 */
typedef enum {false, true} bool;

extern int __VERIFIER_nondet_int(void);

int main()
{
	int r, x, y;

	x = __VERIFIER_nondet_int();
	y = __VERIFIER_nondet_int();

	if (x<0) {x = -x;}
	if (y<0) {y = -y;}
	while (y>0) {
		/*  the next statements compute  r = mod(x,y)   */
		r = x;
		while (r>=y) {
			r = r-y;
        }
		/* end of inlined mod */
		x = y;
		y = r;
	}
    return 0;
}