106        self::MODE_ECB => 
'des-ecb',
 
  107        self::MODE_CBC => 
'des-cbc',
 
  108        self::MODE_CFB => 
'des-cfb',
 
  109        self::MODE_OFB => 
'des-ofb' 
  165        "\x00\x00\x00\x00\x00\x00\x00\x00", 
"\x00\x00\x00\x00\x00\x00\x00\xFF",
 
  166        "\x00\x00\x00\x00\x00\x00\xFF\x00", 
"\x00\x00\x00\x00\x00\x00\xFF\xFF",
 
  167        "\x00\x00\x00\x00\x00\xFF\x00\x00", 
"\x00\x00\x00\x00\x00\xFF\x00\xFF",
 
  168        "\x00\x00\x00\x00\x00\xFF\xFF\x00", 
"\x00\x00\x00\x00\x00\xFF\xFF\xFF",
 
  169        "\x00\x00\x00\x00\xFF\x00\x00\x00", 
"\x00\x00\x00\x00\xFF\x00\x00\xFF",
 
  170        "\x00\x00\x00\x00\xFF\x00\xFF\x00", 
"\x00\x00\x00\x00\xFF\x00\xFF\xFF",
 
  171        "\x00\x00\x00\x00\xFF\xFF\x00\x00", 
"\x00\x00\x00\x00\xFF\xFF\x00\xFF",
 
  172        "\x00\x00\x00\x00\xFF\xFF\xFF\x00", 
"\x00\x00\x00\x00\xFF\xFF\xFF\xFF",
 
  173        "\x00\x00\x00\xFF\x00\x00\x00\x00", 
"\x00\x00\x00\xFF\x00\x00\x00\xFF",
 
  174        "\x00\x00\x00\xFF\x00\x00\xFF\x00", 
"\x00\x00\x00\xFF\x00\x00\xFF\xFF",
 
  175        "\x00\x00\x00\xFF\x00\xFF\x00\x00", 
"\x00\x00\x00\xFF\x00\xFF\x00\xFF",
 
  176        "\x00\x00\x00\xFF\x00\xFF\xFF\x00", 
"\x00\x00\x00\xFF\x00\xFF\xFF\xFF",
 
  177        "\x00\x00\x00\xFF\xFF\x00\x00\x00", 
"\x00\x00\x00\xFF\xFF\x00\x00\xFF",
 
  178        "\x00\x00\x00\xFF\xFF\x00\xFF\x00", 
"\x00\x00\x00\xFF\xFF\x00\xFF\xFF",
 
  179        "\x00\x00\x00\xFF\xFF\xFF\x00\x00", 
"\x00\x00\x00\xFF\xFF\xFF\x00\xFF",
 
  180        "\x00\x00\x00\xFF\xFF\xFF\xFF\x00", 
"\x00\x00\x00\xFF\xFF\xFF\xFF\xFF",
 
  181        "\x00\x00\xFF\x00\x00\x00\x00\x00", 
"\x00\x00\xFF\x00\x00\x00\x00\xFF",
 
  182        "\x00\x00\xFF\x00\x00\x00\xFF\x00", 
"\x00\x00\xFF\x00\x00\x00\xFF\xFF",
 
  183        "\x00\x00\xFF\x00\x00\xFF\x00\x00", 
"\x00\x00\xFF\x00\x00\xFF\x00\xFF",
 
  184        "\x00\x00\xFF\x00\x00\xFF\xFF\x00", 
"\x00\x00\xFF\x00\x00\xFF\xFF\xFF",
 
  185        "\x00\x00\xFF\x00\xFF\x00\x00\x00", 
"\x00\x00\xFF\x00\xFF\x00\x00\xFF",
 
  186        "\x00\x00\xFF\x00\xFF\x00\xFF\x00", 
"\x00\x00\xFF\x00\xFF\x00\xFF\xFF",
 
  187        "\x00\x00\xFF\x00\xFF\xFF\x00\x00", 
"\x00\x00\xFF\x00\xFF\xFF\x00\xFF",
 
  188        "\x00\x00\xFF\x00\xFF\xFF\xFF\x00", 
"\x00\x00\xFF\x00\xFF\xFF\xFF\xFF",
 
  189        "\x00\x00\xFF\xFF\x00\x00\x00\x00", 
"\x00\x00\xFF\xFF\x00\x00\x00\xFF",
 
  190        "\x00\x00\xFF\xFF\x00\x00\xFF\x00", 
"\x00\x00\xFF\xFF\x00\x00\xFF\xFF",
 
  191        "\x00\x00\xFF\xFF\x00\xFF\x00\x00", 
"\x00\x00\xFF\xFF\x00\xFF\x00\xFF",
 
  192        "\x00\x00\xFF\xFF\x00\xFF\xFF\x00", 
"\x00\x00\xFF\xFF\x00\xFF\xFF\xFF",
 
  193        "\x00\x00\xFF\xFF\xFF\x00\x00\x00", 
"\x00\x00\xFF\xFF\xFF\x00\x00\xFF",
 
  194        "\x00\x00\xFF\xFF\xFF\x00\xFF\x00", 
"\x00\x00\xFF\xFF\xFF\x00\xFF\xFF",
 
  195        "\x00\x00\xFF\xFF\xFF\xFF\x00\x00", 
"\x00\x00\xFF\xFF\xFF\xFF\x00\xFF",
 
  196        "\x00\x00\xFF\xFF\xFF\xFF\xFF\x00", 
"\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF",
 
  197        "\x00\xFF\x00\x00\x00\x00\x00\x00", 
"\x00\xFF\x00\x00\x00\x00\x00\xFF",
 
  198        "\x00\xFF\x00\x00\x00\x00\xFF\x00", 
"\x00\xFF\x00\x00\x00\x00\xFF\xFF",
 
  199        "\x00\xFF\x00\x00\x00\xFF\x00\x00", 
"\x00\xFF\x00\x00\x00\xFF\x00\xFF",
 
  200        "\x00\xFF\x00\x00\x00\xFF\xFF\x00", 
"\x00\xFF\x00\x00\x00\xFF\xFF\xFF",
 
  201        "\x00\xFF\x00\x00\xFF\x00\x00\x00", 
"\x00\xFF\x00\x00\xFF\x00\x00\xFF",
 
  202        "\x00\xFF\x00\x00\xFF\x00\xFF\x00", 
"\x00\xFF\x00\x00\xFF\x00\xFF\xFF",
 
  203        "\x00\xFF\x00\x00\xFF\xFF\x00\x00", 
"\x00\xFF\x00\x00\xFF\xFF\x00\xFF",
 
  204        "\x00\xFF\x00\x00\xFF\xFF\xFF\x00", 
"\x00\xFF\x00\x00\xFF\xFF\xFF\xFF",
 
  205        "\x00\xFF\x00\xFF\x00\x00\x00\x00", 
"\x00\xFF\x00\xFF\x00\x00\x00\xFF",
 
  206        "\x00\xFF\x00\xFF\x00\x00\xFF\x00", 
"\x00\xFF\x00\xFF\x00\x00\xFF\xFF",
 
  207        "\x00\xFF\x00\xFF\x00\xFF\x00\x00", 
"\x00\xFF\x00\xFF\x00\xFF\x00\xFF",
 
  208        "\x00\xFF\x00\xFF\x00\xFF\xFF\x00", 
"\x00\xFF\x00\xFF\x00\xFF\xFF\xFF",
 
  209        "\x00\xFF\x00\xFF\xFF\x00\x00\x00", 
"\x00\xFF\x00\xFF\xFF\x00\x00\xFF",
 
  210        "\x00\xFF\x00\xFF\xFF\x00\xFF\x00", 
"\x00\xFF\x00\xFF\xFF\x00\xFF\xFF",
 
  211        "\x00\xFF\x00\xFF\xFF\xFF\x00\x00", 
"\x00\xFF\x00\xFF\xFF\xFF\x00\xFF",
 
  212        "\x00\xFF\x00\xFF\xFF\xFF\xFF\x00", 
"\x00\xFF\x00\xFF\xFF\xFF\xFF\xFF",
 
  213        "\x00\xFF\xFF\x00\x00\x00\x00\x00", 
"\x00\xFF\xFF\x00\x00\x00\x00\xFF",
 
  214        "\x00\xFF\xFF\x00\x00\x00\xFF\x00", 
"\x00\xFF\xFF\x00\x00\x00\xFF\xFF",
 
  215        "\x00\xFF\xFF\x00\x00\xFF\x00\x00", 
"\x00\xFF\xFF\x00\x00\xFF\x00\xFF",
 
  216        "\x00\xFF\xFF\x00\x00\xFF\xFF\x00", 
"\x00\xFF\xFF\x00\x00\xFF\xFF\xFF",
 
  217        "\x00\xFF\xFF\x00\xFF\x00\x00\x00", 
"\x00\xFF\xFF\x00\xFF\x00\x00\xFF",
 
  218        "\x00\xFF\xFF\x00\xFF\x00\xFF\x00", 
"\x00\xFF\xFF\x00\xFF\x00\xFF\xFF",
 
  219        "\x00\xFF\xFF\x00\xFF\xFF\x00\x00", 
"\x00\xFF\xFF\x00\xFF\xFF\x00\xFF",
 
  220        "\x00\xFF\xFF\x00\xFF\xFF\xFF\x00", 
"\x00\xFF\xFF\x00\xFF\xFF\xFF\xFF",
 
  221        "\x00\xFF\xFF\xFF\x00\x00\x00\x00", 
"\x00\xFF\xFF\xFF\x00\x00\x00\xFF",
 
  222        "\x00\xFF\xFF\xFF\x00\x00\xFF\x00", 
"\x00\xFF\xFF\xFF\x00\x00\xFF\xFF",
 
  223        "\x00\xFF\xFF\xFF\x00\xFF\x00\x00", 
"\x00\xFF\xFF\xFF\x00\xFF\x00\xFF",
 
  224        "\x00\xFF\xFF\xFF\x00\xFF\xFF\x00", 
"\x00\xFF\xFF\xFF\x00\xFF\xFF\xFF",
 
  225        "\x00\xFF\xFF\xFF\xFF\x00\x00\x00", 
"\x00\xFF\xFF\xFF\xFF\x00\x00\xFF",
 
  226        "\x00\xFF\xFF\xFF\xFF\x00\xFF\x00", 
"\x00\xFF\xFF\xFF\xFF\x00\xFF\xFF",
 
  227        "\x00\xFF\xFF\xFF\xFF\xFF\x00\x00", 
"\x00\xFF\xFF\xFF\xFF\xFF\x00\xFF",
 
  228        "\x00\xFF\xFF\xFF\xFF\xFF\xFF\x00", 
"\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF",
 
  229        "\xFF\x00\x00\x00\x00\x00\x00\x00", 
"\xFF\x00\x00\x00\x00\x00\x00\xFF",
 
  230        "\xFF\x00\x00\x00\x00\x00\xFF\x00", 
"\xFF\x00\x00\x00\x00\x00\xFF\xFF",
 
  231        "\xFF\x00\x00\x00\x00\xFF\x00\x00", 
