<?php

// Adapted from FairKeys 0.5, by Jon Lech Johansen...

function descramble_twofish_key($twofish)
{
    global 
$scramble_table;
    
$data unpack('C*',$twofish);
    
$result '';
    for (
$i 1$x 0$i <= 16$i++, $x += 256)
    {
      
$byte $data[$i];
      
$key = ($byte 0xFF) + $x;
      
$value $scramble_table[$key];
      
$result .= pack('C*',$value);
    }
    return 
$result;
}

// FutureProof...

$scramble_table = array
(
  
0x04,0x91,0x69,0x33,0x41,0xF5,0x79,0xE9,0x57,0x55,0x18,0x6E,
  
0x76,0x95,0x75,0x02,0x53,0x5B,0xF6,0x39,0x35,0xFB,0x7E,0x45,
  
0x81,0x90,0xC7,0xA4,0xC6,0xB5,0x84,0x23,0xCE,0xD6,0x15,0x98,
  
0x92,0x67,0x5D,0xE3,0x17,0x44,0x2C,0xF8,0xA9,0xD9,0x32,0x5C,
  
0x83,0xE0,0x0E,0xCC,0x8C,0x72,0x7C,0x8F,0x78,0xAB,0x38,0x9E,
  
0xE8,0xB7,0x30,0xB0,0x25,0xC0,0x29,0x1C,0x24,0x9B,0xE7,0xC9,
  
0xDD,0x34,0xBD,0x7D,0x7A,0xBF,0xF2,0xB2,0xF9,0x6F,0x6D,0xAA,
  
0x06,0xB4,0xED,0xAE,0xFE,0xCA,0x11,0xDF,0xE6,0xC3,0x8D,0x2F,
  
0x43,0xB6,0x63,0x68,0x0F,0xEE,0x2D,0x07,0x1B,0x14,0xA6,0xCF,
  
0x9F,0xC4,0xF4,0xA2,0x85,0x36,0x8A,0x74,0x08,0xA8,0x9C,0x10,
  
0x00,0x26,0x94,0x42,0x13,0x56,0x73,0x49,0xEF,0xBC,0x88,0x3D,
  
0x6C,0x21,0xF7,0x8E,0xC1,0x27,0x5A,0x52,0x22,0xC8,0xC5,0x1A,
  
0x58,0x0A,0x19,0x47,0x01,0x77,0x82,0x64,0x62,0x12,0x9A,0x48,
  
0x6A,0x4E,0x46,0xD5,0xAD,0x0C,0xE5,0xEB,0xE4,0xBA,0x4D,0xD1,
  
0x54,0x93,0xA0,0x7F,0x4C,0x40,0x8B,0x70,0x3C,0xDE,0xB1,0xFD,
  
0x31,0x1E,0x51,0xA1,0x0D,0x7B,0xF3,0x3E,0xD4,0x1F,0x61,0x50,
  
0xFA,0x09,0xE1,0x99,0x28,0x2E,0xAC,0xDA,0xDC,0xB8,0x3F,0x1D,
  
0x66,0xC2,0x16,0x4F,0x3B,0xB3,0x60,0x37,0x0B,0x9D,0xAF,0x5F,
  
0x71,0x6B,0xB9,0xD2,0xD0,0xA7,0xEC,0x59,0x20,0x80,0x89,0x2B,
  
0xF1,0x4B,0x96,0x2A,0x87,0xEA,0xD7,0x05,0xBB,0xA3,0x97,0x03,
  
0x5E,0xA5,0xCB,0x86,0xD3,0x65,0xD8,0xBE,0x3A,0xCD,0xDB,0xFC,
  
0x4A,0xE2,0xFF,0xF0,0xC9,0xE2,0x5F,0x0A,0x62,0xDE,0x6A,0x92,
  
0xFE,0x56,0x6D,0x89,0x23,0x27,0x38,0xF3,0xF5,0xF1,0x39,0xB5,
  
0x9E,0xFA,0x68,0x59,0x17,0x9A,0x28,0x2A,0x84,0xB3,0xC3,0x30,
  
0x4C,0x16,0xA7,0x22,0x19,0x44,0x3E,0x3A,0xEB,0xD1,0x7D,0xDD,
  
0xCE,0xAE,0x93,0xF2,0xFB,0xC2,0xD0,0xDC,0xC8,0x3F,0xC1,0x0B,
  
0x9C,0x09,0x00,0x04,0x2E,0xA4,0x29,0x90,0xD4,0x26,0x65,0x5A,
  
0x55,0x75,0x1C,0xBA,0x9F,0x12,0xB7,0xAD,0x61,0xD5,0xCF,0x5E,
  
0xBB,0x48,0x72,0x9D,0x07,0x06,0x7E,0x35,0xCB,0x79,0xBC,0xAB,
  
0x4E,0x36,0xCA,0x64,0x82,0xAC,0xE8,0xE3,0xE0,0xE9,0x7A,0x13,
  
0x6C,0xEC,0x96,0x45,0x4B,0x2B,0x67,0x8E,0x7B,0x46,0xEE,0x2D,
  
0xA9,0xD3,0x2C,0x78,0x47,0x8C,0x7C,0x94,0xC5,0x85,0x71,0xA3,
  
0x58,0xD8,0x4F,0xAF,0xC7,0xEA,0x50,0x63,0xE7,0x6E,0x51,0x5C,
  
0xB6,0x25,0xAA,0x9B,0x1B,0x54,0xB4,0x21,0x1F,0x6F,0x0D,0x02,
  
0x88,0x7F,0x69,0xC4,0x3B,0x66,0xB8,0xF9,0x49,0xA5,0xED,0xB9,
  
0x0F,0xA0,0xEF,0x70,0xB2,0xA2,0x14,0x2F,0xDB,0xC0,0x08,0x42,
  
0xD9,0xA1,0x01,0x37,0x5B,0xB1,0xF6,0x1A,0xC6,0xBF,0x11,0x53,
  
0x8D,0x5D,0x20,0x15,0x1E,0x3D,0x34,0xFD,0x24,0x60,0x77,0x74,
  
0x8B,0xFC,0x4A,0x33,0x97,0x91,0x4D,0xFF,0xE1,0xB0,0xF8,0x0C,
  
0x03,0x98,0x86,0xF0,0xE6,0x3C,0x76,0x05,0xD2,0xBE,0x81,0xF4,
  
0xCD,0x0E,0x95,0xA6,0xF7,0xCC,0x43,0xBD,0x32,0x99,0x83,0x87,
  
0x8F,0xD6,0x80,0xDF,0xE5,0xE4,0x40,0xDA,0x8A,0x57,0x1D,0x31,
  
0xA8,0x52,0xD7,0x41,0x73,0x6B,0x10,0x18,0xD0,0x6E,0x6D,0x8B,
  
0x09,0x64,0x0A,0x84,0x60,0x85,0x05,0xDC,0xFA,0x5C,0x24,0x3D,
  
0xF4,0x75,0xAB,0x44,0x34,0x08,0x90,0xA2,0x92,0x43,0x6B,0xC8,
  
0xF0,0x93,0xD5,0x36,0xFD,0x48,0x55,0xEA,0x0B,0x1D,0x26,0xB2,
  
0xB8,0x5B,0x2C,0xD7,0xCA,0x65,0xF7,0x2E,0xBE,0x01,0x58,0xE5,
  
0xAD,0x72,0x10,0x63,0x68,0x1A,0xBA,0x94,0x59,0xB7,0x89,0x35,
  
0xB9,0xCE,0xAF,0xA4,0xDA,0x14,0xE1,0x57,0xE7,0x39,0x79,0xA8,
  
0x03,0x78,0xFE,0x53,0x1C,0x50,0xC9,0x3C,0x9E,0x4C,0x27,0x00,
  
0xF3,0xA6,0xCC,0x31,0xBD,0x52,0xFF,0x5F,0x3E,0x61,0x45,0xE0,
  
0x3F,0x9C,0x9A,0xC7,0xF6,0xD4,0xED,0x38,0x20,0x95,0xB0,0xA3,
  
0xE4,0xFC,0xD3,0x18,0xD6,0xBC,0x0E,0xDE,0x54,0x8A,0xDD,0xCB,
  
0x37,0x7A,0x23,0x3A,0x7F,0x16,0x47,0x22,0xAA,0xD2,0x62,0x07,
  
0x1F,0xE2,0x2B,0x97,0xBF,0x3B,0x98,0x17,0x5A,0x42,0x2A,0xDF,
  
0x0C,0xBB,0x21,0x82,0x76,0x71,0x29,0xF5,0x06,0x30,0xEE,0x51,
  
0xF2,0x8D,0x4E,0xA1,0x15,0xB3,0x67,0xF9,0x41,0xD8,0x04,0x9B,
  
0x4D,0x9F,0x19,0x12,0xFB,0xAE,0xEF,0x6F,0xA9,0x49,0xE6,0xD1,
  
0xF1,0x81,0xA0,0xC4,0x02,0xC0,0x96,0x2F,0x2D,0x7D,0x4B,0x1E,
  
0xB6,0x33,0x7C,0x0D,0x25,0xE3,0x7B,0x0F,0x6C,0x7E,0xE9,0xF8,
  
0xCF,0x77,0x83,0x46,0x88,0x4A,0xB4,0x99,0xAC,0xB5,0xC1,0xDB,
  
0xD9,0xC3,0xEC,0x11,0x8F,0x4F,0x66,0x13,0x80,0xEB,0xC6,0x1B,
  
0x73,0xC2,0x70,0xB1,0x9D,0xA5,0x5E,0x8C,0x56,0x5D,0x8E,0x40,
  
0x91,0x69,0xCD,0x87,0x6A,0xE8,0x74,0xA7,0x32,0xC5,0x86,0x28,
  
0x75,0xA1,0xAA,0xC1,0x6D,0x6F,0x3A,0x50,0x37,0xA0,0x08,0x38,
  
0x6A,0xEF,0x35,0xF7,0x80,0x41,0xE8,0xAD,0x4A,0x69,0xF4,0xBC,
  
0xE9,0xBE,0x31,0x9F,0xD2,0x6E,0xD4,0x89,0x5C,0x3C,0x43,0x12,
  
0x6B,0x64,0x73,0xD3,0xB9,0x1B,0x1F,0xE6,0x07,0x20,0x66,0x4D,
  
0x2C,0xC7,0xD9,0x0D,0x96,0xFC,0x17,0x3E,0xC8,0xFF,0x00,0x1D,
  
0x36,0x24,0x67,0x0C,0xA2,0x85,0xBF,0x39,0xF0,0xF2,0x02,0x5E,
  
0xC2,0x1C,0x93,0x9D,0xC0,0xD5,0x06,0x2B,0xCC,0x9A,0x33,0x99,
  
0xDE,0x79,0x0B,0xFE,0x97,0xB4,0x47,0xAC,0xE1,0x7B,0x7F,0x61,
  
0x19,0xAB,0xF9,0x4F,0xE3,0x28,0x88,0xB1,0x04,0xE5,0x23,0xF3,
  
0xC3,0x27,0x78,0xA8,0x8A,0x09,0x94,0xB8,0x05,0x71,0xDA,0x65,
  
0x2D,0xBA,0x8C,0x55,0x8F,0xFD,0xB5,0x3F,0xE4,0x86,0x4B,0x70,
  
0xDB,0x5F,0x6C,0x60,0x21,0xC9,0x25,0x03,0xA5,0xE2,0xB6,0xAF,
  
0x0E,0xDF,0xEB,0x57,0x5D,0xFB,0xC6,0xE7,0xB7,0xCD,0xDC,0xCE,
  
0x10,0x54,0x77,0x1A,0xEE,0x0F,0x49,0x7E,0x52,0x4E,0x56,0x58,
  
0xCF,0x8D,0x76,0x59,0x0A,0xEC,0x44,0xD8,0xBB,0x72,0x82,0x90,
  
0x83,0x3B,0x40,0xA4,0xF1,0xBD,0xD6,0x2A,0x29,0xE0,0xC5,0xF5,
  
0xD0,0xED,0x30,0x18,0x4C,0x81,0x13,0x01,0x87,0x1E,0x7D,0x26,
  
0x5A,0x63,0xD1,0xA6,0x95,0x2F,0x53,0xAE,0xCB,0xEA,0x2E,0x84,
  
0x8E,0x62,0xCA,0x32,0x51,0x5B,0xF8,0x22,0xF6,0xFA,0x42,0xC4,
  
0x7C,0x45,0x9C,0x16,0x9E,0x91,0xA7,0xB0,0x98,0x11,0xDD,0xB3,
  
0x34,0x46,0x68,0xA3,0x3D,0x74,0x8B,0x14,0x92,0x15,0xD7,0xB2,
  
0x48,0x7A,0xA9,0x9B,0x0C,0x17,0xE9,0x78,0x8B,0xFE,0x18,0xB6,
  
0x29,0x40,0x45,0x0D,0x62,0xE6,0x41,0xBE,0xFB,0xAC,0x73,0x90,
  
0x47,0x9B,0x4F,0x6F,0x61,0xD0,0x13,0x8F,0xC0,0xD1,0xDB,0x39,
  
0xFA,0x27,0x77,0x74,0x22,0x02,0x86,0xD7,0x54,0x8D,0x3D,0x7A,
  
0x3B,0x1B,0x5C,0xC2,0x32,0x11,0x48,0x33,0x5D,0xF5,0x60,0xB1,
  
0x75,0xE2,0x53,0x99,0x87,0x58,0xAF,0x4A,0xA0,0x20,0x1D,0xFC,
  
0x6E,0xD5,0x72,0xE5,0x3F,0x42,0x01,0x71,0xB3,0xB0,0x3E,0x5A,
  
0xFD,0x9D,0x15,0x05,0x3C,0x5E,0x0F,0xB9,0xB4,0xA8,0xEB,0xF1,
  
0x6B,0xDC,0x09,0x7F,0x63,0xD9,0xD3,0x4C,0xD4,0xBC,0x2D,0x00,
  
0x44,0x1A,0xA1,0x4B,0x95,0xEF,0xB2,0x23,0x0A,0xD6,0xDA,0x83,
  
0x9F,0x14,0xE0,0x1E,0xC7,0x94,0xA3,0xE4,0xC3,0x3A,0x4E,0x80,
  
0x9A,0x36,0xC1,0x7B,0x65,0xFF,0xC4,0xF4,0x7D,0x19,0x43,0xBB,
  
0xEA,0xAA,0x37,0xBA,0xE7,0xEC,0x57,0xE8,0x68,0x7C,0x67,0x0B,
  
0xCF,0x50,0x8A,0x5F,0x6D,0x26,0xDF,0xCA,0x2F,0xAD,0xBD,0xCC,
  
0x04,0x93,0x96,0xC8,0xF8,0xA7,0x2B,0x28,0x8E,0x85,0xCB,0x35,
  
0xAE,0x16,0x9E,0xAB,0xB8,0x07,0xF2,0xB7,0xC5,0x2C,0xF9,0x59,
  
0x51,0x79,0x55,0xF6,0xA4,0xD2,0xA6,0x52,0x34,0x12,0x1F,0x97,
  
0xCE,0x31,0x2E,0xEE,0x91,0xF0,0x0E,0x82,0x70,0x03,0x4D,0x64,
  
0xCD,0xBF,0xF3,0x10,0x08,0x38,0x6A,0x1C,0xE1,0xB5,0x6C,0xE3,
  
0x88,0xDD,0x30,0xED,0x49,0x92,0x25,0x5B,0x69,0x06,0x2A,0x76,
  
0x24,0x21,0x89,0x9C,0xF7,0xDE,0xD8,0xA5,0x56,0x98,0x8C,0x81,
  
0xA9,0x46,0x7E,0xA2,0xC6,0x84,0xC9,0x66,0x20,0x93,0x36,0xA9,
  
0x08,0x40,0x64,0x15,0x31,0xDC,0x49,0x4F,0xEC,0x9A,0xE8,0xD2,
  
0x0E,0x84,0xCC,0xBC,0x27,0xF1,0x79,0xAA,0xED,0xE0,0x5F,0x7E,
  
0x82,0xAD,0xD3,0x35,0x13,0x97,0xCA,0x44,0xDB,0xE2,0xE5,0x8B,
  
0x16,0x67,0x60,0x0F,0x5D,0x01,0xB6,0x6F,0x91,0x34,0x02,0x95,
  
0xDA,0x54,0xFF,0xCF,0x7D,0xB2,0xE9,0x5A,0x1C,0x76,0xC1,0x45,
  
0x4B,0xD1,0x05,0xFD,0x1A,0xC2,0x52,0xC5,0x62,0xF8,0x72,0xD7,
  
0x37,0xF3,0xDE,0x39,0x85,0xF5,0xC7,0x33,0x90,0xC6,0xF4,0x3B,
  
0xB3,0x10,0x03,0xA1,0x9B,0xC8,0xD5,0x1E,0x3D,0xFC,0x87,0xEB,
  
0x92,0x88,0x8F,0x21,0x71,0x7C,0xCB,0xCE,0x5E,0xEE,0x69,0x24,
  
0xBD,0x18,0x8E,0xBA,0xDF,0x57,0xA6,0x4C,0xB5,0x51,0xB8,0xA0,
  
0xB0,0x68,0x2E,0xAF,0x2C,0x78,0x55,0x14,0xB1,0x8A,0xBE,0x38,
  
0x41,0x47,0x04,0x6A,0xC4,0x86,0xF7,0x6C,0x3C,0x6D,0xF6,0x30,
  
0x99,0x77,0x3E,0x7A,0xFA,0xC3,0xEA,0xA3,0x4A,0x8C,0x1F,0xB4,
  
0x3F,0x5C,0xE6,0x23,0x65,0xE3,0x9E,0x00,0x09,0x0D,0xA7,0xEF,
  
0x59,0x11,0x43,0x26,0x2B,0xC0,0x07,0x1D,0x46,0x89,0xF0,0x66,
  
0x75,0x0C,0xAC,0xBB,0x22,0xAB,0x63,0x8D,0x96,0xA5,0x61,0x29,
  
0x7F,0x42,0x9F,0x5B,0xD8,0x53,0xE1,0x06,0xD4,0x2F,0x6B,0xA4,
  
0xCD,0x98,0xFB,0x28,0xF9,0x73,0xBF,0xD0,0xD6,0x56,0x25,0x9C,
  
0x80,0x19,0x58,0xB7,0x74,0x81,0x4D,0x9D,0x70,0xDD,0x2D,0xAE,
  
0x32,0x7B,0xD9,0x1B,0x12,0xA8,0xC9,0x48,0xB9,0x83,0x4E,0x0B,
  
0x94,0x3A,0x17,0x2A,0xA2,0xE4,0x0A,0x50,0xF2,0x6E,0xE7,0xFE,
  
0xF0,0xC0,0xCB,0x9E,0x13,0xAB,0x87,0xE1,0xC1,0x7E,0x43,0x79,
  
0x64,0xF6,0xBA,0xC3,0xE9,0x07,0x83,0x37,0xA6,0x27,0x0E,0x40,
  
0xA7,0xAD,0xBC,0x7F,0xA0,0x7D,0x3B,0x39,0xED,0x1A,0x38,0xF1,
  
0xBD,0x89,0x17,0x22,0x56,0xB9,0x25,0x2C,0x11,0x08,0xF5,0xA5,
  
0x50,0x23,0xC7,0xAF,0xA9,0x2B,0x30,0xB0,0x5C,0x00,0xD2,0xB2,
  
0xEE,0xC6,0xD0,0xE0,0x69,0xD8,0x8D,0x5F,0x96,0x8C,0xEC,0xF9,
  
0xEB,0x81,0x6A,0x8A,0x86,0x67,0x0A,0x49,0x0D,0xD4,0x8F,0xDB,
  
0xD3,0xFC,0x70