1 .text
2 .align	4
3 __x86_AES_encrypt_compact:
4 	%ifdef __CET__
5 
6 .byte	243,15,30,251
7 	%endif
8 
9 	movl	%edi,20(%esp)
10 	xorl	(%edi),%eax
11 	xorl	4(%edi),%ebx
12 	xorl	8(%edi),%ecx
13 	xorl	12(%edi),%edx
14 	movl	240(%edi),%esi
15 	leal	-2(%esi,%esi,1),%esi
16 	leal	(%edi,%esi,8),%esi
17 	movl	%esi,24(%esp)
18 	movl	-128(%ebp),%edi
19 	movl	-96(%ebp),%esi
20 	movl	-64(%ebp),%edi
21 	movl	-32(%ebp),%esi
22 	movl	(%ebp),%edi
23 	movl	32(%ebp),%esi
24 	movl	64(%ebp),%edi
25 	movl	96(%ebp),%esi
26 .align	4,0x90
27 L000loop:
28 	movl	%eax,%esi
29 	andl	$255,%esi
30 	movzbl	-128(%ebp,%esi,1),%esi
31 	movzbl	%bh,%edi
32 	movzbl	-128(%ebp,%edi,1),%edi
33 	shll	$8,%edi
34 	xorl	%edi,%esi
35 	movl	%ecx,%edi
36 	shrl	$16,%edi
37 	andl	$255,%edi
38 	movzbl	-128(%ebp,%edi,1),%edi
39 	shll	$16,%edi
40 	xorl	%edi,%esi
41 	movl	%edx,%edi
42 	shrl	$24,%edi
43 	movzbl	-128(%ebp,%edi,1),%edi
44 	shll	$24,%edi
45 	xorl	%edi,%esi
46 	movl	%esi,4(%esp)
47 	movl	%ebx,%esi
48 	andl	$255,%esi
49 	shrl	$16,%ebx
50 	movzbl	-128(%ebp,%esi,1),%esi
51 	movzbl	%ch,%edi
52 	movzbl	-128(%ebp,%edi,1),%edi
53 	shll	$8,%edi
54 	xorl	%edi,%esi
55 	movl	%edx,%edi
56 	shrl	$16,%edi
57 	andl	$255,%edi
58 	movzbl	-128(%ebp,%edi,1),%edi
59 	shll	$16,%edi
60 	xorl	%edi,%esi
61 	movl	%eax,%edi
62 	shrl	$24,%edi
63 	movzbl	-128(%ebp,%edi,1),%edi
64 	shll	$24,%edi
65 	xorl	%edi,%esi
66 	movl	%esi,8(%esp)
67 	movl	%ecx,%esi
68 	andl	$255,%esi
69 	shrl	$24,%ecx
70 	movzbl	-128(%ebp,%esi,1),%esi
71 	movzbl	%dh,%edi
72 	movzbl	-128(%ebp,%edi,1),%edi
73 	shll	$8,%edi
74 	xorl	%edi,%esi
75 	movl	%eax,%edi
76 	shrl	$16,%edi
77 	andl	$255,%edx
78 	andl	$255,%edi
79 	movzbl	-128(%ebp,%edi,1),%edi
80 	shll	$16,%edi
81 	xorl	%edi,%esi
82 	movzbl	%bh,%edi
83 	movzbl	-128(%ebp,%edi,1),%edi
84 	shll	$24,%edi
85 	xorl	%edi,%esi
86 	andl	$255,%edx
87 	movzbl	-128(%ebp,%edx,1),%edx
88 	movzbl	%ah,%eax
89 	movzbl	-128(%ebp,%eax,1),%eax
90 	shll	$8,%eax
91 	xorl	%eax,%edx
92 	movl	4(%esp),%eax
93 	andl	$255,%ebx
94 	movzbl	-128(%ebp,%ebx,1),%ebx
95 	shll	$16,%ebx
96 	xorl	%ebx,%edx
97 	movl	8(%esp),%ebx
98 	movzbl	-128(%ebp,%ecx,1),%ecx
99 	shll	$24,%ecx
100 	xorl	%ecx,%edx
101 	movl	%esi,%ecx
102 	movl	$2155905152,%ebp
103 	andl	%ecx,%ebp
104 	leal	(%ecx,%ecx,1),%edi
105 	movl	%ebp,%esi
106 	shrl	$7,%ebp
107 	andl	$4278124286,%edi
108 	subl	%ebp,%esi
109 	movl	%ecx,%ebp
110 	andl	$454761243,%esi
111 	rorl	$16,%ebp
112 	xorl	%edi,%esi
113 	movl	%ecx,%edi
114 	xorl	%esi,%ecx
115 	rorl	$24,%edi
116 	xorl	%ebp,%esi
117 	roll	$24,%ecx
118 	xorl	%edi,%esi
119 	movl	$2155905152,%ebp
120 	xorl	%esi,%ecx
121 	andl	%edx,%ebp
122 	leal	(%edx,%edx,1),%edi
123 	movl	%ebp,%esi
124 	shrl	$7,%ebp
125 	andl	$4278124286,%edi
126 	subl	%ebp,%esi
127 	movl	%edx,%ebp
128 	andl	$454761243,%esi
129 	rorl	$16,%ebp
130 	xorl	%edi,%esi
131 	movl	%edx,%edi
132 	xorl	%esi,%edx
133 	rorl	$24,%edi
134 	xorl	%ebp,%esi
135 	roll	$24,%edx
136 	xorl	%edi,%esi
137 	movl	$2155905152,%ebp
138 	xorl	%esi,%edx
139 	andl	%eax,%ebp
140 	leal	(%eax,%eax,1),%edi
141 	movl	%ebp,%esi
142 	shrl	$7,%ebp
143 	andl	$4278124286,%edi
144 	subl	%ebp,%esi
145 	movl	%eax,%ebp
146 	andl	$454761243,%esi
147 	rorl	$16,%ebp
148 	xorl	%edi,%esi
149 	movl	%eax,%edi
150 	xorl	%esi,%eax
151 	rorl	$24,%edi
152 	xorl	%ebp,%esi
153 	roll	$24,%eax
154 	xorl	%edi,%esi
155 	movl	$2155905152,%ebp
156 	xorl	%esi,%eax
157 	andl	%ebx,%ebp
158 	leal	(%ebx,%ebx,1),%edi
159 	movl	%ebp,%esi
160 	shrl	$7,%ebp
161 	andl	$4278124286,%edi
162 	subl	%ebp,%esi
163 	movl	%ebx,%ebp
164 	andl	$454761243,%esi
165 	rorl	$16,%ebp
166 	xorl	%edi,%esi
167 	movl	%ebx,%edi
168 	xorl	%esi,%ebx
169 	rorl	$24,%edi
170 	xorl	%ebp,%esi
171 	roll	$24,%ebx
172 	xorl	%edi,%esi
173 	xorl	%esi,%ebx
174 	movl	20(%esp),%edi
175 	movl	28(%esp),%ebp
176 	addl	$16,%edi
177 	xorl	(%edi),%eax
178 	xorl	4(%edi),%ebx
179 	xorl	8(%edi),%ecx
180 	xorl	12(%edi),%edx
181 	cmpl	24(%esp),%edi
182 	movl	%edi,20(%esp)
183 	jb	L000loop
184 	movl	%eax,%esi
185 	andl	$255,%esi
186 	movzbl	-128(%ebp,%esi,1),%esi
187 	movzbl	%bh,%edi
188 	movzbl	-128(%ebp,%edi,1),%edi
189 	shll	$8,%edi
190 	xorl	%edi,%esi
191 	movl	%ecx,%edi
192 	shrl	$16,%edi
193 	andl	$255,%edi
194 	movzbl	-128(%ebp,%edi,1),%edi
195 	shll	$16,%edi
196 	xorl	%edi,%esi
197 	movl	%edx,%edi
198 	shrl	$24,%edi
199 	movzbl	-128(%ebp,%edi,1),%edi
200 	shll	$24,%edi
201 	xorl	%edi,%esi
202 	movl	%esi,4(%esp)
203 	movl	%ebx,%esi
204 	andl	$255,%esi
205 	shrl	$16,%ebx
206 	movzbl	-128(%ebp,%esi,1),%esi
207 	movzbl	%ch,%edi
208 	movzbl	-128(%ebp,%edi,1),%edi
209 	shll	$8,%edi
210 	xorl	%edi,%esi
211 	movl	%edx,%edi
212 	shrl	$16,%edi
213 	andl	$255,%edi
214 	movzbl	-128(%ebp,%edi,1),%edi
215 	shll	$16,%edi
216 	xorl	%edi,%esi
217 	movl	%eax,%edi
218 	shrl	$24,%edi
219 	movzbl	-128(%ebp,%edi,1),%edi
220 	shll	$24,%edi
221 	xorl	%edi,%esi
222 	movl	%esi,8(%esp)
223 	movl	%ecx,%esi
224 	andl	$255,%esi
225 	shrl	$24,%ecx
226 	movzbl	-128(%ebp,%esi,1),%esi
227 	movzbl	%dh,%edi
228 	movzbl	-128(%ebp,%edi,1),%edi
229 	shll	$8,%edi
230 	xorl	%edi,%esi
231 	movl	%eax,%edi
232 	shrl	$16,%edi
233 	andl	$255,%edx
234 	andl	$255,%edi
235 	movzbl	-128(%ebp,%edi,1),%edi
236 	shll	$16,%edi
237 	xorl	%edi,%esi
238 	movzbl	%bh,%edi
239 	movzbl	-128(%ebp,%edi,1),%edi
240 	shll	$24,%edi
241 	xorl	%edi,%esi
242 	movl	20(%esp),%edi
243 	andl	$255,%edx
244 	movzbl	-128(%ebp,%edx,1),%edx
245 	movzbl	%ah,%eax
246 	movzbl	-128(%ebp,%eax,1),%eax
247 	shll	$8,%eax
248 	xorl	%eax,%edx
249 	movl	4(%esp),%eax
250 	andl	$255,%ebx
251 	movzbl	-128(%ebp,%ebx,1),%ebx
252 	shll	$16,%ebx
253 	xorl	%ebx,%edx
254 	movl	8(%esp),%ebx
255 	movzbl	-128(%ebp,%ecx,1),%ecx
256 	shll	$24,%ecx
257 	xorl	%ecx,%edx
258 	movl	%esi,%ecx
259 	xorl	16(%edi),%eax
260 	xorl	20(%edi),%ebx
261 	xorl	24(%edi),%ecx
262 	xorl	28(%edi),%edx
263 	ret
264 .align	4
265 __sse_AES_encrypt_compact:
266 	%ifdef __CET__
267 
268 .byte	243,15,30,251
269 	%endif
270 
271 	pxor	(%edi),%mm0
272 	pxor	8(%edi),%mm4
273 	movl	240(%edi),%esi
274 	leal	-2(%esi,%esi,1),%esi
275 	leal	(%edi,%esi,8),%esi
276 	movl	%esi,24(%esp)
277 	movl	$454761243,%eax
278 	movl	%eax,8(%esp)
279 	movl	%eax,12(%esp)
280 	movl	-128(%ebp),%eax
281 	movl	-96(%ebp),%ebx
282 	movl	-64(%ebp),%ecx
283 	movl	-32(%ebp),%edx
284 	movl	(%ebp),%eax
285 	movl	32(%ebp),%ebx
286 	movl	64(%ebp),%ecx
287 	movl	96(%ebp),%edx
288 .align	4,0x90
289 L001loop:
290 	pshufw	$8,%mm0,%mm1
291 	pshufw	$13,%mm4,%mm5
292 	movd	%mm1,%eax
293 	movd	%mm5,%ebx
294 	movl	%edi,20(%esp)
295 	movzbl	%al,%esi
296 	movzbl	%ah,%edx
297 	pshufw	$13,%mm0,%mm2
298 	movzbl	-128(%ebp,%esi,1),%ecx
299 	movzbl	%bl,%edi
300 	movzbl	-128(%ebp,%edx,1),%edx
301 	shrl	$16,%eax
302 	shll	$8,%edx
303 	movzbl	-128(%ebp,%edi,1),%esi
304 	movzbl	%bh,%edi
305 	shll	$16,%esi
306 	pshufw	$8,%mm4,%mm6
307 	orl	%esi,%ecx
308 	movzbl	-128(%ebp,%edi,1),%esi
309 	movzbl	%ah,%edi
310 	shll	$24,%esi
311 	shrl	$16,%ebx
312 	orl	%esi,%edx
313 	movzbl	-128(%ebp,%edi,1),%esi
314 	movzbl	%bh,%edi
315 	shll	$8,%esi
316 	orl	%esi,%ecx
317 	movzbl	-128(%ebp,%edi,1),%esi
318 	movzbl	%al,%edi
319 	shll	$24,%esi
320 	orl	%esi,%ecx
321 	movzbl	-128(%ebp,%edi,1),%esi
322 	movzbl	%bl,%edi
323 	movd	%mm2,%eax
324 	movd	%ecx,%mm0
325 	movzbl	-128(%ebp,%edi,1),%ecx
326 	movzbl	%ah,%edi
327 	shll	$16,%ecx
328 	movd	%mm6,%ebx
329 	orl	%esi,%ecx
330 	movzbl	-128(%ebp,%edi,1),%esi
331 	movzbl	%bh,%edi
332 	shll	$24,%esi
333 	orl	%esi,%ecx
334 	movzbl	-128(%ebp,%edi,1),%esi
335 	movzbl	%bl,%edi
336 	shll	$8,%esi
337 	shrl	$16,%ebx
338 	orl	%esi,%ecx
339 	movzbl	-128(%ebp,%edi,1),%esi
340 	movzbl	%al,%edi
341 	shrl	$16,%eax
342 	movd	%ecx,%mm1
343 	movzbl	-128(%ebp,%edi,1),%ecx
344 	movzbl	%ah,%edi
345 	shll	$16,%ecx
346 	andl	$255,%eax
347 	orl	%esi,%ecx
348 	punpckldq	%mm1,%mm0
349 	movzbl	-128(%ebp,%edi,1),%esi
350 	movzbl	%bh,%edi
351 	shll	$24,%esi
352 	andl	$255,%ebx
353 	movzbl	-128(%ebp,%eax,1),%eax
354 	orl	%esi,%ecx
355 	shll	$16,%eax
356 	movzbl	-128(%ebp,%edi,1),%esi
357 	orl	%eax,%edx
358 	shll	$8,%esi
359 	movzbl	-128(%ebp,%ebx,1),%ebx
360 	orl	%esi,%ecx
361 	orl	%ebx,%edx
362 	movl	20(%esp),%edi
363 	movd	%ecx,%mm4
364 	movd	%edx,%mm5
365 	punpckldq	%mm5,%mm4
366 	addl	$16,%edi
367 	cmpl	24(%esp),%edi
368 	ja	L002out
369 	movq	8(%esp),%mm2
370 	pxor	%mm3,%mm3
371 	pxor	%mm7,%mm7
372 	movq	%mm0,%mm1
373 	movq	%mm4,%mm5
374 	pcmpgtb	%mm0,%mm3
375 	pcmpgtb	%mm4,%mm7
376 	pand	%mm2,%mm3
377 	pand	%mm2,%mm7
378 	pshufw	$177,%mm0,%mm2
379 	pshufw	$177,%mm4,%mm6
380 	paddb	%mm0,%mm0
381 	paddb	%mm4,%mm4
382 	pxor	%mm3,%mm0
383 	pxor	%mm7,%mm4
384 	pshufw	$177,%mm2,%mm3
385 	pshufw	$177,%mm6,%mm7
386 	pxor	%mm0,%mm1
387 	pxor	%mm4,%mm5
388 	pxor	%mm2,%mm0
389 	pxor	%mm6,%mm4
390 	movq	%mm3,%mm2
391 	movq	%mm7,%mm6
392 	pslld	$8,%mm3
393 	pslld	$8,%mm7
394 	psrld	$24,%mm2
395 	psrld	$24,%mm6
396 	pxor	%mm3,%mm0
397 	pxor	%mm7,%mm4
398 	pxor	%mm2,%mm0
399 	pxor	%mm6,%mm4
400 	movq	%mm1,%mm3
401 	movq	%mm5,%mm7
402 	movq	(%edi),%mm2
403 	movq	8(%edi),%mm6
404 	psrld	$8,%mm1
405 	psrld	$8,%mm5
406 	movl	-128(%ebp),%eax
407 	pslld	$24,%mm3
408 	pslld	$24,%mm7
409 	movl	-64(%ebp),%ebx
410 	pxor	%mm1,%mm0
411 	pxor	%mm5,%mm4
412 	movl	(%ebp),%ecx
413 	pxor	%mm3,%mm0
414 	pxor	%mm7,%mm4
415 	movl	64(%ebp),%edx
416 	pxor	%mm2,%mm0
417 	pxor	%mm6,%mm4
418 	jmp	L001loop
419 .align	4,0x90
420 L002out:
421 	pxor	(%edi),%mm0
422 	pxor	8(%edi),%mm4
423 	ret
424 .align	4
425 __x86_AES_encrypt:
426 	%ifdef __CET__
427 
428 .byte	243,15,30,251
429 	%endif
430 
431 	movl	%edi,20(%esp)
432 	xorl	(%edi),%eax
433 	xorl	4(%edi),%ebx
434 	xorl	8(%edi),%ecx
435 	xorl	12(%edi),%edx
436 	movl	240(%edi),%esi
437 	leal	-2(%esi,%esi,1),%esi
438 	leal	(%edi,%esi,8),%esi
439 	movl	%esi,24(%esp)
440 .align	4,0x90
441 L003loop:
442 	movl	%eax,%esi
443 	andl	$255,%esi
444 	movl	(%ebp,%esi,8),%esi
445 	movzbl	%bh,%edi
446 	xorl	3(%ebp,%edi,8),%esi
447 	movl	%ecx,%edi
448 	shrl	$16,%edi
449 	andl	$255,%edi
450 	xorl	2(%ebp,%edi,8),%esi
451 	movl	%edx,%edi
452 	shrl	$24,%edi
453 	xorl	1(%ebp,%edi,8),%esi
454 	movl	%esi,4(%esp)
455 	movl	%ebx,%esi
456 	andl	$255,%esi
457 	shrl	$16,%ebx
458 	movl	(%ebp,%esi,8),%esi
459 	movzbl	%ch,%edi
460 	xorl	3(%ebp,%edi,8),%esi
461 	movl	%edx,%edi
462 	shrl	$16,%edi
463 	andl	$255,%edi
464 	xorl	2(%ebp,%edi,8),%esi
465 	movl	%eax,%edi
466 	shrl	$24,%edi
467 	xorl	1(%ebp,%edi,8),%esi
468 	movl	%esi,8(%esp)
469 	movl	%ecx,%esi
470 	andl	$255,%esi
471 	shrl	$24,%ecx
472 	movl	(%ebp,%esi,8),%esi
473 	movzbl	%dh,%edi
474 	xorl	3(%ebp,%edi,8),%esi
475 	movl	%eax,%edi
476 	shrl	$16,%edi
477 	andl	$255,%edx
478 	andl	$255,%edi
479 	xorl	2(%ebp,%edi,8),%esi
480 	movzbl	%bh,%edi
481 	xorl	1(%ebp,%edi,8),%esi
482 	movl	20(%esp),%edi
483 	movl	(%ebp,%edx,8),%edx
484 	movzbl	%ah,%eax
485 	xorl	3(%ebp,%eax,8),%edx
486 	movl	4(%esp),%eax
487 	andl	$255,%ebx
488 	xorl	2(%ebp,%ebx,8),%edx
489 	movl	8(%esp),%ebx
490 	xorl	1(%ebp,%ecx,8),%edx
491 	movl	%esi,%ecx
492 	addl	$16,%edi
493 	xorl	(%edi),%eax
494 	xorl	4(%edi),%ebx
495 	xorl	8(%edi),%ecx
496 	xorl	12(%edi),%edx
497 	cmpl	24(%esp),%edi
498 	movl	%edi,20(%esp)
499 	jb	L003loop
500 	movl	%eax,%esi
501 	andl	$255,%esi
502 	movl	2(%ebp,%esi,8),%esi
503 	andl	$255,%esi
504 	movzbl	%bh,%edi
505 	movl	(%ebp,%edi,8),%edi
506 	andl	$65280,%edi
507 	xorl	%edi,%esi
508 	movl	%ecx,%edi
509 	shrl	$16,%edi
510 	andl	$255,%edi
511 	movl	(%ebp,%edi,8),%edi
512 	andl	$16711680,%edi
513 	xorl	%edi,%esi
514 	movl	%edx,%edi
515 	shrl	$24,%edi
516 	movl	2(%ebp,%edi,8),%edi
517 	andl	$4278190080,%edi
518 	xorl	%edi,%esi
519 	movl	%esi,4(%esp)
520 	movl	%ebx,%esi
521 	andl	$255,%esi
522 	shrl	$16,%ebx
523 	movl	2(%ebp,%esi,8),%esi
524 	andl	$255,%esi
525 	movzbl	%ch,%edi
526 	movl	(%ebp,%edi,8),%edi
527 	andl	$65280,%edi
528 	xorl	%edi,%esi
529 	movl	%edx,%edi
530 	shrl	$16,%edi
531 	andl	$255,%edi
532 	movl	(%ebp,%edi,8),%edi
533 	andl	$16711680,%edi
534 	xorl	%edi,%esi
535 	movl	%eax,%edi
536 	shrl	$24,%edi
537 	movl	2(%ebp,%edi,8),%edi
538 	andl	$4278190080,%edi
539 	xorl	%edi,%esi
540 	movl	%esi,8(%esp)
541 	movl	%ecx,%esi
542 	andl	$255,%esi
543 	shrl	$24,%ecx
544 	movl	2(%ebp,%esi,8),%esi
545 	andl	$255,%esi
546 	movzbl	%dh,%edi
547 	movl	(%ebp,%edi,8),%edi
548 	andl	$65280,%edi
549 	xorl	%edi,%esi
550 	movl	%eax,%edi
551 	shrl	$16,%edi
552 	andl	$255,%edx
553 	andl	$255,%edi
554 	movl	(%ebp,%edi,8),%edi
555 	andl	$16711680,%edi
556 	xorl	%edi,%esi
557 	movzbl	%bh,%edi
558 	movl	2(%ebp,%edi,8),%edi
559 	andl	$4278190080,%edi
560 	xorl	%edi,%esi
561 	movl	20(%esp),%edi
562 	andl	$255,%edx
563 	movl	2(%ebp,%edx,8),%edx
564 	andl	$255,%edx
565 	movzbl	%ah,%eax
566 	movl	(%ebp,%eax,8),%eax
567 	andl	$65280,%eax
568 	xorl	%eax,%edx
569 	movl	4(%esp),%eax
570 	andl	$255,%ebx
571 	movl	(%ebp,%ebx,8),%ebx
572 	andl	$16711680,%ebx
573 	xorl	%ebx,%edx
574 	movl	8(%esp),%ebx
575 	movl	2(%ebp,%ecx,8),%ecx
576 	andl	$4278190080,%ecx
577 	xorl	%ecx,%edx
578 	movl	%esi,%ecx
579 	addl	$16,%edi
580 	xorl	(%edi),%eax
581 	xorl	4(%edi),%ebx
582 	xorl	8(%edi),%ecx
583 	xorl	12(%edi),%edx
584 	ret
585 .align	6,0x90
586 LAES_Te:
587 .long	2774754246,2774754246
588 .long	2222750968,2222750968
589 .long	2574743534,2574743534
590 .long	2373680118,2373680118
591 .long	234025727,234025727
592 .long	3177933782,3177933782
593 .long	2976870366,2976870366
594 .long	1422247313,1422247313
595 .long	1345335392,1345335392
596 .long	50397442,50397442
597 .long	2842126286,2842126286
598 .long	2099981142,2099981142
599 .long	436141799,436141799
600 .long	1658312629,1658312629
601 .long	3870010189,3870010189
602 .long	2591454956,2591454956
603 .long	1170918031,1170918031
604 .long	2642575903,2642575903
605 .long	1086966153,1086966153
606 .long	2273148410,2273148410
607 .long	368769775,368769775
608 .long	3948501426,3948501426
609 .long	3376891790,3376891790
610 .long	200339707,200339707
611 .long	3970805057,3970805057
612 .long	1742001331,1742001331
613 .long	4255294047,4255294047
614 .long	3937382213,3937382213
615 .long	3214711843,3214711843
616 .long	4154762323,4154762323
617 .long	2524082916,2524082916
618 .long	1539358875,1539358875
619 .long	3266819957,3266819957
620 .long	486407649,486407649
621 .long	2928907069,2928907069
622 .long	1780885068,1780885068
623 .long	1513502316,1513502316
624 .long	1094664062,1094664062
625 .long	49805301,49805301
626 .long	1338821763,1338821763
627 .long	1546925160,1546925160
628 .long	4104496465,4104496465
629 .long	887481809,887481809
630 .long	150073849,150073849
631 .long	2473685474,2473685474
632 .long	1943591083,1943591083
633 .long	1395732834,1395732834
634 .long	1058346282,1058346282
635 .long	201589768,201589768
636 .long	1388824469,1388824469
637 .long	1696801606,1696801606
638 .long	1589887901,1589887901
639 .long	672667696,672667696
640 .long	2711000631,2711000631
641 .long	251987210,251987210
642 .long	3046808111,3046808111
643 .long	151455502,151455502
644 .long	907153956,907153956
645 .long	2608889883,2608889883
646 .long	1038279391,1038279391
647 .long	652995533,652995533
648 .long	1764173646,1764173646
649 .long	3451040383,3451040383
650 .long	2675275242,2675275242
651 .long	453576978,453576978
652 .long	2659418909,2659418909
653 .long	1949051992,1949051992
654 .long	773462580,773462580
655 .long	756751158,756751158
656 .long	2993581788,2993581788
657 .long	3998898868,3998898868
658 .long	4221608027,4221608027
659 .long	4132590244,4132590244
660 .long	1295727478,1295727478
661 .long	1641469623,1641469623
662 .long	3467883389,3467883389
663 .long	2066295122,2066295122
664 .long	1055122397,1055122397
665 .long	1898917726,1898917726
666 .long	2542044179,2542044179
667 .long	4115878822,4115878822
668 .long	1758581177,1758581177
669 .long	0,0
670 .long	753790401,753790401
671 .long	1612718144,1612718144
672 .long	536673507,536673507
673 .long	3367088505,3367088505
674 .long	3982187446,3982187446
675 .long	3194645204,3194645204
676 .long	1187761037,1187761037
677 .long	3653156455,3653156455
678 .long	1262041458,1262041458
679 .long	3729410708,3729410708
680 .long	3561770136,3561770136
681 .long	3898103984,3898103984
682 .long	1255133061,1255133061
683 .long	1808847035,1808847035
684 .long	720367557,720367557
685 .long	3853167183,3853167183
686 .long	385612781,385612781
687 .long	3309519750,3309519750
688 .long	3612167578,3612167578
689 .long	1429418854,1429418854
690 .long	2491778321,2491778321
691 .long	3477423498,3477423498
692 .long	284817897,284817897
693 .long	100794884,100794884
694 .long	2172616702,2172616702
695 .long	4031795360,4031795360
696 .long	1144798328,1144798328
697 .long	3131023141,3131023141
698 .long	3819481163,3819481163
699 .long	4082192802,4082192802
700 .long	4272137053,4272137053
701 .long	3225436288,3225436288
702 .long	2324664069,2324664069
703 .long	2912064063,2912064063
704 .long	3164445985,3164445985
705 .long	1211644016,1211644016
706 .long	83228145,83228145
707 .long	3753688163,3753688163
708 .long	3249976951,3249976951
709 .long	1977277103,1977277103
710 .long	1663115586,1663115586
711 .long	806359072,806359072
712 .long	452984805,452984805
713 .long	250868733,250868733
714 .long	1842533055,1842533055
715 .long	1288555905,1288555905
716 .long	336333848,336333848
717 .long	890442534,890442534
718 .long	804056259,804056259
719 .long	3781124030,3781124030
720 .long	2727843637,2727843637
721 .long	3427026056,3427026056
722 .long	957814574,957814574
723 .long	1472513171,1472513171
724 .long	4071073621,4071073621
725 .long	2189328124,2189328124
726 .long	1195195770,1195195770
727 .long	2892260552,2892260552
728 .long	3881655738,3881655738
729 .long	723065138,723065138
730 .long	2507371494,2507371494
731 .long	2690670784,2690670784
732 .long	2558624025,2558624025
733 .long	3511635870,3511635870
734 .long	2145180835,2145180835
735 .long	1713513028,1713513028
736 .long	2116692564,2116692564
737 .long	2878378043,2878378043
738 .long	2206763019,2206763019
739 .long	3393603212,3393603212
740 .long	703524551,703524551
741 .long	3552098411,3552098411
742 .long	1007948840,1007948840
743 .long	2044649127,2044649127
744 .long	3797835452,3797835452
745 .long	487262998,487262998
746 .long	1994120109,1994120109
747 .long	1004593371,1004593371
748 .long	1446130276,1446130276
749 .long	1312438900,1312438900
750 .long	503974420,503974420
751 .long	3679013266,3679013266
752 .long	168166924,168166924
753 .long	1814307912,1814307912
754 .long	3831258296,3831258296
755 .long	1573044895,1573044895
756 .long	1859376061,1859376061
757 .long	4021070915,4021070915
758 .long	2791465668,2791465668
759 .long	2828112185,2828112185
760 .long	2761266481,2761266481
761 .long	937747667,937747667
762 .long	2339994098,2339994098
763 .long	854058965,854058965
764 .long	1137232011,1137232011
765 .long	1496790894,1496790894
766 .long	3077402074,3077402074
767 .long	2358086913,2358086913
768 .long	1691735473,1691735473
769 .long	3528347292,3528347292
770 .long	3769215305,3769215305
771 .long	3027004632,3027004632
772 .long	4199962284,4199962284
773 .long	133494003,133494003
774 .long	636152527,636152527
775 .long	2942657994,2942657994
776 .long	2390391540,2390391540
777 .long	3920539207,3920539207
778 .long	403179536,403179536
779 .long	3585784431,3585784431
780 .long	2289596656,2289596656
781 .long	1864705354,1864705354
782 .long	1915629148,1915629148
783 .long	605822008,605822008
784 .long	4054230615,4054230615
785 .long	3350508659,3350508659
786 .long	1371981463,1371981463
787 .long	602466507,602466507
788 .long	2094914977,2094914977
789 .long	2624877800,2624877800
790 .long	555687742,555687742
791 .long	3712699286,3712699286
792 .long	3703422305,3703422305
793 .long	2257292045,2257292045
794 .long	2240449039,2240449039
795 .long	2423288032,2423288032
796 .long	1111375484,1111375484
797 .long	3300242801,3300242801
798 .long	2858837708,2858837708
799 .long	3628615824,3628615824
800 .long	84083462,84083462
801 .long	32962295,32962295
802 .long	302911004,302911004
803 .long	2741068226,2741068226
804 .long	1597322602,1597322602
805 .long	4183250862,4183250862
806 .long	3501832553,3501832553
807 .long	2441512471,2441512471
808 .long	1489093017,1489093017
809 .long	656219450,656219450
810 .long	3114180135,3114180135
811 .long	954327513,954327513
812 .long	335083755,335083755
813 .long	3013122091,3013122091
814 .long	856756514,856756514
815 .long	3144247762,3144247762
816 .long	1893325225,1893325225
817 .long	2307821063,2307821063
818 .long	2811532339,2811532339
819 .long	3063651117,3063651117
820 .long	572399164,572399164
821 .long	2458355477,2458355477
822 .long	552200649,552200649
823 .long	1238290055,1238290055
824 .long	4283782570,4283782570
825 .long	2015897680,2015897680
826 .long	2061492133,2061492133
827 .long	2408352771,2408352771
828 .long	4171342169,4171342169
829 .long	2156497161,2156497161
830 .long	386731290,386731290
831 .long	3669999461,3669999461
832 .long	837215959,837215959
833 .long	3326231172,3326231172
834 .long	3093850320,3093850320
835 .long	3275833730,3275833730
836 .long	2962856233,2962856233
837 .long	1999449434,1999449434
838 .long	286199582,286199582
839 .long	3417354363,3417354363
840 .long	4233385128,4233385128
841 .long	3602627437,3602627437
842 .long	974525996,974525996
843 .byte	99,124,119,123,242,107,111,197
844 .byte	48,1,103,43,254,215,171,118
845 .byte	202,130,201,125,250,89,71,240
846 .byte	173,212,162,175,156,164,114,192
847 .byte	183,253,147,38,54,63,247,204
848 .byte	52,165,229,241,113,216,49,21
849 .byte	4,199,35,195,24,150,5,154
850 .byte	7,18,128,226,235,39,178,117
851 .byte	9,131,44,26,27,110,90,160
852 .byte	82,59,214,179,41,227,47,132
853 .byte	83,209,0,237,32,252,177,91
854 .byte	106,203,190,57,74,76,88,207
855 .byte	208,239,170,251,67,77,51,133
856 .byte	69,249,2,127,80,60,159,168
857 .byte	81,163,64,143,146,157,56,245
858 .byte	188,182,218,33,16,255,243,210
859 .byte	205,12,19,236,95,151,68,23
860 .byte	196,167,126,61,100,93,25,115
861 .byte	96,129,79,220,34,42,144,136
862 .byte	70,238,184,20,222,94,11,219
863 .byte	224,50,58,10,73,6,36,92
864 .byte	194,211,172,98,145,149,228,121
865 .byte	231,200,55,109,141,213,78,169
866 .byte	108,86,244,234,101,122,174,8
867 .byte	186,120,37,46,28,166,180,198
868 .byte	232,221,116,31,75,189,139,138
869 .byte	112,62,181,102,72,3,246,14
870 .byte	97,53,87,185,134,193,29,158
871 .byte	225,248,152,17,105,217,142,148
872 .byte	155,30,135,233,206,85,40,223
873 .byte	140,161,137,13,191,230,66,104
874 .byte	65,153,45,15,176,84,187,22
875 .byte	99,124,119,123,242,107,111,197
876 .byte	48,1,103,43,254,215,171,118
877 .byte	202,130,201,125,250,89,71,240
878 .byte	173,212,162,175,156,164,114,192
879 .byte	183,253,147,38,54,63,247,204
880 .byte	52,165,229,241,113,216,49,21
881 .byte	4,199,35,195,24,150,5,154
882 .byte	7,18,128,226,235,39,178,117
883 .byte	9,131,44,26,27,110,90,160
884 .byte	82,59,214,179,41,227,47,132
885 .byte	83,209,0,237,32,252,177,91
886 .byte	106,203,190,57,74,76,88,207
887 .byte	208,239,170,251,67,77,51,133
888 .byte	69,249,2,127,80,60,159,168
889 .byte	81,163,64,143,146,157,56,245
890 .byte	188,182,218,33,16,255,243,210
891 .byte	205,12,19,236,95,151,68,23
892 .byte	196,167,126,61,100,93,25,115
893 .byte	96,129,79,220,34,42,144,136
894 .byte	70,238,184,20,222,94,11,219
895 .byte	224,50,58,10,73,6,36,92
896 .byte	194,211,172,98,145,149,228,121
897 .byte	231,200,55,109,141,213,78,169
898 .byte	108,86,244,234,101,122,174,8
899 .byte	186,120,37,46,28,166,180,198
900 .byte	232,221,116,31,75,189,139,138
901 .byte	112,62,181,102,72,3,246,14
902 .byte	97,53,87,185,134,193,29,158
903 .byte	225,248,152,17,105,217,142,148
904 .byte	155,30,135,233,206,85,40,223
905 .byte	140,161,137,13,191,230,66,104
906 .byte	65,153,45,15,176,84,187,22
907 .byte	99,124,119,123,242,107,111,197
908 .byte	48,1,103,43,254,215,171,118
909 .byte	202,130,201,125,250,89,71,240
910 .byte	173,212,162,175,156,164,114,192
911 .byte	183,253,147,38,54,63,247,204
912 .byte	52,165,229,241,113,216,49,21
913 .byte	4,199,35,195,24,150,5,154
914 .byte	7,18,128,226,235,39,178,117
915 .byte	9,131,44,26,27,110,90,160
916 .byte	82,59,214,179,41,227,47,132
917 .byte	83,209,0,237,32,252,177,91
918 .byte	106,203,190,57,74,76,88,207
919 .byte	208,239,170,251,67,77,51,133
920 .byte	69,249,2,127,80,60,159,168
921 .byte	81,163,64,143,146,157,56,245
922 .byte	188,182,218,33,16,255,243,210
923 .byte	205,12,19,236,95,151,68,23
924 .byte	196,167,126,61,100,93,25,115
925 .byte	96,129,79,220,34,42,144,136
926 .byte	70,238,184,20,222,94,11,219
927 .byte	224,50,58,10,73,6,36,92
928 .byte	194,211,172,98,145,149,228,121
929 .byte	231,200,55,109,141,213,78,169
930 .byte	108,86,244,234,101,122,174,8
931 .byte	186,120,37,46,28,166,180,198
932 .byte	232,221,116,31,75,189,139,138
933 .byte	112,62,181,102,72,3,246,14
934 .byte	97,53,87,185,134,193,29,158
935 .byte	225,248,152,17,105,217,142,148
936 .byte	155,30,135,233,206,85,40,223
937 .byte	140,161,137,13,191,230,66,104
938 .byte	65,153,45,15,176,84,187,22
939 .byte	99,124,119,123,242,107,111,197
940 .byte	48,1,103,43,254,215,171,118
941 .byte	202,130,201,125,250,89,71,240
942 .byte	173,212,162,175,156,164,114,192
943 .byte	183,253,147,38,54,63,247,204
944 .byte	52,165,229,241,113,216,49,21
945 .byte	4,199,35,195,24,150,5,154
946 .byte	7,18,128,226,235,39,178,117
947 .byte	9,131,44,26,27,110,90,160
948 .byte	82,59,214,179,41,227,47,132
949 .byte	83,209,0,237,32,252,177,91
950 .byte	106,203,190,57,74,76,88,207
951 .byte	208,239,170,251,67,77,51,133
952 .byte	69,249,2,127,80,60,159,168
953 .byte	81,163,64,143,146,157,56,245
954 .byte	188,182,218,33,16,255,243,210
955 .byte	205,12,19,236,95,151,68,23
956 .byte	196,167,126,61,100,93,25,115
957 .byte	96,129,79,220,34,42,144,136
958 .byte	70,238,184,20,222,94,11,219
959 .byte	224,50,58,10,73,6,36,92
960 .byte	194,211,172,98,145,149,228,121
961 .byte	231,200,55,109,141,213,78,169
962 .byte	108,86,244,234,101,122,174,8
963 .byte	186,120,37,46,28,166,180,198
964 .byte	232,221,116,31,75,189,139,138
965 .byte	112,62,181,102,72,3,246,14
966 .byte	97,53,87,185,134,193,29,158
967 .byte	225,248,152,17,105,217,142,148
968 .byte	155,30,135,233,206,85,40,223
969 .byte	140,161,137,13,191,230,66,104
970 .byte	65,153,45,15,176,84,187,22
971 .long	1,2,4,8
972 .long	16,32,64,128
973 .long	27,54,0,0
974 .long	0,0,0,0
975 .globl	_AES_encrypt
976 .align	4
977 _AES_encrypt:
978 L_AES_encrypt_begin:
979 	%ifdef __CET__
980 
981 .byte	243,15,30,251
982 	%endif
983 
984 	pushl	%ebp
985 	pushl	%ebx
986 	pushl	%esi
987 	pushl	%edi
988 	movl	20(%esp),%esi
989 	movl	28(%esp),%edi
990 	movl	%esp,%eax
991 	subl	$36,%esp
992 	andl	$-64,%esp
993 	leal	-127(%edi),%ebx
994 	subl	%esp,%ebx
995 	negl	%ebx
996 	andl	$960,%ebx
997 	subl	%ebx,%esp
998 	addl	$4,%esp
999 	movl	%eax,28(%esp)
1000 	call	L004pic_point
1001 L004pic_point:
1002 	popl	%ebp
1003 	movl	L_OPENSSL_ia32cap_P$non_lazy_ptr-L004pic_point(%ebp),%eax
1004 	leal	LAES_Te-L004pic_point(%ebp),%ebp
1005 	leal	764(%esp),%ebx
1006 	subl	%ebp,%ebx
1007 	andl	$768,%ebx
1008 	leal	2176(%ebp,%ebx,1),%ebp
1009 	btl	$25,(%eax)
1010 	jnc	L005x86
1011 	movq	(%esi),%mm0
1012 	movq	8(%esi),%mm4
1013 	call	__sse_AES_encrypt_compact
1014 	movl	28(%esp),%esp
1015 	movl	24(%esp),%esi
1016 	movq	%mm0,(%esi)
1017 	movq	%mm4,8(%esi)
1018 	emms
1019 	popl	%edi
1020 	popl	%esi
1021 	popl	%ebx
1022 	popl	%ebp
1023 	ret
1024 .align	4,0x90
1025 L005x86:
1026 	movl	%ebp,24(%esp)
1027 	movl	(%esi),%eax
1028 	movl	4(%esi),%ebx
1029 	movl	8(%esi),%ecx
1030 	movl	12(%esi),%edx
1031 	call	__x86_AES_encrypt_compact
1032 	movl	28(%esp),%esp
1033 	movl	24(%esp),%esi
1034 	movl	%eax,(%esi)
1035 	movl	%ebx,4(%esi)
1036 	movl	%ecx,8(%esi)
1037 	movl	%edx,12(%esi)
1038 	popl	%edi
1039 	popl	%esi
1040 	popl	%ebx
1041 	popl	%ebp
1042 	ret
1043 .align	4
1044 __x86_AES_decrypt_compact:
1045 	%ifdef __CET__
1046 
1047 .byte	243,15,30,251
1048 	%endif
1049 
1050 	movl	%edi,20(%esp)
1051 	xorl	(%edi),%eax
1052 	xorl	4(%edi),%ebx
1053 	xorl	8(%edi),%ecx
1054 	xorl	12(%edi),%edx
1055 	movl	240(%edi),%esi
1056 	leal	-2(%esi,%esi,1),%esi
1057 	leal	(%edi,%esi,8),%esi
1058 	movl	%esi,24(%esp)
1059 	movl	-128(%ebp),%edi
1060 	movl	-96(%ebp),%esi
1061 	movl	-64(%ebp),%edi
1062 	movl	-32(%ebp),%esi
1063 	movl	(%ebp),%edi
1064 	movl	32(%ebp),%esi
1065 	movl	64(%ebp),%edi
1066 	movl	96(%ebp),%esi
1067 .align	4,0x90
1068 L006loop:
1069 	movl	%eax,%esi
1070 	andl	$255,%esi
1071 	movzbl	-128(%ebp,%esi,1),%esi
1072 	movzbl	%dh,%edi
1073 	movzbl	-128(%ebp,%edi,1),%edi
1074 	shll	$8,%edi
1075 	xorl	%edi,%esi
1076 	movl	%ecx,%edi
1077 	shrl	$16,%edi
1078 	andl	$255,%edi
1079 	movzbl	-128(%ebp,%edi,1),%edi
1080 	shll	$16,%edi
1081 	xorl	%edi,%esi
1082 	movl	%ebx,%edi
1083 	shrl	$24,%edi
1084 	movzbl	-128(%ebp,%edi,1),%edi
1085 	shll	$24,%edi
1086 	xorl	%edi,%esi
1087 	movl	%esi,4(%esp)
1088 	movl	%ebx,%esi
1089 	andl	$255,%esi
1090 	movzbl	-128(%ebp,%esi,1),%esi
1091 	movzbl	%ah,%edi
1092 	movzbl	-128(%ebp,%edi,1),%edi
1093 	shll	$8,%edi
1094 	xorl	%edi,%esi
1095 	movl	%edx,%edi
1096 	shrl	$16,%edi
1097 	andl	$255,%edi
1098 	movzbl	-128(%ebp,%edi,1),%edi
1099 	shll	$16,%edi
1100 	xorl	%edi,%esi
1101 	movl	%ecx,%edi
1102 	shrl	$24,%edi
1103 	movzbl	-128(%ebp,%edi,1),%edi
1104 	shll	$24,%edi
1105 	xorl	%edi,%esi
1106 	movl	%esi,8(%esp)
1107 	movl	%ecx,%esi
1108 	andl	$255,%esi
1109 	movzbl	-128(%ebp,%esi,1),%esi
1110 	movzbl	%bh,%edi
1111 	movzbl	-128(%ebp,%edi,1),%edi
1112 	shll	$8,%edi
1113 	xorl	%edi,%esi
1114 	movl	%eax,%edi
1115 	shrl	$16,%edi
1116 	andl	$255,%edi
1117 	movzbl	-128(%ebp,%edi,1),%edi
1118 	shll	$16,%edi
1119 	xorl	%edi,%esi
1120 	movl	%edx,%edi
1121 	shrl	$24,%edi
1122 	movzbl	-128(%ebp,%edi,1),%edi
1123 	shll	$24,%edi
1124 	xorl	%edi,%esi
1125 	andl	$255,%edx
1126 	movzbl	-128(%ebp,%edx,1),%edx
1127 	movzbl	%ch,%ecx
1128 	movzbl	-128(%ebp,%ecx,1),%ecx
1129 	shll	$8,%ecx
1130 	xorl	%ecx,%edx
1131 	movl	%esi,%ecx
1132 	shrl	$16,%ebx
1133 	andl	$255,%ebx
1134 	movzbl	-128(%ebp,%ebx,1),%ebx
1135 	shll	$16,%ebx
1136 	xorl	%ebx,%edx
1137 	shrl	$24,%eax
1138 	movzbl	-128(%ebp,%eax,1),%eax
1139 	shll	$24,%eax
1140 	xorl	%eax,%edx
1141 	movl	$2155905152,%edi
1142 	andl	%ecx,%edi
1143 	movl	%edi,%esi
1144 	shrl	$7,%edi
1145 	leal	(%ecx,%ecx,1),%eax
1146 	subl	%edi,%esi
1147 	andl	$4278124286,%eax
1148 	andl	$454761243,%esi
1149 	xorl	%esi,%eax
1150 	movl	$2155905152,%edi
1151 	andl	%eax,%edi
1152 	movl	%edi,%esi
1153 	shrl	$7,%edi
1154 	leal	(%eax,%eax,1),%ebx
1155 	subl	%edi,%esi
1156 	andl	$4278124286,%ebx
1157 	andl	$454761243,%esi
1158 	xorl	%ecx,%eax
1159 	xorl	%esi,%ebx
1160 	movl	$2155905152,%edi
1161 	andl	%ebx,%edi
1162 	movl	%edi,%esi
1163 	shrl	$7,%edi
1164 	leal	(%ebx,%ebx,1),%ebp
1165 	subl	%edi,%esi
1166 	andl	$4278124286,%ebp
1167 	andl	$454761243,%esi
1168 	xorl	%ecx,%ebx
1169 	roll	$8,%ecx
1170 	xorl	%esi,%ebp
1171 	xorl	%eax,%ecx
1172 	xorl	%ebp,%eax
1173 	xorl	%ebx,%ecx
1174 	xorl	%ebp,%ebx
1175 	roll	$24,%eax
1176 	xorl	%ebp,%ecx
1177 	roll	$16,%ebx
1178 	xorl	%eax,%ecx
1179 	roll	$8,%ebp
1180 	xorl	%ebx,%ecx
1181 	movl	4(%esp),%eax
1182 	xorl	%ebp,%ecx
1183 	movl	%ecx,12(%esp)
1184 	movl	$2155905152,%edi
1185 	andl	%edx,%edi
1186 	movl	%edi,%esi
1187 	shrl	$7,%edi
1188 	leal	(%edx,%edx,1),%ebx
1189 	subl	%edi,%esi
1190 	andl	$4278124286,%ebx
1191 	andl	$454761243,%esi
1192 	xorl	%esi,%ebx
1193 	movl	$2155905152,%edi
1194 	andl	%ebx,%edi
1195 	movl	%edi,%esi
1196 	shrl	$7,%edi
1197 	leal	(%ebx,%ebx,1),%ecx
1198 	subl	%edi,%esi
1199 	andl	$4278124286,%ecx
1200 	andl	$454761243,%esi
1201 	xorl	%edx,%ebx
1202 	xorl	%esi,%ecx
1203 	movl	$2155905152,%edi
1204 	andl	%ecx,%edi
1205 	movl	%edi,%esi
1206 	shrl	$7,%edi
1207 	leal	(%ecx,%ecx,1),%ebp
1208 	subl	%edi,%esi
1209 	andl	$4278124286,%ebp
1210 	andl	$454761243,%esi
1211 	xorl	%edx,%ecx
1212 	roll	$8,%edx
1213 	xorl	%esi,%ebp
1214 	xorl	%ebx,%edx
1215 	xorl	%ebp,%ebx
1216 	xorl	%ecx,%edx
1217 	xorl	%ebp,%ecx
1218 	roll	$24,%ebx
1219 	xorl	%ebp,%edx
1220 	roll	$16,%ecx
1221 	xorl	%ebx,%edx
1222 	roll	$8,%ebp
1223 	xorl	%ecx,%edx
1224 	movl	8(%esp),%ebx
1225 	xorl	%ebp,%edx
1226 	movl	%edx,16(%esp)
1227 	movl	$2155905152,%edi
1228 	andl	%eax,%edi
1229 	movl	%edi,%esi
1230 	shrl	$7,%edi
1231 	leal	(%eax,%eax,1),%ecx
1232 	subl	%edi,%esi
1233 	andl	$4278124286,%ecx
1234 	andl	$454761243,%esi
1235 	xorl	%esi,%ecx
1236 	movl	$2155905152,%edi
1237 	andl	%ecx,%edi
1238 	movl	%edi,%esi
1239 	shrl	$7,%edi
1240 	leal	(%ecx,%ecx,1),%edx
1241 	subl	%edi,%esi
1242 	andl	$4278124286,%edx
1243 	andl	$454761243,%esi
1244 	xorl	%eax,%ecx
1245 	xorl	%esi,%edx
1246 	movl	$2155905152,%edi
1247 	andl	%edx,%edi
1248 	movl	%edi,%esi
1249 	shrl	$7,%edi
1250 	leal	(%edx,%edx,1),%ebp
1251 	subl	%edi,%esi
1252 	andl	$4278124286,%ebp
1253 	andl	$454761243,%esi
1254 	xorl	%eax,%edx
1255 	roll	$8,%eax
1256 	xorl	%esi,%ebp
1257 	xorl	%ecx,%eax
1258 	xorl	%ebp,%ecx
1259 	xorl	%edx,%eax
1260 	xorl	%ebp,%edx
1261 	roll	$24,%ecx
1262 	xorl	%ebp,%eax
1263 	roll	$16,%edx
1264 	xorl	%ecx,%eax
1265 	roll	$8,%ebp
1266 	xorl	%edx,%eax
1267 	xorl	%ebp,%eax
1268 	movl	$2155905152,%edi
1269 	andl	%ebx,%edi
1270 	movl	%edi,%esi
1271 	shrl	$7,%edi
1272 	leal	(%ebx,%ebx,1),%ecx
1273 	subl	%edi,%esi
1274 	andl	$4278124286,%ecx
1275 	andl	$454761243,%esi
1276 	xorl	%esi,%ecx
1277 	movl	$2155905152,%edi
1278 	andl	%ecx,%edi
1279 	movl	%edi,%esi
1280 	shrl	$7,%edi
1281 	leal	(%ecx,%ecx,1),%edx
1282 	subl	%edi,%esi
1283 	andl	$4278124286,%edx
1284 	andl	$454761243,%esi
1285 	xorl	%ebx,%ecx
1286 	xorl	%esi,%edx
1287 	movl	$2155905152,%edi
1288 	andl	%edx,%edi
1289 	movl	%edi,%esi
1290 	shrl	$7,%edi
1291 	leal	(%edx,%edx,1),%ebp
1292 	subl	%edi,%esi
1293 	andl	$4278124286,%ebp
1294 	andl	$454761243,%esi
1295 	xorl	%ebx,%edx
1296 	roll	$8,%ebx
1297 	xorl	%esi,%ebp
1298 	xorl	%ecx,%ebx
1299 	xorl	%ebp,%ecx
1300 	xorl	%edx,%ebx
1301 	xorl	%ebp,%edx
1302 	roll	$24,%ecx
1303 	xorl	%ebp,%ebx
1304 	roll	$16,%edx
1305 	xorl	%ecx,%ebx
1306 	roll	$8,%ebp
1307 	xorl	%edx,%ebx
1308 	movl	12(%esp),%ecx
1309 	xorl	%ebp,%ebx
1310 	movl	16(%esp),%edx
1311 	movl	20(%esp),%edi
1312 	movl	28(%esp),%ebp
1313 	addl	$16,%edi
1314 	xorl	(%edi),%eax
1315 	xorl	4(%edi),%ebx
1316 	xorl	8(%edi),%ecx
1317 	xorl	12(%edi),%edx
1318 	cmpl	24(%esp),%edi
1319 	movl	%edi,20(%esp)
1320 	jb	L006loop
1321 	movl	%eax,%esi
1322 	andl	$255,%esi
1323 	movzbl	-128(%ebp,%esi,1),%esi
1324 	movzbl	%dh,%edi
1325 	movzbl	-128(%ebp,%edi,1),%edi
1326 	shll	$8,%edi
1327 	xorl	%edi,%esi
1328 	movl	%ecx,%edi
1329 	shrl	$16,%edi
1330 	andl	$255,%edi
1331 	movzbl	-128(%ebp,%edi,1),%edi
1332 	shll	$16,%edi
1333 	xorl	%edi,%esi
1334 	movl	%ebx,%edi
1335 	shrl	$24,%edi
1336 	movzbl	-128(%ebp,%edi,1),%edi
1337 	shll	$24,%edi
1338 	xorl	%edi,%esi
1339 	movl	%esi,4(%esp)
1340 	movl	%ebx,%esi
1341 	andl	$255,%esi
1342 	movzbl	-128(%ebp,%esi,1),%esi
1343 	movzbl	%ah,%edi
1344 	movzbl	-128(%ebp,%edi,1),%edi
1345 	shll	$8,%edi
1346 	xorl	%edi,%esi
1347 	movl	%edx,%edi
1348 	shrl	$16,%edi
1349 	andl	$255,%edi
1350 	movzbl	-128(%ebp,%edi,1),%edi
1351 	shll	$16,%edi
1352 	xorl	%edi,%esi
1353 	movl	%ecx,%edi
1354 	shrl	$24,%edi
1355 	movzbl	-128(%ebp,%edi,1),%edi
1356 	shll	$24,%edi
1357 	xorl	%edi,%esi
1358 	movl	%esi,8(%esp)
1359 	movl	%ecx,%esi
1360 	andl	$255,%esi
1361 	movzbl	-128(%ebp,%esi,1),%esi
1362 	movzbl	%bh,%edi
1363 	movzbl	-128(%ebp,%edi,1),%edi
1364 	shll	$8,%edi
1365 	xorl	%edi,%esi
1366 	movl	%eax,%edi
1367 	shrl	$16,%edi
1368 	andl	$255,%edi
1369 	movzbl	-128(%ebp,%edi,1),%edi
1370 	shll	$16,%edi
1371 	xorl	%edi,%esi
1372 	movl	%edx,%edi
1373 	shrl	$24,%edi
1374 	movzbl	-128(%ebp,%edi,1),%edi
1375 	shll	$24,%edi
1376 	xorl	%edi,%esi
1377 	movl	20(%esp),%edi
1378 	andl	$255,%edx
1379 	movzbl	-128(%ebp,%edx,1),%edx
1380 	movzbl	%ch,%ecx
1381 	movzbl	-128(%ebp,%ecx,1),%ecx
1382 	shll	$8,%ecx
1383 	xorl	%ecx,%edx
1384 	movl	%esi,%ecx
1385 	shrl	$16,%ebx
1386 	andl	$255,%ebx
1387 	movzbl	-128(%ebp,%ebx,1),%ebx
1388 	shll	$16,%ebx
1389 	xorl	%ebx,%edx
1390 	movl	8(%esp),%ebx
1391 	shrl	$24,%eax
1392 	movzbl	-128(%ebp,%eax,1),%eax
1393 	shll	$24,%eax
1394 	xorl	%eax,%edx
1395 	movl	4(%esp),%eax
1396 	xorl	16(%edi),%eax
1397 	xorl	20(%edi),%ebx
1398 	xorl	24(%edi),%ecx
1399 	xorl	28(%edi),%edx
1400 	ret
1401 .align	4
1402 __sse_AES_decrypt_compact:
1403 	%ifdef __CET__
1404 
1405 .byte	243,15,30,251
1406 	%endif
1407 
1408 	pxor	(%edi),%mm0
1409 	pxor	8(%edi),%mm4
1410 	movl	240(%edi),%esi
1411 	leal	-2(%esi,%esi,1),%esi
1412 	leal	(%edi,%esi,8),%esi
1413 	movl	%esi,24(%esp)
1414 	movl	$454761243,%eax
1415 	movl	%eax,8(%esp)
1416 	movl	%eax,12(%esp)
1417 	movl	-128(%ebp),%eax
1418 	movl	-96(%ebp),%ebx
1419 	movl	-64(%ebp),%ecx
1420 	movl	-32(%ebp),%edx
1421 	movl	(%ebp),%eax
1422 	movl	32(%ebp),%ebx
1423 	movl	64(%ebp),%ecx
1424 	movl	96(%ebp),%edx
1425 .align	4,0x90
1426 L007loop:
1427 	pshufw	$12,%mm0,%mm1
1428 	pshufw	$9,%mm4,%mm5
1429 	movd	%mm1,%eax
1430 	movd	%mm5,%ebx
1431 	movl	%edi,20(%esp)
1432 	movzbl	%al,%esi
1433 	movzbl	%ah,%edx
1434 	pshufw	$6,%mm0,%mm2
1435 	movzbl	-128(%ebp,%esi,1),%ecx
1436 	movzbl	%bl,%edi
1437 	movzbl	-128(%ebp,%edx,1),%edx
1438 	shrl	$16,%eax
1439 	shll	$8,%edx
1440 	movzbl	-128(%ebp,%edi,1),%esi
1441 	movzbl	%bh,%edi
1442 	shll	$16,%esi
1443 	pshufw	$3,%mm4,%mm6
1444 	orl	%esi,%ecx
1445 	movzbl	-128(%ebp,%edi,1),%esi
1446 	movzbl	%ah,%edi
1447 	shll	$24,%esi
1448 	shrl	$16,%ebx
1449 	orl	%esi,%edx
1450 	movzbl	-128(%ebp,%edi,1),%esi
1451 	movzbl	%bh,%edi
1452 	shll	$24,%esi
1453 	orl	%esi,%ecx
1454 	movzbl	-128(%ebp,%edi,1),%esi
1455 	movzbl	%al,%edi
1456 	shll	$8,%esi
1457 	movd	%mm2,%eax
1458 	orl	%esi,%ecx
1459 	movzbl	-128(%ebp,%edi,1),%esi
1460 	movzbl	%bl,%edi
1461 	shll	$16,%esi
1462 	movd	%mm6,%ebx
1463 	movd	%ecx,%mm0
1464 	movzbl	-128(%ebp,%edi,1),%ecx
1465 	movzbl	%al,%edi
1466 	orl	%esi,%ecx
1467 	movzbl	-128(%ebp,%edi,1),%esi
1468 	movzbl	%bl,%edi
1469 	orl	%esi,%edx
1470 	movzbl	-128(%ebp,%edi,1),%esi
1471 	movzbl	%ah,%edi
1472 	shll	$16,%esi
1473 	shrl	$16,%eax
1474 	orl	%esi,%edx
1475 	movzbl	-128(%ebp,%edi,1),%esi
1476 	movzbl	%bh,%edi
1477 	shrl	$16,%ebx
1478 	shll	$8,%esi
1479 	movd	%edx,%mm1
1480 	movzbl	-128(%ebp,%edi,1),%edx
1481 	movzbl	%bh,%edi
1482 	shll	$24,%edx
1483 	andl	$255,%ebx
1484 	orl	%esi,%edx
1485 	punpckldq	%mm1,%mm0
1486 	movzbl	-128(%ebp,%edi,1),%esi
1487 	movzbl	%al,%edi
1488 	shll	$8,%esi
1489 	movzbl	%ah,%eax
1490 	movzbl	-128(%ebp,%ebx,1),%ebx
1491 	orl	%esi,%ecx
1492 	movzbl	-128(%ebp,%edi,1),%esi
1493 	orl	%ebx,%edx
1494 	shll	$16,%esi
1495 	movzbl	-128(%ebp,%eax,1),%eax
1496 	orl	%esi,%edx
1497 	shll	$24,%eax
1498 	orl	%eax,%ecx
1499 	movl	20(%esp),%edi
1500 	movd	%edx,%mm4
1501 	movd	%ecx,%mm5
1502 	punpckldq	%mm5,%mm4
1503 	addl	$16,%edi
1504 	cmpl	24(%esp),%edi
1505 	ja	L008out
1506 	movq	%mm0,%mm3
1507 	movq	%mm4,%mm7
1508 	pshufw	$228,%mm0,%mm2
1509 	pshufw	$228,%mm4,%mm6
1510 	movq	%mm0,%mm1
1511 	movq	%mm4,%mm5
1512 	pshufw	$177,%mm0,%mm0
1513 	pshufw	$177,%mm4,%mm4
1514 	pslld	$8,%mm2
1515 	pslld	$8,%mm6
1516 	psrld	$8,%mm3
1517 	psrld	$8,%mm7
1518 	pxor	%mm2,%mm0
1519 	pxor	%mm6,%mm4
1520 	pxor	%mm3,%mm0
1521 	pxor	%mm7,%mm4
1522 	pslld	$16,%mm2
1523 	pslld	$16,%mm6
1524 	psrld	$16,%mm3
1525 	psrld	$16,%mm7
1526 	pxor	%mm2,%mm0
1527 	pxor	%mm6,%mm4
1528 	pxor	%mm3,%mm0
1529 	pxor	%mm7,%mm4
1530 	movq	8(%esp),%mm3
1531 	pxor	%mm2,%mm2
1532 	pxor	%mm6,%mm6
1533 	pcmpgtb	%mm1,%mm2
1534 	pcmpgtb	%mm5,%mm6
1535 	pand	%mm3,%mm2
1536 	pand	%mm3,%mm6
1537 	paddb	%mm1,%mm1
1538 	paddb	%mm5,%mm5
1539 	pxor	%mm2,%mm1
1540 	pxor	%mm6,%mm5
1541 	movq	%mm1,%mm3
1542 	movq	%mm5,%mm7
1543 	movq	%mm1,%mm2
1544 	movq	%mm5,%mm6
1545 	pxor	%mm1,%mm0
1546 	pxor	%mm5,%mm4
1547 	pslld	$24,%mm3
1548 	pslld	$24,%mm7
1549 	psrld	$8,%mm2
1550 	psrld	$8,%mm6
1551 	pxor	%mm3,%mm0
1552 	pxor	%mm7,%mm4
1553 	pxor	%mm2,%mm0
1554 	pxor	%mm6,%mm4
1555 	movq	8(%esp),%mm2
1556 	pxor	%mm3,%mm3
1557 	pxor	%mm7,%mm7
1558 	pcmpgtb	%mm1,%mm3
1559 	pcmpgtb	%mm5,%mm7
1560 	pand	%mm2,%mm3
1561 	pand	%mm2,%mm7
1562 	paddb	%mm1,%mm1
1563 	paddb	%mm5,%mm5
1564 	pxor	%mm3,%mm1
1565 	pxor	%mm7,%mm5
1566 	pshufw	$177,%mm1,%mm3
1567 	pshufw	$177,%mm5,%mm7
1568 	pxor	%mm1,%mm0
1569 	pxor	%mm5,%mm4
1570 	pxor	%mm3,%mm0
1571 	pxor	%mm7,%mm4
1572 	pxor	%mm3,%mm3
1573 	pxor	%mm7,%mm7
1574 	pcmpgtb	%mm1,%mm3
1575 	pcmpgtb	%mm5,%mm7
1576 	pand	%mm2,%mm3
1577 	pand	%mm2,%mm7
1578 	paddb	%mm1,%mm1
1579 	paddb	%mm5,%mm5
1580 	pxor	%mm3,%mm1
1581 	pxor	%mm7,%mm5
1582 	pxor	%mm1,%mm0
1583 	pxor	%mm5,%mm4
1584 	movq	%mm1,%mm3
1585 	movq	%mm5,%mm7
1586 	pshufw	$177,%mm1,%mm2
1587 	pshufw	$177,%mm5,%mm6
1588 	pxor	%mm2,%mm0
1589 	pxor	%mm6,%mm4
1590 	pslld	$8,%mm1
1591 	pslld	$8,%mm5
1592 	psrld	$8,%mm3
1593 	psrld	$8,%mm7
1594 	movq	(%edi),%mm2
1595 	movq	8(%edi),%mm6
1596 	pxor	%mm1,%mm0
1597 	pxor	%mm5,%mm4
1598 	pxor	%mm3,%mm0
1599 	pxor	%mm7,%mm4
1600 	movl	-128(%ebp),%eax
1601 	pslld	$16,%mm1
1602 	pslld	$16,%mm5
1603 	movl	-64(%ebp),%ebx
1604 	psrld	$16,%mm3
1605 	psrld	$16,%mm7
1606 	movl	(%ebp),%ecx
1607 	pxor	%mm1,%mm0
1608 	pxor	%mm5,%mm4
1609 	movl	64(%ebp),%edx
1610 	pxor	%mm3,%mm0
1611 	pxor	%mm7,%mm4
1612 	pxor	%mm2,%mm0
1613 	pxor	%mm6,%mm4
1614 	jmp	L007loop
1615 .align	4,0x90
1616 L008out:
1617 	pxor	(%edi),%mm0
1618 	pxor	8(%edi),%mm4
1619 	ret
1620 .align	4
1621 __x86_AES_decrypt:
1622 	%ifdef __CET__
1623 
1624 .byte	243,15,30,251
1625 	%endif
1626 
1627 	movl	%edi,20(%esp)
1628 	xorl	(%edi),%eax
1629 	xorl	4(%edi),%ebx
1630 	xorl	8(%edi),%ecx
1631 	xorl	12(%edi),%edx
1632 	movl	240(%edi),%esi
1633 	leal	-2(%esi,%esi,1),%esi
1634 	leal	(%edi,%esi,8),%esi
1635 	movl	%esi,24(%esp)
1636 .align	4,0x90
1637 L009loop:
1638 	movl	%eax,%esi
1639 	andl	$255,%esi
1640 	movl	(%ebp,%esi,8),%esi
1641 	movzbl	%dh,%edi
1642 	xorl	3(%ebp,%edi,8),%esi
1643 	movl	%ecx,%edi
1644 	shrl	$16,%edi
1645 	andl	$255,%edi
1646 	xorl	2(%ebp,%edi,8),%esi
1647 	movl	%ebx,%edi
1648 	shrl	$24,%edi
1649 	xorl	1(%ebp,%edi,8),%esi
1650 	movl	%esi,4(%esp)
1651 	movl	%ebx,%esi
1652 	andl	$255,%esi
1653 	movl	(%ebp,%esi,8),%esi
1654 	movzbl	%ah,%edi
1655 	xorl	3(%ebp,%edi,8),%esi
1656 	movl	%edx,%edi
1657 	shrl	$16,%edi
1658 	andl	$255,%edi
1659 	xorl	2(%ebp,%edi,8),%esi
1660 	movl	%ecx,%edi
1661 	shrl	$24,%edi
1662 	xorl	1(%ebp,%edi,8),%esi
1663 	movl	%esi,8(%esp)
1664 	movl	%ecx,%esi
1665 	andl	$255,%esi
1666 	movl	(%ebp,%esi,8),%esi
1667 	movzbl	%bh,%edi
1668 	xorl	3(%ebp,%edi,8),%esi
1669 	movl	%eax,%edi
1670 	shrl	$16,%edi
1671 	andl	$255,%edi
1672 	xorl	2(%ebp,%edi,8),%esi
1673 	movl	%edx,%edi
1674 	shrl	$24,%edi
1675 	xorl	1(%ebp,%edi,8),%esi
1676 	movl	20(%esp),%edi
1677 	andl	$255,%edx
1678 	movl	(%ebp,%edx,8),%edx
1679 	movzbl	%ch,%ecx
1680 	xorl	3(%ebp,%ecx,8),%edx
1681 	movl	%esi,%ecx
1682 	shrl	$16,%ebx
1683 	andl	$255,%ebx
1684 	xorl	2(%ebp,%ebx,8),%edx
1685 	movl	8(%esp),%ebx
1686 	shrl	$24,%eax
1687 	xorl	1(%ebp,%eax,8),%edx
1688 	movl	4(%esp),%eax
1689 	addl	$16,%edi
1690 	xorl	(%edi),%eax
1691 	xorl	4(%edi),%ebx
1692 	xorl	8(%edi),%ecx
1693 	xorl	12(%edi),%edx
1694 	cmpl	24(%esp),%edi
1695 	movl	%edi,20(%esp)
1696 	jb	L009loop
1697 	leal	2176(%ebp),%ebp
1698 	movl	-128(%ebp),%edi
1699 	movl	-96(%ebp),%esi
1700 	movl	-64(%ebp),%edi
1701 	movl	-32(%ebp),%esi
1702 	movl	(%ebp),%edi
1703 	movl	32(%ebp),%esi
1704 	movl	64(%ebp),%edi
1705 	movl	96(%ebp),%esi
1706 	leal	-128(%ebp),%ebp
1707 	movl	%eax,%esi
1708 	andl	$255,%esi
1709 	movzbl	(%ebp,%esi,1),%esi
1710 	movzbl	%dh,%edi
1711 	movzbl	(%ebp,%edi,1),%edi
1712 	shll	$8,%edi
1713 	xorl	%edi,%esi
1714 	movl	%ecx,%edi
1715 	shrl	$16,%edi
1716 	andl	$255,%edi
1717 	movzbl	(%ebp,%edi,1),%edi
1718 	shll	$16,%edi
1719 	xorl	%edi,%esi
1720 	movl	%ebx,%edi
1721 	shrl	$24,%edi
1722 	movzbl	(%ebp,%edi,1),%edi
1723 	shll	$24,%edi
1724 	xorl	%edi,%esi
1725 	movl	%esi,4(%esp)
1726 	movl	%ebx,%esi
1727 	andl	$255,%esi
1728 	movzbl	(%ebp,%esi,1),%esi
1729 	movzbl	%ah,%edi
1730 	movzbl	(%ebp,%edi,1),%edi
1731 	shll	$8,%edi
1732 	xorl	%edi,%esi
1733 	movl	%edx,%edi
1734 	shrl	$16,%edi
1735 	andl	$255,%edi
1736 	movzbl	(%ebp,%edi,1),%edi
1737 	shll	$16,%edi
1738 	xorl	%edi,%esi
1739 	movl	%ecx,%edi
1740 	shrl	$24,%edi
1741 	movzbl	(%ebp,%edi,1),%edi
1742 	shll	$24,%edi
1743 	xorl	%edi,%esi
1744 	movl	%esi,8(%esp)
1745 	movl	%ecx,%esi
1746 	andl	$255,%esi
1747 	movzbl	(%ebp,%esi,1),%esi
1748 	movzbl	%bh,%edi
1749 	movzbl	(%ebp,%edi,1),%edi
1750 	shll	$8,%edi
1751 	xorl	%edi,%esi
1752 	movl	%eax,%edi
1753 	shrl	$16,%edi
1754 	andl	$255,%edi
1755 	movzbl	(%ebp,%edi,1),%edi
1756 	shll	$16,%edi
1757 	xorl	%edi,%esi
1758 	movl	%edx,%edi
1759 	shrl	$24,%edi
1760 	movzbl	(%ebp,%edi,1),%edi
1761 	shll	$24,%edi
1762 	xorl	%edi,%esi
1763 	movl	20(%esp),%edi
1764 	andl	$255,%edx
1765 	movzbl	(%ebp,%edx,1),%edx
1766 	movzbl	%ch,%ecx
1767 	movzbl	(%ebp,%ecx,1),%ecx
1768 	shll	$8,%ecx
1769 	xorl	%ecx,%edx
1770 	movl	%esi,%ecx
1771 	shrl	$16,%ebx
1772 	andl	$255,%ebx
1773 	movzbl	(%ebp,%ebx,1),%ebx
1774 	shll	$16,%ebx
1775 	xorl	%ebx,%edx
1776 	movl	8(%esp),%ebx
1777 	shrl	$24,%eax
1778 	movzbl	(%ebp,%eax,1),%eax
1779 	shll	$24,%eax
1780 	xorl	%eax,%edx
1781 	movl	4(%esp),%eax
1782 	leal	-2048(%ebp),%ebp
1783 	addl	$16,%edi
1784 	xorl	(%edi),%eax
1785 	xorl	4(%edi),%ebx
1786 	xorl	8(%edi),%ecx
1787 	xorl	12(%edi),%edx
1788 	ret
1789 .align	6,0x90
1790 LAES_Td:
1791 .long	1353184337,1353184337
1792 .long	1399144830,1399144830
1793 .long	3282310938,3282310938
1794 .long	2522752826,2522752826
1795 .long	3412831035,3412831035
1796 .long	4047871263,4047871263
1797 .long	2874735276,2874735276
1798 .long	2466505547,2466505547
1799 .long	1442459680,1442459680
1800 .long	4134368941,4134368941
1801 .long	2440481928,2440481928
1802 .long	625738485,625738485
1803 .long	4242007375,4242007375
1804 .long	3620416197,3620416197
1805 .long	2151953702,2151953702
1806 .long	2409849525,2409849525
1807 .long	1230680542,1230680542
1808 .long	1729870373,1729870373
1809 .long	2551114309,2551114309
1810 .long	3787521629,3787521629
1811 .long	41234371,41234371
1812 .long	317738113,317738113
1813 .long	2744600205,2744600205
1814 .long	3338261355,3338261355
1815 .long	3881799427,3881799427
1816 .long	2510066197,2510066197
1817 .long	3950669247,3950669247
1818 .long	3663286933,3663286933
1819 .long	763608788,763608788
1820 .long	3542185048,3542185048
1821 .long	694804553,694804553
1822 .long	1154009486,1154009486
1823 .long	1787413109,1787413109
1824 .long	2021232372,2021232372
1825 .long	1799248025,1799248025
1826 .long	3715217703,3715217703
1827 .long	3058688446,3058688446
1828 .long	397248752,397248752
1829 .long	1722556617,1722556617
1830 .long	3023752829,3023752829
1831 .long	407560035,407560035
1832 .long	2184256229,2184256229
1833 .long	1613975959,1613975959
1834 .long	1165972322,1165972322
1835 .long	3765920945,3765920945
1836 .long	2226023355,2226023355
1837 .long	480281086,480281086
1838 .long	2485848313,2485848313
1839 .long	1483229296,1483229296
1840 .long	436028815,436028815
1841 .long	2272059028,2272059028
1842 .long	3086515026,3086515026
1843 .long	601060267,601060267
1844 .long	3791801202,3791801202
1845 .long	1468997603,1468997603
1846 .long	715871590,715871590
1847 .long	120122290,120122290
1848 .long	63092015,63092015
1849 .long	2591802758,2591802758
1850 .long	2768779219,2768779219
1851 .long	4068943920,4068943920
1852 .long	2997206819,2997206819
1853 .long	3127509762,3127509762
1854 .long	1552029421,1552029421
1855 .long	723308426,723308426
1856 .long	2461301159,2461301159
1857 .long	4042393587,4042393587
1858 .long	2715969870,2715969870
1859 .long	3455375973,3455375973
1860 .long	3586000134,3586000134
1861 .long	526529745,526529745
1862 .long	2331944644,2331944644
1863 .long	2639474228,2639474228
1864 .long	2689987490,2689987490
1865 .long	853641733,853641733
1866 .long	1978398372,1978398372
1867 .long	971801355,971801355
1868 .long	2867814464,2867814464
1869 .long	111112542,111112542
1870 .long	1360031421,1360031421
1871 .long	4186579262,4186579262
1872 .long	1023860118,1023860118
1873 .long	2919579357,2919579357
1874 .long	1186850381,1186850381
1875 .long	3045938321,3045938321
1876 .long	90031217,90031217
1877 .long	1876166148,1876166148
1878 .long	4279586912,4279586912
1879 .long	620468249,620468249
1880 .long	2548678102,2548678102
1881 .long	3426959497,3426959497
1882 .long	2006899047,2006899047
1883 .long	3175278768,3175278768
1884 .long	2290845959,2290845959
1885 .long	945494503,945494503
1886 .long	3689859193,3689859193
1887 .long	1191869601,1191869601
1888 .long	3910091388,3910091388
1889 .long	3374220536,3374220536
1890 .long	0,0
1891 .long	2206629897,2206629897
1892 .long	1223502642,1223502642
1893 .long	2893025566,2893025566
1894 .long	1316117100,1316117100
1895 .long	4227796733,4227796733
1896 .long	1446544655,1446544655
1897 .long	517320253,517320253
1898 .long	658058550,658058550
1899 .long	1691946762,1691946762
1900 .long	564550760,564550760
1901 .long	3511966619,3511966619
1902 .long	976107044,976107044
1903 .long	2976320012,2976320012
1904 .long	266819475,266819475
1905 .long	3533106868,3533106868
1906 .long	2660342555,2660342555
1907 .long	1338359936,1338359936
1908 .long	2720062561,2720062561
1909 .long	1766553434,1766553434
1910 .long	370807324,370807324
1911 .long	179999714,179999714
1912 .long	3844776128,3844776128
1913 .long	1138762300,1138762300
1914 .long	488053522,488053522
1915 .long	185403662,185403662
1916 .long	2915535858,2915535858
1917 .long	3114841645,3114841645
1918 .long	3366526484,3366526484
1919 .long	2233069911,2233069911
1920 .long	1275557295,1275557295
1921 .long	3151862254,3151862254
1922 .long	4250959779,4250959779
1923 .long	2670068215,2670068215
1924 .long	3170202204,3170202204
1925 .long	3309004356,3309004356
1926 .long	880737115,880737115
1927 .long	1982415755,1982415755
1928 .long	3703972811,3703972811
1929 .long	1761406390,1761406390
1930 .long	1676797112,1676797112
1931 .long	3403428311,3403428311
1932 .long	277177154,277177154
1933 .long	1076008723,1076008723
1934 .long	538035844,538035844
1935 .long	2099530373,2099530373
1936 .long	4164795346,4164795346
1937 .long	288553390,288553390
1938 .long	1839278535,1839278535
1939 .long	1261411869,1261411869
1940 .long	4080055004,4080055004
1941 .long	3964831245,3964831245
1942 .long	3504587127,3504587127
1943 .long	1813426987,1813426987
1944 .long	2579067049,2579067049
1945 .long	4199060497,4199060497
1946 .long	577038663,577038663
1947 .long	3297574056,3297574056
1948 .long	440397984,440397984
1949 .long	3626794326,3626794326
1950 .long	4019204898,4019204898
1951 .long	3343796615,3343796615
1952 .long	3251714265,3251714265
1953 .long	4272081548,4272081548
1954 .long	906744984,906744984
1955 .long	3481400742,3481400742
1956 .long	685669029,685669029
1957 .long	646887386,646887386
1958 .long	2764025151,2764025151
1959 .long	3835509292,3835509292
1960 .long	227702864,227702864
1961 .long	2613862250,2613862250
1962 .long	1648787028,1648787028
1963 .long	3256061430,3256061430
1964 .long	3904428176,3904428176
1965 .long	1593260334,1593260334
1966 .long	4121936770,4121936770
1967 .long	3196083615,3196083615
1968 .long	2090061929,2090061929
1969 .long	2838353263,2838353263
1970 .long	3004310991,3004310991
1971 .long	999926984,999926984
1972 .long	2809993232,2809993232
1973 .long	1852021992,1852021992
1974 .long	2075868123,2075868123
1975 .long	158869197,158869197
1976 .long	4095236462,4095236462
1977 .long	28809964,28809964
1978 .long	2828685187,2828685187
1979 .long	1701746150,1701746150
1980 .long	2129067946,2129067946
1981 .long	147831841,147831841
1982 .long	3873969647,3873969647
1983 .long	3650873274,3650873274
1984 .long	3459673930,3459673930
1985 .long	3557400554,3557400554
1986 .long	3598495785,3598495785
1987 .long	2947720241,2947720241
1988 .long	824393514,824393514
1989 .long	815048134,815048134
1990 .long	3227951669,3227951669
1991 .long	935087732,935087732
1992 .long	2798289660,2798289660
1993 .long	2966458592,2966458592
1994 .long	366520115,366520115
1995 .long	1251476721,1251476721
1996 .long	4158319681,4158319681
1997 .long	240176511,240176511
1998 .long	804688151,804688151
1999 .long	2379631990,2379631990
2000 .long	1303441219,1303441219
2001 .long	1414376140,1414376140
2002 .long	3741619940,3741619940
2003 .long	3820343710,3820343710
2004 .long	461924940,461924940
2005 .long	3089050817,3089050817
2006 .long	2136040774,2136040774
2007 .long	82468509,82468509
2008 .long	1563790337,1563790337
2009 .long	1937016826,1937016826
2010 .long	776014843,776014843
2011 .long	1511876531,1511876531
2012 .long	1389550482,1389550482
2013 .long	861278441,861278441
2014 .long	323475053,323475053
2015 .long	2355222426,2355222426
2016 .long	2047648055,2047648055
2017 .long	2383738969,2383738969
2018 .long	2302415851,2302415851
2019 .long	3995576782,3995576782
2020 .long	902390199,902390199
2021 .long	3991215329,3991215329
2022 .long	1018251130,1018251130
2023 .long	1507840668,1507840668
2024 .long	1064563285,1064563285
2025 .long	2043548696,2043548696
2026 .long	3208103795,3208103795
2027 .long	3939366739,3939366739
2028 .long	1537932639,1537932639
2029 .long	342834655,342834655
2030 .long	2262516856,2262516856
2031 .long	2180231114,2180231114
2032 .long	1053059257,1053059257
2033 .long	741614648,741614648
2034 .long	1598071746,1598071746
2035 .long	1925389590,1925389590
2036 .long	203809468,203809468
2037 .long	2336832552,2336832552
2038 .long	1100287487,1100287487
2039 .long	1895934009,1895934009
2040 .long	3736275976,3736275976
2041 .long	2632234200,2632234200
2042 .long	2428589668,2428589668
2043 .long	1636092795,1636092795
2044 .long	1890988757,1890988757
2045 .long	1952214088,1952214088
2046 .long	1113045200,1113045200
2047 .byte	82,9,106,213,48,54,165,56
2048 .byte	191,64,163,158,129,243,215,251
2049 .byte	124,227,57,130,155,47,255,135
2050 .byte	52,142,67,68,196,222,233,203
2051 .byte	84,123,148,50,166,194,35,61
2052 .byte	238,76,149,11,66,250,195,78
2053 .byte	8,46,161,102,40,217,36,178
2054 .byte	118,91,162,73,109,139,209,37
2055 .byte	114,248,246,100,134,104,152,22
2056 .byte	212,164,92,204,93,101,182,146
2057 .byte	108,112,72,80,253,237,185,218
2058 .byte	94,21,70,87,167,141,157,132
2059 .byte	144,216,171,0,140,188,211,10
2060 .byte	247,228,88,5,184,179,69,6
2061 .byte	208,44,30,143,202,63,15,2
2062 .byte	193,175,189,3,1,19,138,107
2063 .byte	58,145,17,65,79,103,220,234
2064 .byte	151,242,207,206,240,180,230,115
2065 .byte	150,172,116,34,231,173,53,133
2066 .byte	226,249,55,232,28,117,223,110
2067 .byte	71,241,26,113,29,41,197,137
2068 .byte	111,183,98,14,170,24,190,27
2069 .byte	252,86,62,75,198,210,121,32
2070 .byte	154,219,192,254,120,205,90,244
2071 .byte	31,221,168,51,136,7,199,49
2072 .byte	177,18,16,89,39,128,236,95
2073 .byte	96,81,127,169,25,181,74,13
2074 .byte	45,229,122,159,147,201,156,239
2075 .byte	160,224,59,77,174,42,245,176
2076 .byte	200,235,187,60,131,83,153,97
2077 .byte	23,43,4,126,186,119,214,38
2078 .byte	225,105,20,99,85,33,12,125
2079 .byte	82,9,106,213,48,54,165,56
2080 .byte	191,64,163,158,129,243,215,251
2081 .byte	124,227,57,130,155,47,255,135
2082 .byte	52,142,67,68,196,222,233,203
2083 .byte	84,123,148,50,166,194,35,61
2084 .byte	238,76,149,11,66,250,195,78
2085 .byte	8,46,161,102,40,217,36,178
2086 .byte	118,91,162,73,109,139,209,37
2087 .byte	114,248,246,100,134,104,152,22
2088 .byte	212,164,92,204,93,101,182,146
2089 .byte	108,112,72,80,253,237,185,218
2090 .byte	94,21,70,87,167,141,157,132
2091 .byte	144,216,171,0,140,188,211,10
2092 .byte	247,228,88,5,184,179,69,6
2093 .byte	208,44,30,143,202,63,15,2
2094 .byte	193,175,189,3,1,19,138,107
2095 .byte	58,145,17,65,79,103,220,234
2096 .byte	151,242,207,206,240,180,230,115
2097 .byte	150,172,116,34,231,173,53,133
2098 .byte	226,249,55,232,28,117,223,110
2099 .byte	71,241,26,113,29,41,197,137
2100 .byte	111,183,98,14,170,24,190,27
2101 .byte	252,86,62,75,198,210,121,32
2102 .byte	154,219,192,254,120,205,90,244
2103 .byte	31,221,168,51,136,7,199,49
2104 .byte	177,18,16,89,39,128,236,95
2105 .byte	96,81,127,169,25,181,74,13
2106 .byte	45,229,122,159,147,201,156,239
2107 .byte	160,224,59,77,174,42,245,176
2108 .byte	200,235,187,60,131,83,153,97
2109 .byte	23,43,4,126,186,119,214,38
2110 .byte	225,105,20,99,85,33,12,125
2111 .byte	82,9,106,213,48,54,165,56
2112 .byte	191,64,163,158,129,243,215,251
2113 .byte	124,227,57,130,155,47,255,135
2114 .byte	52,142,67,68,196,222,233,203
2115 .byte	84,123,148,50,166,194,35,61
2116 .byte	238,76,149,11,66,250,195,78
2117 .byte	8,46,161,102,40,217,36,178
2118 .byte	118,91,162,73,109,139,209,37
2119 .byte	114,248,246,100,134,104,152,22
2120 .byte	212,164,92,204,93,101,182,146
2121 .byte	108,112,72,80,253,237,185,218
2122 .byte	94,21,70,87,167,141,157,132
2123 .byte	144,216,171,0,140,188,211,10
2124 .byte	247,228,88,5,184,179,69,6
2125 .byte	208,44,30,143,202,63,15,2
2126 .byte	193,175,189,3,1,19,138,107
2127 .byte	58,145,17,65,79,103,220,234
2128 .byte	151,242,207,206,240,180,230,115
2129 .byte	150,172,116,34,231,173,53,133
2130 .byte	226,249,55,232,28,117,223,110
2131 .byte	71,241,26,113,29,41,197,137
2132 .byte	111,183,98,14,170,24,190,27
2133 .byte	252,86,62,75,198,210,121,32
2134 .byte	154,219,192,254,120,205,90,244
2135 .byte	31,221,168,51,136,7,199,49
2136 .byte	177,18,16,89,39,128,236,95
2137 .byte	96,81,127,169,25,181,74,13
2138 .byte	45,229,122,159,147,201,156,239
2139 .byte	160,224,59,77,174,42,245,176
2140 .byte	200,235,187,60,131,83,153,97
2141 .byte	23,43,4,126,186,119,214,38
2142 .byte	225,105,20,99,85,33,12,125
2143 .byte	82,9,106,213,48,54,165,56
2144 .byte	191,64,163,158,129,243,215,251
2145 .byte	124,227,57,130,155,47,255,135
2146 .byte	52,142,67,68,196,222,233,203
2147 .byte	84,123,148,50,166,194,35,61
2148 .byte	238,76,149,11,66,250,195,78
2149 .byte	8,46,161,102,40,217,36,178
2150 .byte	118,91,162,73,109,139,209,37
2151 .byte	114,248,246,100,134,104,152,22
2152 .byte	212,164,92,204,93,101,182,146
2153 .byte	108,112,72,80,253,237,185,218
2154 .byte	94,21,70,87,167,141,157,132
2155 .byte	144,216,171,0,140,188,211,10
2156 .byte	247,228,88,5,184,179,69,6
2157 .byte	208,44,30,143,202,63,15,2
2158 .byte	193,175,189,3,1,19,138,107
2159 .byte	58,145,17,65,79,103,220,234
2160 .byte	151,242,207,206,240,180,230,115
2161 .byte	150,172,116,34,231,173,53,133
2162 .byte	226,249,55,232,28,117,223,110
2163 .byte	71,241,26,113,29,41,197,137
2164 .byte	111,183,98,14,170,24,190,27
2165 .byte	252,86,62,75,198,210,121,32
2166 .byte	154,219,192,254,120,205,90,244
2167 .byte	31,221,168,51,136,7,199,49
2168 .byte	177,18,16,89,39,128,236,95
2169 .byte	96,81,127,169,25,181,74,13
2170 .byte	45,229,122,159,147,201,156,239
2171 .byte	160,224,59,77,174,42,245,176
2172 .byte	200,235,187,60,131,83,153,97
2173 .byte	23,43,4,126,186,119,214,38
2174 .byte	225,105,20,99,85,33,12,125
2175 .globl	_AES_decrypt
2176 .align	4
2177 _AES_decrypt:
2178 L_AES_decrypt_begin:
2179 	%ifdef __CET__
2180 
2181 .byte	243,15,30,251
2182 	%endif
2183 
2184 	pushl	%ebp
2185 	pushl	%ebx
2186 	pushl	%esi
2187 	pushl	%edi
2188 	movl	20(%esp),%esi
2189 	movl	28(%esp),%edi
2190 	movl	%esp,%eax
2191 	subl	$36,%esp
2192 	andl	$-64,%esp
2193 	leal	-127(%edi),%ebx
2194 	subl	%esp,%ebx
2195 	negl	%ebx
2196 	andl	$960,%ebx
2197 	subl	%ebx,%esp
2198 	addl	$4,%esp
2199 	movl	%eax,28(%esp)
2200 	call	L010pic_point
2201 L010pic_point:
2202 	popl	%ebp
2203 	movl	L_OPENSSL_ia32cap_P$non_lazy_ptr-L010pic_point(%ebp),%eax
2204 	leal	LAES_Td-L010pic_point(%ebp),%ebp
2205 	leal	764(%esp),%ebx
2206 	subl	%ebp,%ebx
2207 	andl	$768,%ebx
2208 	leal	2176(%ebp,%ebx,1),%ebp
2209 	btl	$25,(%eax)
2210 	jnc	L011x86
2211 	movq	(%esi),%mm0
2212 	movq	8(%esi),%mm4
2213 	call	__sse_AES_decrypt_compact
2214 	movl	28(%esp),%esp
2215 	movl	24(%esp),%esi
2216 	movq	%mm0,(%esi)
2217 	movq	%mm4,8(%esi)
2218 	emms
2219 	popl	%edi
2220 	popl	%esi
2221 	popl	%ebx
2222 	popl	%ebp
2223 	ret
2224 .align	4,0x90
2225 L011x86:
2226 	movl	%ebp,24(%esp)
2227 	movl	(%esi),%eax
2228 	movl	4(%esi),%ebx
2229 	movl	8(%esi),%ecx
2230 	movl	12(%esi),%edx
2231 	call	__x86_AES_decrypt_compact
2232 	movl	28(%esp),%esp
2233 	movl	24(%esp),%esi
2234 	movl	%eax,(%esi)
2235 	movl	%ebx,4(%esi)
2236 	movl	%ecx,8(%esi)
2237 	movl	%edx,12(%esi)
2238 	popl	%edi
2239 	popl	%esi
2240 	popl	%ebx
2241 	popl	%ebp
2242 	ret
2243 .globl	_AES_cbc_encrypt
2244 .align	4
2245 _AES_cbc_encrypt:
2246 L_AES_cbc_encrypt_begin:
2247 	%ifdef __CET__
2248 
2249 .byte	243,15,30,251
2250 	%endif
2251 
2252 	pushl	%ebp
2253 	pushl	%ebx
2254 	pushl	%esi
2255 	pushl	%edi
2256 	movl	28(%esp),%ecx
2257 	cmpl	$0,%ecx
2258 	je	L012drop_out
2259 	call	L013pic_point
2260 L013pic_point:
2261 	popl	%ebp
2262 	movl	L_OPENSSL_ia32cap_P$non_lazy_ptr-L013pic_point(%ebp),%eax
2263 	cmpl	$0,40(%esp)
2264 	leal	LAES_Te-L013pic_point(%ebp),%ebp
2265 	jne	L014picked_te
2266 	leal	LAES_Td-LAES_Te(%ebp),%ebp
2267 L014picked_te:
2268 	pushfl
2269 	cld
2270 	cmpl	$512,%ecx
2271 	jb	L015slow_way
2272 	testl	$15,%ecx
2273 	jnz	L015slow_way
2274 	btl	$28,(%eax)
2275 	jc	L015slow_way
2276 	leal	-324(%esp),%esi
2277 	andl	$-64,%esi
2278 	movl	%ebp,%eax
2279 	leal	2304(%ebp),%ebx
2280 	movl	%esi,%edx
2281 	andl	$4095,%eax
2282 	andl	$4095,%ebx
2283 	andl	$4095,%edx
2284 	cmpl	%ebx,%edx
2285 	jb	L016tbl_break_out
2286 	subl	%ebx,%edx
2287 	subl	%edx,%esi
2288 	jmp	L017tbl_ok
2289 .align	2,0x90
2290 L016tbl_break_out:
2291 	subl	%eax,%edx
2292 	andl	$4095,%edx
2293 	addl	$384,%edx
2294 	subl	%edx,%esi
2295 .align	2,0x90
2296 L017tbl_ok:
2297 	leal	24(%esp),%edx
2298 	xchgl	%esi,%esp
2299 	addl	$4,%esp
2300 	movl	%ebp,24(%esp)
2301 	movl	%esi,28(%esp)
2302 	movl	(%edx),%eax
2303 	movl	4(%edx),%ebx
2304 	movl	12(%edx),%edi
2305 	movl	16(%edx),%esi
2306 	movl	20(%edx),%edx
2307 	movl	%eax,32(%esp)
2308 	movl	%ebx,36(%esp)
2309 	movl	%ecx,40(%esp)
2310 	movl	%edi,44(%esp)
2311 	movl	%esi,48(%esp)
2312 	movl	$0,316(%esp)
2313 	movl	%edi,%ebx
2314 	movl	$61,%ecx
2315 	subl	%ebp,%ebx
2316 	movl	%edi,%esi
2317 	andl	$4095,%ebx
2318 	leal	76(%esp),%edi
2319 	cmpl	$2304,%ebx
2320 	jb	L018do_copy
2321 	cmpl	$3852,%ebx
2322 	jb	L019skip_copy
2323 .align	2,0x90
2324 L018do_copy:
2325 	movl	%edi,44(%esp)
2326 .long	2784229001
2327 L019skip_copy:
2328 	movl	$16,%edi
2329 .align	2,0x90
2330 L020prefetch_tbl:
2331 	movl	(%ebp),%eax
2332 	movl	32(%ebp),%ebx
2333 	movl	64(%ebp),%ecx
2334 	movl	96(%ebp),%esi
2335 	leal	128(%ebp),%ebp
2336 	subl	$1,%edi
2337 	jnz	L020prefetch_tbl
2338 	subl	$2048,%ebp
2339 	movl	32(%esp),%esi
2340 	movl	48(%esp),%edi
2341 	cmpl	$0,%edx
2342 	je	L021fast_decrypt
2343 	movl	(%edi),%eax
2344 	movl	4(%edi),%ebx
2345 .align	4,0x90
2346 L022fast_enc_loop:
2347 	movl	8(%edi),%ecx
2348 	movl	12(%edi),%edx
2349 	xorl	(%esi),%eax
2350 	xorl	4(%esi),%ebx
2351 	xorl	8(%esi),%ecx
2352 	xorl	12(%esi),%edx
2353 	movl	44(%esp),%edi
2354 	call	__x86_AES_encrypt
2355 	movl	32(%esp),%esi
2356 	movl	36(%esp),%edi
2357 	movl	%eax,(%edi)
2358 	movl	%ebx,4(%edi)
2359 	movl	%ecx,8(%edi)
2360 	movl	%edx,12(%edi)
2361 	leal	16(%esi),%esi
2362 	movl	40(%esp),%ecx
2363 	movl	%esi,32(%esp)
2364 	leal	16(%edi),%edx
2365 	movl	%edx,36(%esp)
2366 	subl	$16,%ecx
2367 	movl	%ecx,40(%esp)
2368 	jnz	L022fast_enc_loop
2369 	movl	48(%esp),%esi
2370 	movl	8(%edi),%ecx
2371 	movl	12(%edi),%edx
2372 	movl	%eax,(%esi)
2373 	movl	%ebx,4(%esi)
2374 	movl	%ecx,8(%esi)
2375 	movl	%edx,12(%esi)
2376 	cmpl	$0,316(%esp)
2377 	movl	44(%esp),%edi
2378 	je	L023skip_ezero
2379 	movl	$60,%ecx
2380 	xorl	%eax,%eax
2381 .align	2,0x90
2382 .long	2884892297
2383 L023skip_ezero:
2384 	movl	28(%esp),%esp
2385 	popfl
2386 L012drop_out:
2387 	popl	%edi
2388 	popl	%esi
2389 	popl	%ebx
2390 	popl	%ebp
2391 	ret
2392 	pushfl
2393 .align	4,0x90
2394 L021fast_decrypt:
2395 	cmpl	36(%esp),%esi
2396 	je	L024fast_dec_in_place
2397 	movl	%edi,52(%esp)
2398 .align	2,0x90
2399 .align	4,0x90
2400 L025fast_dec_loop:
2401 	movl	(%esi),%eax
2402 	movl	4(%esi),%ebx
2403 	movl	8(%esi),%ecx
2404 	movl	12(%esi),%edx
2405 	movl	44(%esp),%edi
2406 	call	__x86_AES_decrypt
2407 	movl	52(%esp),%edi
2408 	movl	40(%esp),%esi
2409 	xorl	(%edi),%eax
2410 	xorl	4(%edi),%ebx
2411 	xorl	8(%edi),%ecx
2412 	xorl	12(%edi),%edx
2413 	movl	36(%esp),%edi
2414 	movl	32(%esp),%esi
2415 	movl	%eax,(%edi)
2416 	movl	%ebx,4(%edi)
2417 	movl	%ecx,8(%edi)
2418 	movl	%edx,12(%edi)
2419 	movl	40(%esp),%ecx
2420 	movl	%esi,52(%esp)
2421 	leal	16(%esi),%esi
2422 	movl	%esi,32(%esp)
2423 	leal	16(%edi),%edi
2424 	movl	%edi,36(%esp)
2425 	subl	$16,%ecx
2426 	movl	%ecx,40(%esp)
2427 	jnz	L025fast_dec_loop
2428 	movl	52(%esp),%edi
2429 	movl	48(%esp),%esi
2430 	movl	(%edi),%eax
2431 	movl	4(%edi),%ebx
2432 	movl	8(%edi),%ecx
2433 	movl	12(%edi),%edx
2434 	movl	%eax,(%esi)
2435 	movl	%ebx,4(%esi)
2436 	movl	%ecx,8(%esi)
2437 	movl	%edx,12(%esi)
2438 	jmp	L026fast_dec_out
2439 .align	4,0x90
2440 L024fast_dec_in_place:
2441 L027fast_dec_in_place_loop:
2442 	movl	(%esi),%eax
2443 	movl	4(%esi),%ebx
2444 	movl	8(%esi),%ecx
2445 	movl	12(%esi),%edx
2446 	leal	60(%esp),%edi
2447 	movl	%eax,(%edi)
2448 	movl	%ebx,4(%edi)
2449 	movl	%ecx,8(%edi)
2450 	movl	%edx,12(%edi)
2451 	movl	44(%esp),%edi
2452 	call	__x86_AES_decrypt
2453 	movl	48(%esp),%edi
2454 	movl	36(%esp),%esi
2455 	xorl	(%edi),%eax
2456 	xorl	4(%edi),%ebx
2457 	xorl	8(%edi),%ecx
2458 	xorl	12(%edi),%edx
2459 	movl	%eax,(%esi)
2460 	movl	%ebx,4(%esi)
2461 	movl	%ecx,8(%esi)
2462 	movl	%edx,12(%esi)
2463 	leal	16(%esi),%esi
2464 	movl	%esi,36(%esp)
2465 	leal	60(%esp),%esi
2466 	movl	(%esi),%eax
2467 	movl	4(%esi),%ebx
2468 	movl	8(%esi),%ecx
2469 	movl	12(%esi),%edx
2470 	movl	%eax,(%edi)
2471 	movl	%ebx,4(%edi)
2472 	movl	%ecx,8(%edi)
2473 	movl	%edx,12(%edi)
2474 	movl	32(%esp),%esi
2475 	movl	40(%esp),%ecx
2476 	leal	16(%esi),%esi
2477 	movl	%esi,32(%esp)
2478 	subl	$16,%ecx
2479 	movl	%ecx,40(%esp)
2480 	jnz	L027fast_dec_in_place_loop
2481 .align	2,0x90
2482 L026fast_dec_out:
2483 	cmpl	$0,316(%esp)
2484 	movl	44(%esp),%edi
2485 	je	L028skip_dzero
2486 	movl	$60,%ecx
2487 	xorl	%eax,%eax
2488 .align	2,0x90
2489 .long	2884892297
2490 L028skip_dzero:
2491 	movl	28(%esp),%esp
2492 	popfl
2493 	popl	%edi
2494 	popl	%esi
2495 	popl	%ebx
2496 	popl	%ebp
2497 	ret
2498 	pushfl
2499 .align	4,0x90
2500 L015slow_way:
2501 	movl	(%eax),%eax
2502 	movl	36(%esp),%edi
2503 	leal	-80(%esp),%esi
2504 	andl	$-64,%esi
2505 	leal	-143(%edi),%ebx
2506 	subl	%esi,%ebx
2507 	negl	%ebx
2508 	andl	$960,%ebx
2509 	subl	%ebx,%esi
2510 	leal	768(%esi),%ebx
2511 	subl	%ebp,%ebx
2512 	andl	$768,%ebx
2513 	leal	2176(%ebp,%ebx,1),%ebp
2514 	leal	24(%esp),%edx
2515 	xchgl	%esi,%esp
2516 	addl	$4,%esp
2517 	movl	%ebp,24(%esp)
2518 	movl	%esi,28(%esp)
2519 	movl	%eax,52(%esp)
2520 	movl	(%edx),%eax
2521 	movl	4(%edx),%ebx
2522 	movl	16(%edx),%esi
2523 	movl	20(%edx),%edx
2524 	movl	%eax,32(%esp)
2525 	movl	%ebx,36(%esp)
2526 	movl	%ecx,40(%esp)
2527 	movl	%edi,44(%esp)
2528 	movl	%esi,48(%esp)
2529 	movl	%esi,%edi
2530 	movl	%eax,%esi
2531 	cmpl	$0,%edx
2532 	je	L029slow_decrypt
2533 	cmpl	$16,%ecx
2534 	movl	%ebx,%edx
2535 	jb	L030slow_enc_tail
2536 	btl	$25,52(%esp)
2537 	jnc	L031slow_enc_x86
2538 	movq	(%edi),%mm0
2539 	movq	8(%edi),%mm4
2540 .align	4,0x90
2541 L032slow_enc_loop_sse:
2542 	pxor	(%esi),%mm0
2543 	pxor	8(%esi),%mm4
2544 	movl	44(%esp),%edi
2545 	call	__sse_AES_encrypt_compact
2546 	movl	32(%esp),%esi
2547 	movl	36(%esp),%edi
2548 	movl	40(%esp),%ecx
2549 	movq	%mm0,(%edi)
2550 	movq	%mm4,8(%edi)
2551 	leal	16(%esi),%esi
2552 	movl	%esi,32(%esp)
2553 	leal	16(%edi),%edx
2554 	movl	%edx,36(%esp)
2555 	subl	$16,%ecx
2556 	cmpl	$16,%ecx
2557 	movl	%ecx,40(%esp)
2558 	jae	L032slow_enc_loop_sse
2559 	testl	$15,%ecx
2560 	jnz	L030slow_enc_tail
2561 	movl	48(%esp),%esi
2562 	movq	%mm0,(%esi)
2563 	movq	%mm4,8(%esi)
2564 	emms
2565 	movl	28(%esp),%esp
2566 	popfl
2567 	popl	%edi
2568 	popl	%esi
2569 	popl	%ebx
2570 	popl	%ebp
2571 	ret
2572 	pushfl
2573 .align	4,0x90
2574 L031slow_enc_x86:
2575 	movl	(%edi),%eax
2576 	movl	4(%edi),%ebx
2577 .align	2,0x90
2578 L033slow_enc_loop_x86:
2579 	movl	8(%edi),%ecx
2580 	movl	12(%edi),%edx
2581 	xorl	(%esi),%eax
2582 	xorl	4(%esi),%ebx
2583 	xorl	8(%esi),%ecx
2584 	xorl	12(%esi),%edx
2585 	movl	44(%esp),%edi
2586 	call	__x86_AES_encrypt_compact
2587 	movl	32(%esp),%esi
2588 	movl	36(%esp),%edi
2589 	movl	%eax,(%edi)
2590 	movl	%ebx,4(%edi)
2591 	movl	%ecx,8(%edi)
2592 	movl	%edx,12(%edi)
2593 	movl	40(%esp),%ecx
2594 	leal	16(%esi),%esi
2595 	movl	%esi,32(%esp)
2596 	leal	16(%edi),%edx
2597 	movl	%edx,36(%esp)
2598 	subl	$16,%ecx
2599 	cmpl	$16,%ecx
2600 	movl	%ecx,40(%esp)
2601 	jae	L033slow_enc_loop_x86
2602 	testl	$15,%ecx
2603 	jnz	L030slow_enc_tail
2604 	movl	48(%esp),%esi
2605 	movl	8(%edi),%ecx
2606 	movl	12(%edi),%edx
2607 	movl	%eax,(%esi)
2608 	movl	%ebx,4(%esi)
2609 	movl	%ecx,8(%esi)
2610 	movl	%edx,12(%esi)
2611 	movl	28(%esp),%esp
2612 	popfl
2613 	popl	%edi
2614 	popl	%esi
2615 	popl	%ebx
2616 	popl	%ebp
2617 	ret
2618 	pushfl
2619 .align	4,0x90
2620 L030slow_enc_tail:
2621 	emms
2622 	movl	%edx,%edi
2623 	movl	$16,%ebx
2624 	subl	%ecx,%ebx
2625 	cmpl	%esi,%edi
2626 	je	L034enc_in_place
2627 .align	2,0x90
2628 .long	2767451785
2629 	jmp	L035enc_skip_in_place
2630 L034enc_in_place:
2631 	leal	(%edi,%ecx,1),%edi
2632 L035enc_skip_in_place:
2633 	movl	%ebx,%ecx
2634 	xorl	%eax,%eax
2635 .align	2,0x90
2636 .long	2868115081
2637 	movl	48(%esp),%edi
2638 	movl	%edx,%esi
2639 	movl	(%edi),%eax
2640 	movl	4(%edi),%ebx
2641 	movl	$16,40(%esp)
2642 	jmp	L033slow_enc_loop_x86
2643 .align	4,0x90
2644 L029slow_decrypt:
2645 	btl	$25,52(%esp)
2646 	jnc	L036slow_dec_loop_x86
2647 .align	2,0x90
2648 L037slow_dec_loop_sse:
2649 	movq	(%esi),%mm0
2650 	movq	8(%esi),%mm4
2651 	movl	44(%esp),%edi
2652 	call	__sse_AES_decrypt_compact
2653 	movl	32(%esp),%esi
2654 	leal	60(%esp),%eax
2655 	movl	36(%esp),%ebx
2656 	movl	40(%esp),%ecx
2657 	movl	48(%esp),%edi
2658 	movq	(%esi),%mm1
2659 	movq	8(%esi),%mm5
2660 	pxor	(%edi),%mm0
2661 	pxor	8(%edi),%mm4
2662 	movq	%mm1,(%edi)
2663 	movq	%mm5,8(%edi)
2664 	subl	$16,%ecx
2665 	jc	L038slow_dec_partial_sse
2666 	movq	%mm0,(%ebx)
2667 	movq	%mm4,8(%ebx)
2668 	leal	16(%ebx),%ebx
2669 	movl	%ebx,36(%esp)
2670 	leal	16(%esi),%esi
2671 	movl	%esi,32(%esp)
2672 	movl	%ecx,40(%esp)
2673 	jnz	L037slow_dec_loop_sse
2674 	emms
2675 	movl	28(%esp),%esp
2676 	popfl
2677 	popl	%edi
2678 	popl	%esi
2679 	popl	%ebx
2680 	popl	%ebp
2681 	ret
2682 	pushfl
2683 .align	4,0x90
2684 L038slow_dec_partial_sse:
2685 	movq	%mm0,(%eax)
2686 	movq	%mm4,8(%eax)
2687 	emms
2688 	addl	$16,%ecx
2689 	movl	%ebx,%edi
2690 	movl	%eax,%esi
2691 .align	2,0x90
2692 .long	2767451785
2693 	movl	28(%esp),%esp
2694 	popfl
2695 	popl	%edi
2696 	popl	%esi
2697 	popl	%ebx
2698 	popl	%ebp
2699 	ret
2700 	pushfl
2701 .align	4,0x90
2702 L036slow_dec_loop_x86:
2703 	movl	(%esi),%eax
2704 	movl	4(%esi),%ebx
2705 	movl	8(%esi),%ecx
2706 	movl	12(%esi),%edx
2707 	leal	60(%esp),%edi
2708 	movl	%eax,(%edi)
2709 	movl	%ebx,4(%edi)
2710 	movl	%ecx,8(%edi)
2711 	movl	%edx,12(%edi)
2712 	movl	44(%esp),%edi
2713 	call	__x86_AES_decrypt_compact
2714 	movl	48(%esp),%edi
2715 	movl	40(%esp),%esi
2716 	xorl	(%edi),%eax
2717 	xorl	4(%edi),%ebx
2718 	xorl	8(%edi),%ecx
2719 	xorl	12(%edi),%edx
2720 	subl	$16,%esi
2721 	jc	L039slow_dec_partial_x86
2722 	movl	%esi,40(%esp)
2723 	movl	36(%esp),%esi
2724 	movl	%eax,(%esi)
2725 	movl	%ebx,4(%esi)
2726 	movl	%ecx,8(%esi)
2727 	movl	%edx,12(%esi)
2728 	leal	16(%esi),%esi
2729 	movl	%esi,36(%esp)
2730 	leal	60(%esp),%esi
2731 	movl	(%esi),%eax
2732 	movl	4(%esi),%ebx
2733 	movl	8(%esi),%ecx
2734 	movl	12(%esi),%edx
2735 	movl	%eax,(%edi)
2736 	movl	%ebx,4(%edi)
2737 	movl	%ecx,8(%edi)
2738 	movl	%edx,12(%edi)
2739 	movl	32(%esp),%esi
2740 	leal	16(%esi),%esi
2741 	movl	%esi,32(%esp)
2742 	jnz	L036slow_dec_loop_x86
2743 	movl	28(%esp),%esp
2744 	popfl
2745 	popl	%edi
2746 	popl	%esi
2747 	popl	%ebx
2748 	popl	%ebp
2749 	ret
2750 	pushfl
2751 .align	4,0x90
2752 L039slow_dec_partial_x86:
2753 	leal	60(%esp),%esi
2754 	movl	%eax,(%esi)
2755 	movl	%ebx,4(%esi)
2756 	movl	%ecx,8(%esi)
2757 	movl	%edx,12(%esi)
2758 	movl	32(%esp),%esi
2759 	movl	(%esi),%eax
2760 	movl	4(%esi),%ebx
2761 	movl	8(%esi),%ecx
2762 	movl	12(%esi),%edx
2763 	movl	%eax,(%edi)
2764 	movl	%ebx,4(%edi)
2765 	movl	%ecx,8(%edi)
2766 	movl	%edx,12(%edi)
2767 	movl	40(%esp),%ecx
2768 	movl	36(%esp),%edi
2769 	leal	60(%esp),%esi
2770 .align	2,0x90
2771 .long	2767451785
2772 	movl	28(%esp),%esp
2773 	popfl
2774 	popl	%edi
2775 	popl	%esi
2776 	popl	%ebx
2777 	popl	%ebp
2778 	ret
2779 .align	4
2780 __x86_AES_set_encrypt_key:
2781 	%ifdef __CET__
2782 
2783 .byte	243,15,30,251
2784 	%endif
2785 
2786 	pushl	%ebp
2787 	pushl	%ebx
2788 	pushl	%esi
2789 	pushl	%edi
2790 	movl	24(%esp),%esi
2791 	movl	32(%esp),%edi
2792 	testl	$-1,%esi
2793 	jz	L040badpointer
2794 	testl	$-1,%edi
2795 	jz	L040badpointer
2796 	call	L041pic_point
2797 L041pic_point:
2798 	popl	%ebp
2799 	leal	LAES_Te-L041pic_point(%ebp),%ebp
2800 	leal	2176(%ebp),%ebp
2801 	movl	-128(%ebp),%eax
2802 	movl	-96(%ebp),%ebx
2803 	movl	-64(%ebp),%ecx
2804 	movl	-32(%ebp),%edx
2805 	movl	(%ebp),%eax
2806 	movl	32(%ebp),%ebx
2807 	movl	64(%ebp),%ecx
2808 	movl	96(%ebp),%edx
2809 	movl	28(%esp),%ecx
2810 	cmpl	$128,%ecx
2811 	je	L04210rounds
2812 	cmpl	$192,%ecx
2813 	je	L04312rounds
2814 	cmpl	$256,%ecx
2815 	je	L04414rounds
2816 	movl	$-2,%eax
2817 	jmp	L045exit
2818 L04210rounds:
2819 	movl	(%esi),%eax
2820 	movl	4(%esi),%ebx
2821 	movl	8(%esi),%ecx
2822 	movl	12(%esi),%edx
2823 	movl	%eax,(%edi)
2824 	movl	%ebx,4(%edi)
2825 	movl	%ecx,8(%edi)
2826 	movl	%edx,12(%edi)
2827 	xorl	%ecx,%ecx
2828 	jmp	L04610shortcut
2829 .align	2,0x90
2830 L04710loop:
2831 	movl	(%edi),%eax
2832 	movl	12(%edi),%edx
2833 L04610shortcut:
2834 	movzbl	%dl,%esi
2835 	movzbl	-128(%ebp,%esi,1),%ebx
2836 	movzbl	%dh,%esi
2837 	shll	$24,%ebx
2838 	xorl	%ebx,%eax
2839 	movzbl	-128(%ebp,%esi,1),%ebx
2840 	shrl	$16,%edx
2841 	movzbl	%dl,%esi
2842 	xorl	%ebx,%eax
2843 	movzbl	-128(%ebp,%esi,1),%ebx
2844 	movzbl	%dh,%esi
2845 	shll	$8,%ebx
2846 	xorl	%ebx,%eax
2847 	movzbl	-128(%ebp,%esi,1),%ebx
2848 	shll	$16,%ebx
2849 	xorl	%ebx,%eax
2850 	xorl	896(%ebp,%ecx,4),%eax
2851 	movl	%eax,16(%edi)
2852 	xorl	4(%edi),%eax
2853 	movl	%eax,20(%edi)
2854 	xorl	8(%edi),%eax
2855 	movl	%eax,24(%edi)
2856 	xorl	12(%edi),%eax
2857 	movl	%eax,28(%edi)
2858 	incl	%ecx
2859 	addl	$16,%edi
2860 	cmpl	$10,%ecx
2861 	jl	L04710loop
2862 	movl	$10,80(%edi)
2863 	xorl	%eax,%eax
2864 	jmp	L045exit
2865 L04312rounds:
2866 	movl	(%esi),%eax
2867 	movl	4(%esi),%ebx
2868 	movl	8(%esi),%ecx
2869 	movl	12(%esi),%edx
2870 	movl	%eax,(%edi)
2871 	movl	%ebx,4(%edi)
2872 	movl	%ecx,8(%edi)
2873 	movl	%edx,12(%edi)
2874 	movl	16(%esi),%ecx
2875 	movl	20(%esi),%edx
2876 	movl	%ecx,16(%edi)
2877 	movl	%edx,20(%edi)
2878 	xorl	%ecx,%ecx
2879 	jmp	L04812shortcut
2880 .align	2,0x90
2881 L04912loop:
2882 	movl	(%edi),%eax
2883 	movl	20(%edi),%edx
2884 L04812shortcut:
2885 	movzbl	%dl,%esi
2886 	movzbl	-128(%ebp,%esi,1),%ebx
2887 	movzbl	%dh,%esi
2888 	shll	$24,%ebx
2889 	xorl	%ebx,%eax
2890 	movzbl	-128(%ebp,%esi,1),%ebx
2891 	shrl	$16,%edx
2892 	movzbl	%dl,%esi
2893 	xorl	%ebx,%eax
2894 	movzbl	-128(%ebp,%esi,1),%ebx
2895 	movzbl	%dh,%esi
2896 	shll	$8,%ebx
2897 	xorl	%ebx,%eax
2898 	movzbl	-128(%ebp,%esi,1),%ebx
2899 	shll	$16,%ebx
2900 	xorl	%ebx,%eax
2901 	xorl	896(%ebp,%ecx,4),%eax
2902 	movl	%eax,24(%edi)
2903 	xorl	4(%edi),%eax
2904 	movl	%eax,28(%edi)
2905 	xorl	8(%edi),%eax
2906 	movl	%eax,32(%edi)
2907 	xorl	12(%edi),%eax
2908 	movl	%eax,36(%edi)
2909 	cmpl	$7,%ecx
2910 	je	L05012break
2911 	incl	%ecx
2912 	xorl	16(%edi),%eax
2913 	movl	%eax,40(%edi)
2914 	xorl	20(%edi),%eax
2915 	movl	%eax,44(%edi)
2916 	addl	$24,%edi
2917 	jmp	L04912loop
2918 L05012break:
2919 	movl	$12,72(%edi)
2920 	xorl	%eax,%eax
2921 	jmp	L045exit
2922 L04414rounds:
2923 	movl	(%esi),%eax
2924 	movl	4(%esi),%ebx
2925 	movl	8(%esi),%ecx
2926 	movl	12(%esi),%edx
2927 	movl	%eax,(%edi)
2928 	movl	%ebx,4(%edi)
2929 	movl	%ecx,8(%edi)
2930 	movl	%edx,12(%edi)
2931 	movl	16(%esi),%eax
2932 	movl	20(%esi),%ebx
2933 	movl	24(%esi),%ecx
2934 	movl	28(%esi),%edx
2935 	movl	%eax,16(%edi)
2936 	movl	%ebx,20(%edi)
2937 	movl	%ecx,24(%edi)
2938 	movl	%edx,28(%edi)
2939 	xorl	%ecx,%ecx
2940 	jmp	L05114shortcut
2941 .align	2,0x90
2942 L05214loop:
2943 	movl	28(%edi),%edx
2944 L05114shortcut:
2945 	movl	(%edi),%eax
2946 	movzbl	%dl,%esi
2947 	movzbl	-128(%ebp,%esi,1),%ebx
2948 	movzbl	%dh,%esi
2949 	shll	$24,%ebx
2950 	xorl	%ebx,%eax
2951 	movzbl	-128(%ebp,%esi,1),%ebx
2952 	shrl	$16,%edx
2953 	movzbl	%dl,%esi
2954 	xorl	%ebx,%eax
2955 	movzbl	-128(%ebp,%esi,1),%ebx
2956 	movzbl	%dh,%esi
2957 	shll	$8,%ebx
2958 	xorl	%ebx,%eax
2959 	movzbl	-128(%ebp,%esi,1),%ebx
2960 	shll	$16,%ebx
2961 	xorl	%ebx,%eax
2962 	xorl	896(%ebp,%ecx,4),%eax
2963 	movl	%eax,32(%edi)
2964 	xorl	4(%edi),%eax
2965 	movl	%eax,36(%edi)
2966 	xorl	8(%edi),%eax
2967 	movl	%eax,40(%edi)
2968 	xorl	12(%edi),%eax
2969 	movl	%eax,44(%edi)
2970 	cmpl	$6,%ecx
2971 	je	L05314break
2972 	incl	%ecx
2973 	movl	%eax,%edx
2974 	movl	16(%edi),%eax
2975 	movzbl	%dl,%esi
2976 	movzbl	-128(%ebp,%esi,1),%ebx
2977 	movzbl	%dh,%esi
2978 	xorl	%ebx,%eax
2979 	movzbl	-128(%ebp,%esi,1),%ebx
2980 	shrl	$16,%edx
2981 	shll	$8,%ebx
2982 	movzbl	%dl,%esi
2983 	xorl	%ebx,%eax
2984 	movzbl	-128(%ebp,%esi,1),%ebx
2985 	movzbl	%dh,%esi
2986 	shll	$16,%ebx
2987 	xorl	%ebx,%eax
2988 	movzbl	-128(%ebp,%esi,1),%ebx
2989 	shll	$24,%ebx
2990 	xorl	%ebx,%eax
2991 	movl	%eax,48(%edi)
2992 	xorl	20(%edi),%eax
2993 	movl	%eax,52(%edi)
2994 	xorl	24(%edi),%eax
2995 	movl	%eax,56(%edi)
2996 	xorl	28(%edi),%eax
2997 	movl	%eax,60(%edi)
2998 	addl	$32,%edi
2999 	jmp	L05214loop
3000 L05314break:
3001 	movl	$14,48(%edi)
3002 	xorl	%eax,%eax
3003 	jmp	L045exit
3004 L040badpointer:
3005 	movl	$-1,%eax
3006 L045exit:
3007 	popl	%edi
3008 	popl	%esi
3009 	popl	%ebx
3010 	popl	%ebp
3011 	ret
3012 .globl	_AES_set_encrypt_key
3013 .align	4
3014 _AES_set_encrypt_key:
3015 L_AES_set_encrypt_key_begin:
3016 	%ifdef __CET__
3017 
3018 .byte	243,15,30,251
3019 	%endif
3020 
3021 	call	__x86_AES_set_encrypt_key
3022 	ret
3023 .globl	_AES_set_decrypt_key
3024 .align	4
3025 _AES_set_decrypt_key:
3026 L_AES_set_decrypt_key_begin:
3027 	%ifdef __CET__
3028 
3029 .byte	243,15,30,251
3030 	%endif
3031 
3032 	call	__x86_AES_set_encrypt_key
3033 	cmpl	$0,%eax
3034 	je	L054proceed
3035 	ret
3036 L054proceed:
3037 	pushl	%ebp
3038 	pushl	%ebx
3039 	pushl	%esi
3040 	pushl	%edi
3041 	movl	28(%esp),%esi
3042 	movl	240(%esi),%ecx
3043 	leal	(,%ecx,4),%ecx
3044 	leal	(%esi,%ecx,4),%edi
3045 .align	2,0x90
3046 L055invert:
3047 	movl	(%esi),%eax
3048 	movl	4(%esi),%ebx
3049 	movl	(%edi),%ecx
3050 	movl	4(%edi),%edx
3051 	movl	%eax,(%edi)
3052 	movl	%ebx,4(%edi)
3053 	movl	%ecx,(%esi)
3054 	movl	%edx,4(%esi)
3055 	movl	8(%esi),%eax
3056 	movl	12(%esi),%ebx
3057 	movl	8(%edi),%ecx
3058 	movl	12(%edi),%edx
3059 	movl	%eax,8(%edi)
3060 	movl	%ebx,12(%edi)
3061 	movl	%ecx,8(%esi)
3062 	movl	%edx,12(%esi)
3063 	addl	$16,%esi
3064 	subl	$16,%edi
3065 	cmpl	%edi,%esi
3066 	jne	L055invert
3067 	movl	28(%esp),%edi
3068 	movl	240(%edi),%esi
3069 	leal	-2(%esi,%esi,1),%esi
3070 	leal	(%edi,%esi,8),%esi
3071 	movl	%esi,28(%esp)
3072 	movl	16(%edi),%eax
3073 .align	2,0x90
3074 L056permute:
3075 	addl	$16,%edi
3076 	movl	$2155905152,%ebp
3077 	andl	%eax,%ebp
3078 	leal	(%eax,%eax,1),%ebx
3079 	movl	%ebp,%esi
3080 	shrl	$7,%ebp
3081 	subl	%ebp,%esi
3082 	andl	$4278124286,%ebx
3083 	andl	$454761243,%esi
3084 	xorl	%esi,%ebx
3085 	movl	$2155905152,%ebp
3086 	andl	%ebx,%ebp
3087 	leal	(%ebx,%ebx,1),%ecx
3088 	movl	%ebp,%esi
3089 	shrl	$7,%ebp
3090 	subl	%ebp,%esi
3091 	andl	$4278124286,%ecx
3092 	andl	$454761243,%esi
3093 	xorl	%eax,%ebx
3094 	xorl	%esi,%ecx
3095 	movl	$2155905152,%ebp
3096 	andl	%ecx,%ebp
3097 	leal	(%ecx,%ecx,1),%edx
3098 	movl	%ebp,%esi
3099 	shrl	$7,%ebp
3100 	xorl	%eax,%ecx
3101 	subl	%ebp,%esi
3102 	andl	$4278124286,%edx
3103 	andl	$454761243,%esi
3104 	roll	$8,%eax
3105 	xorl	%esi,%edx
3106 	movl	4(%edi),%ebp
3107 	xorl	%ebx,%eax
3108 	xorl	%edx,%ebx
3109 	xorl	%ecx,%eax
3110 	roll	$24,%ebx
3111 	xorl	%edx,%ecx
3112 	xorl	%edx,%eax
3113 	roll	$16,%ecx
3114 	xorl	%ebx,%eax
3115 	roll	$8,%edx
3116 	xorl	%ecx,%eax
3117 	movl	%ebp,%ebx
3118 	xorl	%edx,%eax
3119 	movl	%eax,(%edi)
3120 	movl	$2155905152,%ebp
3121 	andl	%ebx,%ebp
3122 	leal	(%ebx,%ebx,1),%ecx
3123 	movl	%ebp,%esi
3124 	shrl	$7,%ebp
3125 	subl	%ebp,%esi
3126 	andl	$4278124286,%ecx
3127 	andl	$454761243,%esi
3128 	xorl	%esi,%ecx
3129 	movl	$2155905152,%ebp
3130 	andl	%ecx,%ebp
3131 	leal	(%ecx,%ecx,1),%edx
3132 	movl	%ebp,%esi
3133 	shrl	$7,%ebp
3134 	subl	%ebp,%esi
3135 	andl	$4278124286,%edx
3136 	andl	$454761243,%esi
3137 	xorl	%ebx,%ecx
3138 	xorl	%esi,%edx
3139 	movl	$2155905152,%ebp
3140 	andl	%edx,%ebp
3141 	leal	(%edx,%edx,1),%eax
3142 	movl	%ebp,%esi
3143 	shrl	$7,%ebp
3144 	xorl	%ebx,%edx
3145 	subl	%ebp,%esi
3146 	andl	$4278124286,%eax
3147 	andl	$454761243,%esi
3148 	roll	$8,%ebx
3149 	xorl	%esi,%eax
3150 	movl	8(%edi),%ebp
3151 	xorl	%ecx,%ebx
3152 	xorl	%eax,%ecx
3153 	xorl	%edx,%ebx
3154 	roll	$24,%ecx
3155 	xorl	%eax,%edx
3156 	xorl	%eax,%ebx
3157 	roll	$16,%edx
3158 	xorl	%ecx,%ebx
3159 	roll	$8,%eax
3160 	xorl	%edx,%ebx
3161 	movl	%ebp,%ecx
3162 	xorl	%eax,%ebx
3163 	movl	%ebx,4(%edi)
3164 	movl	$2155905152,%ebp
3165 	andl	%ecx,%ebp
3166 	leal	(%ecx,%ecx,1),%edx
3167 	movl	%ebp,%esi
3168 	shrl	$7,%ebp
3169 	subl	%ebp,%esi
3170 	andl	$4278124286,%edx
3171 	andl	$454761243,%esi
3172 	xorl	%esi,%edx
3173 	movl	$2155905152,%ebp
3174 	andl	%edx,%ebp
3175 	leal	(%edx,%edx,1),%eax
3176 	movl	%ebp,%esi
3177 	shrl	$7,%ebp
3178 	subl	%ebp,%esi
3179 	andl	$4278124286,%eax
3180 	andl	$454761243,%esi
3181 	xorl	%ecx,%edx
3182 	xorl	%esi,%eax
3183 	movl	$2155905152,%ebp
3184 	andl	%eax,%ebp
3185 	leal	(%eax,%eax,1),%ebx
3186 	movl	%ebp,%esi
3187 	shrl	$7,%ebp
3188 	xorl	%ecx,%eax
3189 	subl	%ebp,%esi
3190 	andl	$4278124286,%ebx
3191 	andl	$454761243,%esi
3192 	roll	$8,%ecx
3193 	xorl	%esi,%ebx
3194 	movl	12(%edi),%ebp
3195 	xorl	%edx,%ecx
3196 	xorl	%ebx,%edx
3197 	xorl	%eax,%ecx
3198 	roll	$24,%edx
3199 	xorl	%ebx,%eax
3200 	xorl	%ebx,%ecx
3201 	roll	$16,%eax
3202 	xorl	%edx,%ecx
3203 	roll	$8,%ebx
3204 	xorl	%eax,%ecx
3205 	movl	%ebp,%edx
3206 	xorl	%ebx,%ecx
3207 	movl	%ecx,8(%edi)
3208 	movl	$2155905152,%ebp
3209 	andl	%edx,%ebp
3210 	leal	(%edx,%edx,1),%eax
3211 	movl	%ebp,%esi
3212 	shrl	$7,%ebp
3213 	subl	%ebp,%esi
3214 	andl	$4278124286,%eax
3215 	andl	$454761243,%esi
3216 	xorl	%esi,%eax
3217 	movl	$2155905152,%ebp
3218 	andl	%eax,%ebp
3219 	leal	(%eax,%eax,1),%ebx
3220 	movl	%ebp,%esi
3221 	shrl	$7,%ebp
3222 	subl	%ebp,%esi
3223 	andl	$4278124286,%ebx
3224 	andl	$454761243,%esi
3225 	xorl	%edx,%eax
3226 	xorl	%esi,%ebx
3227 	movl	$2155905152,%ebp
3228 	andl	%ebx,%ebp
3229 	leal	(%ebx,%ebx,1),%ecx
3230 	movl	%ebp,%esi
3231 	shrl	$7,%ebp
3232 	xorl	%edx,%ebx
3233 	subl	%ebp,%esi
3234 	andl	$4278124286,%ecx
3235 	andl	$454761243,%esi
3236 	roll	$8,%edx
3237 	xorl	%esi,%ecx
3238 	movl	16(%edi),%ebp
3239 	xorl	%eax,%edx
3240 	xorl	%ecx,%eax
3241 	xorl	%ebx,%edx
3242 	roll	$24,%eax
3243 	xorl	%ecx,%ebx
3244 	xorl	%ecx,%edx
3245 	roll	$16,%ebx
3246 	xorl	%eax,%edx
3247 	roll	$8,%ecx
3248 	xorl	%ebx,%edx
3249 	movl	%ebp,%eax
3250 	xorl	%ecx,%edx
3251 	movl	%edx,12(%edi)
3252 	cmpl	28(%esp),%edi
3253 	jb	L056permute
3254 	xorl	%eax,%eax
3255 	popl	%edi
3256 	popl	%esi
3257 	popl	%ebx
3258 	popl	%ebp
3259 	ret
3260 .byte	65,69,83,32,102,111,114,32,120,56,54,44,32,67,82,89
3261 .byte	80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114
3262 .byte	111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
3263 .section __IMPORT,__pointers,non_lazy_symbol_pointers
3264 L_OPENSSL_ia32cap_P$non_lazy_ptr:
3265 .indirect_symbol	_OPENSSL_ia32cap_P
3266 .long	0
3267 .comm	_OPENSSL_ia32cap_P,16,2
3268