Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Side by Side Diff: third_party/boringssl/linux-x86/crypto/aes/aes-586.S

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

Powered by Google App Engine
This is Rietveld 408576698