Shortest hand-written EQU program

The following hand-written program appears to be the shortest one using the set of available instructions that performs the EQU function, and that does not depend on the initial content of stacks and registers (whose initial contents are represented by '?' below). However, it has not been proven that this is the shortest program. Also, this program does not encode self-replication; rather, but only performs the logic operation.

EQU
#Inst AX BX CX Stack Output
1IO ? X ? ? ?
2IO ? X Y ? ?
3nop-C 
4push ? X Y X, ?  
5nand ? X nand YY X, ?  
6swap ? Y X nand YX, ?  
7nand ? X or ~Y X nand YX, ?  
8swap X or ~Y ? X nand YX, ?  
9nop-A 
10pop X or ~Y X X nand Y?  
11nand X or ~Y Y or ~X X nand Y?  
12swap X nand YY or ~X X or ~Y ?  
13nop-C 
14nand X nand YX xor Y X or ~Y ?  
15push X nand YX xor Y X or ~Y X xor Y, ? 
16pop X nand YX xor Y X xor Y ?  
17nop-C 
18nand X nand YX equ Y X xor Y ?  
19IO X nand YZ X xor Y ? X equ Y

From the Supplementary Information for an article by Lenski, Ofria, Pennock & Adami on "The Evolutionary Origin of Complex Features" that appeared in Nature (8 May 2003), vol 423, pp 139-144.