"\xFF\x00\x00\x00\x00\xFF\x00\xFF",
 
  232        "\xFF\x00\x00\x00\x00\xFF\xFF\x00", 
"\xFF\x00\x00\x00\x00\xFF\xFF\xFF",
 
  233        "\xFF\x00\x00\x00\xFF\x00\x00\x00", 
"\xFF\x00\x00\x00\xFF\x00\x00\xFF",
 
  234        "\xFF\x00\x00\x00\xFF\x00\xFF\x00", 
"\xFF\x00\x00\x00\xFF\x00\xFF\xFF",
 
  235        "\xFF\x00\x00\x00\xFF\xFF\x00\x00", 
"\xFF\x00\x00\x00\xFF\xFF\x00\xFF",
 
  236        "\xFF\x00\x00\x00\xFF\xFF\xFF\x00", 
"\xFF\x00\x00\x00\xFF\xFF\xFF\xFF",
 
  237        "\xFF\x00\x00\xFF\x00\x00\x00\x00", 
"\xFF\x00\x00\xFF\x00\x00\x00\xFF",
 
  238        "\xFF\x00\x00\xFF\x00\x00\xFF\x00", 
"\xFF\x00\x00\xFF\x00\x00\xFF\xFF",
 
  239        "\xFF\x00\x00\xFF\x00\xFF\x00\x00", 
"\xFF\x00\x00\xFF\x00\xFF\x00\xFF",
 
  240        "\xFF\x00\x00\xFF\x00\xFF\xFF\x00", 
"\xFF\x00\x00\xFF\x00\xFF\xFF\xFF",
 
  241        "\xFF\x00\x00\xFF\xFF\x00\x00\x00", 
"\xFF\x00\x00\xFF\xFF\x00\x00\xFF",
 
  242        "\xFF\x00\x00\xFF\xFF\x00\xFF\x00", 
"\xFF\x00\x00\xFF\xFF\x00\xFF\xFF",
 
  243        "\xFF\x00\x00\xFF\xFF\xFF\x00\x00", 
"\xFF\x00\x00\xFF\xFF\xFF\x00\xFF",
 
  244        "\xFF\x00\x00\xFF\xFF\xFF\xFF\x00", 
"\xFF\x00\x00\xFF\xFF\xFF\xFF\xFF",
 
  245        "\xFF\x00\xFF\x00\x00\x00\x00\x00", 
"\xFF\x00\xFF\x00\x00\x00\x00\xFF",
 
  246        "\xFF\x00\xFF\x00\x00\x00\xFF\x00", 
"\xFF\x00\xFF\x00\x00\x00\xFF\xFF",
 
  247        "\xFF\x00\xFF\x00\x00\xFF\x00\x00", 
"\xFF\x00\xFF\x00\x00\xFF\x00\xFF",
 
  248        "\xFF\x00\xFF\x00\x00\xFF\xFF\x00", 
"\xFF\x00\xFF\x00\x00\xFF\xFF\xFF",
 
  249        "\xFF\x00\xFF\x00\xFF\x00\x00\x00", 
"\xFF\x00\xFF\x00\xFF\x00\x00\xFF",
 
  250        "\xFF\x00\xFF\x00\xFF\x00\xFF\x00", 
"\xFF\x00\xFF\x00\xFF\x00\xFF\xFF",
 
  251        "\xFF\x00\xFF\x00\xFF\xFF\x00\x00", 
"\xFF\x00\xFF\x00\xFF\xFF\x00\xFF",
 
  252        "\xFF\x00\xFF\x00\xFF\xFF\xFF\x00", 
"\xFF\x00\xFF\x00\xFF\xFF\xFF\xFF",
 
  253        "\xFF\x00\xFF\xFF\x00\x00\x00\x00", 
"\xFF\x00\xFF\xFF\x00\x00\x00\xFF",
 
  254        "\xFF\x00\xFF\xFF\x00\x00\xFF\x00", 
"\xFF\x00\xFF\xFF\x00\x00\xFF\xFF",
 
  255        "\xFF\x00\xFF\xFF\x00\xFF\x00\x00", 
"\xFF\x00\xFF\xFF\x00\xFF\x00\xFF",
 
  256        "\xFF\x00\xFF\xFF\x00\xFF\xFF\x00", 
"\xFF\x00\xFF\xFF\x00\xFF\xFF\xFF",
 
  257        "\xFF\x00\xFF\xFF\xFF\x00\x00\x00", 
"\xFF\x00\xFF\xFF\xFF\x00\x00\xFF",
 
  258        "\xFF\x00\xFF\xFF\xFF\x00\xFF\x00", 
"\xFF\x00\xFF\xFF\xFF\x00\xFF\xFF",
 
  259        "\xFF\x00\xFF\xFF\xFF\xFF\x00\x00", 
"\xFF\x00\xFF\xFF\xFF\xFF\x00\xFF",
 
  260        "\xFF\x00\xFF\xFF\xFF\xFF\xFF\x00", 
"\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF",
 
  261        "\xFF\xFF\x00\x00\x00\x00\x00\x00", 
"\xFF\xFF\x00\x00\x00\x00\x00\xFF",
 
  262        "\xFF\xFF\x00\x00\x00\x00\xFF\x00", 
"\xFF\xFF\x00\x00\x00\x00\xFF\xFF",
 
  263        "\xFF\xFF\x00\x00\x00\xFF\x00\x00", 
"\xFF\xFF\x00\x00\x00\xFF\x00\xFF",
 
  264        "\xFF\xFF\x00\x00\x00\xFF\xFF\x00", 
"\xFF\xFF\x00\x00\x00\xFF\xFF\xFF",
 
  265        "\xFF\xFF\x00\x00\xFF\x00\x00\x00", 
"\xFF\xFF\x00\x00\xFF\x00\x00\xFF",
 
  266        "\xFF\xFF\x00\x00\xFF\x00\xFF\x00", 
"\xFF\xFF\x00\x00\xFF\x00\xFF\xFF",
 
  267        "\xFF\xFF\x00\x00\xFF\xFF\x00\x00", 
"\xFF\xFF\x00\x00\xFF\xFF\x00\xFF",
 
  268        "\xFF\xFF\x00\x00\xFF\xFF\xFF\x00", 
"\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF",
 
  269        "\xFF\xFF\x00\xFF\x00\x00\x00\x00", 
"\xFF\xFF\x00\xFF\x00\x00\x00\xFF",
 
  270        "\xFF\xFF\x00\xFF\x00\x00\xFF\x00", 
"\xFF\xFF\x00\xFF\x00\x00\xFF\xFF",
 
  271        "\xFF\xFF\x00\xFF\x00\xFF\x00\x00", 
"\xFF\xFF\x00\xFF\x00\xFF\x00\xFF",
 
  272        "\xFF\xFF\x00\xFF\x00\xFF\xFF\x00", 
"\xFF\xFF\x00\xFF\x00\xFF\xFF\xFF",
 
  273        "\xFF\xFF\x00\xFF\xFF\x00\x00\x00", 
"\xFF\xFF\x00\xFF\xFF\x00\x00\xFF",
 
  274        "\xFF\xFF\x00\xFF\xFF\x00\xFF\x00", 
"\xFF\xFF\x00\xFF\xFF\x00\xFF\xFF",
 
  275        "\xFF\xFF\x00\xFF\xFF\xFF\x00\x00", 
"\xFF\xFF\x00\xFF\xFF\xFF\x00\xFF",
 
  276        "\xFF\xFF\x00\xFF\xFF\xFF\xFF\x00", 
"\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF",
 
  277        "\xFF\xFF\xFF\x00\x00\x00\x00\x00", 
"\xFF\xFF\xFF\x00\x00\x00\x00\xFF",
 
  278        "\xFF\xFF\xFF\x00\x00\x00\xFF\x00", 
"\xFF\xFF\xFF\x00\x00\x00\xFF\xFF",
 
  279        "\xFF\xFF\xFF\x00\x00\xFF\x00\x00", 
"\xFF\xFF\xFF\x00\x00\xFF\x00\xFF",
 
  280        "\xFF\xFF\xFF\x00\x00\xFF\xFF\x00", 
"\xFF\xFF\xFF\x00\x00\xFF\xFF\xFF",
 
  281        "\xFF\xFF\xFF\x00\xFF\x00\x00\x00", 
"\xFF\xFF\xFF\x00\xFF\x00\x00\xFF",
 
  282        "\xFF\xFF\xFF\x00\xFF\x00\xFF\x00", 
"\xFF\xFF\xFF\x00\xFF\x00\xFF\xFF",
 
  283        "\xFF\xFF\xFF\x00\xFF\xFF\x00\x00", 
"\xFF\xFF\xFF\x00\xFF\xFF\x00\xFF",
 
  284        "\xFF\xFF\xFF\x00\xFF\xFF\xFF\x00", 
"\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF",
 
  285        "\xFF\xFF\xFF\xFF\x00\x00\x00\x00", 
"\xFF\xFF\xFF\xFF\x00\x00\x00\xFF",
 
  286        "\xFF\xFF\xFF\xFF\x00\x00\xFF\x00", 
"\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF",
 
  287        "\xFF\xFF\xFF\xFF\x00\xFF\x00\x00", 
"\xFF\xFF\xFF\xFF\x00\xFF\x00\xFF",
 
  288        "\xFF\xFF\xFF\xFF\x00\xFF\xFF\x00", 
"\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF",
 
  289        "\xFF\xFF\xFF\xFF\xFF\x00\x00\x00", 
"\xFF\xFF\xFF\xFF\xFF\x00\x00\xFF",
 
  290        "\xFF\xFF\xFF\xFF\xFF\x00\xFF\x00", 
"\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF",
 
  291        "\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00", 
"\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF",
 
  292        "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00", 
