des.c
上传用户:zhh515
上传日期:2007-01-06
资源大小:966k
文件大小:32k
源码类别:

加密解密

开发平台:

C/C++

  1. //  IBM PC Implementation of the DES Cryptographic Algorithm by
  2. //  Dr B. R. Gladman (gladman@seven77.demon.co.uk)
  3. //
  4. //  Some of the techniques in this DES source code are derived 
  5. //  from ideas developed by Richard Outerbridge and Eric Young.  
  6. //  I gratefully acknowledge their contribution.
  7. //
  8. //  DES Timings:
  9. //  Key Setup:    1024 cycles
  10. //  Encrypt:     456.4 cycles =   28.05 mbits/sec
  11. //  Decrypt:     453.1 cycles =   28.25 mbits/sec
  12. //  Mean:        454.8 cycles =   28.15 mbits/sec
  13. #define BIG_TABLES
  14. #include "des.h"
  15. #ifdef  BIG_TABLES
  16. #  define   TAB_SIZE    256
  17. #else
  18. #  define   TAB_SIZE     64
  19. #endif
  20. unsigned long sx_tab[8][TAB_SIZE] =
  21. {
  22.   { 0x00820200L, 0x00020000L, 0x80800000L, 0x80820200L,
  23.     0x00800000L, 0x80020200L, 0x80020000L, 0x80800000L,
  24.     0x80020200L, 0x00820200L, 0x00820000L, 0x80000200L,
  25.     0x80800200L, 0x00800000L, 0x00000000L, 0x80020000L,
  26.     0x00020000L, 0x80000000L, 0x00800200L, 0x00020200L,
  27.     0x80820200L, 0x00820000L, 0x80000200L, 0x00800200L,
  28.     0x80000000L, 0x00000200L, 0x00020200L, 0x80820000L,
  29.     0x00000200L, 0x80800200L, 0x80820000L, 0x00000000L,
  30.     0x00000000L, 0x80820200L, 0x00800200L, 0x80020000L,
  31.     0x00820200L, 0x00020000L, 0x80000200L, 0x00800200L,
  32.     0x80820000L, 0x00000200L, 0x00020200L, 0x80800000L,
  33.     0x80020200L, 0x80000000L, 0x80800000L, 0x00820000L,
  34.     0x80820200L, 0x00020200L, 0x00820000L, 0x80800200L,
  35.     0x00800000L, 0x80000200L, 0x80020000L, 0x00000000L,
  36.     0x00020000L, 0x00800000L, 0x80800200L, 0x00820200L,
  37.     0x80000000L, 0x80820000L, 0x00000200L, 0x80020200L,
  38. #ifdef BIG_TABLES
  39.     0x00820200L, 0x00020000L, 0x80800000L, 0x80820200L,
  40.     0x00800000L, 0x80020200L, 0x80020000L, 0x80800000L,
  41.     0x80020200L, 0x00820200L, 0x00820000L, 0x80000200L,
  42.     0x80800200L, 0x00800000L, 0x00000000L, 0x80020000L,
  43.     0x00020000L, 0x80000000L, 0x00800200L, 0x00020200L,
  44.     0x80820200L, 0x00820000L, 0x80000200L, 0x00800200L,
  45.     0x80000000L, 0x00000200L, 0x00020200L, 0x80820000L,
  46.     0x00000200L, 0x80800200L, 0x80820000L, 0x00000000L,
  47.     0x00000000L, 0x80820200L, 0x00800200L, 0x80020000L,
  48.     0x00820200L, 0x00020000L, 0x80000200L, 0x00800200L,
  49.     0x80820000L, 0x00000200L, 0x00020200L, 0x80800000L,
  50.     0x80020200L, 0x80000000L, 0x80800000L, 0x00820000L,
  51.     0x80820200L, 0x00020200L, 0x00820000L, 0x80800200L,
  52.     0x00800000L, 0x80000200L, 0x80020000L, 0x00000000L,
  53.     0x00020000L, 0x00800000L, 0x80800200L, 0x00820200L,
  54.     0x80000000L, 0x80820000L, 0x00000200L, 0x80020200L,
  55.     0x00820200L, 0x00020000L, 0x80800000L, 0x80820200L,
  56.     0x00800000L, 0x80020200L, 0x80020000L, 0x80800000L,
  57.     0x80020200L, 0x00820200L, 0x00820000L, 0x80000200L,
  58.     0x80800200L, 0x00800000L, 0x00000000L, 0x80020000L,
  59.     0x00020000L, 0x80000000L, 0x00800200L, 0x00020200L,
  60.     0x80820200L, 0x00820000L, 0x80000200L, 0x00800200L,
  61.     0x80000000L, 0x00000200L, 0x00020200L, 0x80820000L,
  62.     0x00000200L, 0x80800200L, 0x80820000L, 0x00000000L,
  63.     0x00000000L, 0x80820200L, 0x00800200L, 0x80020000L,
  64.     0x00820200L, 0x00020000L, 0x80000200L, 0x00800200L,
  65.     0x80820000L, 0x00000200L, 0x00020200L, 0x80800000L,
  66.     0x80020200L, 0x80000000L, 0x80800000L, 0x00820000L,
  67.     0x80820200L, 0x00020200L, 0x00820000L, 0x80800200L,
  68.     0x00800000L, 0x80000200L, 0x80020000L, 0x00000000L,
  69.     0x00020000L, 0x00800000L, 0x80800200L, 0x00820200L,
  70.     0x80000000L, 0x80820000L, 0x00000200L, 0x80020200L,
  71.     0x00820200L, 0x00020000L, 0x80800000L, 0x80820200L,
  72.     0x00800000L, 0x80020200L, 0x80020000L, 0x80800000L,
  73.     0x80020200L, 0x00820200L, 0x00820000L, 0x80000200L,
  74.     0x80800200L, 0x00800000L, 0x00000000L, 0x80020000L,
  75.     0x00020000L, 0x80000000L, 0x00800200L, 0x00020200L,
  76.     0x80820200L, 0x00820000L, 0x80000200L, 0x00800200L,
  77.     0x80000000L, 0x00000200L, 0x00020200L, 0x80820000L,
  78.     0x00000200L, 0x80800200L, 0x80820000L, 0x00000000L,
  79.     0x00000000L, 0x80820200L, 0x00800200L, 0x80020000L,
  80.     0x00820200L, 0x00020000L, 0x80000200L, 0x00800200L,
  81.     0x80820000L, 0x00000200L, 0x00020200L, 0x80800000L,
  82.     0x80020200L, 0x80000000L, 0x80800000L, 0x00820000L,
  83.     0x80820200L, 0x00020200L, 0x00820000L, 0x80800200L,
  84.     0x00800000L, 0x80000200L, 0x80020000L, 0x00000000L,
  85.     0x00020000L, 0x00800000L, 0x80800200L, 0x00820200L,
  86.     0x80000000L, 0x80820000L, 0x00000200L, 0x80020200L,
  87. #endif
  88.   },
  89.   { 0x10042004L, 0x00000000L, 0x00042000L, 0x10040000L,
  90.     0x10000004L, 0x00002004L, 0x10002000L, 0x00042000L,
  91.     0x00002000L, 0x10040004L, 0x00000004L, 0x10002000L,
  92.     0x00040004L, 0x10042000L, 0x10040000L, 0x00000004L,
  93.     0x00040000L, 0x10002004L, 0x10040004L, 0x00002000L,
  94.     0x00042004L, 0x10000000L, 0x00000000L, 0x00040004L,
  95.     0x10002004L, 0x00042004L, 0x10042000L, 0x10000004L,
  96.     0x10000000L, 0x00040000L, 0x00002004L, 0x10042004L,
  97.     0x00040004L, 0x10042000L, 0x10002000L, 0x00042004L,
  98.     0x10042004L, 0x00040004L, 0x10000004L, 0x00000000L,
  99.     0x10000000L, 0x00002004L, 0x00040000L, 0x10040004L,
  100.     0x00002000L, 0x10000000L, 0x00042004L, 0x10002004L,
  101.     0x10042000L, 0x00002000L, 0x00000000L, 0x10000004L,
  102.     0x00000004L, 0x10042004L, 0x00042000L, 0x10040000L,
  103.     0x10040004L, 0x00040000L, 0x00002004L, 0x10002000L,
  104.     0x10002004L, 0x00000004L, 0x10040000L, 0x00042000L,
  105. #ifdef BIG_TABLES
  106.     0x10042004L, 0x00000000L, 0x00042000L, 0x10040000L,
  107.     0x10000004L, 0x00002004L, 0x10002000L, 0x00042000L,
  108.     0x00002000L, 0x10040004L, 0x00000004L, 0x10002000L,
  109.     0x00040004L, 0x10042000L, 0x10040000L, 0x00000004L,
  110.     0x00040000L, 0x10002004L, 0x10040004L, 0x00002000L,
  111.     0x00042004L, 0x10000000L, 0x00000000L, 0x00040004L,
  112.     0x10002004L, 0x00042004L, 0x10042000L, 0x10000004L,
  113.     0x10000000L, 0x00040000L, 0x00002004L, 0x10042004L,
  114.     0x00040004L, 0x10042000L, 0x10002000L, 0x00042004L,
  115.     0x10042004L, 0x00040004L, 0x10000004L, 0x00000000L,
  116.     0x10000000L, 0x00002004L, 0x00040000L, 0x10040004L,
  117.     0x00002000L, 0x10000000L, 0x00042004L, 0x10002004L,
  118.     0x10042000L, 0x00002000L, 0x00000000L, 0x10000004L,
  119.     0x00000004L, 0x10042004L, 0x00042000L, 0x10040000L,
  120.     0x10040004L, 0x00040000L, 0x00002004L, 0x10002000L,
  121.     0x10002004L, 0x00000004L, 0x10040000L, 0x00042000L,
  122.     0x10042004L, 0x00000000L, 0x00042000L, 0x10040000L,
  123.     0x10000004L, 0x00002004L, 0x10002000L, 0x00042000L,
  124.     0x00002000L, 0x10040004L, 0x00000004L, 0x10002000L,
  125.     0x00040004L, 0x10042000L, 0x10040000L, 0x00000004L,
  126.     0x00040000L, 0x10002004L, 0x10040004L, 0x00002000L,
  127.     0x00042004L, 0x10000000L, 0x00000000L, 0x00040004L,
  128.     0x10002004L, 0x00042004L, 0x10042000L, 0x10000004L,
  129.     0x10000000L, 0x00040000L, 0x00002004L, 0x10042004L,
  130.     0x00040004L, 0x10042000L, 0x10002000L, 0x00042004L,
  131.     0x10042004L, 0x00040004L, 0x10000004L, 0x00000000L,
  132.     0x10000000L, 0x00002004L, 0x00040000L, 0x10040004L,
  133.     0x00002000L, 0x10000000L, 0x00042004L, 0x10002004L,
  134.     0x10042000L, 0x00002000L, 0x00000000L, 0x10000004L,
  135.     0x00000004L, 0x10042004L, 0x00042000L, 0x10040000L,
  136.     0x10040004L, 0x00040000L, 0x00002004L, 0x10002000L,
  137.     0x10002004L, 0x00000004L, 0x10040000L, 0x00042000L,
  138.     0x10042004L, 0x00000000L, 0x00042000L, 0x10040000L,
  139.     0x10000004L, 0x00002004L, 0x10002000L, 0x00042000L,
  140.     0x00002000L, 0x10040004L, 0x00000004L, 0x10002000L,
  141.     0x00040004L, 0x10042000L, 0x10040000L, 0x00000004L,
  142.     0x00040000L, 0x10002004L, 0x10040004L, 0x00002000L,
  143.     0x00042004L, 0x10000000L, 0x00000000L, 0x00040004L,
  144.     0x10002004L, 0x00042004L, 0x10042000L, 0x10000004L,
  145.     0x10000000L, 0x00040000L, 0x00002004L, 0x10042004L,
  146.     0x00040004L, 0x10042000L, 0x10002000L, 0x00042004L,
  147.     0x10042004L, 0x00040004L, 0x10000004L, 0x00000000L,
  148.     0x10000000L, 0x00002004L, 0x00040000L, 0x10040004L,
  149.     0x00002000L, 0x10000000L, 0x00042004L, 0x10002004L,
  150.     0x10042000L, 0x00002000L, 0x00000000L, 0x10000004L,
  151.     0x00000004L, 0x10042004L, 0x00042000L, 0x10040000L,
  152.     0x10040004L, 0x00040000L, 0x00002004L, 0x10002000L,
  153.     0x10002004L, 0x00000004L, 0x10040000L, 0x00042000L,
  154. #endif
  155.   },
  156.   { 0x41000000L, 0x01010040L, 0x00000040L, 0x41000040L,
  157.     0x40010000L, 0x01000000L, 0x41000040L, 0x00010040L,
  158.     0x01000040L, 0x00010000L, 0x01010000L, 0x40000000L,
  159.     0x41010040L, 0x40000040L, 0x40000000L, 0x41010000L,
  160.     0x00000000L, 0x40010000L, 0x01010040L, 0x00000040L,
  161.     0x40000040L, 0x41010040L, 0x00010000L, 0x41000000L,
  162.     0x41010000L, 0x01000040L, 0x40010040L, 0x01010000L,
  163.     0x00010040L, 0x00000000L, 0x01000000L, 0x40010040L,
  164.     0x01010040L, 0x00000040L, 0x40000000L, 0x00010000L,
  165.     0x40000040L, 0x40010000L, 0x01010000L, 0x41000040L,
  166.     0x00000000L, 0x01010040L, 0x00010040L, 0x41010000L,
  167.     0x40010000L, 0x01000000L, 0x41010040L, 0x40000000L,
  168.     0x40010040L, 0x41000000L, 0x01000000L, 0x41010040L,
  169.     0x00010000L, 0x01000040L, 0x41000040L, 0x00010040L,
  170.     0x01000040L, 0x00000000L, 0x41010000L, 0x40000040L,
  171.     0x41000000L, 0x40010040L, 0x00000040L, 0x01010000L,
  172. #ifdef BIG_TABLES
  173.     0x41000000L, 0x01010040L, 0x00000040L, 0x41000040L,
  174.     0x40010000L, 0x01000000L, 0x41000040L, 0x00010040L,
  175.     0x01000040L, 0x00010000L, 0x01010000L, 0x40000000L,
  176.     0x41010040L, 0x40000040L, 0x40000000L, 0x41010000L,
  177.     0x00000000L, 0x40010000L, 0x01010040L, 0x00000040L,
  178.     0x40000040L, 0x41010040L, 0x00010000L, 0x41000000L,
  179.     0x41010000L, 0x01000040L, 0x40010040L, 0x01010000L,
  180.     0x00010040L, 0x00000000L, 0x01000000L, 0x40010040L,
  181.     0x01010040L, 0x00000040L, 0x40000000L, 0x00010000L,
  182.     0x40000040L, 0x40010000L, 0x01010000L, 0x41000040L,
  183.     0x00000000L, 0x01010040L, 0x00010040L, 0x41010000L,
  184.     0x40010000L, 0x01000000L, 0x41010040L, 0x40000000L,
  185.     0x40010040L, 0x41000000L, 0x01000000L, 0x41010040L,
  186.     0x00010000L, 0x01000040L, 0x41000040L, 0x00010040L,
  187.     0x01000040L, 0x00000000L, 0x41010000L, 0x40000040L,
  188.     0x41000000L, 0x40010040L, 0x00000040L, 0x01010000L,
  189.     0x41000000L, 0x01010040L, 0x00000040L, 0x41000040L,
  190.     0x40010000L, 0x01000000L, 0x41000040L, 0x00010040L,
  191.     0x01000040L, 0x00010000L, 0x01010000L, 0x40000000L,
  192.     0x41010040L, 0x40000040L, 0x40000000L, 0x41010000L,
  193.     0x00000000L, 0x40010000L, 0x01010040L, 0x00000040L,
  194.     0x40000040L, 0x41010040L, 0x00010000L, 0x41000000L,
  195.     0x41010000L, 0x01000040L, 0x40010040L, 0x01010000L,
  196.     0x00010040L, 0x00000000L, 0x01000000L, 0x40010040L,
  197.     0x01010040L, 0x00000040L, 0x40000000L, 0x00010000L,
  198.     0x40000040L, 0x40010000L, 0x01010000L, 0x41000040L,
  199.     0x00000000L, 0x01010040L, 0x00010040L, 0x41010000L,
  200.     0x40010000L, 0x01000000L, 0x41010040L, 0x40000000L,
  201.     0x40010040L, 0x41000000L, 0x01000000L, 0x41010040L,
  202.     0x00010000L, 0x01000040L, 0x41000040L, 0x00010040L,
  203.     0x01000040L, 0x00000000L, 0x41010000L, 0x40000040L,
  204.     0x41000000L, 0x40010040L, 0x00000040L, 0x01010000L,
  205.     0x41000000L, 0x01010040L, 0x00000040L, 0x41000040L,
  206.     0x40010000L, 0x01000000L, 0x41000040L, 0x00010040L,
  207.     0x01000040L, 0x00010000L, 0x01010000L, 0x40000000L,
  208.     0x41010040L, 0x40000040L, 0x40000000L, 0x41010000L,
  209.     0x00000000L, 0x40010000L, 0x01010040L, 0x00000040L,
  210.     0x40000040L, 0x41010040L, 0x00010000L, 0x41000000L,
  211.     0x41010000L, 0x01000040L, 0x40010040L, 0x01010000L,
  212.     0x00010040L, 0x00000000L, 0x01000000L, 0x40010040L,
  213.     0x01010040L, 0x00000040L, 0x40000000L, 0x00010000L,
  214.     0x40000040L, 0x40010000L, 0x01010000L, 0x41000040L,
  215.     0x00000000L, 0x01010040L, 0x00010040L, 0x41010000L,
  216.     0x40010000L, 0x01000000L, 0x41010040L, 0x40000000L,
  217.     0x40010040L, 0x41000000L, 0x01000000L, 0x41010040L,
  218.     0x00010000L, 0x01000040L, 0x41000040L, 0x00010040L,
  219.     0x01000040L, 0x00000000L, 0x41010000L, 0x40000040L,
  220.     0x41000000L, 0x40010040L, 0x00000040L, 0x01010000L,
  221. #endif
  222.   },
  223.   { 0x00100402L, 0x04000400L, 0x00000002L, 0x04100402L,
  224.     0x00000000L, 0x04100000L, 0x04000402L, 0x00100002L,
  225.     0x04100400L, 0x04000002L, 0x04000000L, 0x00000402L,
  226.     0x04000002L, 0x00100402L, 0x00100000L, 0x04000000L,
  227.     0x04100002L, 0x00100400L, 0x00000400L, 0x00000002L,
  228.     0x00100400L, 0x04000402L, 0x04100000L, 0x00000400L,
  229.     0x00000402L, 0x00000000L, 0x00100002L, 0x04100400L,
  230.     0x04000400L, 0x04100002L, 0x04100402L, 0x00100000L,
  231.     0x04100002L, 0x00000402L, 0x00100000L, 0x04000002L,
  232.     0x00100400L, 0x04000400L, 0x00000002L, 0x04100000L,
  233.     0x04000402L, 0x00000000L, 0x00000400L, 0x00100002L,
  234.     0x00000000L, 0x04100002L, 0x04100400L, 0x00000400L,
  235.     0x04000000L, 0x04100402L, 0x00100402L, 0x00100000L,
  236.     0x04100402L, 0x00000002L, 0x04000400L, 0x00100402L,
  237.     0x00100002L, 0x00100400L, 0x04100000L, 0x04000402L,
  238.     0x00000402L, 0x04000000L, 0x04000002L, 0x04100400L,
  239. #ifdef BIG_TABLES
  240.     0x00100402L, 0x04000400L, 0x00000002L, 0x04100402L,
  241.     0x00000000L, 0x04100000L, 0x04000402L, 0x00100002L,
  242.     0x04100400L, 0x04000002L, 0x04000000L, 0x00000402L,
  243.     0x04000002L, 0x00100402L, 0x00100000L, 0x04000000L,
  244.     0x04100002L, 0x00100400L, 0x00000400L, 0x00000002L,
  245.     0x00100400L, 0x04000402L, 0x04100000L, 0x00000400L,
  246.     0x00000402L, 0x00000000L, 0x00100002L, 0x04100400L,
  247.     0x04000400L, 0x04100002L, 0x04100402L, 0x00100000L,
  248.     0x04100002L, 0x00000402L, 0x00100000L, 0x04000002L,
  249.     0x00100400L, 0x04000400L, 0x00000002L, 0x04100000L,
  250.     0x04000402L, 0x00000000L, 0x00000400L, 0x00100002L,
  251.     0x00000000L, 0x04100002L, 0x04100400L, 0x00000400L,
  252.     0x04000000L, 0x04100402L, 0x00100402L, 0x00100000L,
  253.     0x04100402L, 0x00000002L, 0x04000400L, 0x00100402L,
  254.     0x00100002L, 0x00100400L, 0x04100000L, 0x04000402L,
  255.     0x00000402L, 0x04000000L, 0x04000002L, 0x04100400L,
  256.     0x00100402L, 0x04000400L, 0x00000002L, 0x04100402L,
  257.     0x00000000L, 0x04100000L, 0x04000402L, 0x00100002L,
  258.     0x04100400L, 0x04000002L, 0x04000000L, 0x00000402L,
  259.     0x04000002L, 0x00100402L, 0x00100000L, 0x04000000L,
  260.     0x04100002L, 0x00100400L, 0x00000400L, 0x00000002L,
  261.     0x00100400L, 0x04000402L, 0x04100000L, 0x00000400L,
  262.     0x00000402L, 0x00000000L, 0x00100002L, 0x04100400L,
  263.     0x04000400L, 0x04100002L, 0x04100402L, 0x00100000L,
  264.     0x04100002L, 0x00000402L, 0x00100000L, 0x04000002L,
  265.     0x00100400L, 0x04000400L, 0x00000002L, 0x04100000L,
  266.     0x04000402L, 0x00000000L, 0x00000400L, 0x00100002L,
  267.     0x00000000L, 0x04100002L, 0x04100400L, 0x00000400L,
  268.     0x04000000L, 0x04100402L, 0x00100402L, 0x00100000L,
  269.     0x04100402L, 0x00000002L, 0x04000400L, 0x00100402L,
  270.     0x00100002L, 0x00100400L, 0x04100000L, 0x04000402L,
  271.     0x00000402L, 0x04000000L, 0x04000002L, 0x04100400L,
  272.     0x00100402L, 0x04000400L, 0x00000002L, 0x04100402L,
  273.     0x00000000L, 0x04100000L, 0x04000402L, 0x00100002L,
  274.     0x04100400L, 0x04000002L, 0x04000000L, 0x00000402L,
  275.     0x04000002L, 0x00100402L, 0x00100000L, 0x04000000L,
  276.     0x04100002L, 0x00100400L, 0x00000400L, 0x00000002L,
  277.     0x00100400L, 0x04000402L, 0x04100000L, 0x00000400L,
  278.     0x00000402L, 0x00000000L, 0x00100002L, 0x04100400L,
  279.     0x04000400L, 0x04100002L, 0x04100402L, 0x00100000L,
  280.     0x04100002L, 0x00000402L, 0x00100000L, 0x04000002L,
  281.     0x00100400L, 0x04000400L, 0x00000002L, 0x04100000L,
  282.     0x04000402L, 0x00000000L, 0x00000400L, 0x00100002L,
  283.     0x00000000L, 0x04100002L, 0x04100400L, 0x00000400L,
  284.     0x04000000L, 0x04100402L, 0x00100402L, 0x00100000L,
  285.     0x04100402L, 0x00000002L, 0x04000400L, 0x00100402L,
  286.     0x00100002L, 0x00100400L, 0x04100000L, 0x04000402L,
  287.     0x00000402L, 0x04000000L, 0x04000002L, 0x04100400L,
  288. #endif
  289.   },
  290.   { 0x02000000L, 0x00004000L, 0x00000100L, 0x02004108L,
  291.     0x02004008L, 0x02000100L, 0x00004108L, 0x02004000L,
  292.     0x00004000L, 0x00000008L, 0x02000008L, 0x00004100L,
  293.     0x02000108L, 0x02004008L, 0x02004100L, 0x00000000L,
  294.     0x00004100L, 0x02000000L, 0x00004008L, 0x00000108L,
  295.     0x02000100L, 0x00004108L, 0x00000000L, 0x02000008L,
  296.     0x00000008L, 0x02000108L, 0x02004108L, 0x00004008L,
  297.     0x02004000L, 0x00000100L, 0x00000108L, 0x02004100L,
  298.     0x02004100L, 0x02000108L, 0x00004008L, 0x02004000L,
  299.     0x00004000L, 0x00000008L, 0x02000008L, 0x02000100L,
  300.     0x02000000L, 0x00004100L, 0x02004108L, 0x00000000L,
  301.     0x00004108L, 0x02000000L, 0x00000100L, 0x00004008L,
  302.     0x02000108L, 0x00000100L, 0x00000000L, 0x02004108L,
  303.     0x02004008L, 0x02004100L, 0x00000108L, 0x00004000L,
  304.     0x00004100L, 0x02004008L, 0x02000100L, 0x00000108L,
  305.     0x00000008L, 0x00004108L, 0x02004000L, 0x02000008L,
  306. #ifdef BIG_TABLES
  307.     0x02000000L, 0x00004000L, 0x00000100L, 0x02004108L,
  308.     0x02004008L, 0x02000100L, 0x00004108L, 0x02004000L,
  309.     0x00004000L, 0x00000008L, 0x02000008L, 0x00004100L,
  310.     0x02000108L, 0x02004008L, 0x02004100L, 0x00000000L,
  311.     0x00004100L, 0x02000000L, 0x00004008L, 0x00000108L,
  312.     0x02000100L, 0x00004108L, 0x00000000L, 0x02000008L,
  313.     0x00000008L, 0x02000108L, 0x02004108L, 0x00004008L,
  314.     0x02004000L, 0x00000100L, 0x00000108L, 0x02004100L,
  315.     0x02004100L, 0x02000108L, 0x00004008L, 0x02004000L,
  316.     0x00004000L, 0x00000008L, 0x02000008L, 0x02000100L,
  317.     0x02000000L, 0x00004100L, 0x02004108L, 0x00000000L,
  318.     0x00004108L, 0x02000000L, 0x00000100L, 0x00004008L,
  319.     0x02000108L, 0x00000100L, 0x00000000L, 0x02004108L,
  320.     0x02004008L, 0x02004100L, 0x00000108L, 0x00004000L,
  321.     0x00004100L, 0x02004008L, 0x02000100L, 0x00000108L,
  322.     0x00000008L, 0x00004108L, 0x02004000L, 0x02000008L,
  323.     0x02000000L, 0x00004000L, 0x00000100L, 0x02004108L,
  324.     0x02004008L, 0x02000100L, 0x00004108L, 0x02004000L,
  325.     0x00004000L, 0x00000008L, 0x02000008L, 0x00004100L,
  326.     0x02000108L, 0x02004008L, 0x02004100L, 0x00000000L,
  327.     0x00004100L, 0x02000000L, 0x00004008L, 0x00000108L,
  328.     0x02000100L, 0x00004108L, 0x00000000L, 0x02000008L,
  329.     0x00000008L, 0x02000108L, 0x02004108L, 0x00004008L,
  330.     0x02004000L, 0x00000100L, 0x00000108L, 0x02004100L,
  331.     0x02004100L, 0x02000108L, 0x00004008L, 0x02004000L,
  332.     0x00004000L, 0x00000008L, 0x02000008L, 0x02000100L,
  333.     0x02000000L, 0x00004100L, 0x02004108L, 0x00000000L,
  334.     0x00004108L, 0x02000000L, 0x00000100L, 0x00004008L,
  335.     0x02000108L, 0x00000100L, 0x00000000L, 0x02004108L,
  336.     0x02004008L, 0x02004100L, 0x00000108L, 0x00004000L,
  337.     0x00004100L, 0x02004008L, 0x02000100L, 0x00000108L,
  338.     0x00000008L, 0x00004108L, 0x02004000L, 0x02000008L,
  339.     0x02000000L, 0x00004000L, 0x00000100L, 0x02004108L,
  340.     0x02004008L, 0x02000100L, 0x00004108L, 0x02004000L,
  341.     0x00004000L, 0x00000008L, 0x02000008L, 0x00004100L,
  342.     0x02000108L, 0x02004008L, 0x02004100L, 0x00000000L,
  343.     0x00004100L, 0x02000000L, 0x00004008L, 0x00000108L,
  344.     0x02000100L, 0x00004108L, 0x00000000L, 0x02000008L,
  345.     0x00000008L, 0x02000108L, 0x02004108L, 0x00004008L,
  346.     0x02004000L, 0x00000100L, 0x00000108L, 0x02004100L,
  347.     0x02004100L, 0x02000108L, 0x00004008L, 0x02004000L,
  348.     0x00004000L, 0x00000008L, 0x02000008L, 0x02000100L,
  349.     0x02000000L, 0x00004100L, 0x02004108L, 0x00000000L,
  350.     0x00004108L, 0x02000000L, 0x00000100L, 0x00004008L,
  351.     0x02000108L, 0x00000100L, 0x00000000L, 0x02004108L,
  352.     0x02004008L, 0x02004100L, 0x00000108L, 0x00004000L,
  353.     0x00004100L, 0x02004008L, 0x02000100L, 0x00000108L,
  354.     0x00000008L, 0x00004108L, 0x02004000L, 0x02000008L,
  355. #endif
  356.   },
  357.   { 0x20000010L, 0x00080010L, 0x00000000L, 0x20080800L,
  358.     0x00080010L, 0x00000800L, 0x20000810L, 0x00080000L,
  359.     0x00000810L, 0x20080810L, 0x00080800L, 0x20000000L,
  360.     0x20000800L, 0x20000010L, 0x20080000L, 0x00080810L,
  361.     0x00080000L, 0x20000810L, 0x20080010L, 0x00000000L,
  362.     0x00000800L, 0x00000010L, 0x20080800L, 0x20080010L,
  363.     0x20080810L, 0x20080000L, 0x20000000L, 0x00000810L,
  364.     0x00000010L, 0x00080800L, 0x00080810L, 0x20000800L,
  365.     0x00000810L, 0x20000000L, 0x20000800L, 0x00080810L,
  366.     0x20080800L, 0x00080010L, 0x00000000L, 0x20000800L,
  367.     0x20000000L, 0x00000800L, 0x20080010L, 0x00080000L,
  368.     0x00080010L, 0x20080810L, 0x00080800L, 0x00000010L,
  369.     0x20080810L, 0x00080800L, 0x00080000L, 0x20000810L,
  370.     0x20000010L, 0x20080000L, 0x00080810L, 0x00000000L,
  371.     0x00000800L, 0x20000010L, 0x20000810L, 0x20080800L,
  372.     0x20080000L, 0x00000810L, 0x00000010L, 0x20080010L,
  373. #ifdef BIG_TABLES
  374.     0x20000010L, 0x00080010L, 0x00000000L, 0x20080800L,
  375.     0x00080010L, 0x00000800L, 0x20000810L, 0x00080000L,
  376.     0x00000810L, 0x20080810L, 0x00080800L, 0x20000000L,
  377.     0x20000800L, 0x20000010L, 0x20080000L, 0x00080810L,
  378.     0x00080000L, 0x20000810L, 0x20080010L, 0x00000000L,
  379.     0x00000800L, 0x00000010L, 0x20080800L, 0x20080010L,
  380.     0x20080810L, 0x20080000L, 0x20000000L, 0x00000810L,
  381.     0x00000010L, 0x00080800L, 0x00080810L, 0x20000800L,
  382.     0x00000810L, 0x20000000L, 0x20000800L, 0x00080810L,
  383.     0x20080800L, 0x00080010L, 0x00000000L, 0x20000800L,
  384.     0x20000000L, 0x00000800L, 0x20080010L, 0x00080000L,
  385.     0x00080010L, 0x20080810L, 0x00080800L, 0x00000010L,
  386.     0x20080810L, 0x00080800L, 0x00080000L, 0x20000810L,
  387.     0x20000010L, 0x20080000L, 0x00080810L, 0x00000000L,
  388.     0x00000800L, 0x20000010L, 0x20000810L, 0x20080800L,
  389.     0x20080000L, 0x00000810L, 0x00000010L, 0x20080010L,
  390.     0x20000010L, 0x00080010L, 0x00000000L, 0x20080800L,
  391.     0x00080010L, 0x00000800L, 0x20000810L, 0x00080000L,
  392.     0x00000810L, 0x20080810L, 0x00080800L, 0x20000000L,
  393.     0x20000800L, 0x20000010L, 0x20080000L, 0x00080810L,
  394.     0x00080000L, 0x20000810L, 0x20080010L, 0x00000000L,
  395.     0x00000800L, 0x00000010L, 0x20080800L, 0x20080010L,
  396.     0x20080810L, 0x20080000L, 0x20000000L, 0x00000810L,
  397.     0x00000010L, 0x00080800L, 0x00080810L, 0x20000800L,
  398.     0x00000810L, 0x20000000L, 0x20000800L, 0x00080810L,
  399.     0x20080800L, 0x00080010L, 0x00000000L, 0x20000800L,
  400.     0x20000000L, 0x00000800L, 0x20080010L, 0x00080000L,
  401.     0x00080010L, 0x20080810L, 0x00080800L, 0x00000010L,
  402.     0x20080810L, 0x00080800L, 0x00080000L, 0x20000810L,
  403.     0x20000010L, 0x20080000L, 0x00080810L, 0x00000000L,
  404.     0x00000800L, 0x20000010L, 0x20000810L, 0x20080800L,
  405.     0x20080000L, 0x00000810L, 0x00000010L, 0x20080010L,
  406.     0x20000010L, 0x00080010L, 0x00000000L, 0x20080800L,
  407.     0x00080010L, 0x00000800L, 0x20000810L, 0x00080000L,
  408.     0x00000810L, 0x20080810L, 0x00080800L, 0x20000000L,
  409.     0x20000800L, 0x20000010L, 0x20080000L, 0x00080810L,
  410.     0x00080000L, 0x20000810L, 0x20080010L, 0x00000000L,
  411.     0x00000800L, 0x00000010L, 0x20080800L, 0x20080010L,
  412.     0x20080810L, 0x20080000L, 0x20000000L, 0x00000810L,
  413.     0x00000010L, 0x00080800L, 0x00080810L, 0x20000800L,
  414.     0x00000810L, 0x20000000L, 0x20000800L, 0x00080810L,
  415.     0x20080800L, 0x00080010L, 0x00000000L, 0x20000800L,
  416.     0x20000000L, 0x00000800L, 0x20080010L, 0x00080000L,
  417.     0x00080010L, 0x20080810L, 0x00080800L, 0x00000010L,
  418.     0x20080810L, 0x00080800L, 0x00080000L, 0x20000810L,
  419.     0x20000010L, 0x20080000L, 0x00080810L, 0x00000000L,
  420.     0x00000800L, 0x20000010L, 0x20000810L, 0x20080800L,
  421.     0x20080000L, 0x00000810L, 0x00000010L, 0x20080010L,
  422. #endif
  423.   },
  424.   { 0x00001000L, 0x00000080L, 0x00400080L, 0x00400001L,
  425.     0x00401081L, 0x00001001L, 0x00001080L, 0x00000000L,
  426.     0x00400000L, 0x00400081L, 0x00000081L, 0x00401000L,
  427.     0x00000001L, 0x00401080L, 0x00401000L, 0x00000081L,
  428.     0x00400081L, 0x00001000L, 0x00001001L, 0x00401081L,
  429.     0x00000000L, 0x00400080L, 0x00400001L, 0x00001080L,
  430.     0x00401001L, 0x00001081L, 0x00401080L, 0x00000001L,
  431.     0x00001081L, 0x00401001L, 0x00000080L, 0x00400000L,
  432.     0x00001081L, 0x00401000L, 0x00401001L, 0x00000081L,
  433.     0x00001000L, 0x00000080L, 0x00400000L, 0x00401001L,
  434.     0x00400081L, 0x00001081L, 0x00001080L, 0x00000000L,
  435.     0x00000080L, 0x00400001L, 0x00000001L, 0x00400080L,
  436.     0x00000000L, 0x00400081L, 0x00400080L, 0x00001080L,
  437.     0x00000081L, 0x00001000L, 0x00401081L, 0x00400000L,
  438.     0x00401080L, 0x00000001L, 0x00001001L, 0x00401081L,
  439.     0x00400001L, 0x00401080L, 0x00401000L, 0x00001001L,
  440. #ifdef BIG_TABLES
  441.     0x00001000L, 0x00000080L, 0x00400080L, 0x00400001L,
  442.     0x00401081L, 0x00001001L, 0x00001080L, 0x00000000L,
  443.     0x00400000L, 0x00400081L, 0x00000081L, 0x00401000L,
  444.     0x00000001L, 0x00401080L, 0x00401000L, 0x00000081L,
  445.     0x00400081L, 0x00001000L, 0x00001001L, 0x00401081L,
  446.     0x00000000L, 0x00400080L, 0x00400001L, 0x00001080L,
  447.     0x00401001L, 0x00001081L, 0x00401080L, 0x00000001L,
  448.     0x00001081L, 0x00401001L, 0x00000080L, 0x00400000L,
  449.     0x00001081L, 0x00401000L, 0x00401001L, 0x00000081L,
  450.     0x00001000L, 0x00000080L, 0x00400000L, 0x00401001L,
  451.     0x00400081L, 0x00001081L, 0x00001080L, 0x00000000L,
  452.     0x00000080L, 0x00400001L, 0x00000001L, 0x00400080L,
  453.     0x00000000L, 0x00400081L, 0x00400080L, 0x00001080L,
  454.     0x00000081L, 0x00001000L, 0x00401081L, 0x00400000L,
  455.     0x00401080L, 0x00000001L, 0x00001001L, 0x00401081L,
  456.     0x00400001L, 0x00401080L, 0x00401000L, 0x00001001L,
  457.     0x00001000L, 0x00000080L, 0x00400080L, 0x00400001L,
  458.     0x00401081L, 0x00001001L, 0x00001080L, 0x00000000L,
  459.     0x00400000L, 0x00400081L, 0x00000081L, 0x00401000L,
  460.     0x00000001L, 0x00401080L, 0x00401000L, 0x00000081L,
  461.     0x00400081L, 0x00001000L, 0x00001001L, 0x00401081L,
  462.     0x00000000L, 0x00400080L, 0x00400001L, 0x00001080L,
  463.     0x00401001L, 0x00001081L, 0x00401080L, 0x00000001L,
  464.     0x00001081L, 0x00401001L, 0x00000080L, 0x00400000L,
  465.     0x00001081L, 0x00401000L, 0x00401001L, 0x00000081L,
  466.     0x00001000L, 0x00000080L, 0x00400000L, 0x00401001L,
  467.     0x00400081L, 0x00001081L, 0x00001080L, 0x00000000L,
  468.     0x00000080L, 0x00400001L, 0x00000001L, 0x00400080L,
  469.     0x00000000L, 0x00400081L, 0x00400080L, 0x00001080L,
  470.     0x00000081L, 0x00001000L, 0x00401081L, 0x00400000L,
  471.     0x00401080L, 0x00000001L, 0x00001001L, 0x00401081L,
  472.     0x00400001L, 0x00401080L, 0x00401000L, 0x00001001L,
  473.     0x00001000L, 0x00000080L, 0x00400080L, 0x00400001L,
  474.     0x00401081L, 0x00001001L, 0x00001080L, 0x00000000L,
  475.     0x00400000L, 0x00400081L, 0x00000081L, 0x00401000L,
  476.     0x00000001L, 0x00401080L, 0x00401000L, 0x00000081L,
  477.     0x00400081L, 0x00001000L, 0x00001001L, 0x00401081L,
  478.     0x00000000L, 0x00400080L, 0x00400001L, 0x00001080L,
  479.     0x00401001L, 0x00001081L, 0x00401080L, 0x00000001L,
  480.     0x00001081L, 0x00401001L, 0x00000080L, 0x00400000L,
  481.     0x00001081L, 0x00401000L, 0x00401001L, 0x00000081L,
  482.     0x00001000L, 0x00000080L, 0x00400000L, 0x00401001L,
  483.     0x00400081L, 0x00001081L, 0x00001080L, 0x00000000L,
  484.     0x00000080L, 0x00400001L, 0x00000001L, 0x00400080L,
  485.     0x00000000L, 0x00400081L, 0x00400080L, 0x00001080L,
  486.     0x00000081L, 0x00001000L, 0x00401081L, 0x00400000L,
  487.     0x00401080L, 0x00000001L, 0x00001001L, 0x00401081L,
  488.     0x00400001L, 0x00401080L, 0x00401000L, 0x00001001L,
  489. #endif
  490.   },
  491.   { 0x08200020L, 0x08208000L, 0x00008020L, 0x00000000L,
  492.     0x08008000L, 0x00200020L, 0x08200000L, 0x08208020L,
  493.     0x00000020L, 0x08000000L, 0x00208000L, 0x00008020L,
  494.     0x00208020L, 0x08008020L, 0x08000020L, 0x08200000L,
  495.     0x00008000L, 0x00208020L, 0x00200020L, 0x08008000L,
  496.     0x08208020L, 0x08000020L, 0x00000000L, 0x00208000L,
  497.     0x08000000L, 0x00200000L, 0x08008020L, 0x08200020L,
  498.     0x00200000L, 0x00008000L, 0x08208000L, 0x00000020L,
  499.     0x00200000L, 0x00008000L, 0x08000020L, 0x08208020L,
  500.     0x00008020L, 0x08000000L, 0x00000000L, 0x00208000L,
  501.     0x08200020L, 0x08008020L, 0x08008000L, 0x00200020L,
  502.     0x08208000L, 0x00000020L, 0x00200020L, 0x08008000L,
  503.     0x08208020L, 0x00200000L, 0x08200000L, 0x08000020L,
  504.     0x00208000L, 0x00008020L, 0x08008020L, 0x08200000L,
  505.     0x00000020L, 0x08208000L, 0x00208020L, 0x00000000L,
  506.     0x08000000L, 0x08200020L, 0x00008000L, 0x00208020L,
  507. #ifdef BIG_TABLES
  508.     0x08200020L, 0x08208000L, 0x00008020L, 0x00000000L,
  509.     0x08008000L, 0x00200020L, 0x08200000L, 0x08208020L,
  510.     0x00000020L, 0x08000000L, 0x00208000L, 0x00008020L,
  511.     0x00208020L, 0x08008020L, 0x08000020L, 0x08200000L,
  512.     0x00008000L, 0x00208020L, 0x00200020L, 0x08008000L,
  513.     0x08208020L, 0x08000020L, 0x00000000L, 0x00208000L,
  514.     0x08000000L, 0x00200000L, 0x08008020L, 0x08200020L,
  515.     0x00200000L, 0x00008000L, 0x08208000L, 0x00000020L,
  516.     0x00200000L, 0x00008000L, 0x08000020L, 0x08208020L,
  517.     0x00008020L, 0x08000000L, 0x00000000L, 0x00208000L,
  518.     0x08200020L, 0x08008020L, 0x08008000L, 0x00200020L,
  519.     0x08208000L, 0x00000020L, 0x00200020L, 0x08008000L,
  520.     0x08208020L, 0x00200000L, 0x08200000L, 0x08000020L,
  521.     0x00208000L, 0x00008020L, 0x08008020L, 0x08200000L,
  522.     0x00000020L, 0x08208000L, 0x00208020L, 0x00000000L,
  523.     0x08000000L, 0x08200020L, 0x00008000L, 0x00208020L,
  524.     0x08200020L, 0x08208000L, 0x00008020L, 0x00000000L,
  525.     0x08008000L, 0x00200020L, 0x08200000L, 0x08208020L,
  526.     0x00000020L, 0x08000000L, 0x00208000L, 0x00008020L,
  527.     0x00208020L, 0x08008020L, 0x08000020L, 0x08200000L,
  528.     0x00008000L, 0x00208020L, 0x00200020L, 0x08008000L,
  529.     0x08208020L, 0x08000020L, 0x00000000L, 0x00208000L,
  530.     0x08000000L, 0x00200000L, 0x08008020L, 0x08200020L,
  531.     0x00200000L, 0x00008000L, 0x08208000L, 0x00000020L,
  532.     0x00200000L, 0x00008000L, 0x08000020L, 0x08208020L,
  533.     0x00008020L, 0x08000000L, 0x00000000L, 0x00208000L,
  534.     0x08200020L, 0x08008020L, 0x08008000L, 0x00200020L,
  535.     0x08208000L, 0x00000020L, 0x00200020L, 0x08008000L,
  536.     0x08208020L, 0x00200000L, 0x08200000L, 0x08000020L,
  537.     0x00208000L, 0x00008020L, 0x08008020L, 0x08200000L,
  538.     0x00000020L, 0x08208000L, 0x00208020L, 0x00000000L,
  539.     0x08000000L, 0x08200020L, 0x00008000L, 0x00208020L,
  540.     0x08200020L, 0x08208000L, 0x00008020L, 0x00000000L,
  541.     0x08008000L, 0x00200020L, 0x08200000L, 0x08208020L,
  542.     0x00000020L, 0x08000000L, 0x00208000L, 0x00008020L,
  543.     0x00208020L, 0x08008020L, 0x08000020L, 0x08200000L,
  544.     0x00008000L, 0x00208020L, 0x00200020L, 0x08008000L,
  545.     0x08208020L, 0x08000020L, 0x00000000L, 0x00208000L,
  546.     0x08000000L, 0x00200000L, 0x08008020L, 0x08200020L,
  547.     0x00200000L, 0x00008000L, 0x08208000L, 0x00000020L,
  548.     0x00200000L, 0x00008000L, 0x08000020L, 0x08208020L,
  549.     0x00008020L, 0x08000000L, 0x00000000L, 0x00208000L,
  550.     0x08200020L, 0x08008020L, 0x08008000L, 0x00200020L,
  551.     0x08208000L, 0x00000020L, 0x00200020L, 0x08008000L,
  552.     0x08208020L, 0x00200000L, 0x08200000L, 0x08000020L,
  553.     0x00208000L, 0x00008020L, 0x08008020L, 0x08200000L,
  554.     0x00000020L, 0x08208000L, 0x00208020L, 0x00000000L,
  555.     0x08000000L, 0x08200020L, 0x00008000L, 0x00208020L,
  556. #endif
  557.   }
  558. };
  559. unsigned long bs_tab[] =
  560. {   0x00000001L, 0x00000002L, 0x00000004L, 0x00000008L,
  561.     0x00000010L, 0x00000020L, 0x00000040L, 0x00000080L,
  562.     0x00000100L, 0x00000200L, 0x00000400L, 0x00000800L,
  563.     0x00001000L, 0x00002000L, 0x00004000L, 0x00008000L,
  564.     0x00010000L, 0x00020000L, 0x00040000L, 0x00080000L,
  565.     0x00100000L, 0x00200000L, 0x00400000L, 0x00800000L,
  566.     0x01000000L, 0x02000000L, 0x04000000L, 0x08000000L,
  567.     0x10000000L, 0x20000000L, 0x40000000L, 0x80000000L
  568. };
  569. extern unsigned long    key[32];
  570. void des_ec(const void *i_blk, void *o_blk, void *key)
  571. {   unsigned long   q0, q1, l0, l1, tt;
  572.     q0 = *(((unsigned long*)i_blk) + 1);
  573.     q1 = *(((unsigned long*)i_blk));
  574.     ip(q0, q1);
  575.     round(q0, q1,  0); round(q1, q0,  2);
  576.     round(q0, q1,  4); round(q1, q0,  6);
  577.     round(q0, q1,  8); round(q1, q0, 10);
  578.     round(q0, q1, 12); round(q1, q0, 14);
  579.     round(q0, q1, 16); round(q1, q0, 18);
  580.     round(q0, q1, 20); round(q1, q0, 22);
  581.     round(q0, q1, 24); round(q1, q0, 26);
  582.     round(q0, q1, 28); round(q1, q0, 30);
  583.     fp(q1, q0);
  584.     *(((unsigned long*)o_blk)) = q0; 
  585.     *(((unsigned long*)o_blk) + 1) = q1;
  586. };
  587. void des_dc(const void *i_blk, void *o_blk, void *key)
  588. {   unsigned long   q0, q1, l0, l1, tt;
  589.     q0 = *(((unsigned long*)i_blk) + 1); 
  590.     q1 = *(((unsigned long*)i_blk));
  591.     ip(q0, q1);
  592.     
  593.     round(q0, q1, 30); round(q1, q0, 28);
  594.     round(q0, q1, 26); round(q1, q0, 24);
  595.     round(q0, q1, 22); round(q1, q0, 20);
  596.     round(q0, q1, 18); round(q1, q0, 16);
  597.     round(q0, q1, 14); round(q1, q0, 12);
  598.     round(q0, q1, 10); round(q1, q0,  8);
  599.     round(q0, q1,  6); round(q1, q0,  4);
  600.     round(q0, q1,  2); round(q1, q0,  0);
  601.     fp(q1, q0);
  602.     *(((unsigned long*)o_blk)) = q0; 
  603.     *(((unsigned long*)o_blk) + 1) = q1;
  604. };
  605. /* modified encryption routine for DEAL */
  606. void des_ecm(const void *i_blk, void *o_blk, void *key)
  607. {   unsigned long   q0, q1, l0, l1;
  608.     q0 = *(((unsigned long*)i_blk) + 1);
  609.     q1 = *(((unsigned long*)i_blk));
  610.     round(q0, q1,  0); round(q1, q0,  2);
  611.     round(q0, q1,  4); round(q1, q0,  6);
  612.     round(q0, q1,  8); round(q1, q0, 10);
  613.     round(q0, q1, 12); round(q1, q0, 14);
  614.     round(q0, q1, 16); round(q1, q0, 18);
  615.     round(q0, q1, 20); round(q1, q0, 22);
  616.     round(q0, q1, 24); round(q1, q0, 26);
  617.     round(q0, q1, 28); round(q1, q0, 30);
  618.     *(((unsigned long*)o_blk)) = q0; 
  619.     *(((unsigned long*)o_blk) + 1) = q1;
  620. };