Some special notes about the 64-bit implementation: general: *) The TYPEPUN mode is not implemented because if words are 64 bits, then then the addresses of two successive words differ by 8, or 3 bits. But using a path size of 6 bits, to index into the appropriate array would reguire 9 bits of information (because there are 2^6 words, so 6 bits of address, plus the 3 bits of offset separating each word address). So you would need a 9-bit byte. As the other arrays are all larger (the pc1 array uses 7 bits (2^7 entries), pc2 uses 8 (2^8 entries), ipe and eipinv use 8 bits (2^8 entries), and spe12 uses 12 bits (2^12 entries), it didn't seem worthwhile. The hooks are there id you want to add it; you'll need to add something to undo the final salting (see the des32 routine if you want to do this). machine specific: Cray YMP: This does not have a TWOBITS type (unsigned char is 8 bits, unsigned short is 32) so PACKBITS == BYTES will not work. Convex C-1: This is not "true" 64 bit mode, but is really a pipelining of two 32 bit words. For that reason, bitfields cannot cross the 32-bit boundary; so you cannot divide a 64 bit "word" into fields of 4 bits, 20 bits, 20 bits, and 20 bits, as the second 20-bit field covers bits 32 and 33. So PACKBYTES == BITFIELDS will not work.