/* $Header$ */
loc adi w loc sbi w : loc $1-$3 adi w
inc dec:
inc loc adi w :	loc $2+1 adi w
inc loc sbi w :	loc $2-1 sbi w
dec loc adi w :	loc $2-1 adi w
dec loc sbi w :	loc $2+1 sbi w
ldc adi w2 ldc sbi w2 : ldc $1-$3 adi w2
loc adi w loc adi w : loc $1+$3 adi w
ldc adi w2 ldc adi w2 : ldc $1+$3 adi w2
loc adi w loc mli w :	loc $3 mli w loc $1*$3 adi w
loc adi w loc 1 sli w : loc $3 sli w loc 2*$1 adi w
adp 0 :
adp adp : adp $1+$2
adp lof : lof $1+$2
adp ldf : ldf $1+$2
adp !=0 loi w : lof $1
adp !=0 loi w2 : ldf $1
adp stf : stf $1+$2
adp sdf : sdf $1+$2
adp !=0 sti w : stf $1
adp !=0 sti w2 : sdf $1
asp 0 :
asp asp : asp $1+$2
blm 0 : asp 2*p
cmi w zeq : beq $2
cmi w zge : bge $2
cmi w zgt : bgt $2
cmi w zle : ble $2
cmi w zlt : blt $2
cmi w zne : bne $2
cmu w zeq :	beq $2
cmu w zne :	bne $2
dvi ngi $1 : ngi $1 dvi $1
lae adp : lae $1+$2
lae blm w : loi w ste $1
lae blm w2 : loi w2 sde $1
lae ldf : lde $1+$2
lae lof : loe $1+$2
lae loi w : loe $1
lae loi w2 : lde $1
#ifdef INT
lae loi loe $1-w ? $2%w==0: lae $3 loi $2+w
lae loi lde $1-w2 ? $2%w==0: lae $3 loi $2+w2
lae $3+$4 loi lae loi ? $2%w==0 && $4%w==0: lae $3 loi $2+$4
lae sti ste $1+$2 : lae $1 sti $2+w
lae sti sde $1+$2 : lae $1 sti $2+w2
lae sti loc ste $1-w : loc $3 lae $4 sti $2+w
lae sti lol ste $1-w : lol $3 lae $4 sti $2+w
#endif
lae lae blm loe $1+$3 ste $2+$3 : lae $1 lae $2 blm $3+w
lae lae blm lde $1+$3 sde $2+$3 : lae $1 lae $2 blm $3+w2
lae lae blm lae $1+$3 lae $2+$3 blm : lae $1 lae $2 blm $3+$6
lae lal blm lae $1+$3 lal $2+$3 blm ? samesign($2,$5):
	lae $1 lal $2 blm $3+$6
lal lae blm lal $1+$3 lae $2+$3 blm ? samesign($1,$4):
	lal $1 lae $2 blm $3+$6
lal lal blm lal $1+$3 lal $2+$3 blm ? samesign($1,$4) && samesign($2,$5):
	lal $1 lal $2 blm $3+$6
lal lal sbs w ? samesign($1,$2): loc $1-$2
lae sdf : sde $1+$2
lae stf : ste $1+$2
lae sti w : ste $1
lae sti w2 : sde $1
lal adp ? samesign($1,$1+$2): lal $1+$2
lal blm w : loi w stl $1
lal blm w2 : loi w2 sdl $1
#ifdef INT
/*lal sti loc stl $1-w ? notreg($4) && samesign($1,$4):	*/
/*	loc $3 lal $4 sti $2+w				*/
/*lal sti loe stl $1-w ? notreg($4) && samesign($1,$4):	*/
/*	loe $3 lal $4 sti $2+w				*/
#endif
lal ldf ? samesign($1,$1+$2): ldl $1+$2
lal lof ? samesign($1,$1+$2): lol $1+$2
lal loi w : lol $1
lal loi w2 : ldl $1
#ifdef INT
/*lal loi lol $1-w ? notreg($3) && samesign($1,$3) && $2%w==0:		*/
/*	lal $3 loi $2+w						*/
/*lal loi ldl $1-w2 ? notreg($3) && samesign($1,$3) && $2%w==0:	*/
/*	lal $3 loi $2+w2						*/
lal loi lal loi $1-$3 ? samesign($1,$3) && $2%w==0 && $4%w==0:
	lal $3 loi $2+$4