"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" 
  304        0x00, 0x10, 0x01, 0x11, 0x20, 0x30, 0x21, 0x31,
 
  305        0x02, 0x12, 0x03, 0x13, 0x22, 0x32, 0x23, 0x33,
 
  306        0x40, 0x50, 0x41, 0x51, 0x60, 0x70, 0x61, 0x71,
 
  307        0x42, 0x52, 0x43, 0x53, 0x62, 0x72, 0x63, 0x73,
 
  308        0x04, 0x14, 0x05, 0x15, 0x24, 0x34, 0x25, 0x35,
 
  309        0x06, 0x16, 0x07, 0x17, 0x26, 0x36, 0x27, 0x37,
 
  310        0x44, 0x54, 0x45, 0x55, 0x64, 0x74, 0x65, 0x75,
 
  311        0x46, 0x56, 0x47, 0x57, 0x66, 0x76, 0x67, 0x77,
 
  312        0x80, 0x90, 0x81, 0x91, 0xA0, 0xB0, 0xA1, 0xB1,
 
  313        0x82, 0x92, 0x83, 0x93, 0xA2, 0xB2, 0xA3, 0xB3,
 
  314        0xC0, 0xD0, 0xC1, 0xD1, 0xE0, 0xF0, 0xE1, 0xF1,
 
  315        0xC2, 0xD2, 0xC3, 0xD3, 0xE2, 0xF2, 0xE3, 0xF3,
 
  316        0x84, 0x94, 0x85, 0x95, 0xA4, 0xB4, 0xA5, 0xB5,
 
  317        0x86, 0x96, 0x87, 0x97, 0xA6, 0xB6, 0xA7, 0xB7,
 
  318        0xC4, 0xD4, 0xC5, 0xD5, 0xE4, 0xF4, 0xE5, 0xF5,
 
  319        0xC6, 0xD6, 0xC7, 0xD7, 0xE6, 0xF6, 0xE7, 0xF7,
 
  320        0x08, 0x18, 0x09, 0x19, 0x28, 0x38, 0x29, 0x39,
 
  321        0x0A, 0x1A, 0x0B, 0x1B, 0x2A, 0x3A, 0x2B, 0x3B,
 
  322        0x48, 0x58, 0x49, 0x59, 0x68, 0x78, 0x69, 0x79,
 
  323        0x4A, 0x5A, 0x4B, 0x5B, 0x6A, 0x7A, 0x6B, 0x7B,
 
  324        0x0C, 0x1C, 0x0D, 0x1D, 0x2C, 0x3C, 0x2D, 0x3D,
 
  325        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
 
  326        0x4C, 0x5C, 0x4D, 0x5D, 0x6C, 0x7C, 0x6D, 0x7D,
 
  327        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
 
  328        0x88, 0x98, 0x89, 0x99, 0xA8, 0xB8, 0xA9, 0xB9,
 
  329        0x8A, 0x9A, 0x8B, 0x9B, 0xAA, 0xBA, 0xAB, 0xBB,
 
  330        0xC8, 0xD8, 0xC9, 0xD9, 0xE8, 0xF8, 0xE9, 0xF9,
 
  331        0xCA, 0xDA, 0xCB, 0xDB, 0xEA, 0xFA, 0xEB, 0xFB,
 
  332        0x8C, 0x9C, 0x8D, 0x9D, 0xAC, 0xBC, 0xAD, 0xBD,
 
  333        0x8E, 0x9E, 0x8F, 0x9F, 0xAE, 0xBE, 0xAF, 0xBF,
 
  334        0xCC, 0xDC, 0xCD, 0xDD, 0xEC, 0xFC, 0xED, 0xFD,
 
  335        0xCE, 0xDE, 0xCF, 0xDF, 0xEE, 0xFE, 0xEF, 0xFF
 
  346        0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0,
 
  347        0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0,
 
  348        0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8,
 
  349        0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8,
 
  350        0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4,
 
  351        0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4,
 
  352        0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC,
 
  353        0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC,
 
  354        0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2,
 
  355        0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2,
 
  356        0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA,
 
  357        0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA,
 
  358        0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6,
 
  359        0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6,
 
  360        0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE,
 
  361        0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE,
 
  362        0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1,
 
  363        0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1,
 
  364        0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9,
 
  365        0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9,
 
  366        0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5,
 
  367        0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5,
 
  368        0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED,
 
  369        0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD,
 
  370        0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3,
 
  371        0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3,
 
  372        0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB,
 
  373        0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB,
 
  374        0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7,
 
  375        0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7,
 
  376        0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF,
 
  377        0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF
 
  390        0x00808200, 0x00000000, 0x00008000, 0x00808202,
 
  391        0x00808002, 0x00008202, 0x00000002, 0x00008000,
 
  392        0x00000200, 0x00808200, 0x00808202, 0x00000200,
 
  393        0x00800202, 0x00808002, 0x00800000, 0x00000002,
 
  394        0x00000202, 0x00800200, 0x00800200, 0x00008200,
 
  395        0x00008200, 0x00808000, 0x00808000, 0x00800202,
 
  396        0x00008002, 0x00800002, 0x00800002, 0x00008002,
 
  397        0x00000000, 0x00000202, 0x00008202, 0x00800000,
 
  398        0x00008000, 0x00808202, 0x00000002, 0x00808000,
 
  399        0x00808200, 0x00800000, 0x00800000, 0x00000200,
 
  400        0x00808002, 0x00008000, 0x00008200, 0x00800002,
 
  401        0x00000200, 0x00000002, 0x00800202, 0x00008202,
 
  402        0x00808202, 0x00008002, 0x00808000, 0x00800202,
 
  403        0x00800002, 0x00000202, 0x00008202, 0x00808200,
 
  404        0x00000202, 0x00800200, 0x00800200, 0x00000000,
 
  405        0x00008002, 0x00008200, 0x00000000, 0x00808002
 
  415        0x40084010, 0x40004000, 0x00004000, 0x00084010,
 
  416        0x00080000, 0x00000010, 0x40080010, 0x40004010,
 
  417        0x40000010, 0x40084010, 0x40084000, 0x40000000,
 
  418        0x40004000, 0x00080000, 0x00000010, 0x40080010,
 
  419        0x00084000, 0x00080010, 0x40004010, 0x00000000,
 
  420        0x40000000, 0x00004000, 0x00084010, 0x40080000,
 
  421        0x00080010, 0x40000010, 0x00000000, 0x00084000,
 
  422        0x00004010, 0x40084000, 0x40080000, 0x00004010,
 
  423        0x00000000, 0x00084010, 0x40080010, 0x00080000,
 
  424        0x40004010, 0x40080000, 0x40084000, 0x00004000,
 
  425        0x40080000, 0x40004000, 0x00000010, 0x40084010,
 
  426        0x00084010, 0x00000010, 0x00004000, 0x40000000,
 
  427        0x00004010, 0x40084000, 0x00080000, 0x40000010,
 
  428        0x00080010, 0x40004010, 0x40000010, 0x00080010,
 
  429        0x00084000, 0x00000000, 0x40004000, 0x00004010,
 
  430        0x40000000, 0x40080010, 0x40084010, 0x00084000
 
  440        0x00000104, 0x04010100, 0x00000000, 0x04010004,
 
  441        0x04000100, 0x00000000, 0x00010104, 0x04000100,
 
  442        0x00010004, 0x04000004, 0x04000004, 0x00010000,
 
  443        0x04010104, 0x00010004, 0x04010000, 0x00000104,
 
  444        0x04000000, 0x00000004, 0x04010100, 0x00000100,
 
  445        0x00010100, 0x04010000, 0x04010004, 0x00010104,
 
  446        0x04000104, 0x00010100, 0x00010000, 0x04000104,
 
  447        0x00000004, 0x04010104, 0x00000100, 0x04000000,
 
  448        0x04010100, 0x04000000, 0x00010004, 0x00000104,
 
  449        0x00010000, 0x04010100, 0x04000100, 0x00000000,
 
  450        0x00000100, 0x00010004, 0x04010104, 0x04000100,
 
  451        0x04000004, 0x00000100, 0x00000000, 0x04010004,
 
  452        0x04000104, 0x00010000, 0x04000000, 0x04010104,
 
  453        0x00000004, 0x00010104, 0x00010100, 0x04000004,
 
  454        0x04010000, 0x04000104, 0x00000104, 0x04010000,
 
  455        0x00010104, 0x00000004, 0x04010004, 0x00010100
 
  465        0x80401000, 0x80001040, 0x80001040, 0x00000040,
 
  466        0x00401040, 0x80400040, 0x80400000, 0x80001000,
 
  467        0x00000000, 0x00401000, 0x00401000, 0x80401040,
 
  468        0x80000040, 0x00000000, 0x00400040, 0x80400000,
 
  469        0x80000000, 0x00001000, 0x00400000, 0x80401000,
 
  470        0x00000040, 0x00400000, 0x80001000, 0x00001040,
 
  471        0x80400040, 0x80000000, 0x00001040, 0x00400040,
 
  472        0x00001000, 0x00401040, 0x80401040, 0x80000040,
 
  473        0x00400040, 0x80400000, 0x00401000, 0x80401040,
 
  474        0x80000040, 0x00000000, 0x00000000, 0x00401000,
 
  475        0x00001040, 0x00400040, 0x80400040, 0x80000000,
 
  476        0x80401000, 0x80001040, 0x80001040, 0x00000040,
 
  477        0x80401040, 0x80000040, 0x80000000, 0x00001000,
 
  478        0x80400000, 0x80001000, 0x00401040, 0x80400040,
 
  479        0x80001000, 0x00001040, 0x00400000, 0x80401000,
 
  480        0x00000040, 0x00400000, 0x00001000, 0x00401040
 
  490        0x00000080, 0x01040080, 0x01040000, 0x21000080,
 
  491        0x00040000, 0x00000080, 0x20000000, 0x01040000,
 
  492        0x20040080, 0x00040000, 0x01000080, 0x20040080,
 
  493        0x21000080, 0x21040000, 0x00040080, 0x20000000,
 
  494        0x01000000, 0x20040000, 0x20040000, 0x00000000,
 
  495        0x20000080, 0x21040080, 0x21040080, 0x01000080,
 
  496        0x21040000, 0x20000080, 0x00000000, 0x21000000,
 
  497        0x01040080, 0x01000000, 0x21000000, 0x00040080,
 
  498        0x00040000, 0x21000080, 0x00000080, 0x01000000,
 
  499        0x20000000, 0x01040000, 0x21000080, 0x20040080,
 
  500        0x01000080, 0x20000000, 0x21040000, 0x01040080,
 
  501        0x20040080, 0x00000080, 0x01000000, 0x21040000,
 
  502        0x21040080, 0x00040080, 0x21000000, 0x21040080,
 
  503        0x01040000, 0x00000000, 0x20040000, 0x21000000,
 
  504        0x00040080, 0x01000080, 0x20000080, 0x00040000,
 
  505        0x00000000, 0x20040000, 0x01040080, 0x20000080
 
  515        0x10000008, 0x10200000, 0x00002000, 0x10202008,
 
  516        0x10200000, 0x00000008, 0x10202008, 0x00200000,
 
  517        0x10002000, 0x00202008, 0x00200000, 0x10000008,
 
  518        0x00200008, 0x10002000, 0x10000000, 0x00002008,
 
  519        0x00000000, 0x00200008, 0x10002008, 0x00002000,
 
  520        0x00202000, 0x10002008, 0x00000008, 0x10200008,
 
  521        0x10200008, 0x00000000, 0x00202008, 0x10202000,
 
  522        0x00002008, 0x00202000, 0x10202000, 0x10000000,
 
  523        0x10002000, 0x00000008, 0x10200008, 0x00202000,
 
  524        0x10202008, 0x00200000, 0x00002008, 0x10000008,
 
  525        0x00200000, 0x10002000, 0x10000000, 0x00002008,
 
  526        0x10000008, 0x10202008, 0x00202000, 0x10200000,
 
  527        0x00202008, 0x10202000, 0x00000000, 0x10200008,
 
  528        0x00000008, 0x00002000, 0x10200000, 0x00202008,
 
  529        0x00002000, 0x00200008, 0x10002008, 0x00000000,
 
  530        0x10202000, 0x10000000, 0x00200008, 0x10002008
 
  540        0x00100000, 0x02100001, 0x02000401, 0x00000000,
 
  541        0x00000400, 0x02000401, 0x00100401, 0x02100400,
 
  542        0x02100401, 0x00100000, 0x00000000, 0x02000001,
 
  543        0x00000001, 0x02000000, 0x02100001, 0x00000401,
 
  544        0x02000400, 0x00100401, 0x00100001, 0x02000400,
 
  545        0x02000001, 0x02100000, 0x02100400, 0x00100001,
 
  546        0x02100000, 0x00000400, 0x00000401, 0x02100401,
 
  547        0x00100400, 0x00000001, 0x02000000, 0x00100400,
 
  548        0x02000000, 0x00100400, 0x00100000, 0x02000401,
 
  549        0x02000401, 0x02100001, 0x02100001, 0x00000001,
 
  550        0x00100001, 0x02000000, 0x02000400, 0x00100000,
 
  551        0x02100400, 0x00000401, 0x00100401, 0x02100400,
 
  552        0x00000401, 0x02000001, 0x02100401, 0x02100000,
 
  553        0x00100400, 0x00000000, 0x00000001, 0x02100401,
 
  554        0x00000000, 0x00100401, 0x02100000, 0x00000400,
 
  555        0x02000001, 0x02000400, 0x00000400, 0x00100001
 
  565        0x08000820, 0x00000800, 0x00020000, 0x08020820,
 
  566        0x08000000, 0x08000820, 0x00000020, 0x08000000,
 
  567        0x00020020, 0x08020000, 0x08020820, 0x00020800,
 
  568        0x08020800, 0x00020820, 0x00000800, 0x00000020,
 
  569        0x08020000, 0x08000020, 0x08000800, 0x00000820,
 
  570        0x00020800, 0x00020020, 0x08020020, 0x08020800,
 
  571        0x00000820, 0x00000000, 0x00000000, 0x08020020,
 
  572        0x08000020, 0x08000800, 0x00020820, 0x00020000,
 
  573        0x00020820, 0x00020000, 0x08020800, 0x00000800,
 
  574        0x00000020, 0x08020020, 0x00000800, 0x00020820,
 
  575        0x08000800, 0x00000020, 0x08000020, 0x08020000,
 
  576        0x08020020, 0x08000000, 0x00020000, 0x08000820,
 
  577        0x00000000, 0x08020820, 0x00020020, 0x08000020,
 
  578        0x08020000, 0x08000800, 0x08000820, 0x00000000,
 
  579        0x08020820, 0x00020800, 0x00020800, 0x00000820,
 
  580        0x00000820, 0x00020020, 0x08000000, 0x08020800
 
  595        if ($this->key_length_max == 8) {
 
  596            if (
$engine == self::ENGINE_OPENSSL) {
 
  597                $this->cipher_name_openssl_ecb = 
'des-ecb';
 
  602        return parent::isValidEngine(
$engine);
 
  624        if (strlen(
$key) > $this->key_length_max) {
 
  625            $key = substr(
$key, 0, $this->key_length_max);
 
  629        parent::setKey(
$key);
 
  680            $sbox1 = array_map(
"intval", $this->sbox1);
 
  681            $sbox2 = array_map(
"intval", $this->sbox2);
 
  682            $sbox3 = array_map(
"intval", $this->sbox3);
 
  683            $sbox4 = array_map(
"intval", $this->sbox4);
 
  684            $sbox5 = array_map(
"intval", $this->sbox5);
 
  685            $sbox6 = array_map(
"intval", $this->sbox6);
 
  686            $sbox7 = array_map(
"intval", $this->sbox7);
 
  687            $sbox8 = array_map(
"intval", $this->sbox8);
 
  689            for (
$i = 0; 
$i < 256; ++
$i) {
 
  690                $shuffleip[]    =  $this->shuffle[$this->ipmap[
$i]];
 
  691                $shuffleinvip[] =  $this->shuffle[$this->invipmap[
$i]];
 
  699        $t = unpack(
'Nl/Nr', $block);
 
  700        list(
$l, 
$r) = array(
$t[
'l'], 
$t[
'r']);
 
  701        $block = ($shuffleip[ 
$r        & 0xFF] & 
"\x80\x80\x80\x80\x80\x80\x80\x80") |
 
  702                 ($shuffleip[(
$r >>  8) & 0xFF] & 
"\x40\x40\x40\x40\x40\x40\x40\x40") |
 
  703                 ($shuffleip[(
$r >> 16) & 0xFF] & 
"\x20\x20\x20\x20\x20\x20\x20\x20") |
 
  704                 ($shuffleip[(
$r >> 24) & 0xFF] & 
"\x10\x10\x10\x10\x10\x10\x10\x10") |
 
  705                 ($shuffleip[ 
$l        & 0xFF] & 
"\x08\x08\x08\x08\x08\x08\x08\x08") |
 
  706                 ($shuffleip[(
$l >>  8) & 0xFF] & 
"\x04\x04\x04\x04\x04\x04\x04\x04") |
 
  707                 ($shuffleip[(
$l >> 16) & 0xFF] & 
"\x02\x02\x02\x02\x02\x02\x02\x02") |
 
  708                 ($shuffleip[(
$l >> 24) & 0xFF] & 
"\x01\x01\x01\x01\x01\x01\x01\x01");
 
  711        $t = unpack(
'Nl/Nr', $block);
 
  712        list(
$l, 
$r) = array(
$t[
'l'], 
$t[
'r']);
 
  716            for (
$i = 0; 
$i < 16; 
$i++) {
 
  720                $b1 = ((
$r >>  3) & 0x1FFFFFFF) ^ (
$r << 29) ^ 
$keys[++$ki];
 
  721                $b2 = ((
$r >> 31) & 0x00000001) ^ (
$r <<  1) ^ 
$keys[++$ki];
 
  725                     $sbox3[($b1 >> 16) & 0x3F] ^ 
$sbox4[($b2 >> 16) & 0x3F] ^
 
  741        return ($shuffleinvip[(
$r >> 24) & 0xFF] & 
"\x80\x80\x80\x80\x80\x80\x80\x80") |
 
  742               ($shuffleinvip[(
$l >> 24) & 0xFF] & 
"\x40\x40\x40\x40\x40\x40\x40\x40") |
 
  743               ($shuffleinvip[(
$r >> 16) & 0xFF] & 
"\x20\x20\x20\x20\x20\x20\x20\x20") |
 
  744               ($shuffleinvip[(
$l >> 16) & 0xFF] & 
"\x10\x10\x10\x10\x10\x10\x10\x10") |
 
  745               ($shuffleinvip[(
$r >>  8) & 0xFF] & 
"\x08\x08\x08\x08\x08\x08\x08\x08") |
 
  746               ($shuffleinvip[(
$l >>  8) & 0xFF] & 
"\x04\x04\x04\x04\x04\x04\x04\x04") |
 
  747               ($shuffleinvip[ 
$r        & 0xFF] & 
"\x02\x02\x02\x02\x02\x02\x02\x02") |
 
  748               ($shuffleinvip[ 
$l        & 0xFF] & 
"\x01\x01\x01\x01\x01\x01\x01\x01");
 
  759        if (isset($this->kl[
'key']) && $this->key === $this->kl[
'key'] && $this->des_rounds === $this->kl[
'des_rounds']) {
 
  763        $this->kl = array(
'key' => $this->key, 
'des_rounds' => $this->des_rounds);
 
  765        static $shifts = array( 
 
  766            1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1
 
  769        static $pc1map = array(
 
  770            0x00, 0x00, 0x08, 0x08, 0x04, 0x04, 0x0C, 0x0C,
 
  771            0x02, 0x02, 0x0A, 0x0A, 0x06, 0x06, 0x0E, 0x0E,
 
  772            0x10, 0x10, 0x18, 0x18, 0x14, 0x14, 0x1C, 0x1C,
 
  773            0x12, 0x12, 0x1A, 0x1A, 0x16, 0x16, 0x1E, 0x1E,
 
  774            0x20, 0x20, 0x28, 0x28, 0x24, 0x24, 0x2C, 0x2C,
 
  775            0x22, 0x22, 0x2A, 0x2A, 0x26, 0x26, 0x2E, 0x2E,
 
  776            0x30, 0x30, 0x38, 0x38, 0x34, 0x34, 0x3C, 0x3C,
 
  777            0x32, 0x32, 0x3A, 0x3A, 0x36, 0x36, 0x3E, 0x3E,
 
  778            0x40, 0x40, 0x48, 0x48, 0x44, 0x44, 0x4C, 0x4C,
 
  779            0x42, 0x42, 0x4A, 0x4A, 0x46, 0x46, 0x4E, 0x4E,
 
  780            0x50, 0x50, 0x58, 0x58, 0x54, 0x54, 0x5C, 0x5C,
 
  781            0x52, 0x52, 0x5A, 0x5A, 0x56, 0x56, 0x5E, 0x5E,
 
  782            0x60, 0x60, 0x68, 0x68, 0x64, 0x64, 0x6C, 0x6C,
 
  783            0x62, 0x62, 0x6A, 0x6A, 0x66, 0x66, 0x6E, 0x6E,
 
  784            0x70, 0x70, 0x78, 0x78, 0x74, 0x74, 0x7C, 0x7C,
 
  785            0x72, 0x72, 0x7A, 0x7A, 0x76, 0x76, 0x7E, 0x7E,
 
  786            0x80, 0x80, 0x88, 0x88, 0x84, 0x84, 0x8C, 0x8C,
 
  787            0x82, 0x82, 0x8A, 0x8A, 0x86, 0x86, 0x8E, 0x8E,
 
  788            0x90, 0x90, 0x98, 0x98, 0x94, 0x94, 0x9C, 0x9C,
 
  789            0x92, 0x92, 0x9A, 0x9A, 0x96, 0x96, 0x9E, 0x9E,
 
  790            0xA0, 0xA0, 0xA8, 0xA8, 0xA4, 0xA4, 0xAC, 0xAC,
 
  791            0xA2, 0xA2, 0xAA, 0xAA, 0xA6, 0xA6, 0xAE, 0xAE,
 
  792            0xB0, 0xB0, 0xB8, 0xB8, 0xB4, 0xB4, 0xBC, 0xBC,
 
  793            0xB2, 0xB2, 0xBA, 0xBA, 0xB6, 0xB6, 0xBE, 0xBE,
 
  794            0xC0, 0xC0, 0xC8, 0xC8, 0xC4, 0xC4, 0xCC, 0xCC,
 
  795            0xC2, 0xC2, 0xCA, 0xCA, 0xC6, 0xC6, 0xCE, 0xCE,
 
  796            0xD0, 0xD0, 0xD8, 0xD8, 0xD4, 0xD4, 0xDC, 0xDC,
 
  797            0xD2, 0xD2, 0xDA, 0xDA, 0xD6, 0xD6, 0xDE, 0xDE,
 
  798            0xE0, 0xE0, 0xE8, 0xE8, 0xE4, 0xE4, 0xEC, 0xEC,
 
  799            0xE2, 0xE2, 0xEA, 0xEA, 0xE6, 0xE6, 0xEE, 0xEE,
 
  800            0xF0, 0xF0, 0xF8, 0xF8, 0xF4, 0xF4, 0xFC, 0xFC,
 
  801            0xF2, 0xF2, 0xFA, 0xFA, 0xF6, 0xF6, 0xFE, 0xFE
 
  805        static $pc2mapc1 = array(
 
  806            0x00000000, 0x00000400, 0x00200000, 0x00200400,
 
  807            0x00000001, 0x00000401, 0x00200001, 0x00200401,
 
  808            0x02000000, 0x02000400, 0x02200000, 0x02200400,
 
  809            0x02000001, 0x02000401, 0x02200001, 0x02200401
 
  811        static $pc2mapc2 = array(
 
  812            0x00000000, 0x00000800, 0x08000000, 0x08000800,
 
  813            0x00010000, 0x00010800, 0x08010000, 0x08010800,
 
  814            0x00000000, 0x00000800, 0x08000000, 0x08000800,
 
  815            0x00010000, 0x00010800, 0x08010000, 0x08010800,
 
  816            0x00000100, 0x00000900, 0x08000100, 0x08000900,
 
  817            0x00010100, 0x00010900, 0x08010100, 0x08010900,
 
  818            0x00000100, 0x00000900, 0x08000100, 0x08000900,
 
  819            0x00010100, 0x00010900, 0x08010100, 0x08010900,
 
  820            0x00000010, 0x00000810, 0x08000010, 0x08000810,
 
  821            0x00010010, 0x00010810, 0x08010010, 0x08010810,
 
  822            0x00000010, 0x00000810, 0x08000010, 0x08000810,
 
  823            0x00010010, 0x00010810, 0x08010010, 0x08010810,
 
  824            0x00000110, 0x00000910, 0x08000110, 0x08000910,
 
  825            0x00010110, 0x00010910, 0x08010110, 0x08010910,
 
  826            0x00000110, 0x00000910, 0x08000110, 0x08000910,
 
  827            0x00010110, 0x00010910, 0x08010110, 0x08010910,
 
  828            0x00040000, 0x00040800, 0x08040000, 0x08040800,
 
  829            0x00050000, 0x00050800, 0x08050000, 0x08050800,
 
  830            0x00040000, 0x00040800, 0x08040000, 0x08040800,
 
  831            0x00050000, 0x00050800, 0x08050000, 0x08050800,
 
  832            0x00040100, 0x00040900, 0x08040100, 0x08040900,
 
  833            0x00050100, 0x00050900, 0x08050100, 0x08050900,
 
  834            0x00040100, 0x00040900, 0x08040100, 0x08040900,
 
  835            0x00050100, 0x00050900, 0x08050100, 0x08050900,
 
  836            0x00040010, 0x00040810, 0x08040010, 0x08040810,
 
  837            0x00050010, 0x00050810, 0x08050010, 0x08050810,
 
  838            0x00040010, 0x00040810, 0x08040010, 0x08040810,
 
  839            0x00050010, 0x00050810, 0x08050010, 0x08050810,
 
  840            0x00040110, 0x00040910, 0x08040110, 0x08040910,
 
  841            0x00050110, 0x00050910, 0x08050110, 0x08050910,
 
  842            0x00040110, 0x00040910, 0x08040110, 0x08040910,
 
  843            0x00050110, 0x00050910, 0x08050110, 0x08050910,
 
  844            0x01000000, 0x01000800, 0x09000000, 0x09000800,
 
  845            0x01010000, 0x01010800, 0x09010000, 0x09010800,
 
  846            0x01000000, 0x01000800, 0x09000000, 0x09000800,
 
  847            0x01010000, 0x01010800, 0x09010000, 0x09010800,
 
  848            0x01000100, 0x01000900, 0x09000100, 0x09000900,
 
  849            0x01010100, 0x01010900, 0x09010100, 0x09010900,
 
  850            0x01000100, 0x01000900, 0x09000100, 0x09000900,
 
  851            0x01010100, 0x01010900, 0x09010100, 0x09010900,
 
  852            0x01000010, 0x01000810, 0x09000010, 0x09000810,
 
  853            0x01010010, 0x01010810, 0x09010010, 0x09010810,
 
  854            0x01000010, 0x01000810, 0x09000010, 0x09000810,
 
  855            0x01010010, 0x01010810, 0x09010010, 0x09010810,
 
  856            0x01000110, 0x01000910, 0x09000110, 0x09000910,
 
  857            0x01010110, 0x01010910, 0x09010110, 0x09010910,
 
  858            0x01000110, 0x01000910, 0x09000110, 0x09000910,
 
  859            0x01010110, 0x01010910, 0x09010110, 0x09010910,
 
  860            0x01040000, 0x01040800, 0x09040000, 0x09040800,
 
  861            0x01050000, 0x01050800, 0x09050000, 0x09050800,
 
  862            0x01040000, 0x01040800, 0x09040000, 0x09040800,
 
  863            0x01050000, 0x01050800, 0x09050000, 0x09050800,
 
  864            0x01040100, 0x01040900, 0x09040100, 0x09040900,
 
  865            0x01050100, 0x01050900, 0x09050100, 0x09050900,
 
  866            0x01040100, 0x01040900, 0x09040100, 0x09040900,
 
  867            0x01050100, 0x01050900, 0x09050100, 0x09050900,
 
  868            0x01040010, 0x01040810, 0x09040010, 0x09040810,
 
  869            0x01050010, 0x01050810, 0x09050010, 0x09050810,
 
  870            0x01040010, 0x01040810, 0x09040010, 0x09040810,
 
  871            0x01050010, 0x01050810, 0x09050010, 0x09050810,
 
  872            0x01040110, 0x01040910, 0x09040110, 0x09040910,
 
  873            0x01050110, 0x01050910, 0x09050110, 0x09050910,
 
  874            0x01040110, 0x01040910, 0x09040110, 0x09040910,
 
  875            0x01050110, 0x01050910, 0x09050110, 0x09050910
 
  877        static $pc2mapc3 = array(
 
  878            0x00000000, 0x00000004, 0x00001000, 0x00001004,
 
  879            0x00000000, 0x00000004, 0x00001000, 0x00001004,
 
  880            0x10000000, 0x10000004, 0x10001000, 0x10001004,
 
  881            0x10000000, 0x10000004, 0x10001000, 0x10001004,
 
  882            0x00000020, 0x00000024, 0x00001020, 0x00001024,
 
  883            0x00000020, 0x00000024, 0x00001020, 0x00001024,
 
  884            0x10000020, 0x10000024, 0x10001020, 0x10001024,
 
  885            0x10000020, 0x10000024, 0x10001020, 0x10001024,
 
  886            0x00080000, 0x00080004, 0x00081000, 0x00081004,
 
  887            0x00080000, 0x00080004, 0x00081000, 0x00081004,
 
  888            0x10080000, 0x10080004, 0x10081000, 0x10081004,
 
  889            0x10080000, 0x10080004, 0x10081000, 0x10081004,
 
  890            0x00080020, 0x00080024, 0x00081020, 0x00081024,
 
  891            0x00080020, 0x00080024, 0x00081020, 0x00081024,
 
  892            0x10080020, 0x10080024, 0x10081020, 0x10081024,
 
  893            0x10080020, 0x10080024, 0x10081020, 0x10081024,
 
  894            0x20000000, 0x20000004, 0x20001000, 0x20001004,
 
  895            0x20000000, 0x20000004, 0x20001000, 0x20001004,
 
  896            0x30000000, 0x30000004, 0x30001000, 0x30001004,
 
  897            0x30000000, 0x30000004, 0x30001000, 0x30001004,
 
  898            0x20000020, 0x20000024, 0x20001020, 0x20001024,
 
  899            0x20000020, 0x20000024, 0x20001020, 0x20001024,
 
  900            0x30000020, 0x30000024, 0x30001020, 0x30001024,
 
  901            0x30000020, 0x30000024, 0x30001020, 0x30001024,
 
  902            0x20080000, 0x20080004, 0x20081000, 0x20081004,
 
  903            0x20080000, 0x20080004, 0x20081000, 0x20081004,
 
  904            0x30080000, 0x30080004, 0x30081000, 0x30081004,
 
  905            0x30080000, 0x30080004, 0x30081000, 0x30081004,
 
  906            0x20080020, 0x20080024, 0x20081020, 0x20081024,
 
  907            0x20080020, 0x20080024, 0x20081020, 0x20081024,
 
  908            0x30080020, 0x30080024, 0x30081020, 0x30081024,
 
  909            0x30080020, 0x30080024, 0x30081020, 0x30081024,
 
  910            0x00000002, 0x00000006, 0x00001002, 0x00001006,
 
  911            0x00000002, 0x00000006, 0x00001002, 0x00001006,
 
  912            0x10000002, 0x10000006, 0x10001002, 0x10001006,
 
  913            0x10000002, 0x10000006, 0x10001002, 0x10001006,
 
  914            0x00000022, 0x00000026, 0x00001022, 0x00001026,
 
  915            0x00000022, 0x00000026, 0x00001022, 0x00001026,
 
  916            0x10000022, 0x10000026, 0x10001022, 0x10001026,
 
  917            0x10000022, 0x10000026, 0x10001022, 0x10001026,
 
  918            0x00080002, 0x00080006, 0x00081002, 0x00081006,
 
  919            0x00080002, 0x00080006, 0x00081002, 0x00081006,
 
  920            0x10080002, 0x10080006, 0x10081002, 0x10081006,
 
  921            0x10080002, 0x10080006, 0x10081002, 0x10081006,
 
  922            0x00080022, 0x00080026, 0x00081022, 0x00081026,
 
  923            0x00080022, 0x00080026, 0x00081022, 0x00081026,
 
  924            0x10080022, 0x10080026, 0x10081022, 0x10081026,
 
  925            0x10080022, 0x10080026, 0x10081022, 0x10081026,
 
  926            0x20000002, 0x20000006, 0x20001002, 0x20001006,
 
  927            0x20000002, 0x20000006, 0x20001002, 0x20001006,
 
  928            0x30000002, 0x30000006, 0x30001002, 0x30001006,
 
  929            0x30000002, 0x30000006, 0x30001002, 0x30001006,
 
  930            0x20000022, 0x20000026, 0x20001022, 0x20001026,
 
  931            0x20000022, 0x20000026, 0x20001022, 0x20001026,
 
  932            0x30000022, 0x30000026, 0x30001022, 0x30001026,
 
  933            0x30000022, 0x30000026, 0x30001022, 0x30001026,
 
  934            0x20080002, 0x20080006, 0x20081002, 0x20081006,
 
  935            0x20080002, 0x20080006, 0x20081002, 0x20081006,
 
  936            0x30080002, 0x30080006, 0x30081002, 0x30081006,
 
  937            0x30080002, 0x30080006, 0x30081002, 0x30081006,
 
  938            0x20080022, 0x20080026, 0x20081022, 0x20081026,
 
  939            0x20080022, 0x20080026, 0x20081022, 0x20081026,
 
  940            0x30080022, 0x30080026, 0x30081022, 0x30081026,
 
  941            0x30080022, 0x30080026, 0x30081022, 0x30081026
 
  943        static $pc2mapc4 = array(
 
  944            0x00000000, 0x00100000, 0x00000008, 0x00100008,
 
  945            0x00000200, 0x00100200, 0x00000208, 0x00100208,
 
  946            0x00000000, 0x00100000, 0x00000008, 0x00100008,
 
  947            0x00000200, 0x00100200, 0x00000208, 0x00100208,
 
  948            0x04000000, 0x04100000, 0x04000008, 0x04100008,
 
  949            0x04000200, 0x04100200, 0x04000208, 0x04100208,
 
  950            0x04000000, 0x04100000, 0x04000008, 0x04100008,
 
  951            0x04000200, 0x04100200, 0x04000208, 0x04100208,
 
  952            0x00002000, 0x00102000, 0x00002008, 0x00102008,
 
  953            0x00002200, 0x00102200, 0x00002208, 0x00102208,
 
  954            0x00002000, 0x00102000, 0x00002008, 0x00102008,
 
  955            0x00002200, 0x00102200, 0x00002208, 0x00102208,
 
  956            0x04002000, 0x04102000, 0x04002008, 0x04102008,
 
  957            0x04002200, 0x04102200, 0x04002208, 0x04102208,
 
  958            0x04002000, 0x04102000, 0x04002008, 0x04102008,
 
  959            0x04002200, 0x04102200, 0x04002208, 0x04102208,
 
  960            0x00000000, 0x00100000, 0x00000008, 0x00100008,
 
  961            0x00000200, 0x00100200, 0x00000208, 0x00100208,
 
  962            0x00000000, 0x00100000, 0x00000008, 0x00100008,
 
  963            0x00000200, 0x00100200, 0x00000208, 0x00100208,
 
  964            0x04000000, 0x04100000, 0x04000008, 0x04100008,
 
  965            0x04000200, 0x04100200, 0x04000208, 0x04100208,
 
  966            0x04000000, 0x04100000, 0x04000008, 0x04100008,
 
  967            0x04000200, 0x04100200, 0x04000208, 0x04100208,
 
  968            0x00002000, 0x00102000, 0x00002008, 0x00102008,
 
  969            0x00002200, 0x00102200, 0x00002208, 0x00102208,
 
  970            0x00002000, 0x00102000, 0x00002008, 0x00102008,
 
  971            0x00002200, 0x00102200, 0x00002208, 0x00102208,
 
  972            0x04002000, 0x04102000, 0x04002008, 0x04102008,
 
  973            0x04002200, 0x04102200, 0x04002208, 0x04102208,
 
  974            0x04002000, 0x04102000, 0x04002008, 0x04102008,
 
  975            0x04002200, 0x04102200, 0x04002208, 0x04102208,
 
  976            0x00020000, 0x00120000, 0x00020008, 0x00120008,
 
  977            0x00020200, 0x00120200, 0x00020208, 0x00120208,
 
  978            0x00020000, 0x00120000, 0x00020008, 0x00120008,
 
  979            0x00020200, 0x00120200, 0x00020208, 0x00120208,
 
  980            0x04020000, 0x04120000, 0x04020008, 0x04120008,
 
  981            0x04020200, 0x04120200, 0x04020208, 0x04120208,
 
  982            0x04020000, 0x04120000, 0x04020008, 0x04120008,
 
  983            0x04020200, 0x04120200, 0x04020208, 0x04120208,
 
  984            0x00022000, 0x00122000, 0x00022008, 0x00122008,
 
  985            0x00022200, 0x00122200, 0x00022208, 0x00122208,
 
  986            0x00022000, 0x00122000, 0x00022008, 0x00122008,
 
  987            0x00022200, 0x00122200, 0x00022208, 0x00122208,
 
  988            0x04022000, 0x04122000, 0x04022008, 0x04122008,
 
  989            0x04022200, 0x04122200, 0x04022208, 0x04122208,
 
  990            0x04022000, 0x04122000, 0x04022008, 0x04122008,
 
  991            0x04022200, 0x04122200, 0x04022208, 0x04122208,
 
  992            0x00020000, 0x00120000, 0x00020008, 0x00120008,
 
  993            0x00020200, 0x00120200, 0x00020208, 0x00120208,
 
  994            0x00020000, 0x00120000, 0x00020008, 0x00120008,
 
  995            0x00020200, 0x00120200, 0x00020208, 0x00120208,
 
  996            0x04020000, 0x04120000, 0x04020008, 0x04120008,
 
  997            0x04020200, 0x04120200, 0x04020208, 0x04120208,
 
  998            0x04020000, 0x04120000, 0x04020008, 0x04120008,
 
  999            0x04020200, 0x04120200, 0x04020208, 0x04120208,
 
 1000            0x00022000, 0x00122000, 0x00022008, 0x00122008,
 
 1001            0x00022200, 0x00122200, 0x00022208, 0x00122208,
 
 1002            0x00022000, 0x00122000, 0x00022008, 0x00122008,
 
 1003            0x00022200, 0x00122200, 0x00022208, 0x00122208,
 
 1004            0x04022000, 0x04122000, 0x04022008, 0x04122008,
 
 1005            0x04022200, 0x04122200, 0x04022208, 0x04122208,
 
 1006            0x04022000, 0x04122000, 0x04022008, 0x04122008,
 
 1007            0x04022200, 0x04122200, 0x04022208, 0x04122208
 
 1009        static $pc2mapd1 = array(
 
 1010            0x00000000, 0x00000001, 0x08000000, 0x08000001,
 
 1011            0x00200000, 0x00200001, 0x08200000, 0x08200001,
 
 1012            0x00000002, 0x00000003, 0x08000002, 0x08000003,
 
 1013            0x00200002, 0x00200003, 0x08200002, 0x08200003
 
 1015        static $pc2mapd2 = array(
 
 1016            0x00000000, 0x00100000, 0x00000800, 0x00100800,
 
 1017            0x00000000, 0x00100000, 0x00000800, 0x00100800,
 
 1018            0x04000000, 0x04100000, 0x04000800, 0x04100800,
 
 1019            0x04000000, 0x04100000, 0x04000800, 0x04100800,
 
 1020            0x00000004, 0x00100004, 0x00000804, 0x00100804,
 
 1021            0x00000004, 0x00100004, 0x00000804, 0x00100804,
 
 1022            0x04000004, 0x04100004, 0x04000804, 0x04100804,
 
 1023            0x04000004, 0x04100004, 0x04000804, 0x04100804,
 
 1024            0x00000000, 0x00100000, 0x00000800, 0x00100800,
 
 1025            0x00000000, 0x00100000, 0x00000800, 0x00100800,
 
 1026            0x04000000, 0x04100000, 0x04000800, 0x04100800,
 
 1027            0x04000000, 0x04100000, 0x04000800, 0x04100800,
 
 1028            0x00000004, 0x00100004, 0x00000804, 0x00100804,
 
 1029            0x00000004, 0x00100004, 0x00000804, 0x00100804,
 
 1030            0x04000004, 0x04100004, 0x04000804, 0x04100804,
 
 1031            0x04000004, 0x04100004, 0x04000804, 0x04100804,
 
 1032            0x00000200, 0x00100200, 0x00000A00, 0x00100A00,
 
 1033            0x00000200, 0x00100200, 0x00000A00, 0x00100A00,
 
 1034            0x04000200, 0x04100200, 0x04000A00, 0x04100A00,
 
 1035            0x04000200, 0x04100200, 0x04000A00, 0x04100A00,
 
 1036            0x00000204, 0x00100204, 0x00000A04, 0x00100A04,
 
 1037            0x00000204, 0x00100204, 0x00000A04, 0x00100A04,
 
 1038            0x04000204, 0x04100204, 0x04000A04, 0x04100A04,
 
 1039            0x04000204, 0x04100204, 0x04000A04, 0x04100A04,
 
 1040            0x00000200, 0x00100200, 0x00000A00, 0x00100A00,
 
 1041            0x00000200, 0x00100200, 0x00000A00, 0x00100A00,
 
 1042            0x04000200, 0x04100200, 0x04000A00, 0x04100A00,
 
 1043            0x04000200, 0x04100200, 0x04000A00, 0x04100A00,
 
 1044            0x00000204, 0x00100204, 0x00000A04, 0x00100A04,
 
 1045            0x00000204, 0x00100204, 0x00000A04, 0x00100A04,
 
 1046            0x04000204, 0x04100204, 0x04000A04, 0x04100A04,
 
 1047            0x04000204, 0x04100204, 0x04000A04, 0x04100A04,
 
 1048            0x00020000, 0x00120000, 0x00020800, 0x00120800,
 
 1049            0x00020000, 0x00120000, 0x00020800, 0x00120800,
 
 1050            0x04020000, 0x04120000, 0x04020800, 0x04120800,
 
 1051            0x04020000, 0x04120000, 0x04020800, 0x04120800,
 
 1052            0x00020004, 0x00120004, 0x00020804, 0x00120804,
 
 1053            0x00020004, 0x00120004, 0x00020804, 0x00120804,
 
 1054            0x04020004, 0x04120004, 0x04020804, 0x04120804,
 
 1055            0x04020004, 0x04120004, 0x04020804, 0x04120804,
 
 1056            0x00020000, 0x00120000, 0x00020800, 0x00120800,
 
 1057            0x00020000, 0x00120000, 0x00020800, 0x00120800,
 
 1058            0x04020000, 0x04120000, 0x04020800, 0x04120800,
 
 1059            0x04020000, 0x04120000, 0x04020800, 0x04120800,
 
 1060            0x00020004, 0x00120004, 0x00020804, 0x00120804,
 
 1061            0x00020004, 0x00120004, 0x00020804, 0x00120804,
 
 1062            0x04020004, 0x04120004, 0x04020804, 0x04120804,
 
 1063            0x04020004, 0x04120004, 0x04020804, 0x04120804,
 
 1064            0x00020200, 0x00120200, 0x00020A00, 0x00120A00,
 
 1065            0x00020200, 0x00120200, 0x00020A00, 0x00120A00,
 
 1066            0x04020200, 0x04120200, 0x04020A00, 0x04120A00,
 
 1067            0x04020200, 0x04120200, 0x04020A00, 0x04120A00,
 
 1068            0x00020204, 0x00120204, 0x00020A04, 0x00120A04,
 
 1069            0x00020204, 0x00120204, 0x00020A04, 0x00120A04,
 
 1070            0x04020204, 0x04120204, 0x04020A04, 0x04120A04,
 
 1071            0x04020204, 0x04120204, 0x04020A04, 0x04120A04,
 
 1072            0x00020200, 0x00120200, 0x00020A00, 0x00120A00,
 
 1073            0x00020200, 0x00120200, 0x00020A00, 0x00120A00,
 
 1074            0x04020200, 0x04120200, 0x04020A00, 0x04120A00,
 
 1075            0x04020200, 0x04120200, 0x04020A00, 0x04120A00,
 
 1076            0x00020204, 0x00120204, 0x00020A04, 0x00120A04,
 
 1077            0x00020204, 0x00120204, 0x00020A04, 0x00120A04,
 
 1078            0x04020204, 0x04120204, 0x04020A04, 0x04120A04,
 
 1079            0x04020204, 0x04120204, 0x04020A04, 0x04120A04
 
 1081        static $pc2mapd3 = array(
 
 1082            0x00000000, 0x00010000, 0x02000000, 0x02010000,
 
 1083            0x00000020, 0x00010020, 0x02000020, 0x02010020,
 
 1084            0x00040000, 0x00050000, 0x02040000, 0x02050000,
 
 1085            0x00040020, 0x00050020, 0x02040020, 0x02050020,
 
 1086            0x00002000, 0x00012000, 0x02002000, 0x02012000,
 
 1087            0x00002020, 0x00012020, 0x02002020, 0x02012020,
 
 1088            0x00042000, 0x00052000, 0x02042000, 0x02052000,
 
 1089            0x00042020, 0x00052020, 0x02042020, 0x02052020,
 
 1090            0x00000000, 0x00010000, 0x02000000, 0x02010000,
 
 1091            0x00000020, 0x00010020, 0x02000020, 0x02010020,
 
 1092            0x00040000, 0x00050000, 0x02040000, 0x02050000,
 
 1093            0x00040020, 0x00050020, 0x02040020, 0x02050020,
 
 1094            0x00002000, 0x00012000, 0x02002000, 0x02012000,
 
 1095            0x00002020, 0x00012020, 0x02002020, 0x02012020,
 
 1096            0x00042000, 0x00052000, 0x02042000, 0x02052000,
 
 1097            0x00042020, 0x00052020, 0x02042020, 0x02052020,
 
 1098            0x00000010, 0x00010010, 0x02000010, 0x02010010,
 
 1099            0x00000030, 0x00010030, 0x02000030, 0x02010030,
 
 1100            0x00040010, 0x00050010, 0x02040010, 0x02050010,
 
 1101            0x00040030, 0x00050030, 0x02040030, 0x02050030,
 
 1102            0x00002010, 0x00012010, 0x02002010, 0x02012010,
 
 1103            0x00002030, 0x00012030, 0x02002030, 0x02012030,
 
 1104            0x00042010, 0x00052010, 0x02042010, 0x02052010,
 
 1105            0x00042030, 0x00052030, 0x02042030, 0x02052030,
 
 1106            0x00000010, 0x00010010, 0x02000010, 0x02010010,
 
 1107            0x00000030, 0x00010030, 0x02000030, 0x02010030,
 
 1108            0x00040010, 0x00050010, 0x02040010, 0x02050010,
 
 1109            0x00040030, 0x00050030, 0x02040030, 0x02050030,
 
 1110            0x00002010, 0x00012010, 0x02002010, 0x02012010,
 
 1111            0x00002030, 0x00012030, 0x02002030, 0x02012030,
 
 1112            0x00042010, 0x00052010, 0x02042010, 0x02052010,
 
 1113            0x00042030, 0x00052030, 0x02042030, 0x02052030,
 
 1114            0x20000000, 0x20010000, 0x22000000, 0x22010000,
 
 1115            0x20000020, 0x20010020, 0x22000020, 0x22010020,
 
 1116            0x20040000, 0x20050000, 0x22040000, 0x22050000,
 
 1117            0x20040020, 0x20050020, 0x22040020, 0x22050020,
 
 1118            0x20002000, 0x20012000, 0x22002000, 0x22012000,
 
 1119            0x20002020, 0x20012020, 0x22002020, 0x22012020,
 
 1120            0x20042000, 0x20052000, 0x22042000, 0x22052000,
 
 1121            0x20042020, 0x20052020, 0x22042020, 0x22052020,
 
 1122            0x20000000, 0x20010000, 0x22000000, 0x22010000,
 
 1123            0x20000020, 0x20010020, 0x22000020, 0x22010020,
 
 1124            0x20040000, 0x20050000, 0x22040000, 0x22050000,
 
 1125            0x20040020, 0x20050020, 0x22040020, 0x22050020,
 
 1126            0x20002000, 0x20012000, 0x22002000, 0x22012000,
 
 1127            0x20002020, 0x20012020, 0x22002020, 0x22012020,
 
 1128            0x20042000, 0x20052000, 0x22042000, 0x22052000,
 
 1129            0x20042020, 0x20052020, 0x22042020, 0x22052020,
 
 1130            0x20000010, 0x20010010, 0x22000010, 0x22010010,
 
 1131            0x20000030, 0x20010030, 0x22000030, 0x22010030,
 
 1132            0x20040010, 0x20050010, 0x22040010, 0x22050010,
 
 1133            0x20040030, 0x20050030, 0x22040030, 0x22050030,
 
 1134            0x20002010, 0x20012010, 0x22002010, 0x22012010,
 
 1135            0x20002030, 0x20012030, 0x22002030, 0x22012030,
 
 1136            0x20042010, 0x20052010, 0x22042010, 0x22052010,
 
 1137            0x20042030, 0x20052030, 0x22042030, 0x22052030,
 
 1138            0x20000010, 0x20010010, 0x22000010, 0x22010010,
 
 1139            0x20000030, 0x20010030, 0x22000030, 0x22010030,
 
 1140            0x20040010, 0x20050010, 0x22040010, 0x22050010,
 
 1141            0x20040030, 0x20050030, 0x22040030, 0x22050030,
 
 1142            0x20002010, 0x20012010, 0x22002010, 0x22012010,
 
 1143            0x20002030, 0x20012030, 0x22002030, 0x22012030,
 
 1144            0x20042010, 0x20052010, 0x22042010, 0x22052010,
 
 1145            0x20042030, 0x20052030, 0x22042030, 0x22052030
 
 1147        static $pc2mapd4 = array(
 
 1148            0x00000000, 0x00000400, 0x01000000, 0x01000400,
 
 1149            0x00000000, 0x00000400, 0x01000000, 0x01000400,
 
 1150            0x00000100, 0x00000500, 0x01000100, 0x01000500,
 
 1151            0x00000100, 0x00000500, 0x01000100, 0x01000500,
 
 1152            0x10000000, 0x10000400, 0x11000000, 0x11000400,
 
 1153            0x10000000, 0x10000400, 0x11000000, 0x11000400,
 
 1154            0x10000100, 0x10000500, 0x11000100, 0x11000500,
 
 1155            0x10000100, 0x10000500, 0x11000100, 0x11000500,
 
 1156            0x00080000, 0x00080400, 0x01080000, 0x01080400,
 
 1157            0x00080000, 0x00080400, 0x01080000, 0x01080400,
 
 1158            0x00080100, 0x00080500, 0x01080100, 0x01080500,
 
 1159            0x00080100, 0x00080500, 0x01080100, 0x01080500,
 
 1160            0x10080000, 0x10080400, 0x11080000, 0x11080400,
 
 1161            0x10080000, 0x10080400, 0x11080000, 0x11080400,
 
 1162            0x10080100, 0x10080500, 0x11080100, 0x11080500,
 
 1163            0x10080100, 0x10080500, 0x11080100, 0x11080500,
 
 1164            0x00000008, 0x00000408, 0x01000008, 0x01000408,
 
 1165            0x00000008, 0x00000408, 0x01000008, 0x01000408,
 
 1166            0x00000108, 0x00000508, 0x01000108, 0x01000508,
 
 1167            0x00000108, 0x00000508, 0x01000108, 0x01000508,
 
 1168            0x10000008, 0x10000408, 0x11000008, 0x11000408,
 
 1169            0x10000008, 0x10000408, 0x11000008, 0x11000408,
 
 1170            0x10000108, 0x10000508, 0x11000108, 0x11000508,
 
 1171            0x10000108, 0x10000508, 0x11000108, 0x11000508,
 
 1172            0x00080008, 0x00080408, 0x01080008, 0x01080408,
 
 1173            0x00080008, 0x00080408, 0x01080008, 0x01080408,
 
 1174            0x00080108, 0x00080508, 0x01080108, 0x01080508,
 
 1175            0x00080108, 0x00080508, 0x01080108, 0x01080508,
 
 1176            0x10080008, 0x10080408, 0x11080008, 0x11080408,
 
 1177            0x10080008, 0x10080408, 0x11080008, 0x11080408,
 
 1178            0x10080108, 0x10080508, 0x11080108, 0x11080508,
 
 1179            0x10080108, 0x10080508, 0x11080108, 0x11080508,
 
 1180            0x00001000, 0x00001400, 0x01001000, 0x01001400,
 
 1181            0x00001000, 0x00001400, 0x01001000, 0x01001400,
 
 1182            0x00001100, 0x00001500, 0x01001100, 0x01001500,
 
 1183            0x00001100, 0x00001500, 0x01001100, 0x01001500,
 
 1184            0x10001000, 0x10001400, 0x11001000, 0x11001400,
 
 1185            0x10001000, 0x10001400, 0x11001000, 0x11001400,
 
 1186            0x10001100, 0x10001500, 0x11001100, 0x11001500,
 
 1187            0x10001100, 0x10001500, 0x11001100, 0x11001500,
 
 1188            0x00081000, 0x00081400, 0x01081000, 0x01081400,
 
 1189            0x00081000, 0x00081400, 0x01081000, 0x01081400,
 
 1190            0x00081100, 0x00081500, 0x01081100, 0x01081500,
 
 1191            0x00081100, 0x00081500, 0x01081100, 0x01081500,
 
 1192            0x10081000, 0x10081400, 0x11081000, 0x11081400,
 
 1193            0x10081000, 0x10081400, 0x11081000, 0x11081400,
 
 1194            0x10081100, 0x10081500, 0x11081100, 0x11081500,
 
 1195            0x10081100, 0x10081500, 0x11081100, 0x11081500,
 
 1196            0x00001008, 0x00001408, 0x01001008, 0x01001408,
 
 1197            0x00001008, 0x00001408, 0x01001008, 0x01001408,
 
 1198            0x00001108, 0x00001508, 0x01001108, 0x01001508,
 
 1199            0x00001108, 0x00001508, 0x01001108, 0x01001508,
 
 1200            0x10001008, 0x10001408, 0x11001008, 0x11001408,
 
 1201            0x10001008, 0x10001408, 0x11001008, 0x11001408,
 
 1202            0x10001108, 0x10001508, 0x11001108, 0x11001508,
 
 1203            0x10001108, 0x10001508, 0x11001108, 0x11001508,
 
 1204            0x00081008, 0x00081408, 0x01081008, 0x01081408,
 
 1205            0x00081008, 0x00081408, 0x01081008, 0x01081408,
 
 1206            0x00081108, 0x00081508, 0x01081108, 0x01081508,
 
 1207            0x00081108, 0x00081508, 0x01081108, 0x01081508,
 
 1208            0x10081008, 0x10081408, 0x11081008, 0x11081408,
 
 1209            0x10081008, 0x10081408, 0x11081008, 0x11081408,
 
 1210            0x10081108, 0x10081508, 0x11081108, 0x11081508,
 
 1211            0x10081108, 0x10081508, 0x11081108, 0x11081508
 
 1217            $key = str_pad(substr($this->key, $des_round * 8, 8), 8, 
"\0");
 
 1220            $t = unpack(
'Nl/Nr', 
$key);
 
 1221            list(
$l, 
$r) = array(
$t[
'l'], 
$t[
'r']);
 
 1222            $key = ($this->shuffle[$pc1map[ 
$r        & 0xFF]] & 
"\x80\x80\x80\x80\x80\x80\x80\x00") |
 
 1223                   ($this->shuffle[$pc1map[(
$r >>  8) & 0xFF]] & 
"\x40\x40\x40\x40\x40\x40\x40\x00") |
 
 1224                   ($this->shuffle[$pc1map[(
$r >> 16) & 0xFF]] & 
"\x20\x20\x20\x20\x20\x20\x20\x00") |
 
 1225                   ($this->shuffle[$pc1map[(
$r >> 24) & 0xFF]] & 
"\x10\x10\x10\x10\x10\x10\x10\x00") |
 
 1226                   ($this->shuffle[$pc1map[ 
$l        & 0xFF]] & 
"\x08\x08\x08\x08\x08\x08\x08\x00") |
 
 1227                   ($this->shuffle[$pc1map[(
$l >>  8) & 0xFF]] & 
"\x04\x04\x04\x04\x04\x04\x04\x00") |
 
 1228                   ($this->shuffle[$pc1map[(
$l >> 16) & 0xFF]] & 
"\x02\x02\x02\x02\x02\x02\x02\x00") |
 
 1229                   ($this->shuffle[$pc1map[(
$l >> 24) & 0xFF]] & 
"\x01\x01\x01\x01\x01\x01\x01\x00");
 
 1231            $c = ( 
$key[
'c'] >> 4) & 0x0FFFFFFF;
 
 1232            $d = ((
$key[
'd'] >> 4) & 0x0FFFFFF0) | (
$key[
'c'] & 0x0F);
 
 1234            $keys[$des_round] = array(
 
 1235                self::ENCRYPT => array(),
 
 1236                self::DECRYPT => array_fill(0, 32, 0)
 
 1238            for (
$i = 0, $ki = 31; 
$i < 16; ++
$i, $ki-= 2) {
 
 1240                $c = (
$c | (
$c >> 28)) & 0x0FFFFFFF;
 
 1242                $d = (
$d | (
$d >> 28)) & 0x0FFFFFFF;
 
 1245                $cp = $pc2mapc1[ 
$c >> 24        ] | $pc2mapc2[(
$c >> 16) & 0xFF] |
 
 1246                      $pc2mapc3[(
$c >>  8) & 0xFF] | $pc2mapc4[ 
$c        & 0xFF];
 
 1247                $dp = $pc2mapd1[ 
$d >> 24        ] | $pc2mapd2[(
$d >> 16) & 0xFF] |
 
 1248                      $pc2mapd3[(
$d >>  8) & 0xFF] | $pc2mapd4[ 
$d        & 0xFF];
 
 1251                $val1 = ( $cp        & 0xFF000000) | (($cp <<  8) & 0x00FF0000) |
 
 1252                        (($dp >> 16) & 0x0000FF00) | (($dp >>  8) & 0x000000FF);
 
 1253                $val2 = (($cp <<  8) & 0xFF000000) | (($cp << 16) & 0x00FF0000) |
 
 1254                        (($dp >>  8) & 0x0000FF00) | ( $dp        & 0x000000FF);
 
 1262        switch ($this->des_rounds) {
 
 1264                $this->keys = array(
 
 1265                    self::ENCRYPT => array_merge(
 
 1266                        $keys[0][self::ENCRYPT],
 
 1267                        $keys[1][self::DECRYPT],
 
 1268                        $keys[2][self::ENCRYPT]
 
 1270                    self::DECRYPT => array_merge(
 
 1271                        $keys[2][self::DECRYPT],
 
 1272                        $keys[1][self::ENCRYPT],
 
 1273                        $keys[0][self::DECRYPT]
 
 1279                $this->keys = array(
 
 1280                    self::ENCRYPT => 
$keys[0][self::ENCRYPT],
 
 1281                    self::DECRYPT => 
$keys[0][self::DECRYPT]
 
 1305        $gen_hi_opt_code = (bool)( count($lambda_functions) < 10 );
 
 1308        $code_hash = 
"Crypt_DES, $des_rounds, {$this->mode}";
 
 1309        if ($gen_hi_opt_code) {
 
 1319        if (!isset($lambda_functions[$code_hash])) {
 
 1321            $init_crypt = 
'static $sbox1, $sbox2, $sbox3, $sbox4, $sbox5, $sbox6, $sbox7, $sbox8, $shuffleip, $shuffleinvip; 
 1323                    $sbox1 = array_map("intval", $self->sbox1); 
 1324                    $sbox2 = array_map("intval", $self->sbox2); 
 1325                    $sbox3 = array_map("intval", $self->sbox3); 
 1326                    $sbox4 = array_map("intval", $self->sbox4); 
 1327                    $sbox5 = array_map("intval", $self->sbox5); 
 1328                    $sbox6 = array_map("intval", $self->sbox6); 
 1329                    $sbox7 = array_map("intval", $self->sbox7); 
 1330                    $sbox8 = array_map("intval", $self->sbox8);' 
 1332                    for ($i = 0; $i < 256; ++$i) { 
 1333                        $shuffleip[]    =  $self->shuffle[$self->ipmap[$i]]; 
 1334                        $shuffleinvip[] =  $self->shuffle[$self->invipmap[$i]]; 
 1340                case $gen_hi_opt_code:
 
 1345                        self::ENCRYPT => $this->keys[self::ENCRYPT],
 
 1346                        self::DECRYPT => $this->keys[self::DECRYPT]
 
 1355                        self::ENCRYPT => array(),
 
 1356                        self::DECRYPT => array()
 
 1358                    for (
$i = 0, 
$c = count($this->keys[self::ENCRYPT]); 
$i < 
$c; ++
$i) {
 
 1362                    $init_encrypt = 
'$ke = $self->keys[self::ENCRYPT];';
 
 1363                    $init_decrypt = 
'$kd = $self->keys[self::DECRYPT];';
 
 1368            $crypt_block = array();
 
 1369            foreach (array(self::ENCRYPT, self::DECRYPT) as 
$c) {
 
 1371                $crypt_block[
$c] = 
' 
 1372                    $in = unpack("N*", $in); 
 1376                        ($shuffleip[ $r        & 0xFF] & "\x80\x80\x80\x80\x80\x80\x80\x80") | 
 1377                        ($shuffleip[($r >>  8) & 0xFF] & "\x40\x40\x40\x40\x40\x40\x40\x40") | 
 1378                        ($shuffleip[($r >> 16) & 0xFF] & "\x20\x20\x20\x20\x20\x20\x20\x20") | 
 1379                        ($shuffleip[($r >> 24) & 0xFF] & "\x10\x10\x10\x10\x10\x10\x10\x10") | 
 1380                        ($shuffleip[ $l        & 0xFF] & "\x08\x08\x08\x08\x08\x08\x08\x08") | 
 1381                        ($shuffleip[($l >>  8) & 0xFF] & "\x04\x04\x04\x04\x04\x04\x04\x04") | 
 1382                        ($shuffleip[($l >> 16) & 0xFF] & "\x02\x02\x02\x02\x02\x02\x02\x02") | 
 1383                        ($shuffleip[($l >> 24) & 0xFF] & "\x01\x01\x01\x01\x01\x01\x01\x01") 
 1394                for ($ki = -1, $des_round = 0; $des_round < 
$des_rounds; ++$des_round) {
 
 1396                    for (
$i = 0; 
$i < 16; ++
$i) {
 
 1400                        $crypt_block[
$c].= 
' 
 1401                            $b1 = ((' . 
$r . 
' >>  3) & 0x1FFFFFFF)  ^ (' . 
$r . 
' << 29) ^ ' . $k[
$c][++$ki] . 
'; 
 1402                            $b2 = ((' . 
$r . 
' >> 31) & 0x00000001)  ^ (' . 
$r . 
' <<  1) ^ ' . $k[
$c][++$ki] . 
';' .
 
 1404                            $l . 
' = $sbox1[($b1 >> 24) & 0x3F] ^ $sbox2[($b2 >> 24) & 0x3F] ^ 
 1405                                     $sbox3[($b1 >> 16) & 0x3F] ^ $sbox4[($b2 >> 16) & 0x3F] ^ 
 1406                                     $sbox5[($b1 >>  8) & 0x3F] ^ $sbox6[($b2 >>  8) & 0x3F] ^ 
 1407                                     $sbox7[ $b1        & 0x3F] ^ $sbox8[ $b2        & 0x3F] ^ ' . 
$l . 
'; 
 1418                $crypt_block[
$c].= 
'$in = 
 1419                    ($shuffleinvip[($l >> 24) & 0xFF] & "\x80\x80\x80\x80\x80\x80\x80\x80") | 
 1420                    ($shuffleinvip[($r >> 24) & 0xFF] & "\x40\x40\x40\x40\x40\x40\x40\x40") | 
 1421                    ($shuffleinvip[($l >> 16) & 0xFF] & "\x20\x20\x20\x20\x20\x20\x20\x20") | 
 1422                    ($shuffleinvip[($r >> 16) & 0xFF] & "\x10\x10\x10\x10\x10\x10\x10\x10") | 
 1423                    ($shuffleinvip[($l >>  8) & 0xFF] & "\x08\x08\x08\x08\x08\x08\x08\x08") | 
 1424                    ($shuffleinvip[($r >>  8) & 0xFF] & "\x04\x04\x04\x04\x04\x04\x04\x04") | 
 1425                    ($shuffleinvip[ $l        & 0xFF] & "\x02\x02\x02\x02\x02\x02\x02\x02") | 
 1426                    ($shuffleinvip[ $r        & 0xFF] & "\x01\x01\x01\x01\x01\x01\x01\x01"); 
 1433                   'init_crypt'    => $init_crypt,
 
 1434                   'init_encrypt'  => $init_encrypt,
 
 1435                   'init_decrypt'  => $init_decrypt,
 
 1436                   'encrypt_block' => $crypt_block[self::ENCRYPT],
 
 1437                   'decrypt_block' => $crypt_block[self::DECRYPT]
 
 1443        $this->inline_crypt = $lambda_functions[$code_hash];
 
if(php_sapi_name() !='cli') $in
An exception for terminatinating execution or to throw for unit testing.
_hashInlineCryptFunction($bytes)
Generates a digest from $bytes.
_openssl_translate_mode()
phpseclib <-> OpenSSL Mode Mapper
& _getLambdaFunctions()
Holds the lambda_functions table (classwide)
_createInlineCryptFunction($cipher_code)
Creates the performance-optimized function for en/decrypt()
_decryptBlock($in)
Decrypts a block.
_processBlock($block, $mode)
Encrypts or decrypts a 64-bit block.
setKey($key)
Sets the key.
const ENCRYPT
#+ @access private
const DECRYPT
Contains $keys[self::DECRYPT].
_setupKey()
Creates the key schedule.
isValidEngine($engine)
Test for engine validity.
_setupInlineCrypt()
Setup the performance-optimized function for de/encrypt()
_encryptBlock($in)
Encrypts a block.
for( $i=6;$i< 13;$i++) for($i=1; $i< 13; $i++) $d
Base Class for all \phpseclib\Crypt* cipher classes.
Pure-PHP implementation of DES.
Pure-PHP implementations of keyed-hash message authentication codes (HMACs) and various cryptographic...