1 .text
2 .globl	_DES_SPtrans
3 .align	4
4 __x86_DES_encrypt:
5 	%ifdef __CET__
6 
7 .byte	243,15,30,251
8 	%endif
9 
10 	pushl	%ecx
11 	# Round 0
12 	movl	(%ecx),%eax
13 	xorl	%ebx,%ebx
14 	movl	4(%ecx),%edx
15 	xorl	%esi,%eax
16 	xorl	%ecx,%ecx
17 	xorl	%esi,%edx
18 	andl	$0xfcfcfcfc,%eax
19 	andl	$0xcfcfcfcf,%edx
20 	movb	%al,%bl
21 	movb	%ah,%cl
22 	rorl	$4,%edx
23 	xorl	(%ebp,%ebx,1),%edi
24 	movb	%dl,%bl
25 	xorl	0x200(%ebp,%ecx,1),%edi
26 	movb	%dh,%cl
27 	shrl	$16,%eax
28 	xorl	0x100(%ebp,%ebx,1),%edi
29 	movb	%ah,%bl
30 	shrl	$16,%edx
31 	xorl	0x300(%ebp,%ecx,1),%edi
32 	movb	%dh,%cl
33 	andl	$0xff,%eax
34 	andl	$0xff,%edx
35 	xorl	0x600(%ebp,%ebx,1),%edi
36 	xorl	0x700(%ebp,%ecx,1),%edi
37 	movl	(%esp),%ecx
38 	xorl	0x400(%ebp,%eax,1),%edi
39 	xorl	0x500(%ebp,%edx,1),%edi
40 	# Round 1
41 	movl	8(%ecx),%eax
42 	xorl	%ebx,%ebx
43 	movl	12(%ecx),%edx
44 	xorl	%edi,%eax
45 	xorl	%ecx,%ecx
46 	xorl	%edi,%edx
47 	andl	$0xfcfcfcfc,%eax
48 	andl	$0xcfcfcfcf,%edx
49 	movb	%al,%bl
50 	movb	%ah,%cl
51 	rorl	$4,%edx
52 	xorl	(%ebp,%ebx,1),%esi
53 	movb	%dl,%bl
54 	xorl	0x200(%ebp,%ecx,1),%esi
55 	movb	%dh,%cl
56 	shrl	$16,%eax
57 	xorl	0x100(%ebp,%ebx,1),%esi
58 	movb	%ah,%bl
59 	shrl	$16,%edx
60 	xorl	0x300(%ebp,%ecx,1),%esi
61 	movb	%dh,%cl
62 	andl	$0xff,%eax
63 	andl	$0xff,%edx
64 	xorl	0x600(%ebp,%ebx,1),%esi
65 	xorl	0x700(%ebp,%ecx,1),%esi
66 	movl	(%esp),%ecx
67 	xorl	0x400(%ebp,%eax,1),%esi
68 	xorl	0x500(%ebp,%edx,1),%esi
69 	# Round 2
70 	movl	16(%ecx),%eax
71 	xorl	%ebx,%ebx
72 	movl	20(%ecx),%edx
73 	xorl	%esi,%eax
74 	xorl	%ecx,%ecx
75 	xorl	%esi,%edx
76 	andl	$0xfcfcfcfc,%eax
77 	andl	$0xcfcfcfcf,%edx
78 	movb	%al,%bl
79 	movb	%ah,%cl
80 	rorl	$4,%edx
81 	xorl	(%ebp,%ebx,1),%edi
82 	movb	%dl,%bl
83 	xorl	0x200(%ebp,%ecx,1),%edi
84 	movb	%dh,%cl
85 	shrl	$16,%eax
86 	xorl	0x100(%ebp,%ebx,1),%edi
87 	movb	%ah,%bl
88 	shrl	$16,%edx
89 	xorl	0x300(%ebp,%ecx,1),%edi
90 	movb	%dh,%cl
91 	andl	$0xff,%eax
92 	andl	$0xff,%edx
93 	xorl	0x600(%ebp,%ebx,1),%edi
94 	xorl	0x700(%ebp,%ecx,1),%edi
95 	movl	(%esp),%ecx
96 	xorl	0x400(%ebp,%eax,1),%edi
97 	xorl	0x500(%ebp,%edx,1),%edi
98 	# Round 3
99 	movl	24(%ecx),%eax
100 	xorl	%ebx,%ebx
101 	movl	28(%ecx),%edx
102 	xorl	%edi,%eax
103 	xorl	%ecx,%ecx
104 	xorl	%edi,%edx
105 	andl	$0xfcfcfcfc,%eax
106 	andl	$0xcfcfcfcf,%edx
107 	movb	%al,%bl
108 	movb	%ah,%cl
109 	rorl	$4,%edx
110 	xorl	(%ebp,%ebx,1),%esi
111 	movb	%dl,%bl
112 	xorl	0x200(%ebp,%ecx,1),%esi
113 	movb	%dh,%cl
114 	shrl	$16,%eax
115 	xorl	0x100(%ebp,%ebx,1),%esi
116 	movb	%ah,%bl
117 	shrl	$16,%edx
118 	xorl	0x300(%ebp,%ecx,1),%esi
119 	movb	%dh,%cl
120 	andl	$0xff,%eax
121 	andl	$0xff,%edx
122 	xorl	0x600(%ebp,%ebx,1),%esi
123 	xorl	0x700(%ebp,%ecx,1),%esi
124 	movl	(%esp),%ecx
125 	xorl	0x400(%ebp,%eax,1),%esi
126 	xorl	0x500(%ebp,%edx,1),%esi
127 	# Round 4
128 	movl	32(%ecx),%eax
129 	xorl	%ebx,%ebx
130 	movl	36(%ecx),%edx
131 	xorl	%esi,%eax
132 	xorl	%ecx,%ecx
133 	xorl	%esi,%edx
134 	andl	$0xfcfcfcfc,%eax
135 	andl	$0xcfcfcfcf,%edx
136 	movb	%al,%bl
137 	movb	%ah,%cl
138 	rorl	$4,%edx
139 	xorl	(%ebp,%ebx,1),%edi
140 	movb	%dl,%bl
141 	xorl	0x200(%ebp,%ecx,1),%edi
142 	movb	%dh,%cl
143 	shrl	$16,%eax
144 	xorl	0x100(%ebp,%ebx,1),%edi
145 	movb	%ah,%bl
146 	shrl	$16,%edx
147 	xorl	0x300(%ebp,%ecx,1),%edi
148 	movb	%dh,%cl
149 	andl	$0xff,%eax
150 	andl	$0xff,%edx
151 	xorl	0x600(%ebp,%ebx,1),%edi
152 	xorl	0x700(%ebp,%ecx,1),%edi
153 	movl	(%esp),%ecx
154 	xorl	0x400(%ebp,%eax,1),%edi
155 	xorl	0x500(%ebp,%edx,1),%edi
156 	# Round 5
157 	movl	40(%ecx),%eax
158 	xorl	%ebx,%ebx
159 	movl	44(%ecx),%edx
160 	xorl	%edi,%eax
161 	xorl	%ecx,%ecx
162 	xorl	%edi,%edx
163 	andl	$0xfcfcfcfc,%eax
164 	andl	$0xcfcfcfcf,%edx
165 	movb	%al,%bl
166 	movb	%ah,%cl
167 	rorl	$4,%edx
168 	xorl	(%ebp,%ebx,1),%esi
169 	movb	%dl,%bl
170 	xorl	0x200(%ebp,%ecx,1),%esi
171 	movb	%dh,%cl
172 	shrl	$16,%eax
173 	xorl	0x100(%ebp,%ebx,1),%esi
174 	movb	%ah,%bl
175 	shrl	$16,%edx
176 	xorl	0x300(%ebp,%ecx,1),%esi
177 	movb	%dh,%cl
178 	andl	$0xff,%eax
179 	andl	$0xff,%edx
180 	xorl	0x600(%ebp,%ebx,1),%esi
181 	xorl	0x700(%ebp,%ecx,1),%esi
182 	movl	(%esp),%ecx
183 	xorl	0x400(%ebp,%eax,1),%esi
184 	xorl	0x500(%ebp,%edx,1),%esi
185 	# Round 6
186 	movl	48(%ecx),%eax
187 	xorl	%ebx,%ebx
188 	movl	52(%ecx),%edx
189 	xorl	%esi,%eax
190 	xorl	%ecx,%ecx
191 	xorl	%esi,%edx
192 	andl	$0xfcfcfcfc,%eax
193 	andl	$0xcfcfcfcf,%edx
194 	movb	%al,%bl
195 	movb	%ah,%cl
196 	rorl	$4,%edx
197 	xorl	(%ebp,%ebx,1),%edi
198 	movb	%dl,%bl
199 	xorl	0x200(%ebp,%ecx,1),%edi
200 	movb	%dh,%cl
201 	shrl	$16,%eax
202 	xorl	0x100(%ebp,%ebx,1),%edi
203 	movb	%ah,%bl
204 	shrl	$16,%edx
205 	xorl	0x300(%ebp,%ecx,1),%edi
206 	movb	%dh,%cl
207 	andl	$0xff,%eax
208 	andl	$0xff,%edx
209 	xorl	0x600(%ebp,%ebx,1),%edi
210 	xorl	0x700(%ebp,%ecx,1),%edi
211 	movl	(%esp),%ecx
212 	xorl	0x400(%ebp,%eax,1),%edi
213 	xorl	0x500(%ebp,%edx,1),%edi
214 	# Round 7
215 	movl	56(%ecx),%eax
216 	xorl	%ebx,%ebx
217 	movl	60(%ecx),%edx
218 	xorl	%edi,%eax
219 	xorl	%ecx,%ecx
220 	xorl	%edi,%edx
221 	andl	$0xfcfcfcfc,%eax
222 	andl	$0xcfcfcfcf,%edx
223 	movb	%al,%bl
224 	movb	%ah,%cl
225 	rorl	$4,%edx
226 	xorl	(%ebp,%ebx,1),%esi
227 	movb	%dl,%bl
228 	xorl	0x200(%ebp,%ecx,1),%esi
229 	movb	%dh,%cl
230 	shrl	$16,%eax
231 	xorl	0x100(%ebp,%ebx,1),%esi
232 	movb	%ah,%bl
233 	shrl	$16,%edx
234 	xorl	0x300(%ebp,%ecx,1),%esi
235 	movb	%dh,%cl
236 	andl	$0xff,%eax
237 	andl	$0xff,%edx
238 	xorl	0x600(%ebp,%ebx,1),%esi
239 	xorl	0x700(%ebp,%ecx,1),%esi
240 	movl	(%esp),%ecx
241 	xorl	0x400(%ebp,%eax,1),%esi
242 	xorl	0x500(%ebp,%edx,1),%esi
243 	# Round 8
244 	movl	64(%ecx),%eax
245 	xorl	%ebx,%ebx
246 	movl	68(%ecx),%edx
247 	xorl	%esi,%eax
248 	xorl	%ecx,%ecx
249 	xorl	%esi,%edx
250 	andl	$0xfcfcfcfc,%eax
251 	andl	$0xcfcfcfcf,%edx
252 	movb	%al,%bl
253 	movb	%ah,%cl
254 	rorl	$4,%edx
255 	xorl	(%ebp,%ebx,1),%edi
256 	movb	%dl,%bl
257 	xorl	0x200(%ebp,%ecx,1),%edi
258 	movb	%dh,%cl
259 	shrl	$16,%eax
260 	xorl	0x100(%ebp,%ebx,1),%edi
261 	movb	%ah,%bl
262 	shrl	$16,%edx
263 	xorl	0x300(%ebp,%ecx,1),%edi
264 	movb	%dh,%cl
265 	andl	$0xff,%eax
266 	andl	$0xff,%edx
267 	xorl	0x600(%ebp,%ebx,1),%edi
268 	xorl	0x700(%ebp,%ecx,1),%edi
269 	movl	(%esp),%ecx
270 	xorl	0x400(%ebp,%eax,1),%edi
271 	xorl	0x500(%ebp,%edx,1),%edi
272 	# Round 9
273 	movl	72(%ecx),%eax
274 	xorl	%ebx,%ebx
275 	movl	76(%ecx),%edx
276 	xorl	%edi,%eax
277 	xorl	%ecx,%ecx
278 	xorl	%edi,%edx
279 	andl	$0xfcfcfcfc,%eax
280 	andl	$0xcfcfcfcf,%edx
281 	movb	%al,%bl
282 	movb	%ah,%cl
283 	rorl	$4,%edx
284 	xorl	(%ebp,%ebx,1),%esi
285 	movb	%dl,%bl
286 	xorl	0x200(%ebp,%ecx,1),%esi
287 	movb	%dh,%cl
288 	shrl	$16,%eax
289 	xorl	0x100(%ebp,%ebx,1),%esi
290 	movb	%ah,%bl
291 	shrl	$16,%edx
292 	xorl	0x300(%ebp,%ecx,1),%esi
293 	movb	%dh,%cl
294 	andl	$0xff,%eax
295 	andl	$0xff,%edx
296 	xorl	0x600(%ebp,%ebx,1),%esi
297 	xorl	0x700(%ebp,%ecx,1),%esi
298 	movl	(%esp),%ecx
299 	xorl	0x400(%ebp,%eax,1),%esi
300 	xorl	0x500(%ebp,%edx,1),%esi
301 	# Round 10
302 	movl	80(%ecx),%eax
303 	xorl	%ebx,%ebx
304 	movl	84(%ecx),%edx
305 	xorl	%esi,%eax
306 	xorl	%ecx,%ecx
307 	xorl	%esi,%edx
308 	andl	$0xfcfcfcfc,%eax
309 	andl	$0xcfcfcfcf,%edx
310 	movb	%al,%bl
311 	movb	%ah,%cl
312 	rorl	$4,%edx
313 	xorl	(%ebp,%ebx,1),%edi
314 	movb	%dl,%bl
315 	xorl	0x200(%ebp,%ecx,1),%edi
316 	movb	%dh,%cl
317 	shrl	$16,%eax
318 	xorl	0x100(%ebp,%ebx,1),%edi
319 	movb	%ah,%bl
320 	shrl	$16,%edx
321 	xorl	0x300(%ebp,%ecx,1),%edi
322 	movb	%dh,%cl
323 	andl	$0xff,%eax
324 	andl	$0xff,%edx
325 	xorl	0x600(%ebp,%ebx,1),%edi
326 	xorl	0x700(%ebp,%ecx,1),%edi
327 	movl	(%esp),%ecx
328 	xorl	0x400(%ebp,%eax,1),%edi
329 	xorl	0x500(%ebp,%edx,1),%edi
330 	# Round 11
331 	movl	88(%ecx),%eax
332 	xorl	%ebx,%ebx
333 	movl	92(%ecx),%edx
334 	xorl	%edi,%eax
335 	xorl	%ecx,%ecx
336 	xorl	%edi,%edx
337 	andl	$0xfcfcfcfc,%eax
338 	andl	$0xcfcfcfcf,%edx
339 	movb	%al,%bl
340 	movb	%ah,%cl
341 	rorl	$4,%edx
342 	xorl	(%ebp,%ebx,1),%esi
343 	movb	%dl,%bl
344 	xorl	0x200(%ebp,%ecx,1),%esi
345 	movb	%dh,%cl
346 	shrl	$16,%eax
347 	xorl	0x100(%ebp,%ebx,1),%esi
348 	movb	%ah,%bl
349 	shrl	$16,%edx
350 	xorl	0x300(%ebp,%ecx,1),%esi
351 	movb	%dh,%cl
352 	andl	$0xff,%eax
353 	andl	$0xff,%edx
354 	xorl	0x600(%ebp,%ebx,1),%esi
355 	xorl	0x700(%ebp,%ecx,1),%esi
356 	movl	(%esp),%ecx
357 	xorl	0x400(%ebp,%eax,1),%esi
358 	xorl	0x500(%ebp,%edx,1),%esi
359 	# Round 12
360 	movl	96(%ecx),%eax
361 	xorl	%ebx,%ebx
362 	movl	100(%ecx),%edx
363 	xorl	%esi,%eax
364 	xorl	%ecx,%ecx
365 	xorl	%esi,%edx
366 	andl	$0xfcfcfcfc,%eax
367 	andl	$0xcfcfcfcf,%edx
368 	movb	%al,%bl
369 	movb	%ah,%cl
370 	rorl	$4,%edx
371 	xorl	(%ebp,%ebx,1),%edi
372 	movb	%dl,%bl
373 	xorl	0x200(%ebp,%ecx,1),%edi
374 	movb	%dh,%cl
375 	shrl	$16,%eax
376 	xorl	0x100(%ebp,%ebx,1),%edi
377 	movb	%ah,%bl
378 	shrl	$16,%edx
379 	xorl	0x300(%ebp,%ecx,1),%edi
380 	movb	%dh,%cl
381 	andl	$0xff,%eax
382 	andl	$0xff,%edx
383 	xorl	0x600(%ebp,%ebx,1),%edi
384 	xorl	0x700(%ebp,%ecx,1),%edi
385 	movl	(%esp),%ecx
386 	xorl	0x400(%ebp,%eax,1),%edi
387 	xorl	0x500(%ebp,%edx,1),%edi
388 	# Round 13
389 	movl	104(%ecx),%eax
390 	xorl	%ebx,%ebx
391 	movl	108(%ecx),%edx
392 	xorl	%edi,%eax
393 	xorl	%ecx,%ecx
394 	xorl	%edi,%edx
395 	andl	$0xfcfcfcfc,%eax
396 	andl	$0xcfcfcfcf,%edx
397 	movb	%al,%bl
398 	movb	%ah,%cl
399 	rorl	$4,%edx
400 	xorl	(%ebp,%ebx,1),%esi
401 	movb	%dl,%bl
402 	xorl	0x200(%ebp,%ecx,1),%esi
403 	movb	%dh,%cl
404 	shrl	$16,%eax
405 	xorl	0x100(%ebp,%ebx,1),%esi
406 	movb	%ah,%bl
407 	shrl	$16,%edx
408 	xorl	0x300(%ebp,%ecx,1),%esi
409 	movb	%dh,%cl
410 	andl	$0xff,%eax
411 	andl	$0xff,%edx
412 	xorl	0x600(%ebp,%ebx,1),%esi
413 	xorl	0x700(%ebp,%ecx,1),%esi
414 	movl	(%esp),%ecx
415 	xorl	0x400(%ebp,%eax,1),%esi
416 	xorl	0x500(%ebp,%edx,1),%esi
417 	# Round 14
418 	movl	112(%ecx),%eax
419 	xorl	%ebx,%ebx
420 	movl	116(%ecx),%edx
421 	xorl	%esi,%eax
422 	xorl	%ecx,%ecx
423 	xorl	%esi,%edx
424 	andl	$0xfcfcfcfc,%eax
425 	andl	$0xcfcfcfcf,%edx
426 	movb	%al,%bl
427 	movb	%ah,%cl
428 	rorl	$4,%edx
429 	xorl	(%ebp,%ebx,1),%edi
430 	movb	%dl,%bl
431 	xorl	0x200(%ebp,%ecx,1),%edi
432 	movb	%dh,%cl
433 	shrl	$16,%eax
434 	xorl	0x100(%ebp,%ebx,1),%edi
435 	movb	%ah,%bl
436 	shrl	$16,%edx
437 	xorl	0x300(%ebp,%ecx,1),%edi
438 	movb	%dh,%cl
439 	andl	$0xff,%eax
440 	andl	$0xff,%edx
441 	xorl	0x600(%ebp,%ebx,1),%edi
442 	xorl	0x700(%ebp,%ecx,1),%edi
443 	movl	(%esp),%ecx
444 	xorl	0x400(%ebp,%eax,1),%edi
445 	xorl	0x500(%ebp,%edx,1),%edi
446 	# Round 15
447 	movl	120(%ecx),%eax
448 	xorl	%ebx,%ebx
449 	movl	124(%ecx),%edx
450 	xorl	%edi,%eax
451 	xorl	%ecx,%ecx
452 	xorl	%edi,%edx
453 	andl	$0xfcfcfcfc,%eax
454 	andl	$0xcfcfcfcf,%edx
455 	movb	%al,%bl
456 	movb	%ah,%cl
457 	rorl	$4,%edx
458 	xorl	(%ebp,%ebx,1),%esi
459 	movb	%dl,%bl
460 	xorl	0x200(%ebp,%ecx,1),%esi
461 	movb	%dh,%cl
462 	shrl	$16,%eax
463 	xorl	0x100(%ebp,%ebx,1),%esi
464 	movb	%ah,%bl
465 	shrl	$16,%edx
466 	xorl	0x300(%ebp,%ecx,1),%esi
467 	movb	%dh,%cl
468 	andl	$0xff,%eax
469 	andl	$0xff,%edx
470 	xorl	0x600(%ebp,%ebx,1),%esi
471 	xorl	0x700(%ebp,%ecx,1),%esi
472 	movl	(%esp),%ecx
473 	xorl	0x400(%ebp,%eax,1),%esi
474 	xorl	0x500(%ebp,%edx,1),%esi
475 	addl	$4,%esp
476 	ret
477 .align	4
478 __x86_DES_decrypt:
479 	%ifdef __CET__
480 
481 .byte	243,15,30,251
482 	%endif
483 
484 	pushl	%ecx
485 	# Round 15
486 	movl	120(%ecx),%eax
487 	xorl	%ebx,%ebx
488 	movl	124(%ecx),%edx
489 	xorl	%esi,%eax
490 	xorl	%ecx,%ecx
491 	xorl	%esi,%edx
492 	andl	$0xfcfcfcfc,%eax
493 	andl	$0xcfcfcfcf,%edx
494 	movb	%al,%bl
495 	movb	%ah,%cl
496 	rorl	$4,%edx
497 	xorl	(%ebp,%ebx,1),%edi
498 	movb	%dl,%bl
499 	xorl	0x200(%ebp,%ecx,1),%edi
500 	movb	%dh,%cl
501 	shrl	$16,%eax
502 	xorl	0x100(%ebp,%ebx,1),%edi
503 	movb	%ah,%bl
504 	shrl	$16,%edx
505 	xorl	0x300(%ebp,%ecx,1),%edi
506 	movb	%dh,%cl
507 	andl	$0xff,%eax
508 	andl	$0xff,%edx
509 	xorl	0x600(%ebp,%ebx,1),%edi
510 	xorl	0x700(%ebp,%ecx,1),%edi
511 	movl	(%esp),%ecx
512 	xorl	0x400(%ebp,%eax,1),%edi
513 	xorl	0x500(%ebp,%edx,1),%edi
514 	# Round 14
515 	movl	112(%ecx),%eax
516 	xorl	%ebx,%ebx
517 	movl	116(%ecx),%edx
518 	xorl	%edi,%eax
519 	xorl	%ecx,%ecx
520 	xorl	%edi,%edx
521 	andl	$0xfcfcfcfc,%eax
522 	andl	$0xcfcfcfcf,%edx
523 	movb	%al,%bl
524 	movb	%ah,%cl
525 	rorl	$4,%edx
526 	xorl	(%ebp,%ebx,1),%esi
527 	movb	%dl,%bl
528 	xorl	0x200(%ebp,%ecx,1),%esi
529 	movb	%dh,%cl
530 	shrl	$16,%eax
531 	xorl	0x100(%ebp,%ebx,1),%esi
532 	movb	%ah,%bl
533 	shrl	$16,%edx
534 	xorl	0x300(%ebp,%ecx,1),%esi
535 	movb	%dh,%cl
536 	andl	$0xff,%eax
537 	andl	$0xff,%edx
538 	xorl	0x600(%ebp,%ebx,1),%esi
539 	xorl	0x700(%ebp,%ecx,1),%esi
540 	movl	(%esp),%ecx
541 	xorl	0x400(%ebp,%eax,1),%esi
542 	xorl	0x500(%ebp,%edx,1),%esi
543 	# Round 13
544 	movl	104(%ecx),%eax
545 	xorl	%ebx,%ebx
546 	movl	108(%ecx),%edx
547 	xorl	%esi,%eax
548 	xorl	%ecx,%ecx
549 	xorl	%esi,%edx
550 	andl	$0xfcfcfcfc,%eax
551 	andl	$0xcfcfcfcf,%edx
552 	movb	%al,%bl
553 	movb	%ah,%cl
554 	rorl	$4,%edx
555 	xorl	(%ebp,%ebx,1),%edi
556 	movb	%dl,%bl
557 	xorl	0x200(%ebp,%ecx,1),%edi
558 	movb	%dh,%cl
559 	shrl	$16,%eax
560 	xorl	0x100(%ebp,%ebx,1),%edi
561 	movb	%ah,%bl
562 	shrl	$16,%edx
563 	xorl	0x300(%ebp,%ecx,1),%edi
564 	movb	%dh,%cl
565 	andl	$0xff,%eax
566 	andl	$0xff,%edx
567 	xorl	0x600(%ebp,%ebx,1),%edi
568 	xorl	0x700(%ebp,%ecx,1),%edi
569 	movl	(%esp),%ecx
570 	xorl	0x400(%ebp,%eax,1),%edi
571 	xorl	0x500(%ebp,%edx,1),%edi
572 	# Round 12
573 	movl	96(%ecx),%eax
574 	xorl	%ebx,%ebx
575 	movl	100(%ecx),%edx
576 	xorl	%edi,%eax
577 	xorl	%ecx,%ecx
578 	xorl	%edi,%edx
579 	andl	$0xfcfcfcfc,%eax
580 	andl	$0xcfcfcfcf,%edx
581 	movb	%al,%bl
582 	movb	%ah,%cl
583 	rorl	$4,%edx
584 	xorl	(%ebp,%ebx,1),%esi
585 	movb	%dl,%bl
586 	xorl	0x200(%ebp,%ecx,1),%esi
587 	movb	%dh,%cl
588 	shrl	$16,%eax
589 	xorl	0x100(%ebp,%ebx,1),%esi
590 	movb	%ah,%bl
591 	shrl	$16,%edx
592 	xorl	0x300(%ebp,%ecx,1),%esi
593 	movb	%dh,%cl
594 	andl	$0xff,%eax
595 	andl	$0xff,%edx
596 	xorl	0x600(%ebp,%ebx,1),%esi
597 	xorl	0x700(%ebp,%ecx,1),%esi
598 	movl	(%esp),%ecx
599 	xorl	0x400(%ebp,%eax,1),%esi
600 	xorl	0x500(%ebp,%edx,1),%esi
601 	# Round 11
602 	movl	88(%ecx),%eax
603 	xorl	%ebx,%ebx
604 	movl	92(%ecx),%edx
605 	xorl	%esi,%eax
606 	xorl	%ecx,%ecx
607 	xorl	%esi,%edx
608 	andl	$0xfcfcfcfc,%eax
609 	andl	$0xcfcfcfcf,%edx
610 	movb	%al,%bl
611 	movb	%ah,%cl
612 	rorl	$4,%edx
613 	xorl	(%ebp,%ebx,1),%edi
614 	movb	%dl,%bl
615 	xorl	0x200(%ebp,%ecx,1),%edi
616 	movb	%dh,%cl
617 	shrl	$16,%eax
618 	xorl	0x100(%ebp,%ebx,1),%edi
619 	movb	%ah,%bl
620 	shrl	$16,%edx
621 	xorl	0x300(%ebp,%ecx,1),%edi
622 	movb	%dh,%cl
623 	andl	$0xff,%eax
624 	andl	$0xff,%edx
625 	xorl	0x600(%ebp,%ebx,1),%edi
626 	xorl	0x700(%ebp,%ecx,1),%edi
627 	movl	(%esp),%ecx
628 	xorl	0x400(%ebp,%eax,1),%edi
629 	xorl	0x500(%ebp,%edx,1),%edi
630 	# Round 10
631 	movl	80(%ecx),%eax
632 	xorl	%ebx,%ebx
633 	movl	84(%ecx),%edx
634 	xorl	%edi,%eax
635 	xorl	%ecx,%ecx
636 	xorl	%edi,%edx
637 	andl	$0xfcfcfcfc,%eax
638 	andl	$0xcfcfcfcf,%edx
639 	movb	%al,%bl
640 	movb	%ah,%cl
641 	rorl	$4,%edx
642 	xorl	(%ebp,%ebx,1),%esi
643 	movb	%dl,%bl
644 	xorl	0x200(%ebp,%ecx,1),%esi
645 	movb	%dh,%cl
646 	shrl	$16,%eax
647 	xorl	0x100(%ebp,%ebx,1),%esi
648 	movb	%ah,%bl
649 	shrl	$16,%edx
650 	xorl	0x300(%ebp,%ecx,1),%esi
651 	movb	%dh,%cl
652 	andl	$0xff,%eax
653 	andl	$0xff,%edx
654 	xorl	0x600(%ebp,%ebx,1),%esi
655 	xorl	0x700(%ebp,%ecx,1),%esi
656 	movl	(%esp),%ecx
657 	xorl	0x400(%ebp,%eax,1),%esi
658 	xorl	0x500(%ebp,%edx,1),%esi
659 	# Round 9
660 	movl	72(%ecx),%eax
661 	xorl	%ebx,%ebx
662 	movl	76(%ecx),%edx
663 	xorl	%esi,%eax
664 	xorl	%ecx,%ecx
665 	xorl	%esi,%edx
666 	andl	$0xfcfcfcfc,%eax
667 	andl	$0xcfcfcfcf,%edx
668 	movb	%al,%bl
669 	movb	%ah,%cl
670 	rorl	$4,%edx
671 	xorl	(%ebp,%ebx,1),%edi
672 	movb	%dl,%bl
673 	xorl	0x200(%ebp,%ecx,1),%edi
674 	movb	%dh,%cl
675 	shrl	$16,%eax
676 	xorl	0x100(%ebp,%ebx,1),%edi
677 	movb	%ah,%bl
678 	shrl	$16,%edx
679 	xorl	0x300(%ebp,%ecx,1),%edi
680 	movb	%dh,%cl
681 	andl	$0xff,%eax
682 	andl	$0xff,%edx
683 	xorl	0x600(%ebp,%ebx,1),%edi
684 	xorl	0x700(%ebp,%ecx,1),%edi
685 	movl	(%esp),%ecx
686 	xorl	0x400(%ebp,%eax,1),%edi
687 	xorl	0x500(%ebp,%edx,1),%edi
688 	# Round 8
689 	movl	64(%ecx),%eax
690 	xorl	%ebx,%ebx
691 	movl	68(%ecx),%edx
692 	xorl	%edi,%eax
693 	xorl	%ecx,%ecx
694 	xorl	%edi,%edx
695 	andl	$0xfcfcfcfc,%eax
696 	andl	$0xcfcfcfcf,%edx
697 	movb	%al,%bl
698 	movb	%ah,%cl
699 	rorl	$4,%edx
700 	xorl	(%ebp,%ebx,1),%esi
701 	movb	%dl,%bl
702 	xorl	0x200(%ebp,%ecx,1),%esi
703 	movb	%dh,%cl
704 	shrl	$16,%eax
705 	xorl	0x100(%ebp,%ebx,1),%esi
706 	movb	%ah,%bl
707 	shrl	$16,%edx
708 	xorl	0x300(%ebp,%ecx,1),%esi
709 	movb	%dh,%cl
710 	andl	$0xff,%eax
711 	andl	$0xff,%edx
712 	xorl	0x600(%ebp,%ebx,1),%esi
713 	xorl	0x700(%ebp,%ecx,1),%esi
714 	movl	(%esp),%ecx
715 	xorl	0x400(%ebp,%eax,1),%esi
716 	xorl	0x500(%ebp,%edx,1),%esi
717 	# Round 7
718 	movl	56(%ecx),%eax
719 	xorl	%ebx,%ebx
720 	movl	60(%ecx),%edx
721 	xorl	%esi,%eax
722 	xorl	%ecx,%ecx
723 	xorl	%esi,%edx
724 	andl	$0xfcfcfcfc,%eax
725 	andl	$0xcfcfcfcf,%edx
726 	movb	%al,%bl
727 	movb	%ah,%cl
728 	rorl	$4,%edx
729 	xorl	(%ebp,%ebx,1),%edi
730 	movb	%dl,%bl
731 	xorl	0x200(%ebp,%ecx,1),%edi
732 	movb	%dh,%cl
733 	shrl	$16,%eax
734 	xorl	0x100(%ebp,%ebx,1),%edi
735 	movb	%ah,%bl
736 	shrl	$16,%edx
737 	xorl	0x300(%ebp,%ecx,1),%edi
738 	movb	%dh,%cl
739 	andl	$0xff,%eax
740 	andl	$0xff,%edx
741 	xorl	0x600(%ebp,%ebx,1),%edi
742 	xorl	0x700(%ebp,%ecx,1),%edi
743 	movl	(%esp),%ecx
744 	xorl	0x400(%ebp,%eax,1),%edi
745 	xorl	0x500(%ebp,%edx,1),%edi
746 	# Round 6
747 	movl	48(%ecx),%eax
748 	xorl	%ebx,%ebx
749 	movl	52(%ecx),%edx
750 	xorl	%edi,%eax
751 	xorl	%ecx,%ecx
752 	xorl	%edi,%edx
753 	andl	$0xfcfcfcfc,%eax
754 	andl	$0xcfcfcfcf,%edx
755 	movb	%al,%bl
756 	movb	%ah,%cl
757 	rorl	$4,%edx
758 	xorl	(%ebp,%ebx,1),%esi
759 	movb	%dl,%bl
760 	xorl	0x200(%ebp,%ecx,1),%esi
761 	movb	%dh,%cl
762 	shrl	$16,%eax
763 	xorl	0x100(%ebp,%ebx,1),%esi
764 	movb	%ah,%bl
765 	shrl	$16,%edx
766 	xorl	0x300(%ebp,%ecx,1),%esi
767 	movb	%dh,%cl
768 	andl	$0xff,%eax
769 	andl	$0xff,%edx
770 	xorl	0x600(%ebp,%ebx,1),%esi
771 	xorl	0x700(%ebp,%ecx,1),%esi
772 	movl	(%esp),%ecx
773 	xorl	0x400(%ebp,%eax,1),%esi
774 	xorl	0x500(%ebp,%edx,1),%esi
775 	# Round 5
776 	movl	40(%ecx),%eax
777 	xorl	%ebx,%ebx
778 	movl	44(%ecx),%edx
779 	xorl	%esi,%eax
780 	xorl	%ecx,%ecx
781 	xorl	%esi,%edx
782 	andl	$0xfcfcfcfc,%eax
783 	andl	$0xcfcfcfcf,%edx
784 	movb	%al,%bl
785 	movb	%ah,%cl
786 	rorl	$4,%edx
787 	xorl	(%ebp,%ebx,1),%edi
788 	movb	%dl,%bl
789 	xorl	0x200(%ebp,%ecx,1),%edi
790 	movb	%dh,%cl
791 	shrl	$16,%eax
792 	xorl	0x100(%ebp,%ebx,1),%edi
793 	movb	%ah,%bl
794 	shrl	$16,%edx
795 	xorl	0x300(%ebp,%ecx,1),%edi
796 	movb	%dh,%cl
797 	andl	$0xff,%eax
798 	andl	$0xff,%edx
799 	xorl	0x600(%ebp,%ebx,1),%edi
800 	xorl	0x700(%ebp,%ecx,1),%edi
801 	movl	(%esp),%ecx
802 	xorl	0x400(%ebp,%eax,1),%edi
803 	xorl	0x500(%ebp,%edx,1),%edi
804 	# Round 4
805 	movl	32(%ecx),%eax
806 	xorl	%ebx,%ebx
807 	movl	36(%ecx),%edx
808 	xorl	%edi,%eax
809 	xorl	%ecx,%ecx
810 	xorl	%edi,%edx
811 	andl	$0xfcfcfcfc,%eax
812 	andl	$0xcfcfcfcf,%edx
813 	movb	%al,%bl
814 	movb	%ah,%cl
815 	rorl	$4,%edx
816 	xorl	(%ebp,%ebx,1),%esi
817 	movb	%dl,%bl
818 	xorl	0x200(%ebp,%ecx,1),%esi
819 	movb	%dh,%cl
820 	shrl	$16,%eax
821 	xorl	0x100(%ebp,%ebx,1),%esi
822 	movb	%ah,%bl
823 	shrl	$16,%edx
824 	xorl	0x300(%ebp,%ecx,1),%esi
825 	movb	%dh,%cl
826 	andl	$0xff,%eax
827 	andl	$0xff,%edx
828 	xorl	0x600(%ebp,%ebx,1),%esi
829 	xorl	0x700(%ebp,%ecx,1),%esi
830 	movl	(%esp),%ecx
831 	xorl	0x400(%ebp,%eax,1),%esi
832 	xorl	0x500(%ebp,%edx,1),%esi
833 	# Round 3
834 	movl	24(%ecx),%eax
835 	xorl	%ebx,%ebx
836 	movl	28(%ecx),%edx
837 	xorl	%esi,%eax
838 	xorl	%ecx,%ecx
839 	xorl	%esi,%edx
840 	andl	$0xfcfcfcfc,%eax
841 	andl	$0xcfcfcfcf,%edx
842 	movb	%al,%bl
843 	movb	%ah,%cl
844 	rorl	$4,%edx
845 	xorl	(%ebp,%ebx,1),%edi
846 	movb	%dl,%bl
847 	xorl	0x200(%ebp,%ecx,1),%edi
848 	movb	%dh,%cl
849 	shrl	$16,%eax
850 	xorl	0x100(%ebp,%ebx,1),%edi
851 	movb	%ah,%bl
852 	shrl	$16,%edx
853 	xorl	0x300(%ebp,%ecx,1),%edi
854 	movb	%dh,%cl
855 	andl	$0xff,%eax
856 	andl	$0xff,%edx
857 	xorl	0x600(%ebp,%ebx,1),%edi
858 	xorl	0x700(%ebp,%ecx,1),%edi
859 	movl	(%esp),%ecx
860 	xorl	0x400(%ebp,%eax,1),%edi
861 	xorl	0x500(%ebp,%edx,1),%edi
862 	# Round 2
863 	movl	16(%ecx),%eax
864 	xorl	%ebx,%ebx
865 	movl	20(%ecx),%edx
866 	xorl	%edi,%eax
867 	xorl	%ecx,%ecx
868 	xorl	%edi,%edx
869 	andl	$0xfcfcfcfc,%eax
870 	andl	$0xcfcfcfcf,%edx
871 	movb	%al,%bl
872 	movb	%ah,%cl
873 	rorl	$4,%edx
874 	xorl	(%ebp,%ebx,1),%esi
875 	movb	%dl,%bl
876 	xorl	0x200(%ebp,%ecx,1),%esi
877 	movb	%dh,%cl
878 	shrl	$16,%eax
879 	xorl	0x100(%ebp,%ebx,1),%esi
880 	movb	%ah,%bl
881 	shrl	$16,%edx
882 	xorl	0x300(%ebp,%ecx,1),%esi
883 	movb	%dh,%cl
884 	andl	$0xff,%eax
885 	andl	$0xff,%edx
886 	xorl	0x600(%ebp,%ebx,1),%esi
887 	xorl	0x700(%ebp,%ecx,1),%esi
888 	movl	(%esp),%ecx
889 	xorl	0x400(%ebp,%eax,1),%esi
890 	xorl	0x500(%ebp,%edx,1),%esi
891 	# Round 1
892 	movl	8(%ecx),%eax
893 	xorl	%ebx,%ebx
894 	movl	12(%ecx),%edx
895 	xorl	%esi,%eax
896 	xorl	%ecx,%ecx
897 	xorl	%esi,%edx
898 	andl	$0xfcfcfcfc,%eax
899 	andl	$0xcfcfcfcf,%edx
900 	movb	%al,%bl
901 	movb	%ah,%cl
902 	rorl	$4,%edx
903 	xorl	(%ebp,%ebx,1),%edi
904 	movb	%dl,%bl
905 	xorl	0x200(%ebp,%ecx,1),%edi
906 	movb	%dh,%cl
907 	shrl	$16,%eax
908 	xorl	0x100(%ebp,%ebx,1),%edi
909 	movb	%ah,%bl
910 	shrl	$16,%edx
911 	xorl	0x300(%ebp,%ecx,1),%edi
912 	movb	%dh,%cl
913 	andl	$0xff,%eax
914 	andl	$0xff,%edx
915 	xorl	0x600(%ebp,%ebx,1),%edi
916 	xorl	0x700(%ebp,%ecx,1),%edi
917 	movl	(%esp),%ecx
918 	xorl	0x400(%ebp,%eax,1),%edi
919 	xorl	0x500(%ebp,%edx,1),%edi
920 	# Round 0
921 	movl	(%ecx),%eax
922 	xorl	%ebx,%ebx
923 	movl	4(%ecx),%edx
924 	xorl	%edi,%eax
925 	xorl	%ecx,%ecx
926 	xorl	%edi,%edx
927 	andl	$0xfcfcfcfc,%eax
928 	andl	$0xcfcfcfcf,%edx
929 	movb	%al,%bl
930 	movb	%ah,%cl
931 	rorl	$4,%edx
932 	xorl	(%ebp,%ebx,1),%esi
933 	movb	%dl,%bl
934 	xorl	0x200(%ebp,%ecx,1),%esi
935 	movb	%dh,%cl
936 	shrl	$16,%eax
937 	xorl	0x100(%ebp,%ebx,1),%esi
938 	movb	%ah,%bl
939 	shrl	$16,%edx
940 	xorl	0x300(%ebp,%ecx,1),%esi
941 	movb	%dh,%cl
942 	andl	$0xff,%eax
943 	andl	$0xff,%edx
944 	xorl	0x600(%ebp,%ebx,1),%esi
945 	xorl	0x700(%ebp,%ecx,1),%esi
946 	movl	(%esp),%ecx
947 	xorl	0x400(%ebp,%eax,1),%esi
948 	xorl	0x500(%ebp,%edx,1),%esi
949 	addl	$4,%esp
950 	ret
951 .globl	_DES_encrypt1
952 .align	4
953 _DES_encrypt1:
954 L_DES_encrypt1_begin:
955 	%ifdef __CET__
956 
957 .byte	243,15,30,251
958 	%endif
959 
960 	pushl	%esi
961 	pushl	%edi
962 
963 	# Load the 2 words
964 	movl	12(%esp),%esi
965 	xorl	%ecx,%ecx
966 	pushl	%ebx
967 	pushl	%ebp
968 	movl	(%esi),%eax
969 	movl	28(%esp),%ebx
970 	movl	4(%esi),%edi
971 
972 	# IP
973 	roll	$4,%eax
974 	movl	%eax,%esi
975 	xorl	%edi,%eax
976 	andl	$0xf0f0f0f0,%eax
977 	xorl	%eax,%esi
978 	xorl	%eax,%edi
979 
980 	roll	$20,%edi
981 	movl	%edi,%eax
982 	xorl	%esi,%edi
983 	andl	$0xfff0000f,%edi
984 	xorl	%edi,%eax
985 	xorl	%edi,%esi
986 
987 	roll	$14,%eax
988 	movl	%eax,%edi
989 	xorl	%esi,%eax
990 	andl	$0x33333333,%eax
991 	xorl	%eax,%edi
992 	xorl	%eax,%esi
993 
994 	roll	$22,%esi
995 	movl	%esi,%eax
996 	xorl	%edi,%esi
997 	andl	$0x03fc03fc,%esi
998 	xorl	%esi,%eax
999 	xorl	%esi,%edi
1000 
1001 	roll	$9,%eax
1002 	movl	%eax,%esi
1003 	xorl	%edi,%eax
1004 	andl	$0xaaaaaaaa,%eax
1005 	xorl	%eax,%esi
1006 	xorl	%eax,%edi
1007 
1008 	roll	$1,%edi
1009 	call	L000pic_point
1010 L000pic_point:
1011 	popl	%ebp
1012 	leal	Ldes_sptrans-L000pic_point(%ebp),%ebp
1013 	movl	24(%esp),%ecx
1014 	cmpl	$0,%ebx
1015 	je	L001decrypt
1016 	call	__x86_DES_encrypt
1017 	jmp	L002done
1018 L001decrypt:
1019 	call	__x86_DES_decrypt
1020 L002done:
1021 
1022 	# FP
1023 	movl	20(%esp),%edx
1024 	rorl	$1,%esi
1025 	movl	%edi,%eax
1026 	xorl	%esi,%edi
1027 	andl	$0xaaaaaaaa,%edi
1028 	xorl	%edi,%eax
1029 	xorl	%edi,%esi
1030 
1031 	roll	$23,%eax
1032 	movl	%eax,%edi
1033 	xorl	%esi,%eax
1034 	andl	$0x03fc03fc,%eax
1035 	xorl	%eax,%edi
1036 	xorl	%eax,%esi
1037 
1038 	roll	$10,%edi
1039 	movl	%edi,%eax
1040 	xorl	%esi,%edi
1041 	andl	$0x33333333,%edi
1042 	xorl	%edi,%eax
1043 	xorl	%edi,%esi
1044 
1045 	roll	$18,%esi
1046 	movl	%esi,%edi
1047 	xorl	%eax,%esi
1048 	andl	$0xfff0000f,%esi
1049 	xorl	%esi,%edi
1050 	xorl	%esi,%eax
1051 
1052 	roll	$12,%edi
1053 	movl	%edi,%esi
1054 	xorl	%eax,%edi
1055 	andl	$0xf0f0f0f0,%edi
1056 	xorl	%edi,%esi
1057 	xorl	%edi,%eax
1058 
1059 	rorl	$4,%eax
1060 	movl	%eax,(%edx)
1061 	movl	%esi,4(%edx)
1062 	popl	%ebp
1063 	popl	%ebx
1064 	popl	%edi
1065 	popl	%esi
1066 	ret
1067 .globl	_DES_encrypt2
1068 .align	4
1069 _DES_encrypt2:
1070 L_DES_encrypt2_begin:
1071 	%ifdef __CET__
1072 
1073 .byte	243,15,30,251
1074 	%endif
1075 
1076 	pushl	%esi
1077 	pushl	%edi
1078 
1079 	# Load the 2 words
1080 	movl	12(%esp),%eax
1081 	xorl	%ecx,%ecx
1082 	pushl	%ebx
1083 	pushl	%ebp
1084 	movl	(%eax),%esi
1085 	movl	28(%esp),%ebx
1086 	roll	$3,%esi
1087 	movl	4(%eax),%edi
1088 	roll	$3,%edi
1089 	call	L003pic_point
1090 L003pic_point:
1091 	popl	%ebp
1092 	leal	Ldes_sptrans-L003pic_point(%ebp),%ebp
1093 	movl	24(%esp),%ecx
1094 	cmpl	$0,%ebx
1095 	je	L004decrypt
1096 	call	__x86_DES_encrypt
1097 	jmp	L005done
1098 L004decrypt:
1099 	call	__x86_DES_decrypt
1100 L005done:
1101 
1102 	# Fixup
1103 	rorl	$3,%edi
1104 	movl	20(%esp),%eax
1105 	rorl	$3,%esi
1106 	movl	%edi,(%eax)
1107 	movl	%esi,4(%eax)
1108 	popl	%ebp
1109 	popl	%ebx
1110 	popl	%edi
1111 	popl	%esi
1112 	ret
1113 .globl	_DES_encrypt3
1114 .align	4
1115 _DES_encrypt3:
1116 L_DES_encrypt3_begin:
1117 	%ifdef __CET__
1118 
1119 .byte	243,15,30,251
1120 	%endif
1121 
1122 	pushl	%ebx
1123 	movl	8(%esp),%ebx
1124 	pushl	%ebp
1125 	pushl	%esi
1126 	pushl	%edi
1127 
1128 	# Load the data words
1129 	movl	(%ebx),%edi
1130 	movl	4(%ebx),%esi
1131 	subl	$12,%esp
1132 
1133 	# IP
1134 	roll	$4,%edi
1135 	movl	%edi,%edx
1136 	xorl	%esi,%edi
1137 	andl	$0xf0f0f0f0,%edi
1138 	xorl	%edi,%edx
1139 	xorl	%edi,%esi
1140 
1141 	roll	$20,%esi
1142 	movl	%esi,%edi
1143 	xorl	%edx,%esi
1144 	andl	$0xfff0000f,%esi
1145 	xorl	%esi,%edi
1146 	xorl	%esi,%edx
1147 
1148 	roll	$14,%edi
1149 	movl	%edi,%esi
1150 	xorl	%edx,%edi
1151 	andl	$0x33333333,%edi
1152 	xorl	%edi,%esi
1153 	xorl	%edi,%edx
1154 
1155 	roll	$22,%edx
1156 	movl	%edx,%edi
1157 	xorl	%esi,%edx
1158 	andl	$0x03fc03fc,%edx
1159 	xorl	%edx,%edi
1160 	xorl	%edx,%esi
1161 
1162 	roll	$9,%edi
1163 	movl	%edi,%edx
1164 	xorl	%esi,%edi
1165 	andl	$0xaaaaaaaa,%edi
1166 	xorl	%edi,%edx
1167 	xorl	%edi,%esi
1168 
1169 	rorl	$3,%edx
1170 	rorl	$2,%esi
1171 	movl	%esi,4(%ebx)
1172 	movl	36(%esp),%eax
1173 	movl	%edx,(%ebx)
1174 	movl	40(%esp),%edi
1175 	movl	44(%esp),%esi
1176 	movl	$1,8(%esp)
1177 	movl	%eax,4(%esp)
1178 	movl	%ebx,(%esp)
1179 	call	L_DES_encrypt2_begin
1180 	movl	$0,8(%esp)
1181 	movl	%edi,4(%esp)
1182 	movl	%ebx,(%esp)
1183 	call	L_DES_encrypt2_begin
1184 	movl	$1,8(%esp)
1185 	movl	%esi,4(%esp)
1186 	movl	%ebx,(%esp)
1187 	call	L_DES_encrypt2_begin
1188 	addl	$12,%esp
1189 	movl	(%ebx),%edi
1190 	movl	4(%ebx),%esi
1191 
1192 	# FP
1193 	roll	$2,%esi
1194 	roll	$3,%edi
1195 	movl	%edi,%eax
1196 	xorl	%esi,%edi
1197 	andl	$0xaaaaaaaa,%edi
1198 	xorl	%edi,%eax
1199 	xorl	%edi,%esi
1200 
1201 	roll	$23,%eax
1202 	movl	%eax,%edi
1203 	xorl	%esi,%eax
1204 	andl	$0x03fc03fc,%eax
1205 	xorl	%eax,%edi
1206 	xorl	%eax,%esi
1207 
1208 	roll	$10,%edi
1209 	movl	%edi,%eax
1210 	xorl	%esi,%edi
1211 	andl	$0x33333333,%edi
1212 	xorl	%edi,%eax
1213 	xorl	%edi,%esi
1214 
1215 	roll	$18,%esi
1216 	movl	%esi,%edi
1217 	xorl	%eax,%esi
1218 	andl	$0xfff0000f,%esi
1219 	xorl	%esi,%edi
1220 	xorl	%esi,%eax
1221 
1222 	roll	$12,%edi
1223 	movl	%edi,%esi
1224 	xorl	%eax,%edi
1225 	andl	$0xf0f0f0f0,%edi
1226 	xorl	%edi,%esi
1227 	xorl	%edi,%eax
1228 
1229 	rorl	$4,%eax
1230 	movl	%eax,(%ebx)
1231 	movl	%esi,4(%ebx)
1232 	popl	%edi
1233 	popl	%esi
1234 	popl	%ebp
1235 	popl	%ebx
1236 	ret
1237 .globl	_DES_decrypt3
1238 .align	4
1239 _DES_decrypt3:
1240 L_DES_decrypt3_begin:
1241 	%ifdef __CET__
1242 
1243 .byte	243,15,30,251
1244 	%endif
1245 
1246 	pushl	%ebx
1247 	movl	8(%esp),%ebx
1248 	pushl	%ebp
1249 	pushl	%esi
1250 	pushl	%edi
1251 
1252 	# Load the data words
1253 	movl	(%ebx),%edi
1254 	movl	4(%ebx),%esi
1255 	subl	$12,%esp
1256 
1257 	# IP
1258 	roll	$4,%edi
1259 	movl	%edi,%edx
1260 	xorl	%esi,%edi
1261 	andl	$0xf0f0f0f0,%edi
1262 	xorl	%edi,%edx
1263 	xorl	%edi,%esi
1264 
1265 	roll	$20,%esi
1266 	movl	%esi,%edi
1267 	xorl	%edx,%esi
1268 	andl	$0xfff0000f,%esi
1269 	xorl	%esi,%edi
1270 	xorl	%esi,%edx
1271 
1272 	roll	$14,%edi
1273 	movl	%edi,%esi
1274 	xorl	%edx,%edi
1275 	andl	$0x33333333,%edi
1276 	xorl	%edi,%esi
1277 	xorl	%edi,%edx
1278 
1279 	roll	$22,%edx
1280 	movl	%edx,%edi
1281 	xorl	%esi,%edx
1282 	andl	$0x03fc03fc,%edx
1283 	xorl	%edx,%edi
1284 	xorl	%edx,%esi
1285 
1286 	roll	$9,%edi
1287 	movl	%edi,%edx
1288 	xorl	%esi,%edi
1289 	andl	$0xaaaaaaaa,%edi
1290 	xorl	%edi,%edx
1291 	xorl	%edi,%esi
1292 
1293 	rorl	$3,%edx
1294 	rorl	$2,%esi
1295 	movl	%esi,4(%ebx)
1296 	movl	36(%esp),%esi
1297 	movl	%edx,(%ebx)
1298 	movl	40(%esp),%edi
1299 	movl	44(%esp),%eax
1300 	movl	$0,8(%esp)
1301 	movl	%eax,4(%esp)
1302 	movl	%ebx,(%esp)
1303 	call	L_DES_encrypt2_begin
1304 	movl	$1,8(%esp)
1305 	movl	%edi,4(%esp)
1306 	movl	%ebx,(%esp)
1307 	call	L_DES_encrypt2_begin
1308 	movl	$0,8(%esp)
1309 	movl	%esi,4(%esp)
1310 	movl	%ebx,(%esp)
1311 	call	L_DES_encrypt2_begin
1312 	addl	$12,%esp
1313 	movl	(%ebx),%edi
1314 	movl	4(%ebx),%esi
1315 
1316 	# FP
1317 	roll	$2,%esi
1318 	roll	$3,%edi
1319 	movl	%edi,%eax
1320 	xorl	%esi,%edi
1321 	andl	$0xaaaaaaaa,%edi
1322 	xorl	%edi,%eax
1323 	xorl	%edi,%esi
1324 
1325 	roll	$23,%eax
1326 	movl	%eax,%edi
1327 	xorl	%esi,%eax
1328 	andl	$0x03fc03fc,%eax
1329 	xorl	%eax,%edi
1330 	xorl	%eax,%esi
1331 
1332 	roll	$10,%edi
1333 	movl	%edi,%eax
1334 	xorl	%esi,%edi
1335 	andl	$0x33333333,%edi
1336 	xorl	%edi,%eax
1337 	xorl	%edi,%esi
1338 
1339 	roll	$18,%esi
1340 	movl	%esi,%edi
1341 	xorl	%eax,%esi
1342 	andl	$0xfff0000f,%esi
1343 	xorl	%esi,%edi
1344 	xorl	%esi,%eax
1345 
1346 	roll	$12,%edi
1347 	movl	%edi,%esi
1348 	xorl	%eax,%edi
1349 	andl	$0xf0f0f0f0,%edi
1350 	xorl	%edi,%esi
1351 	xorl	%edi,%eax
1352 
1353 	rorl	$4,%eax
1354 	movl	%eax,(%ebx)
1355 	movl	%esi,4(%ebx)
1356 	popl	%edi
1357 	popl	%esi
1358 	popl	%ebp
1359 	popl	%ebx
1360 	ret
1361 .globl	_DES_ncbc_encrypt
1362 .align	4
1363 _DES_ncbc_encrypt:
1364 L_DES_ncbc_encrypt_begin:
1365 	%ifdef __CET__
1366 
1367 .byte	243,15,30,251
1368 	%endif
1369 
1370 
1371 	pushl	%ebp
1372 	pushl	%ebx
1373 	pushl	%esi
1374 	pushl	%edi
1375 	movl	28(%esp),%ebp
1376 	# getting iv ptr from parameter 4
1377 	movl	36(%esp),%ebx
1378 	movl	(%ebx),%esi
1379 	movl	4(%ebx),%edi
1380 	pushl	%edi
1381 	pushl	%esi
1382 	pushl	%edi
1383 	pushl	%esi
1384 	movl	%esp,%ebx
1385 	movl	36(%esp),%esi
1386 	movl	40(%esp),%edi
1387 	# getting encrypt flag from parameter 5
1388 	movl	56(%esp),%ecx
1389 	# get and push parameter 5
1390 	pushl	%ecx
1391 	# get and push parameter 3
1392 	movl	52(%esp),%eax
1393 	pushl	%eax
1394 	pushl	%ebx
1395 	cmpl	$0,%ecx
1396 	jz	L006decrypt
1397 	andl	$4294967288,%ebp
1398 	movl	12(%esp),%eax
1399 	movl	16(%esp),%ebx
1400 	jz	L007encrypt_finish
1401 L008encrypt_loop:
1402 	movl	(%esi),%ecx
1403 	movl	4(%esi),%edx
1404 	xorl	%ecx,%eax
1405 	xorl	%edx,%ebx
1406 	movl	%eax,12(%esp)
1407 	movl	%ebx,16(%esp)
1408 	call	L_DES_encrypt1_begin
1409 	movl	12(%esp),%eax
1410 	movl	16(%esp),%ebx
1411 	movl	%eax,(%edi)
1412 	movl	%ebx,4(%edi)
1413 	addl	$8,%esi
1414 	addl	$8,%edi
1415 	subl	$8,%ebp
1416 	jnz	L008encrypt_loop
1417 L007encrypt_finish:
1418 	movl	56(%esp),%ebp
1419 	andl	$7,%ebp
1420 	jz	L009finish
1421 	call	L010PIC_point
1422 L010PIC_point:
1423 	popl	%edx
1424 	leal	L011cbc_enc_jmp_table-L010PIC_point(%edx),%ecx
1425 	movl	(%ecx,%ebp,4),%ebp
1426 	addl	%edx,%ebp
1427 	xorl	%ecx,%ecx
1428 	xorl	%edx,%edx
1429 	jmp	*%ebp
1430 L012ej7:
1431 	%ifdef __CET__
1432 
1433 .byte	243,15,30,251
1434 	%endif
1435 
1436 	movb	6(%esi),%dh
1437 	shll	$8,%edx
1438 L013ej6:
1439 	%ifdef __CET__
1440 
1441 .byte	243,15,30,251
1442 	%endif
1443 
1444 	movb	5(%esi),%dh
1445 L014ej5:
1446 	%ifdef __CET__
1447 
1448 .byte	243,15,30,251
1449 	%endif
1450 
1451 	movb	4(%esi),%dl
1452 L015ej4:
1453 	%ifdef __CET__
1454 
1455 .byte	243,15,30,251
1456 	%endif
1457 
1458 	movl	(%esi),%ecx
1459 	jmp	L016ejend
1460 L017ej3:
1461 	%ifdef __CET__
1462 
1463 .byte	243,15,30,251
1464 	%endif
1465 
1466 	movb	2(%esi),%ch
1467 	shll	$8,%ecx
1468 L018ej2:
1469 	%ifdef __CET__
1470 
1471 .byte	243,15,30,251
1472 	%endif
1473 
1474 	movb	1(%esi),%ch
1475 L019ej1:
1476 	%ifdef __CET__
1477 
1478 .byte	243,15,30,251
1479 	%endif
1480 
1481 	movb	(%esi),%cl
1482 L016ejend:
1483 	xorl	%ecx,%eax
1484 	xorl	%edx,%ebx
1485 	movl	%eax,12(%esp)
1486 	movl	%ebx,16(%esp)
1487 	call	L_DES_encrypt1_begin
1488 	movl	12(%esp),%eax
1489 	movl	16(%esp),%ebx
1490 	movl	%eax,(%edi)
1491 	movl	%ebx,4(%edi)
1492 	jmp	L009finish
1493 L006decrypt:
1494 	andl	$4294967288,%ebp
1495 	movl	20(%esp),%eax
1496 	movl	24(%esp),%ebx
1497 	jz	L020decrypt_finish
1498 L021decrypt_loop:
1499 	movl	(%esi),%eax
1500 	movl	4(%esi),%ebx
1501 	movl	%eax,12(%esp)
1502 	movl	%ebx,16(%esp)
1503 	call	L_DES_encrypt1_begin
1504 	movl	12(%esp),%eax
1505 	movl	16(%esp),%ebx
1506 	movl	20(%esp),%ecx
1507 	movl	24(%esp),%edx
1508 	xorl	%eax,%ecx
1509 	xorl	%ebx,%edx
1510 	movl	(%esi),%eax
1511 	movl	4(%esi),%ebx
1512 	movl	%ecx,(%edi)
1513 	movl	%edx,4(%edi)
1514 	movl	%eax,20(%esp)
1515 	movl	%ebx,24(%esp)
1516 	addl	$8,%esi
1517 	addl	$8,%edi
1518 	subl	$8,%ebp
1519 	jnz	L021decrypt_loop
1520 L020decrypt_finish:
1521 	movl	56(%esp),%ebp
1522 	andl	$7,%ebp
1523 	jz	L009finish
1524 	movl	(%esi),%eax
1525 	movl	4(%esi),%ebx
1526 	movl	%eax,12(%esp)
1527 	movl	%ebx,16(%esp)
1528 	call	L_DES_encrypt1_begin
1529 	movl	12(%esp),%eax
1530 	movl	16(%esp),%ebx
1531 	movl	20(%esp),%ecx
1532 	movl	24(%esp),%edx
1533 	xorl	%eax,%ecx
1534 	xorl	%ebx,%edx
1535 	movl	(%esi),%eax
1536 	movl	4(%esi),%ebx
1537 L022dj7:
1538 	rorl	$16,%edx
1539 	movb	%dl,6(%edi)
1540 	shrl	$16,%edx
1541 L023dj6:
1542 	movb	%dh,5(%edi)
1543 L024dj5:
1544 	movb	%dl,4(%edi)
1545 L025dj4:
1546 	movl	%ecx,(%edi)
1547 	jmp	L026djend
1548 L027dj3:
1549 	rorl	$16,%ecx
1550 	movb	%cl,2(%edi)
1551 	shll	$16,%ecx
1552 L028dj2:
1553 	movb	%ch,1(%esi)
1554 L029dj1:
1555 	movb	%cl,(%esi)
1556 L026djend:
1557 	jmp	L009finish
1558 L009finish:
1559 	movl	64(%esp),%ecx
1560 	addl	$28,%esp
1561 	movl	%eax,(%ecx)
1562 	movl	%ebx,4(%ecx)
1563 	popl	%edi
1564 	popl	%esi
1565 	popl	%ebx
1566 	popl	%ebp
1567 	ret
1568 .align	6,0x90
1569 L011cbc_enc_jmp_table:
1570 .long	0
1571 .long	L019ej1-L010PIC_point
1572 .long	L018ej2-L010PIC_point
1573 .long	L017ej3-L010PIC_point
1574 .long	L015ej4-L010PIC_point
1575 .long	L014ej5-L010PIC_point
1576 .long	L013ej6-L010PIC_point
1577 .long	L012ej7-L010PIC_point
1578 .align	6,0x90
1579 .globl	_DES_ede3_cbc_encrypt
1580 .align	4
1581 _DES_ede3_cbc_encrypt:
1582 L_DES_ede3_cbc_encrypt_begin:
1583 	%ifdef __CET__
1584 
1585 .byte	243,15,30,251
1586 	%endif
1587 
1588 
1589 	pushl	%ebp
1590 	pushl	%ebx
1591 	pushl	%esi
1592 	pushl	%edi
1593 	movl	28(%esp),%ebp
1594 	# getting iv ptr from parameter 6
1595 	movl	44(%esp),%ebx
1596 	movl	(%ebx),%esi
1597 	movl	4(%ebx),%edi
1598 	pushl	%edi
1599 	pushl	%esi
1600 	pushl	%edi
1601 	pushl	%esi
1602 	movl	%esp,%ebx
1603 	movl	36(%esp),%esi
1604 	movl	40(%esp),%edi
1605 	# getting encrypt flag from parameter 7
1606 	movl	64(%esp),%ecx
1607 	# get and push parameter 5
1608 	movl	56(%esp),%eax
1609 	pushl	%eax
1610 	# get and push parameter 4
1611 	movl	56(%esp),%eax
1612 	pushl	%eax
1613 	# get and push parameter 3
1614 	movl	56(%esp),%eax
1615 	pushl	%eax
1616 	pushl	%ebx
1617 	cmpl	$0,%ecx
1618 	jz	L030decrypt
1619 	andl	$4294967288,%ebp
1620 	movl	16(%esp),%eax
1621 	movl	20(%esp),%ebx
1622 	jz	L031encrypt_finish
1623 L032encrypt_loop:
1624 	movl	(%esi),%ecx
1625 	movl	4(%esi),%edx
1626 	xorl	%ecx,%eax
1627 	xorl	%edx,%ebx
1628 	movl	%eax,16(%esp)
1629 	movl	%ebx,20(%esp)
1630 	call	L_DES_encrypt3_begin
1631 	movl	16(%esp),%eax
1632 	movl	20(%esp),%ebx
1633 	movl	%eax,(%edi)
1634 	movl	%ebx,4(%edi)
1635 	addl	$8,%esi
1636 	addl	$8,%edi
1637 	subl	$8,%ebp
1638 	jnz	L032encrypt_loop
1639 L031encrypt_finish:
1640 	movl	60(%esp),%ebp
1641 	andl	$7,%ebp
1642 	jz	L033finish
1643 	call	L034PIC_point
1644 L034PIC_point:
1645 	popl	%edx
1646 	leal	L035cbc_enc_jmp_table-L034PIC_point(%edx),%ecx
1647 	movl	(%ecx,%ebp,4),%ebp
1648 	addl	%edx,%ebp
1649 	xorl	%ecx,%ecx
1650 	xorl	%edx,%edx
1651 	jmp	*%ebp
1652 L036ej7:
1653 	%ifdef __CET__
1654 
1655 .byte	243,15,30,251
1656 	%endif
1657 
1658 	movb	6(%esi),%dh
1659 	shll	$8,%edx
1660 L037ej6:
1661 	%ifdef __CET__
1662 
1663 .byte	243,15,30,251
1664 	%endif
1665 
1666 	movb	5(%esi),%dh
1667 L038ej5:
1668 	%ifdef __CET__
1669 
1670 .byte	243,15,30,251
1671 	%endif
1672 
1673 	movb	4(%esi),%dl
1674 L039ej4:
1675 	%ifdef __CET__
1676 
1677 .byte	243,15,30,251
1678 	%endif
1679 
1680 	movl	(%esi),%ecx
1681 	jmp	L040ejend
1682 L041ej3:
1683 	%ifdef __CET__
1684 
1685 .byte	243,15,30,251
1686 	%endif
1687 
1688 	movb	2(%esi),%ch
1689 	shll	$8,%ecx
1690 L042ej2:
1691 	%ifdef __CET__
1692 
1693 .byte	243,15,30,251
1694 	%endif
1695 
1696 	movb	1(%esi),%ch
1697 L043ej1:
1698 	%ifdef __CET__
1699 
1700 .byte	243,15,30,251
1701 	%endif
1702 
1703 	movb	(%esi),%cl
1704 L040ejend:
1705 	xorl	%ecx,%eax
1706 	xorl	%edx,%ebx
1707 	movl	%eax,16(%esp)
1708 	movl	%ebx,20(%esp)
1709 	call	L_DES_encrypt3_begin
1710 	movl	16(%esp),%eax
1711 	movl	20(%esp),%ebx
1712 	movl	%eax,(%edi)
1713 	movl	%ebx,4(%edi)
1714 	jmp	L033finish
1715 L030decrypt:
1716 	andl	$4294967288,%ebp
1717 	movl	24(%esp),%eax
1718 	movl	28(%esp),%ebx
1719 	jz	L044decrypt_finish
1720 L045decrypt_loop:
1721 	movl	(%esi),%eax
1722 	movl	4(%esi),%ebx
1723 	movl	%eax,16(%esp)
1724 	movl	%ebx,20(%esp)
1725 	call	L_DES_decrypt3_begin
1726 	movl	16(%esp),%eax
1727 	movl	20(%esp),%ebx
1728 	movl	24(%esp),%ecx
1729 	movl	28(%esp),%edx
1730 	xorl	%eax,%ecx
1731 	xorl	%ebx,%edx
1732 	movl	(%esi),%eax
1733 	movl	4(%esi),%ebx
1734 	movl	%ecx,(%edi)
1735 	movl	%edx,4(%edi)
1736 	movl	%eax,24(%esp)
1737 	movl	%ebx,28(%esp)
1738 	addl	$8,%esi
1739 	addl	$8,%edi
1740 	subl	$8,%ebp
1741 	jnz	L045decrypt_loop
1742 L044decrypt_finish:
1743 	movl	60(%esp),%ebp
1744 	andl	$7,%ebp
1745 	jz	L033finish
1746 	movl	(%esi),%eax
1747 	movl	4(%esi),%ebx
1748 	movl	%eax,16(%esp)
1749 	movl	%ebx,20(%esp)
1750 	call	L_DES_decrypt3_begin
1751 	movl	16(%esp),%eax
1752 	movl	20(%esp),%ebx
1753 	movl	24(%esp),%ecx
1754 	movl	28(%esp),%edx
1755 	xorl	%eax,%ecx
1756 	xorl	%ebx,%edx
1757 	movl	(%esi),%eax
1758 	movl	4(%esi),%ebx
1759 L046dj7:
1760 	rorl	$16,%edx
1761 	movb	%dl,6(%edi)
1762 	shrl	$16,%edx
1763 L047dj6:
1764 	movb	%dh,5(%edi)
1765 L048dj5:
1766 	movb	%dl,4(%edi)
1767 L049dj4:
1768 	movl	%ecx,(%edi)
1769 	jmp	L050djend
1770 L051dj3:
1771 	rorl	$16,%ecx
1772 	movb	%cl,2(%edi)
1773 	shll	$16,%ecx
1774 L052dj2:
1775 	movb	%ch,1(%esi)
1776 L053dj1:
1777 	movb	%cl,(%esi)
1778 L050djend:
1779 	jmp	L033finish
1780 L033finish:
1781 	movl	76(%esp),%ecx
1782 	addl	$32,%esp
1783 	movl	%eax,(%ecx)
1784 	movl	%ebx,4(%ecx)
1785 	popl	%edi
1786 	popl	%esi
1787 	popl	%ebx
1788 	popl	%ebp
1789 	ret
1790 .align	6,0x90
1791 L035cbc_enc_jmp_table:
1792 .long	0
1793 .long	L043ej1-L034PIC_point
1794 .long	L042ej2-L034PIC_point
1795 .long	L041ej3-L034PIC_point
1796 .long	L039ej4-L034PIC_point
1797 .long	L038ej5-L034PIC_point
1798 .long	L037ej6-L034PIC_point
1799 .long	L036ej7-L034PIC_point
1800 .align	6,0x90
1801 .align	6,0x90
1802 _DES_SPtrans:
1803 Ldes_sptrans:
1804 .long	34080768,524288,33554434,34080770
1805 .long	33554432,526338,524290,33554434
1806 .long	526338,34080768,34078720,2050
1807 .long	33556482,33554432,0,524290
1808 .long	524288,2,33556480,526336
1809 .long	34080770,34078720,2050,33556480
1810 .long	2,2048,526336,34078722
1811 .long	2048,33556482,34078722,0
1812 .long	0,34080770,33556480,524290
1813 .long	34080768,524288,2050,33556480
1814 .long	34078722,2048,526336,33554434
1815 .long	526338,2,33554434,34078720
1816 .long	34080770,526336,34078720,33556482
1817 .long	33554432,2050,524290,0
1818 .long	524288,33554432,33556482,34080768
1819 .long	2,34078722,2048,526338
1820 .long	1074823184,0,1081344,1074790400
1821 .long	1073741840,32784,1073774592,1081344
1822 .long	32768,1074790416,16,1073774592
1823 .long	1048592,1074823168,1074790400,16
1824 .long	1048576,1073774608,1074790416,32768
1825 .long	1081360,1073741824,0,1048592
1826 .long	1073774608,1081360,1074823168,1073741840
1827 .long	1073741824,1048576,32784,1074823184
1828 .long	1048592,1074823168,1073774592,1081360
1829 .long	1074823184,1048592,1073741840,0
1830 .long	1073741824,32784,1048576,1074790416
1831 .long	32768,1073741824,1081360,1073774608
1832 .long	1074823168,32768,0,1073741840
1833 .long	16,1074823184,1081344,1074790400
1834 .long	1074790416,1048576,32784,1073774592
1835 .long	1073774608,16,1074790400,1081344
1836 .long	67108865,67371264,256,67109121
1837 .long	262145,67108864,67109121,262400
1838 .long	67109120,262144,67371008,1
1839 .long	67371265,257,1,67371009
1840 .long	0,262145,67371264,256
1841 .long	257,67371265,262144,67108865
1842 .long	67371009,67109120,262401,67371008
1843 .long	262400,0,67108864,262401
1844 .long	67371264,256,1,262144
1845 .long	257,262145,67371008,67109121
1846 .long	0,67371264,262400,67371009
1847 .long	262145,67108864,67371265,1
1848 .long	262401,67108865,67108864,67371265
1849 .long	262144,67109120,67109121,262400
1850 .long	67109120,0,67371009,257
1851 .long	67108865,262401,256,67371008
1852 .long	4198408,268439552,8,272633864
1853 .long	0,272629760,268439560,4194312
1854 .long	272633856,268435464,268435456,4104
1855 .long	268435464,4198408,4194304,268435456
1856 .long	272629768,4198400,4096,8
1857 .long	4198400,268439560,272629760,4096
1858 .long	4104,0,4194312,272633856
1859 .long	268439552,272629768,272633864,4194304
1860 .long	272629768,4104,4194304,268435464
1861 .long	4198400,268439552,8,272629760
1862 .long	268439560,0,4096,4194312
1863 .long	0,272629768,272633856,4096
1864 .long	268435456,272633864,4198408,4194304
1865 .long	272633864,8,268439552,4198408
1866 .long	4194312,4198400,272629760,268439560
1867 .long	4104,268435456,268435464,272633856
1868 .long	134217728,65536,1024,134284320
1869 .long	134283296,134218752,66592,134283264
1870 .long	65536,32,134217760,66560
1871 .long	134218784,134283296,134284288,0
1872 .long	66560,134217728,65568,1056
1873 .long	134218752,66592,0,134217760
1874 .long	32,134218784,134284320,65568
1875 .long	134283264,1024,1056,134284288
1876 .long	134284288,134218784,65568,134283264
1877 .long	65536,32,134217760,134218752
1878 .long	134217728,66560,134284320,0
1879 .long	66592,134217728,1024,65568
1880 .long	134218784,1024,0,134284320
1881 .long	134283296,134284288,1056,65536
1882 .long	66560,134283296,134218752,1056
1883 .long	32,66592,134283264,134217760
1884 .long	2147483712,2097216,0,2149588992
1885 .long	2097216,8192,2147491904,2097152
1886 .long	8256,2149589056,2105344,2147483648
1887 .long	2147491840,2147483712,2149580800,2105408
1888 .long	2097152,2147491904,2149580864,0
1889 .long	8192,64,2149588992,2149580864
1890 .long	2149589056,2149580800,2147483648,8256
1891 .long	64,2105344,2105408,2147491840
1892 .long	8256,2147483648,2147491840,2105408
1893 .long	2149588992,2097216,0,2147491840
1894 .long	2147483648,8192,2149580864,2097152
1895 .long	2097216,2149589056,2105344,64
1896 .long	2149589056,2105344,2097152,2147491904
1897 .long	2147483712,2149580800,2105408,0
1898 .long	8192,2147483712,2147491904,2149588992
1899 .long	2149580800,8256,64,2149580864
1900 .long	16384,512,16777728,16777220
1901 .long	16794116,16388,16896,0
1902 .long	16777216,16777732,516,16793600
1903 .long	4,16794112,16793600,516
1904 .long	16777732,16384,16388,16794116
1905 .long	0,16777728,16777220,16896
1906 .long	16793604,16900,16794112,4
1907 .long	16900,16793604,512,16777216
1908 .long	16900,16793600,16793604,516
1909 .long	16384,512,16777216,16793604
1910 .long	16777732,16900,16896,0
1911 .long	512,16777220,4,16777728
1912 .long	0,16777732,16777728,16896
1913 .long	516,16384,16794116,16777216
1914 .long	16794112,4,16388,16794116
1915 .long	16777220,16794112,16793600,16388
1916 .long	545259648,545390592,131200,0
1917 .long	537001984,8388736,545259520,545390720
1918 .long	128,536870912,8519680,131200
1919 .long	8519808,537002112,536871040,545259520
1920 .long	131072,8519808,8388736,537001984
1921 .long	545390720,536871040,0,8519680
1922 .long	536870912,8388608,537002112,545259648
1923 .long	8388608,131072,545390592,128
1924 .long	8388608,131072,536871040,545390720
1925 .long	131200,536870912,0,8519680
1926 .long	545259648,537002112,537001984,8388736
1927 .long	545390592,128,8388736,537001984
1928 .long	545390720,8388608,545259520,536871040
1929 .long	8519680,131200,537002112,545259520
1930 .long	128,545390592,8519808,0
1931 .long	536870912,545259648,131072,8519808
1932