/*lal sti stl $1+$2 ? notreg($3) && samesign($1,$3): lal $1 sti $2+w	*/
/*lal sti sdl $1+$2 ? notreg($3) && samesign($1,$3): lal $1 sti $2+w2*/
#endif
lal sdf ? samesign($1,$1+$2): sdl $1+$2
lal stf ? samesign($1,$1+$2): stl $1+$2
lal sti w : stl $1
lal sti w2 : sdl $1
#ifdef INT
lde lde $1-w2 : lae $2 loi 4*w
lde loe $1-w : lae $2 loi 3*w
#endif
lde sde $1 :
lde sde lde $1+w2 sde $2+w2 : lae $1 lae $2 blm 4*w
#ifdef INT
/*ldl ldl $1-w2 ? notreg($1) && notreg($2) && samesign($1,$2):*/
/*	lal $2 loi 4*w						*/
/*ldl lol $1-w ? notreg($1) && notreg($2) && samesign($1,$2):	*/
/*	lal $2 loi 3*w						*/
#endif
ldl sdl $1:
lxa loi lxa $1 sti $2 :
lxa lof lxa $1 stf $2 :
lxa ldf lxa $1 sdf $2 :
lxa >1 stf lxa $1 lof $2 : dup w lxa $1 stf $2
lxa >1 sdf lxa $1 ldf $2 : dup w2 lxa $1 sdf $2
lxl lof lxl $1 stf $2 :
lxl ldf lxl $1 sdf $2 :
lxl >1 stf lxl $1 lof $2 : dup w lxl $1 stf $2
lxl >1 sdf lxl $1 ldf $2 : dup w2 lxl $1 sdf $2
lxa >1 sti lxa $1 loi $2 ? $2%w==0: dup $2 lxa $1 sti $2
loc -1 adi w : dec
loc dec ? sfit($1-1,8*w) :	loc $1-1
loc -1 bgt : zge $2
loc -1 ble : zlt $2
loc -1 dvi w : ngi w
ldc -1 dvi w2 : ngi w2
loc -1 loe adi w : loe $2 dec
loc -1 lol adi w : lol $2 dec
loc -1 mli w : ngi w
ldc -1 mli w2 : ngi w2
loc -1 sbi w : inc
loc inc ? sfit($1+1,8*w) :	loc $1+1
loc 0 adi w :
ldc 0 adi w2 :
loc 0 ads w :
ldc 0 ads w2 :
zer adi $1 :
loc 0 beq : zeq $2
loc 0 bge : zge $2
loc 0 bgt : zgt $2
loc 0 ble : zle $2
loc 0 blt : zlt $2
loc 0 bne : zne $2
loc 0 cmi w teq : teq
loc 0 cmi w tge : tge
loc 0 cmi w tgt : tgt
loc 0 cmi w tle : tle
loc 0 cmi w tlt : tlt
loc 0 cmi w tne : tne
loc 0 cmu w teq :	teq
loc 0 cmu w tne :	tne
loc 0 cmu w zeq :	zeq $3
loc 0 cmu w zne :	zne $3
loc 0 ior w :
ldc 0 ior w2 :
zer ior $1 :
loc 0 ste : zre $2
loc 0 stl : zrl $2
loc 0 sbi w :
ldc 0 sbi w2 :
zer sbi $1 :
loc 0 xor w :
ldc 0 xor w2 :
zer xor $1 :
loc 1 adi w : inc
loc 1 bge : zgt $2
loc 1 blt : zle $2
loc 1 dvi w :
ldc 1 dvi w2 :
loc 1 dvu w :
loc 1 dvu w2 :
loc 1 loe adi w : loe $2 inc
loc 1 lol adi w : lol $2 inc
loc 0 mli w :	asp w loc 0
ldc 0 mli w2 :	asp w2 ldc 0
loc 0 mlu w : asp w loc 0
ldc 0 mlu w2 :	asp w2 ldc 0
loc 1 mli w :
ldc 1 mli w2 :
loc 1  mlu w  :
ldc 1  mlu w2  :
loc 1  sbi w  : dec
loc loe mli w :      loe $2  loc $1  mli w
loc loe mlu w :      loe $2  loc $1  mlu w
loc loe adi w loc :	loe $2 	loc $1 	adi w loc $4
loc loe adi w inc :	loe $2 	loc $1 	adi w inc
loc loe adi w dec :	loe $2 	loc $1 	adi w dec
loc lol mli w :      lol $2  loc $1  mli w
loc lol mlu w :      lol $2  loc $1  mlu w
loc lol adi w loc :	lol $2	loc $1	adi w loc $4
loc lol adi w inc :	lol $2	loc $1	adi w dec
loc lol adi w dec :	lol $2	loc $1	adi w dec
ldc lde mli w2 :    lde $2  ldc $1  mli w2
ldc lde mlu w2 :    lde $2  ldc $1  mlu w2
ldc lde adi w2 :    lde $2  ldc $1  adi w2
ldc ldl mli w2 :    ldl $2  ldc $1  mli w2
ldc ldl mlu w2 :    ldl $2  ldc $1  mlu w2
ldc ldl adi w2 :    ldl $2  ldc $1  adi w2
loc 2  mli w  : 	loc 1   sli w
loc 4  mli w  : 	loc 2   sli w
loc 8  mli w  : 	loc 3   sli w
loc 16  mli w  :        loc 4   sli w
loc 32  mli w  :        loc 5   sli w
loc 64  mli w  :        loc 6   sli w
loc 128  mli w  :       loc 7   sli w
loc 256  mli w  :       loc 8   sli w
loc 2  mlu w  : 	loc 1   slu w
loc 4  mlu w  : 	loc 2   slu w
loc 8  mlu w  : 	loc 3   slu w
loc 16  mlu w  :        loc 4   slu w
loc 32  mlu w  :        loc 5   slu w
loc 64  mlu w  :        loc 6   slu w
loc 128  mlu w  :       loc 7   slu w
loc 256  mlu w  :       loc 8   slu w
loc 2  dvu w  : 	loc 1   sru w
loc 4  dvu w  : 	loc 2   sru w
loc 8  dvu w  : 	loc 3   sru w
loc 16  dvu w  :        loc 4   sru w
loc 32  dvu w  :        loc 5   sru w
loc 64  dvu w  :        loc 6   sru w
loc 128  dvu w  :       loc 7   sru w
loc 256  dvu w  :       loc 8   sru w
loc adi undefined :   adi $1
loc sbi undefined :   sbi $1
loc mli undefined :   mli $1
loc dvi undefined :   dvi $1
loc rmi undefined :   rmi $1
loc ngi undefined :   ngi $1
loc sli undefined :   sli $1
loc sri undefined :   sri $1
loc adu undefined :   adu $1
loc sbu undefined :   sbu $1
loc mlu undefined :   mlu $1
loc dvu undefined :   dvu $1
loc rmu undefined :   rmu $1
loc slu undefined :   slu $1
loc sru undefined :   sru $1
loc adf undefined :   adf $1
loc sbf undefined :   sbf $1
loc mlf undefined :   mlf $1
loc dvf undefined :   dvf $1
loc ngf undefined :   ngf $1
loc fif undefined :   fif $1
loc fef undefined :   fef $1
loc zer undefined :   zer $1
loc zrf undefined :   zrf $1
loc los w :	loi $1
loc sts w :	sti $1
loc ads w :	adp $1
ldc ads w2 ? sfit($1,8*w):	adp $1
loc ass w :	asp $1
loc bls w :	blm $1
loc dus w :	dup $1
loc loc $1 cii :
loc loc $1 cuu :
loc loc $1 cff :
loc and undefined :   and $1
loc ior undefined :   ior $1
loc xor undefined :   xor $1
loc com undefined :   com $1
loc rol undefined :   rol $1
loc 0 rol :
loc ror undefined :   ror $1
loc 0 ror :
loc inn undefined :   inn $1
loc set undefined :   set $1
loc cmi undefined :   cmi $1
loc cmu undefined :   cmu $1
loc cmf undefined :   cmf $1
loe dec ste $1:     dee $1
loe inc ste $1:     ine $1
loe loc 0  mli w  :     loc 0
#ifdef INT
loe loe $1-w :       lde $2
loe loe $1+w beq :   lde $1  beq $3
loe loe $1+w bge :   lde $1  ble $3
loe loe $1+w bgt :   lde $1  blt $3
loe loe $1+w ble :   lde $1  bge $3
loe loe $1+w blt :   lde $1  bgt $3
loe loe $1+w bne :   lde $1  bne $3
loe loe $1+w  cmi w  :  lde $1  cmi w   ngi w
#endif
ngi w teq :  teq
ngi w tge :  tle
ngi w tgt :  tlt
ngi w tle :  tge
ngi w tlt :  tgt
ngi w tne :  tne
#ifdef INT
loe loe $1+w  mli w  :  lde $1  mli w
loe loe $1+w  adi w  :  lde $1  adi w
loe loe $1 : loe $1  dup w
#endif
loe ste $1 :
lol blm w ? p==w : loi w   sil $1
ldl blm w ? p==w2 :  loi w   sil $1
lol dec stl $1 :     del $1
lol inc stl $1 :     inl $1
lol loc 0  mli w  :     loc 0
lol loi w ? w==p :  lil $1
ldl loi w ? p==w2 :  lil $1
#ifdef INT
/*lol lol $1-w ? notreg($1) && notreg($2) && samesign($1,$2):		*/
/*	ldl $2								*/
/*lol lol $1+w  beq ? notreg($1) && notreg($2) && samesign($1,$2):	*/
/*	ldl $1  beq $3							*/
/*lol lol $1+w  bge ? notreg($1) && notreg($2) && samesign($1,$2):	*/
/*	ldl $1  ble $3							*/
/*lol lol $1+w  bgt ? notreg($1) && notreg($2) && samesign($1,$2):	*/
/*	ldl $1  blt $3							*/
/*lol lol $1+w  ble ? notreg($1) && notreg($2) && samesign($1,$2):	*/
/*	ldl $1  bge $3							*/
/*lol lol $1+w  blt ? notreg($1) && notreg($2) && samesign($1,$2):	*/
/*	ldl $1  bgt $3							*/
/*lol lol $1+w  bne ? notreg($1) && notreg($2) && samesign($1,$2):	*/
/*	ldl $1  bne $3							*/
/*lol lol $1+w  cmi w ?   notreg($1) && notreg($2) && samesign($1,$2):	*/
/*	ldl $1  cmi w   ngi w						*/
/*lol lol $1+w  mli w ?   notreg($1) && notreg($2) && samesign($1,$2):	*/
/*	ldl $1  mli w							*/
/*lol lol $1+w  adi w ?   notreg($1) && notreg($2) && samesign($1,$2):	*/
/*	ldl $1  adi w							*/
lol lol $1 : lol $1  dup w
#endif
lol stl $1:
lol  sti w ? p==w :  sil $1
ldl sti w ? p==w2 :  sil $1
mli ngi $1: ngi $1  mli $1
ngi adi $1: sbi $1
ngf adf $1: sbf $1
ngi sbi $1: adi $1
ngf sbf $1: adf $1
ngi ngi $1:
ngf ngf $1:
#ifdef INT
sde sde $1+w2 :     lae $1  sti 4*w
sde ste $1+w2 :     lae $1  sti 3*w
sde loc ste $1-w :   loc $2  lae $3  sti 3*w
sde lol ste $1-w :   lol $2  lae $3  sti 3*w
sde lde $1 : dup w2 sde $1
#endif
sdf 0 :      sti w2
#ifdef INT
/*sdl sdl $1+w2 ? notreg($1) && notreg($2) && samesign($1,$2):		*/
/*	lal $1  sti 4*w							*/
/*sdl stl $1+w2 ? notreg($1) && notreg($2) && samesign($1,$2):		*/
/*	lal $1  sti 3*w							*/
/*sdl loc stl $1-w ? notreg($1) && notreg($3) && samesign($1,$3):	*/
/*	loc $2  lal $3  sti 3*w						*/
/*sdl loe stl $1-w ? notreg($1) && notreg($3) && samesign($1,$3):	*/
/*	loe $2  lal $3  sti 3*w						*/
sdl ldl $1 : dup w2 sdl $1
ste loe $1 : dup w   ste $1
ste ste $1-w :       sde $2
ste loc ste $1-w :   loc $2  sde $3
ste lol ste $1-w :   lol $2  sde $3
stl lol $1 : dup w   stl $1
#endif
stf 0 : sti w
sdl ldl $1 ret w2  :  ret w2
#ifdef INT
/*stl stl $1+w ? notreg($1) && notreg($2) && samesign($1,$2):  sdl $1	*/
/*stl loc stl $1-w ? notreg($1) && notreg($3) && samesign($1,$3):	*/
/*	loc $2  sdl $3							*/
/*stl loe stl $1-w ? notreg($1) && notreg($3) && samesign($1,$3):	*/
/*	loe $2  sdl $3							*/
#endif
stl lol $1 ret w  :    ret w
lal sti lal $1 loi $2 ret $2 :	ret $2
loc sbi w  loc sbi w  : loc $1+$3 sbi w
ldc sbi w2  ldc sbi w2  :     ldc $1+$3 sbi w2
loc sbi w  loc adi w  : loc $1-$3 sbi w
ldc sbi w2  ldc adi w2  :     ldc $1-$3 sbi w2
loc sbi w  loc mli w  :	loc $3 mli w loc $1*$3 sbi w
loc sbi w  loc 1 sli w    : loc $3 sli w loc 2*$1 sbi w
teq teq :       tne
teq tne :       teq
teq zne :       zeq $2
teq zeq :       zne $2
tge teq :       tlt
tge tne :       tge
tge zeq :       zlt $2
tge zne :       zge $2
tgt teq :       tle
tgt tne :       tgt
tgt zeq :       zle $2
tgt zne :       zgt $2
tle teq :       tgt
tle tne :       tle
tle zeq :       zgt $2
tle zne :       zle $2
tlt teq :       tge
tlt tne :       tlt
tlt zeq :       zge $2
tlt zne :       zlt $2
tne teq :       teq
tne tne :       tne
tne zeq :       zeq $2
tne zne :       zne $2
#ifdef INT
loc 0  loc 0  loc 0    :    zer 3*w
zer defined loc 0 :   zer $1+w
#endif
loi 1  loc and w  ? ($2&255)==255:    loi 1
loi <w loc w loc cii : loi $1 loc $2 loc $3 cui
loi 1  loc 1  loc w  cii loc 255  and w     :	loi 1
loi 1  loc 1  loc w  cii loc cmi w zeq ? $5>=0&&$5<128 :	loi 1 loc $5 cmi w zeq $7
loi 1  loc 1  loc w  cii loc cmi w zne ? $5>=0&&$5<128 :	loi 1 loc $5 cmi w zne $7
loi 1  loc 1  loc w  cii loc w  loc w  ciu loc 255 and w:	loi 1
cmp teq :       cms p   teq
cmp tne :       cms p   tne
cmp zeq :	cms p	zeq $2
cmp zne :	cms p	zne $2
cmu defined teq :    cms $1  teq
cmu defined tne :    cms $1  tne
cms w zeq :  beq $2
cms w zne :  bne $2
lol lae aar w adp :  adp $4  lol $1  lae $2  aar w
loe lae aar w adp :  adp $4  loe $1  lae $2  aar w
cmi defined zeq :    cms $1  zeq $2
cmi defined zne :    cms $1  zne $2
#ifdef INT
loe $4  inc dup w ste  :        ine $1  loe $1
loe $4  dec dup w ste  :        dee $1  loe $1
lol $4  inc dup w stl  :        inl $1  lol $1
lol $4  dec dup w stl  :        del $1  lol $1
adp dup p ste adp -$1 ? p==w : dup p adp $1 ste $3
adp dup p sde adp -$1 ? p==w2 : dup p adp $1 sde $3
adp dup p stl adp -$1 ? p==w :       dup p   adp $1   stl $3
adp dup p sdl adp -$1 ? p==w2 :       dup p   adp $1   sdl $3
inc dup w ste dec :  dup w   inc     ste $3
inc dup w stl dec :  dup w   inc     stl $3
#endif
bra lab $1 :	lab $2
zeq bra lab $1 :     zne $2  lab $1
zge bra lab $1:     zlt $2  lab $1
zgt bra lab $1 :     zle $2  lab $1
zlt bra lab $1 :     zge $2  lab $1
zle bra lab $1 :     zgt $2  lab $1
zne bra lab $1 :     zeq $2  lab $1
beq bra lab $1 :     bne $2  lab $1
bge bra lab $1 :     blt $2  lab $1
bgt bra lab $1 :     ble $2  lab $1
blt bra lab $1 :     bge $2  lab $1
ble bra lab $1 :     bgt $2  lab $1
bne bra lab $1 :     beq $2  lab $1
lin lin :       lin $2
lin lab lin :   lab $2  lin $3
lin ret :       ret $2
lin bra :       bra $2
#ifdef INT
dup p  stl loi w ? p==w :     stl $2  lil $2
dup p  sdl loi w  ? p==w2 :     sdl $2  lil $2
dup p  stl sti w ? p==w :     stl $2  sil $2
dup p  sdl sti w ? p==w2  :     sdl $2  sil $2
#endif
loc 0  cms w  : tne
zer w : loc 0
loc loc adi w ? sfit($1+$2,8*w) : loc $1+$2
loc loc sbi w ? sfit($1-$2,8*w) : loc $1-$2
loc loc mli w ? sfit($1*$2,8*w) : loc $1*$2
loc loc !=0 dvi w : loc $1/$2
loc loc and w  :	loc $1&$2
loc loc ior w  :	loc $1|$2
loc 0  loc 0  ior w2    :	
loc loc xor w  :	loc $1^$2
loc 0  loc 0  xor w2    :	
loc loc rol w  :	loc rotate($1,$2)
loc loc ror w  :	loc rotate($1,8*w-$2)
loc ngi w ? sfit(-$1,8*w) : loc -$1
loc com w  :	loc ~$1
ldc ngi w2  : ldc -$1
/*loc lae aar w ? $1>=rom(2,0) && $1 <= rom(2,0)+rom(2,1) :	*/
/*	adp ($1-rom(2,0))*rom(2,2)				*/
/*loc lae lar w ? $1>=rom(2,0) && $1 <= rom(2,0)+rom(2,1) :	*/
/*	adp ($1-rom(2,0))*rom(2,2) loi rom(2,2)			*/
/*loc lae sar w ? $1>=rom(2,0) && $1 <= rom(2,0)+rom(2,1) :	*/
/*	adp ($1-rom(2,0))*rom(2,2) sti rom(2,2)			*/
loc teq : loc $1==0
loc tne : loc $1!=0
loc tge : loc $1>=0
loc tle : loc $1<=0
loc tgt : loc $1>0
loc tlt : loc $1<0
loc 0  zeq : bra $2
loc zeq :
loc !=0 zne : bra $2
loc zne :
loc >=0 zge : bra $2
loc zge :
loc <=0 zle : bra $2
loc zle :
loc >0 zgt : bra $2
loc zgt :
loc <0 zlt : bra $2
loc zlt :
loc loc $1 beq : bra $3
loc loc beq :
loc loc !=$1 bne : bra $3
loc loc bne :
loc loc bge ? $1>=$2 : bra $3
loc loc bge :
loc loc ble ? $1<=$2 : bra $3
loc loc ble :
loc loc bgt ? $1>$2 : bra $3
loc loc bgt :
loc loc blt ? $1<$2 : bra $3
loc loc blt :
lae loi >4*w lal sti $2  : lae $1 lal $3 blm $2
lal loi >4*w lae sti $2  : lal $1 lae $3 blm $2
lal loi >4*w lal sti $2  ? ( $3<=$1-$2 || $3>=$1+$2 ) :
	lal $1 lal $3 blm $2
