mtype = { a, b, c, d, e, i, l, m, n, q, r, u, v };

chan dce = [0] of { mtype };
chan dte = [0] of { mtype };

active proctype dte_proc()
{
state01:
	do
	:: dce!b -> /* state21 */ dce!a
	:: dce!i -> /* state14 */
			if
			:: dte?m -> goto state19
			:: dce!a
			fi
	:: dte?m -> goto state18
	:: dte?u -> goto state08
	:: dce!d -> break
	od;

	/* state02: */
	if
	:: dte?v
	:: dte?u -> goto state15
	:: dte?m -> goto state19
	fi;
state03:
	dce!e;
	/* state04: */
	if
	:: dte?m -> goto state19
	:: dce!c
	fi;
	/* state05: */
	if
	:: dte?m -> goto state19
	:: dte?r
	fi;
	/* state6A: */
	if
	:: dte?m -> goto state19
	:: dte?q
	fi;
state07:
	if
	:: dte?m -> goto state19
	:: dte?r
	fi;
	/* state6B: */
	if		/* non-deterministic select */
	:: dte?q -> goto state07
	:: dte?q
	:: dte?m -> goto state19
	fi;
	/* state10: */
	if
	:: dte?m -> goto state19
	:: dte?r
	fi;
state6C:
	if
	:: dte?m -> goto state19
	:: dte?l
	fi;
	/* state11: */
	if
	:: dte?m -> goto state19
	:: dte?n
	fi;
	/* state12: */
	if
	:: dte?m -> goto state19
	:: dce!b -> goto state16
	fi;

state15:
	if
	:: dte?v -> goto state03
	:: dte?m -> goto state19
	fi;
state08:
	if
	:: dce!c
	:: dce!d -> goto state15
	:: dte?m -> goto state19
	fi;
	/* state09: */
	if
	:: dte?m -> goto state19
	:: dte?q
	fi;
	/* state10B: */
	if
	:: dte?r -> goto state6C
	:: dte?m -> goto state19
	fi;
state18:
	if
	:: dte?l -> goto state01
	:: dte?m -> goto state19
	fi;
state16:
	dte?m;
	/* state17: */
	dte?l;
	/* state21: */
	dce!a; goto state01;
state19:
	dce!b;
	/* state20: */
	dte?l;
	/* state21: */
	dce!a; goto state01
}

active proctype dce_proc()
{
state01:
	do
	:: dce?b -> /* state21 */ dce?a
	:: dce?i -> /* state14 */
			if
			:: dce?b -> goto state16
			:: dce?a
			fi
	:: dte!m -> goto state18
	:: dte!u -> goto state08
	:: dce?d -> break
	od;

	/* state02: */
	if
	:: dte!v
	:: dte!u -> goto state15
	:: dce?b -> goto state16
	fi;
state03:
	dce?e;
	/* state04: */
	if
	:: dce?b -> goto state16
	:: dce?c
	fi;
	/* state05: */
	if
	:: dce?b -> goto state16
	:: dte!r
	fi;
	/* state6A: */
	if
	:: dce?b -> goto state16
	:: dte!q
	fi;
state07:
	if
	:: dce?b -> goto state16
	:: dte!r
	fi;
	/* state6B: */
	if		/* non-deterministic select */
	:: dte!q -> goto state07
	:: dte!q
	:: dce?b -> goto state16
	fi;
	/* state10: */
	if
	:: dce?b -> goto state16
	:: dte!r
	fi;
state6C:
	if
	:: dce?b -> goto state16
	:: dte!l
	fi;
	/* state11: */
	if
	:: dce?b -> goto state16
	:: dte!n
	fi;
	/* state12: */
	if
	:: dce?b -> goto state16
	:: dte!m -> goto state19
	fi;

state15:
	if
	:: dte!v -> goto state03
	:: dce?b -> goto state16
	fi;
state08:
	if
	:: dce?c
	:: dce?d -> goto state15
	:: dce?b -> goto state16
	fi;
	/* state09: */
	if
	:: dce?b -> goto state16
	:: dte!q
	fi;
	/* state10B: */
	if
	:: dte!r -> goto state6C
	:: dce?b -> goto state16
	fi;
state18:
	if
	:: dte!l -> goto state01
	:: dce?b -> goto state16
	fi;
state16:
	dte!m;
	/* state17: */
	dte!l;
	/* state21: */
	dce?a; goto state01;
state19:
	dce?b;
	/* state20: */
	dte!l;
	/* state21: */
	dce?a; goto state01
}
