]> git.sesse.net Git - vlc/blob - extras/libdvdcss/csstables.h
New features for libdvdcss: we have three ways now to decode a title key.
[vlc] / extras / libdvdcss / csstables.h
1 /*****************************************************************************
2  * csstables.h: CSS Tables for DVD unscrambling
3  *****************************************************************************
4  * Copyright (C) 1999-2001 VideoLAN
5  * $Id: csstables.h,v 1.3 2001/10/13 15:34:21 stef Exp $
6  *
7  * Author: Stéphane Borel <stef@via.ecp.fr>
8  *
9  * based on:
10  *  - css-auth by Derek Fawcus <derek@spider.com>
11  *  - DVD CSS ioctls example program by Andrew T. Veliath <andrewtv@usa.net>
12  *  - The Divide and conquer attack by Frank A. Stevenson <frank@funcom.com>
13  *  - DeCSSPlus by Ethan Hawke
14  *  - DecVOB
15  *  see http://www.lemuria.org/DeCSS/ by Tom Vogt for more information.
16  * 
17  * This program is free software; you can redistribute it and/or modify
18  * it under the terms of the GNU General Public License as published by
19  * the Free Software Foundation; either version 2 of the License, or
20  * (at your option) any later version.
21  *
22  * This program is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
25  * GNU General Public License for more details.
26  *
27  * You should have received a copy of the GNU General Public License
28  * along with this program; if not, write to the Free Software
29  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
30  *****************************************************************************/
31
32
33 static u8 p_css_tab1[ 256 ] =
34 {
35     0x33, 0x73, 0x3b, 0x26, 0x63, 0x23, 0x6b, 0x76,
36     0x3e, 0x7e, 0x36, 0x2b, 0x6e, 0x2e, 0x66, 0x7b,
37     0xd3, 0x93, 0xdb, 0x06, 0x43, 0x03, 0x4b, 0x96,
38     0xde, 0x9e, 0xd6, 0x0b, 0x4e, 0x0e, 0x46, 0x9b,
39     0x57, 0x17, 0x5f, 0x82, 0xc7, 0x87, 0xcf, 0x12,
40     0x5a, 0x1a, 0x52, 0x8f, 0xca, 0x8a, 0xc2, 0x1f,
41     0xd9, 0x99, 0xd1, 0x00, 0x49, 0x09, 0x41, 0x90,
42     0xd8, 0x98, 0xd0, 0x01, 0x48, 0x08, 0x40, 0x91,
43     0x3d, 0x7d, 0x35, 0x24, 0x6d, 0x2d, 0x65, 0x74,
44     0x3c, 0x7c, 0x34, 0x25, 0x6c, 0x2c, 0x64, 0x75,
45     0xdd, 0x9d, 0xd5, 0x04, 0x4d, 0x0d, 0x45, 0x94,
46     0xdc, 0x9c, 0xd4, 0x05, 0x4c, 0x0c, 0x44, 0x95,
47     0x59, 0x19, 0x51, 0x80, 0xc9, 0x89, 0xc1, 0x10,
48     0x58, 0x18, 0x50, 0x81, 0xc8, 0x88, 0xc0, 0x11,
49     0xd7, 0x97, 0xdf, 0x02, 0x47, 0x07, 0x4f, 0x92,
50     0xda, 0x9a, 0xd2, 0x0f, 0x4a, 0x0a, 0x42, 0x9f,
51     0x53, 0x13, 0x5b, 0x86, 0xc3, 0x83, 0xcb, 0x16,
52     0x5e, 0x1e, 0x56, 0x8b, 0xce, 0x8e, 0xc6, 0x1b,
53     0xb3, 0xf3, 0xbb, 0xa6, 0xe3, 0xa3, 0xeb, 0xf6,
54     0xbe, 0xfe, 0xb6, 0xab, 0xee, 0xae, 0xe6, 0xfb,
55     0x37, 0x77, 0x3f, 0x22, 0x67, 0x27, 0x6f, 0x72,
56     0x3a, 0x7a, 0x32, 0x2f, 0x6a, 0x2a, 0x62, 0x7f,
57     0xb9, 0xf9, 0xb1, 0xa0, 0xe9, 0xa9, 0xe1, 0xf0,
58     0xb8, 0xf8, 0xb0, 0xa1, 0xe8, 0xa8, 0xe0, 0xf1,
59     0x5d, 0x1d, 0x55, 0x84, 0xcd, 0x8d, 0xc5, 0x14,
60     0x5c, 0x1c, 0x54, 0x85, 0xcc, 0x8c, 0xc4, 0x15,
61     0xbd, 0xfd, 0xb5, 0xa4, 0xed, 0xad, 0xe5, 0xf4,
62     0xbc, 0xfc, 0xb4, 0xa5, 0xec, 0xac, 0xe4, 0xf5,
63     0x39, 0x79, 0x31, 0x20, 0x69, 0x29, 0x61, 0x70,
64     0x38, 0x78, 0x30, 0x21, 0x68, 0x28, 0x60, 0x71,
65     0xb7, 0xf7, 0xbf, 0xa2, 0xe7, 0xa7, 0xef, 0xf2,
66     0xba, 0xfa, 0xb2, 0xaf, 0xea, 0xaa, 0xe2, 0xff
67 };
68
69 static u8 p_css_tab2[ 256 ] =
70 {
71     0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
72     0x09, 0x08, 0x0b, 0x0a, 0x0d, 0x0c, 0x0f, 0x0e,
73     0x12, 0x13, 0x10, 0x11, 0x16, 0x17, 0x14, 0x15,
74     0x1b, 0x1a, 0x19, 0x18, 0x1f, 0x1e, 0x1d, 0x1c,
75     0x24, 0x25, 0x26, 0x27, 0x20, 0x21, 0x22, 0x23,
76     0x2d, 0x2c, 0x2f, 0x2e, 0x29, 0x28, 0x2b, 0x2a,
77     0x36, 0x37, 0x34, 0x35, 0x32, 0x33, 0x30, 0x31,
78     0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38,
79     0x49, 0x48, 0x4b, 0x4a, 0x4d, 0x4c, 0x4f, 0x4e,
80     0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
81     0x5b, 0x5a, 0x59, 0x58, 0x5f, 0x5e, 0x5d, 0x5c,
82     0x52, 0x53, 0x50, 0x51, 0x56, 0x57, 0x54, 0x55,
83     0x6d, 0x6c, 0x6f, 0x6e, 0x69, 0x68, 0x6b, 0x6a,
84     0x64, 0x65, 0x66, 0x67, 0x60, 0x61, 0x62, 0x63,
85     0x7f, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78,
86     0x76, 0x77, 0x74, 0x75, 0x72, 0x73, 0x70, 0x71,
87     0x92, 0x93, 0x90, 0x91, 0x96, 0x97, 0x94, 0x95,
88     0x9b, 0x9a, 0x99, 0x98, 0x9f, 0x9e, 0x9d, 0x9c,
89     0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
90     0x89, 0x88, 0x8b, 0x8a, 0x8d, 0x8c, 0x8f, 0x8e,
91     0xb6, 0xb7, 0xb4, 0xb5, 0xb2, 0xb3, 0xb0, 0xb1,
92     0xbf, 0xbe, 0xbd, 0xbc, 0xbb, 0xba, 0xb9, 0xb8,
93     0xa4, 0xa5, 0xa6, 0xa7, 0xa0, 0xa1, 0xa2, 0xa3,
94     0xad, 0xac, 0xaf, 0xae, 0xa9, 0xa8, 0xab, 0xaa,
95     0xdb, 0xda, 0xd9, 0xd8, 0xdf, 0xde, 0xdd, 0xdc,
96     0xd2, 0xd3, 0xd0, 0xd1, 0xd6, 0xd7, 0xd4, 0xd5,
97     0xc9, 0xc8, 0xcb, 0xca, 0xcd, 0xcc, 0xcf, 0xce,
98     0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
99     0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8,
100     0xf6, 0xf7, 0xf4, 0xf5, 0xf2, 0xf3, 0xf0, 0xf1,
101     0xed, 0xec, 0xef, 0xee, 0xe9, 0xe8, 0xeb, 0xea,
102     0xe4, 0xe5, 0xe6, 0xe7, 0xe0, 0xe1, 0xe2, 0xe3
103 };
104
105 static u8 p_css_tab3[ 512 ] =
106 {
107     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
108     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
109     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
110     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
111     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
112     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
113     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
114     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
115     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
116     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
117     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
118     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
119     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
120     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
121     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
122     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
123     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
124     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
125     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
126     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
127     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
128     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
129     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
130     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
131     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
132     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
133     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
134     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
135     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
136     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
137     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
138     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
139     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
140     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
141     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
142     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
143     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
144     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
145     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
146     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
147     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
148     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
149     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
150     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
151     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
152     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
153     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
154     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
155     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
156     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
157     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
158     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
159     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
160     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
161     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
162     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
163     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
164     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
165     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
166     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
167     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
168     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
169     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff,
170     0x00, 0x24, 0x49, 0x6d, 0x92, 0xb6, 0xdb, 0xff
171 };
172
173 static u8 p_css_tab4[ 256 ] =
174 {
175     0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
176     0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
177     0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
178     0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
179     0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
180     0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
181     0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
182     0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
183     0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
184     0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
185     0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
186     0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
187     0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
188     0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
189     0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
190     0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
191     0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
192     0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
193     0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
194     0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
195     0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
196     0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
197     0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
198     0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
199     0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
200     0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
201     0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
202     0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
203     0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
204     0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
205     0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
206     0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
207 };
208
209 static u8 p_css_tab5[ 256 ] =
210 {
211     0xff, 0x7f, 0xbf, 0x3f, 0xdf, 0x5f, 0x9f, 0x1f,
212     0xef, 0x6f, 0xaf, 0x2f, 0xcf, 0x4f, 0x8f, 0x0f,
213     0xf7, 0x77, 0xb7, 0x37, 0xd7, 0x57, 0x97, 0x17,
214     0xe7, 0x67, 0xa7, 0x27, 0xc7, 0x47, 0x87, 0x07,
215     0xfb, 0x7b, 0xbb, 0x3b, 0xdb, 0x5b, 0x9b, 0x1b,
216     0xeb, 0x6b, 0xab, 0x2b, 0xcb, 0x4b, 0x8b, 0x0b,
217     0xf3, 0x73, 0xb3, 0x33, 0xd3, 0x53, 0x93, 0x13,
218     0xe3, 0x63, 0xa3, 0x23, 0xc3, 0x43, 0x83, 0x03,
219     0xfd, 0x7d, 0xbd, 0x3d, 0xdd, 0x5d, 0x9d, 0x1d,
220     0xed, 0x6d, 0xad, 0x2d, 0xcd, 0x4d, 0x8d, 0x0d,
221     0xf5, 0x75, 0xb5, 0x35, 0xd5, 0x55, 0x95, 0x15,
222     0xe5, 0x65, 0xa5, 0x25, 0xc5, 0x45, 0x85, 0x05,
223     0xf9, 0x79, 0xb9, 0x39, 0xd9, 0x59, 0x99, 0x19,
224     0xe9, 0x69, 0xa9, 0x29, 0xc9, 0x49, 0x89, 0x09,
225     0xf1, 0x71, 0xb1, 0x31, 0xd1, 0x51, 0x91, 0x11,
226     0xe1, 0x61, 0xa1, 0x21, 0xc1, 0x41, 0x81, 0x01,
227     0xfe, 0x7e, 0xbe, 0x3e, 0xde, 0x5e, 0x9e, 0x1e,
228     0xee, 0x6e, 0xae, 0x2e, 0xce, 0x4e, 0x8e, 0x0e,
229     0xf6, 0x76, 0xb6, 0x36, 0xd6, 0x56, 0x96, 0x16,
230     0xe6, 0x66, 0xa6, 0x26, 0xc6, 0x46, 0x86, 0x06,
231     0xfa, 0x7a, 0xba, 0x3a, 0xda, 0x5a, 0x9a, 0x1a,
232     0xea, 0x6a, 0xaa, 0x2a, 0xca, 0x4a, 0x8a, 0x0a,
233     0xf2, 0x72, 0xb2, 0x32, 0xd2, 0x52, 0x92, 0x12,
234     0xe2, 0x62, 0xa2, 0x22, 0xc2, 0x42, 0x82, 0x02,
235     0xfc, 0x7c, 0xbc, 0x3c, 0xdc, 0x5c, 0x9c, 0x1c,
236     0xec, 0x6c, 0xac, 0x2c, 0xcc, 0x4c, 0x8c, 0x0c,
237     0xf4, 0x74, 0xb4, 0x34, 0xd4, 0x54, 0x94, 0x14,
238     0xe4, 0x64, 0xa4, 0x24, 0xc4, 0x44, 0x84, 0x04,
239     0xf8, 0x78, 0xb8, 0x38, 0xd8, 0x58, 0x98, 0x18,
240     0xe8, 0x68, 0xa8, 0x28, 0xc8, 0x48, 0x88, 0x08,
241     0xf0, 0x70, 0xb0, 0x30, 0xd0, 0x50, 0x90, 0x10,
242     0xe0, 0x60, 0xa0, 0x20, 0xc0, 0x40, 0x80, 0x00
243 };
244
245 static u8 p_crypt_tab0[ 256 ] =
246 {
247     0xB7, 0xF4, 0x82, 0x57, 0xDA, 0x4D, 0xDB, 0xE2,
248     0x2F, 0x52, 0x1A, 0xA8, 0x68, 0x5A, 0x8A, 0xFF,
249     0xFB, 0x0E, 0x6D, 0x35, 0xF7, 0x5C, 0x76, 0x12,
250     0xCE, 0x25, 0x79, 0x29, 0x39, 0x62, 0x08, 0x24,
251     0xA5, 0x85, 0x7B, 0x56, 0x01, 0x23, 0x68, 0xCF,
252     0x0A, 0xE2, 0x5A, 0xED, 0x3D, 0x59, 0xB0, 0xA9,
253     0xB0, 0x2C, 0xF2, 0xB8, 0xEF, 0x32, 0xA9, 0x40,
254     0x80, 0x71, 0xAF, 0x1E, 0xDE, 0x8F, 0x58, 0x88,
255     0xB8, 0x3A, 0xD0, 0xFC, 0xC4, 0x1E, 0xB5, 0xA0,
256     0xBB, 0x3B, 0x0F, 0x01, 0x7E, 0x1F, 0x9F, 0xD9,
257     0xAA, 0xB8, 0x3D, 0x9D, 0x74, 0x1E, 0x25, 0xDB,
258     0x37, 0x56, 0x8F, 0x16, 0xBA, 0x49, 0x2B, 0xAC,
259     0xD0, 0xBD, 0x95, 0x20, 0xBE, 0x7A, 0x28, 0xD0,
260     0x51, 0x64, 0x63, 0x1C, 0x7F, 0x66, 0x10, 0xBB,
261     0xC4, 0x56, 0x1A, 0x04, 0x6E, 0x0A, 0xEC, 0x9C,
262     0xD6, 0xE8, 0x9A, 0x7A, 0xCF, 0x8C, 0xDB, 0xB1,
263     0xEF, 0x71, 0xDE, 0x31, 0xFF, 0x54, 0x3E, 0x5E,
264     0x07, 0x69, 0x96, 0xB0, 0xCF, 0xDD, 0x9E, 0x47,
265     0xC7, 0x96, 0x8F, 0xE4, 0x2B, 0x59, 0xC6, 0xEE,
266     0xB9, 0x86, 0x9A, 0x64, 0x84, 0x72, 0xE2, 0x5B,
267     0xA2, 0x96, 0x58, 0x99, 0x50, 0x03, 0xF5, 0x38,
268     0x4D, 0x02, 0x7D, 0xE7, 0x7D, 0x75, 0xA7, 0xB8,
269     0x67, 0x87, 0x84, 0x3F, 0x1D, 0x11, 0xE5, 0xFC,
270     0x1E, 0xD3, 0x83, 0x16, 0xA5, 0x29, 0xF6, 0xC7,
271     0x15, 0x61, 0x29, 0x1A, 0x43, 0x4F, 0x9B, 0xAF,
272     0xC5, 0x87, 0x34, 0x6C, 0x0F, 0x3B, 0xA8, 0x1D,
273     0x45, 0x58, 0x25, 0xDC, 0xA8, 0xA3, 0x3B, 0xD1,
274     0x79, 0x1B, 0x48, 0xF2, 0xE9, 0x93, 0x1F, 0xFC,
275     0xDB, 0x2A, 0x90, 0xA9, 0x8A, 0x3D, 0x39, 0x18,
276     0xA3, 0x8E, 0x58, 0x6C, 0xE0, 0x12, 0xBB, 0x25,
277     0xCD, 0x71, 0x22, 0xA2, 0x64, 0xC6, 0xE7, 0xFB,
278     0xAD, 0x94, 0x77, 0x04, 0x9A, 0x39, 0xCF, 0x7C
279 };
280
281 static u8 p_crypt_tab1[ 256 ] =
282 {
283     0x8C, 0x47, 0xB0, 0xE1, 0xEB, 0xFC, 0xEB, 0x56,
284     0x10, 0xE5, 0x2C, 0x1A, 0x5D, 0xEF, 0xBE, 0x4F,
285     0x08, 0x75, 0x97, 0x4B, 0x0E, 0x25, 0x8E, 0x6E,
286     0x39, 0x5A, 0x87, 0x53, 0xC4, 0x1F, 0xF4, 0x5C,
287     0x4E, 0xE6, 0x99, 0x30, 0xE0, 0x42, 0x88, 0xAB,
288     0xE5, 0x85, 0xBC, 0x8F, 0xD8, 0x3C, 0x54, 0xC9,
289     0x53, 0x47, 0x18, 0xD6, 0x06, 0x5B, 0x41, 0x2C,
290     0x67, 0x1E, 0x41, 0x74, 0x33, 0xE2, 0xB4, 0xE0,
291     0x23, 0x29, 0x42, 0xEA, 0x55, 0x0F, 0x25, 0xB4,
292     0x24, 0x2C, 0x99, 0x13, 0xEB, 0x0A, 0x0B, 0xC9,
293     0xF9, 0x63, 0x67, 0x43, 0x2D, 0xC7, 0x7D, 0x07,
294     0x60, 0x89, 0xD1, 0xCC, 0xE7, 0x94, 0x77, 0x74,
295     0x9B, 0x7E, 0xD7, 0xE6, 0xFF, 0xBB, 0x68, 0x14,
296     0x1E, 0xA3, 0x25, 0xDE, 0x3A, 0xA3, 0x54, 0x7B,
297     0x87, 0x9D, 0x50, 0xCA, 0x27, 0xC3, 0xA4, 0x50,
298     0x91, 0x27, 0xD4, 0xB0, 0x82, 0x41, 0x97, 0x79,
299     0x94, 0x82, 0xAC, 0xC7, 0x8E, 0xA5, 0x4E, 0xAA,
300     0x78, 0x9E, 0xE0, 0x42, 0xBA, 0x28, 0xEA, 0xB7,
301     0x74, 0xAD, 0x35, 0xDA, 0x92, 0x60, 0x7E, 0xD2,
302     0x0E, 0xB9, 0x24, 0x5E, 0x39, 0x4F, 0x5E, 0x63,
303     0x09, 0xB5, 0xFA, 0xBF, 0xF1, 0x22, 0x55, 0x1C,
304     0xE2, 0x25, 0xDB, 0xC5, 0xD8, 0x50, 0x03, 0x98,
305     0xC4, 0xAC, 0x2E, 0x11, 0xB4, 0x38, 0x4D, 0xD0,
306     0xB9, 0xFC, 0x2D, 0x3C, 0x08, 0x04, 0x5A, 0xEF,
307     0xCE, 0x32, 0xFB, 0x4C, 0x92, 0x1E, 0x4B, 0xFB,
308     0x1A, 0xD0, 0xE2, 0x3E, 0xDA, 0x6E, 0x7C, 0x4D,
309     0x56, 0xC3, 0x3F, 0x42, 0xB1, 0x3A, 0x23, 0x4D,
310     0x6E, 0x84, 0x56, 0x68, 0xF4, 0x0E, 0x03, 0x64,
311     0xD0, 0xA9, 0x92, 0x2F, 0x8B, 0xBC, 0x39, 0x9C,
312     0xAC, 0x09, 0x5E, 0xEE, 0xE5, 0x97, 0xBF, 0xA5,
313     0xCE, 0xFA, 0x28, 0x2C, 0x6D, 0x4F, 0xEF, 0x77,
314     0xAA, 0x1B, 0x79, 0x8E, 0x97, 0xB4, 0xC3, 0xF4
315 };
316
317 static u8 p_crypt_tab2[ 256 ] =
318 {
319     0xB7, 0x75, 0x81, 0xD5, 0xDC, 0xCA, 0xDE, 0x66,
320     0x23, 0xDF, 0x15, 0x26, 0x62, 0xD1, 0x83, 0x77,
321     0xE3, 0x97, 0x76, 0xAF, 0xE9, 0xC3, 0x6B, 0x8E,
322     0xDA, 0xB0, 0x6E, 0xBF, 0x2B, 0xF1, 0x19, 0xB4,
323     0x95, 0x34, 0x48, 0xE4, 0x37, 0x94, 0x5D, 0x7B,
324     0x36, 0x5F, 0x65, 0x53, 0x07, 0xE2, 0x89, 0x11,
325     0x98, 0x85, 0xD9, 0x12, 0xC1, 0x9D, 0x84, 0xEC,
326     0xA4, 0xD4, 0x88, 0xB8, 0xFC, 0x2C, 0x79, 0x28,
327     0xD8, 0xDB, 0xB3, 0x1E, 0xA2, 0xF9, 0xD0, 0x44,
328     0xD7, 0xD6, 0x60, 0xEF, 0x14, 0xF4, 0xF6, 0x31,
329     0xD2, 0x41, 0x46, 0x67, 0x0A, 0xE1, 0x58, 0x27,
330     0x43, 0xA3, 0xF8, 0xE0, 0xC8, 0xBA, 0x5A, 0x5C,
331     0x80, 0x6C, 0xC6, 0xF2, 0xE8, 0xAD, 0x7D, 0x04,
332     0x0D, 0xB9, 0x3C, 0xC2, 0x25, 0xBD, 0x49, 0x63,
333     0x8C, 0x9F, 0x51, 0xCE, 0x20, 0xC5, 0xA1, 0x50,
334     0x92, 0x2D, 0xDD, 0xBC, 0x8D, 0x4F, 0x9A, 0x71,
335     0x2F, 0x30, 0x1D, 0x73, 0x39, 0x13, 0xFB, 0x1A,
336     0xCB, 0x24, 0x59, 0xFE, 0x05, 0x96, 0x57, 0x0F,
337     0x1F, 0xCF, 0x54, 0xBE, 0xF5, 0x06, 0x1B, 0xB2,
338     0x6D, 0xD3, 0x4D, 0x32, 0x56, 0x21, 0x33, 0x0B,
339     0x52, 0xE7, 0xAB, 0xEB, 0xA6, 0x74, 0x00, 0x4C,
340     0xB1, 0x7F, 0x82, 0x99, 0x87, 0x0E, 0x5E, 0xC0,
341     0x8F, 0xEE, 0x6F, 0x55, 0xF3, 0x7E, 0x08, 0x90,
342     0xFA, 0xB6, 0x64, 0x70, 0x47, 0x4A, 0x17, 0xA7,
343     0xB5, 0x40, 0x8A, 0x38, 0xE5, 0x68, 0x3E, 0x8B,
344     0x69, 0xAA, 0x9B, 0x42, 0xA5, 0x10, 0x01, 0x35,
345     0xFD, 0x61, 0x9E, 0xE6, 0x16, 0x9C, 0x86, 0xED,
346     0xCD, 0x2E, 0xFF, 0xC4, 0x5B, 0xA0, 0xAE, 0xCC,
347     0x4B, 0x3B, 0x03, 0xBB, 0x1C, 0x2A, 0xAC, 0x0C,
348     0x3F, 0x93, 0xC7, 0x72, 0x7A, 0x09, 0x22, 0x3D,
349     0x45, 0x78, 0xA9, 0xA8, 0xEA, 0xC9, 0x6A, 0xF7,
350     0x29, 0x91, 0xF0, 0x02, 0x18, 0x3A, 0x4E, 0x7C 
351 };
352
353 static u8 p_crypt_tab3[ 288 ] =
354 {
355     0x73, 0x51, 0x95, 0xE1, 0x12, 0xE4, 0xC0, 0x58,
356     0xEE, 0xF2, 0x08, 0x1B, 0xA9, 0xFA, 0x98, 0x4C,
357     0xA7, 0x33, 0xE2, 0x1B, 0xA7, 0x6D, 0xF5, 0x30,
358     0x97, 0x1D, 0xF3, 0x02, 0x60, 0x5A, 0x82, 0x0F,
359     0x91, 0xD0, 0x9C, 0x10, 0x39, 0x7A, 0x83, 0x85,
360     0x3B, 0xB2, 0xB8, 0xAE, 0x0C, 0x09, 0x52, 0xEA,
361     0x1C, 0xE1, 0x8D, 0x66, 0x4F, 0xF3, 0xDA, 0x92,
362     0x29, 0xB9, 0xD5, 0xC5, 0x77, 0x47, 0x22, 0x53,
363     0x14, 0xF7, 0xAF, 0x22, 0x64, 0xDF, 0xC6, 0x72,
364     0x12, 0xF3, 0x75, 0xDA, 0xD7, 0xD7, 0xE5, 0x02,
365     0x9E, 0xED, 0xDA, 0xDB, 0x4C, 0x47, 0xCE, 0x91,
366     0x06, 0x06, 0x6D, 0x55, 0x8B, 0x19, 0xC9, 0xEF,
367     0x8C, 0x80, 0x1A, 0x0E, 0xEE, 0x4B, 0xAB, 0xF2,
368     0x08, 0x5C, 0xE9, 0x37, 0x26, 0x5E, 0x9A, 0x90,
369     0x00, 0xF3, 0x0D, 0xB2, 0xA6, 0xA3, 0xF7, 0x26,
370     0x17, 0x48, 0x88, 0xC9, 0x0E, 0x2C, 0xC9, 0x02,
371     0xE7, 0x18, 0x05, 0x4B, 0xF3, 0x39, 0xE1, 0x20,
372     0x02, 0x0D, 0x40, 0xC7, 0xCA, 0xB9, 0x48, 0x30,
373     0x57, 0x67, 0xCC, 0x06, 0xBF, 0xAC, 0x81, 0x08,
374     0x24, 0x7A, 0xD4, 0x8B, 0x19, 0x8E, 0xAC, 0xB4,
375     0x5A, 0x0F, 0x73, 0x13, 0xAC, 0x9E, 0xDA, 0xB6,
376     0xB8, 0x96, 0x5B, 0x60, 0x88, 0xE1, 0x81, 0x3F,
377     0x07, 0x86, 0x37, 0x2D, 0x79, 0x14, 0x52, 0xEA,
378     0x73, 0xDF, 0x3D, 0x09, 0xC8, 0x25, 0x48, 0xD8,
379     0x75, 0x60, 0x9A, 0x08, 0x27, 0x4A, 0x2C, 0xB9,
380     0xA8, 0x8B, 0x8A, 0x73, 0x62, 0x37, 0x16, 0x02,
381     0xBD, 0xC1, 0x0E, 0x56, 0x54, 0x3E, 0x14, 0x5F,
382     0x8C, 0x8F, 0x6E, 0x75, 0x1C, 0x07, 0x39, 0x7B,
383     0x4B, 0xDB, 0xD3, 0x4B, 0x1E, 0xC8, 0x7E, 0xFE,
384     0x3E, 0x72, 0x16, 0x83, 0x7D, 0xEE, 0xF5, 0xCA,
385     0xC5, 0x18, 0xF9, 0xD8, 0x68, 0xAB, 0x38, 0x85,
386     0xA8, 0xF0, 0xA1, 0x73, 0x9F, 0x5D, 0x19, 0x0B,
387     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
388     0x33, 0x72, 0x39, 0x25, 0x67, 0x26, 0x6D, 0x71,
389     0x36, 0x77, 0x3C, 0x20, 0x62, 0x23, 0x68, 0x74,
390     0xC3, 0x82, 0xC9, 0x15, 0x57, 0x16, 0x5D, 0x81
391 };
392