lae loi >4*w lae sti $2 ? ($3<=$1-$2 || $3>=$1+$2) :
	lae $1 lae $3 blm $2
loc 0  loc w  loc cif  :	zrf $3
loc >=0 loc w  loc w2  ciu :	ldc $1
loc loc w  loc w2  cii  :	ldc $1
loi loc >=0 inn $1 ? $2<$1*8 : 
	lof ($2/(8*w))*w loc $2&(8*w-1) inn w
ldl loc >=0  inn w2 ? $2<16*w : 
	lol $1+($2/(8*w))*w loc $2&(8*w-1) inn w
lde loc >=0 inn w2 ? $2<16*w : 
	loe $1+($2/(8*w))*w loc $2&(8*w-1) inn w
ldf loc >=0 inn w2 ? $2<16*w : 
	lof $1+($2/(8*w))*w loc $2&(8*w-1) inn w
loc inn ? $1<0 || $1>=8*$2 : asp $2 loc 0
lol loc adi w  stl $1 : loc $2 lol $1 adi w stl $4
lol loe adi w  stl $1 : loe $2 lol $1 adi w stl $4
lol lol !=$1 adi w  stl $1  : lol $2 lol $1 adi w stl $4
loe loc adi w  ste $1 : loc $2 loe $1 adi w ste $4
loe loe !=$1 adi w  ste $1  : loe $2 loe $1 adi w ste $4
loe lol adi w  ste $1 : lol $2 loe $1 adi w ste $4
lol loc ior w  stl $1 : loc $2 lol $1 ior w stl $4
lol loe ior w  stl $1 : loe $2 lol $1 ior w stl $4
lol lol !=$1 ior w  stl $1  : lol $2 lol $1 ior w stl $4
loe loc ior w  ste $1 : loc $2 loe $1 ior w ste $4
loe loe !=$1 ior w  ste $1  : loe $2 loe $1 ior w ste $4
loe lol ior w  ste $1 : lol $2 loe $1 ior w ste $4
lol loc and w  stl $1 : loc $2 lol $1 and w stl $4
lol loe and w  stl $1 : loe $2 lol $1 and w stl $4
lol lol !=$1 and w  stl $1  : lol $2 lol $1 and w stl $4
loe loc and w  ste $1 : loc $2 loe $1 and w ste $4
loe loe !=$1 and w  ste $1  : loe $2 loe $1 and w ste $4
loe lol and w  ste $1 : lol $2 loe $1 and w ste $4
loi asp $1 : asp p
lal loi 4*w loc loc loc loc ior 4*w ? ($3==0)+($4==0)+($5==0)+($6==0)>2 :
	lol $1+3*w loc $3 ior w lol $1+w2 loc $4 ior w lol $1+w loc $5 ior w lol $1 loc $6 ior w
