x
28
parameter (or (nat %divide) (or (unit %double) (nat %replace)));
storage (pair (int %nbVotes) (nat %storedValue));
code { DUP ;
CDR ;
SWAP ;
CAR ;
IF_LEFT
{ DUP ;
PUSH nat 5 ;
COMPARE ;
LT ;
IF {} { PUSH string "WrongCondition: params.divisor > 5" ; FAILWITH } ;
SWAP ;
DUP ;
CAR ;
SWAP ;
CDR ;
DIG 2 ;
SWAP ;
EDIV ;
IF_NONE { PUSH int 26 ; FAILWITH } { CAR } ;
SWAP ;
PAIR }
{ IF_LEFT
{ DROP ; DUP ; CAR ; SWAP ; CDR ; PUSH nat 2 ; MUL ; SWAP ; PAIR }
{ SWAP ; DUP ; CDR ; SWAP ; CAR ; PUSH int 1 ; ADD ; PAIR ; CAR ; PAIR } } ;
NIL operation ;
PAIR }