loc dup 2  stl loc dup 2 stl  :
	loc $1 stl $3 loc $4 stl $6 loc $1 loc $4
lol lol adp stl $2 sti != p ? p==w : lol $1 sti $5 lol $2 adp $3 stl $4
ldl ldl adp sdl $2 sti != p ? p==w2 : ldl $1 sti $5 ldl $2 adp $3 sdl $4
loe loe adp ste $2 sti !=p ? p==w : loe $1 sti $5 loe $2 adp $3 ste $4
lde lde adp sde $2 sti !=p ? p==w2 : lde $1 sti $5 lde $2 adp $3 sde $4
#ifndef INT
dup w  stl : stl $2 lol $2
dup w  ste : ste $2 loe $2
dup w  sil : sil $2 lil $2
dup w  loe sti w ? p==w  : loe $2 sti w loe $2 loi w
dup w  lde sti w ? p==w2  : lde $2 sti w lde $2 loi w
dup w  lol stf ? p==w : lol $2 stf $3 lol $2 lof $3
dup w  ldl stf ? p==w2 : ldl $2 stf $3 ldl $2 lof $3
dup w  loe stf ? p==w : loe $2 stf $3 loe $2 lof $3
dup w  lde stf ? p==w2 : lde $2 stf $3 lde $2 lof $3
dup w2  sdl : sdl $2 ldl $2
dup w2  sde : sde $2 lde $2
dup w2  lol sti w2 ? p==w  : lol $2 sti w2 lol $2 loi w2
dup w2  ldl sti w2 ? p==w2  : ldl $2 sti w2 ldl $2 loi w2
dup w2  loe sti w2 ? p==w  : loe $2 sti w2 loe $2 loi w2
dup w2  lde sti w2 ? p==w2  : lde $2 sti w2 lde $2 loi w2
dup w2  lol sdf ? p==w : lol $2 sdf $3 lol $2 ldf $3
dup w2  ldl sdf ? p==w2 : ldl $2 sdf $3 ldl $2 ldf $3
dup w2  loe sdf ? p==w : loe $2 sdf $3 loe $2 ldf $3
dup w2  lde sdf ? p==w2 : lde $2 sdf $3 lde $2 ldf $3
lol dup w  : lol $1 lol $1
loe dup w  : loe $1 loe $1
lil dup w  : lil $1 lil $1
loe loi w  dup 2 ? p==w  : loe $1 loi w loe $1 loi w
lde loi w  dup 2 ? p==w2  : lde $1 loi w lde $1 loi w
ldl dup w2  : ldl $1 ldl $1
lde dup w2  : lde $1 lde $1
#endif
adp stl lol $2 adp -$1 ? p==w : dup p adp $1 stl $2
adp sdl ldl $2 adp -$1 ? p==w2 : dup p adp $1 sdl $2
adp ste loe $2 adp -$1 ? p==w : dup p adp $1 ste $2
adp sde lde $2 adp -$1 ? p==w2 : dup p adp $1 sde $2
adp sil lil $2 adp -$1 ? p==w : dup p adp $1 sil $2
adp lol sti p  lol $2 loi p  adp -$1 ? p==w : dup p adp $1 lol $2 sti p
adp ldl sti p  ldl $2 loi p  adp -$1 ? p==w2 : dup p adp $1 ldl $2 sti p
adp loe sti p  loe $2 loi p  adp -$1 ? p==w : dup p adp $1 loe $2 sti p
adp lde sti p  lde $2 loi p  adp -$1 ? p==w2 : dup p adp $1 lde $2 sti p
/* dead code patterns */
bra aar : bra $1
bra adf : bra $1
bra adi : bra $1
bra adp : bra $1
bra ads : bra $1
bra adu : bra $1
bra and : bra $1
bra asp : bra $1
bra ass : bra $1
bra beq : bra $1
bra bge : bra $1
bra bgt : bra $1
bra ble : bra $1
bra blm : bra $1
bra bls : bra $1
bra blt : bra $1
bra bne : bra $1
bra bra : bra $1
bra cai : bra $1
bra cal : bra $1
bra cff : bra $1
bra cfi : bra $1
bra cfu : bra $1
bra cif : bra $1
bra cii : bra $1
bra ciu : bra $1
bra cmf : bra $1
bra cmi : bra $1
bra cmp : bra $1
bra cms : bra $1
bra cmu : bra $1
bra com : bra $1
bra csa : bra $1
bra csb : bra $1
bra cuf : bra $1
bra cui : bra $1
bra cuu : bra $1
bra dch : bra $1
bra dec : bra $1
bra dee : bra $1
bra del : bra $1
bra dup : bra $1
bra dus : bra $1
bra dvf : bra $1
bra dvi : bra $1
bra dvu : bra $1
bra exg : bra $1
bra fef : bra $1
bra fif : bra $1
bra fil : bra $1
bra gto : bra $1
bra inc : bra $1
bra ine : bra $1
bra inl : bra $1
bra inn : bra $1
bra ior : bra $1
bra lae : bra $1
bra lal : bra $1
bra lar : bra $1
bra ldc : bra $1
bra lde : bra $1
bra ldf : bra $1
bra ldl : bra $1
bra lfr : bra $1
bra lil : bra $1
bra lim : bra $1
bra lin : bra $1
bra lni : bra $1
bra loc : bra $1
bra loe : bra $1
bra lof : bra $1
bra loi : bra $1
bra lol : bra $1
bra lor : bra $1
bra los : bra $1
bra lpb : bra $1
bra lpi : bra $1
bra lxa : bra $1
bra lxl : bra $1
bra mlf : bra $1
bra mli : bra $1
bra mlu : bra $1
bra mon : bra $1
bra ngf : bra $1
bra ngi : bra $1
bra nop : bra $1
bra rck : bra $1
bra ret : bra $1
bra rmi : bra $1
bra rmu : bra $1
bra rol : bra $1
bra ror : bra $1
bra rtt : bra $1
bra sar : bra $1
bra sbf : bra $1
bra sbi : bra $1
bra sbs : bra $1
bra sbu : bra $1
bra sde : bra $1
bra sdf : bra $1
bra sdl : bra $1
bra set : bra $1
bra sig : bra $1
bra sil : bra $1
bra sim : bra $1
bra sli : bra $1
bra slu : bra $1
bra sri : bra $1
bra sru : bra $1
bra ste : bra $1
bra stf : bra $1
bra sti : bra $1
bra stl : bra $1
bra str : bra $1
bra sts : bra $1
bra teq : bra $1
bra tge : bra $1
bra tgt : bra $1
bra tle : bra $1
bra tlt : bra $1
bra tne : bra $1
bra trp : bra $1
bra xor : bra $1
bra zeq : bra $1
bra zer : bra $1
bra zge : bra $1
bra zgt : bra $1
bra zle : bra $1
bra zlt : bra $1
bra zne : bra $1
bra zre : bra $1
bra zrf : bra $1
bra zrl : bra $1
