And so it begins...
[oweals/openssl.git] / fips-1.0 / aes / asm / fips-ax86-elf.s
1
2
3
4
5
6
7         .file   "aes-586.s"
8 .globl  AES_Te
9 .text
10 .globl  _x86_AES_encrypt
11 .type   _x86_AES_encrypt,@function
12 .align  16
13 _x86_AES_encrypt:
14         movl    %edi,           12(%esp)
15         xorl    (%edi),         %eax
16         xorl    4(%edi),        %ebx
17         xorl    8(%edi),        %ecx
18         xorl    12(%edi),       %edx
19         movl    240(%edi),      %esi
20         leal    -2(%esi,%esi),  %esi
21         leal    (%edi,%esi,8),  %esi
22         movl    %esi,           16(%esp)
23 .align  4
24 .L000loop:
25         movl    %eax,           %esi
26         andl    $255,           %esi
27         movl    (%ebp,%esi,8),  %esi
28         movzbl  %bh,            %edi
29         xorl    3(%ebp,%edi,8), %esi
30         movl    %ecx,           %edi
31         shrl    $16,            %edi
32         andl    $255,           %edi
33         xorl    2(%ebp,%edi,8), %esi
34         movl    %edx,           %edi
35         shrl    $24,            %edi
36         xorl    1(%ebp,%edi,8), %esi
37         movl    %esi,           4(%esp)
38
39         movl    %ebx,           %esi
40         andl    $255,           %esi
41         shrl    $16,            %ebx
42         movl    (%ebp,%esi,8),  %esi
43         movzbl  %ch,            %edi
44         xorl    3(%ebp,%edi,8), %esi
45         movl    %edx,           %edi
46         shrl    $16,            %edi
47         andl    $255,           %edi
48         xorl    2(%ebp,%edi,8), %esi
49         movl    %eax,           %edi
50         shrl    $24,            %edi
51         xorl    1(%ebp,%edi,8), %esi
52         movl    %esi,           8(%esp)
53
54         movl    %ecx,           %esi
55         andl    $255,           %esi
56         shrl    $24,            %ecx
57         movl    (%ebp,%esi,8),  %esi
58         movzbl  %dh,            %edi
59         xorl    3(%ebp,%edi,8), %esi
60         movl    %eax,           %edi
61         shrl    $16,            %edi
62         andl    $255,           %edx
63         andl    $255,           %edi
64         xorl    2(%ebp,%edi,8), %esi
65         movzbl  %bh,            %edi
66         xorl    1(%ebp,%edi,8), %esi
67
68         movl    12(%esp),       %edi
69         movl    (%ebp,%edx,8),  %edx
70         movzbl  %ah,            %eax
71         xorl    3(%ebp,%eax,8), %edx
72         movl    4(%esp),        %eax
73         andl    $255,           %ebx
74         xorl    2(%ebp,%ebx,8), %edx
75         movl    8(%esp),        %ebx
76         xorl    1(%ebp,%ecx,8), %edx
77         movl    %esi,           %ecx
78
79         addl    $16,            %edi
80         xorl    (%edi),         %eax
81         xorl    4(%edi),        %ebx
82         xorl    8(%edi),        %ecx
83         xorl    12(%edi),       %edx
84         cmpl    16(%esp),       %edi
85         movl    %edi,           12(%esp)
86         jb      .L000loop
87         movl    %eax,           %esi
88         andl    $255,           %esi
89         movl    2(%ebp,%esi,8), %esi
90         andl    $255,           %esi
91         movzbl  %bh,            %edi
92         movl    (%ebp,%edi,8),  %edi
93         andl    $65280,         %edi
94         xorl    %edi,           %esi
95         movl    %ecx,           %edi
96         shrl    $16,            %edi
97         andl    $255,           %edi
98         movl    (%ebp,%edi,8),  %edi
99         andl    $16711680,      %edi
100         xorl    %edi,           %esi
101         movl    %edx,           %edi
102         shrl    $24,            %edi
103         movl    2(%ebp,%edi,8), %edi
104         andl    $4278190080,    %edi
105         xorl    %edi,           %esi
106         movl    %esi,           4(%esp)
107         movl    %ebx,           %esi
108         andl    $255,           %esi
109         shrl    $16,            %ebx
110         movl    2(%ebp,%esi,8), %esi
111         andl    $255,           %esi
112         movzbl  %ch,            %edi
113         movl    (%ebp,%edi,8),  %edi
114         andl    $65280,         %edi
115         xorl    %edi,           %esi
116         movl    %edx,           %edi
117         shrl    $16,            %edi
118         andl    $255,           %edi
119         movl    (%ebp,%edi,8),  %edi
120         andl    $16711680,      %edi
121         xorl    %edi,           %esi
122         movl    %eax,           %edi
123         shrl    $24,            %edi
124         movl    2(%ebp,%edi,8), %edi
125         andl    $4278190080,    %edi
126         xorl    %edi,           %esi
127         movl    %esi,           8(%esp)
128         movl    %ecx,           %esi
129         andl    $255,           %esi
130         shrl    $24,            %ecx
131         movl    2(%ebp,%esi,8), %esi
132         andl    $255,           %esi
133         movzbl  %dh,            %edi
134         movl    (%ebp,%edi,8),  %edi
135         andl    $65280,         %edi
136         xorl    %edi,           %esi
137         movl    %eax,           %edi
138         shrl    $16,            %edi
139         andl    $255,           %edx
140         andl    $255,           %edi
141         movl    (%ebp,%edi,8),  %edi
142         andl    $16711680,      %edi
143         xorl    %edi,           %esi
144         movzbl  %bh,            %edi
145         movl    2(%ebp,%edi,8), %edi
146         andl    $4278190080,    %edi
147         xorl    %edi,           %esi
148         movl    12(%esp),       %edi
149         andl    $255,           %edx
150         movl    2(%ebp,%edx,8), %edx
151         andl    $255,           %edx
152         movzbl  %ah,            %eax
153         movl    (%ebp,%eax,8),  %eax
154         andl    $65280,         %eax
155         xorl    %eax,           %edx
156         movl    4(%esp),        %eax
157         andl    $255,           %ebx
158         movl    (%ebp,%ebx,8),  %ebx
159         andl    $16711680,      %ebx
160         xorl    %ebx,           %edx
161         movl    8(%esp),        %ebx
162         movl    2(%ebp,%ecx,8), %ecx
163         andl    $4278190080,    %ecx
164         xorl    %ecx,           %edx
165         movl    %esi,           %ecx
166         addl    $16,            %edi
167         xorl    (%edi),         %eax
168         xorl    4(%edi),        %ebx
169         xorl    8(%edi),        %ecx
170         xorl    12(%edi),       %edx
171         ret
172 .align  64
173 AES_Te:
174         .long   2774754246,2774754246
175         .long   2222750968,2222750968
176         .long   2574743534,2574743534
177         .long   2373680118,2373680118
178         .long   234025727,234025727
179         .long   3177933782,3177933782
180         .long   2976870366,2976870366
181         .long   1422247313,1422247313
182         .long   1345335392,1345335392
183         .long   50397442,50397442
184         .long   2842126286,2842126286
185         .long   2099981142,2099981142
186         .long   436141799,436141799
187         .long   1658312629,1658312629
188         .long   3870010189,3870010189
189         .long   2591454956,2591454956
190         .long   1170918031,1170918031
191         .long   2642575903,2642575903
192         .long   1086966153,1086966153
193         .long   2273148410,2273148410
194         .long   368769775,368769775
195         .long   3948501426,3948501426
196         .long   3376891790,3376891790
197         .long   200339707,200339707
198         .long   3970805057,3970805057
199         .long   1742001331,1742001331
200         .long   4255294047,4255294047
201         .long   3937382213,3937382213
202         .long   3214711843,3214711843
203         .long   4154762323,4154762323
204         .long   2524082916,2524082916
205         .long   1539358875,1539358875
206         .long   3266819957,3266819957
207         .long   486407649,486407649
208         .long   2928907069,2928907069
209         .long   1780885068,1780885068
210         .long   1513502316,1513502316
211         .long   1094664062,1094664062
212         .long   49805301,49805301
213         .long   1338821763,1338821763
214         .long   1546925160,1546925160
215         .long   4104496465,4104496465
216         .long   887481809,887481809
217         .long   150073849,150073849
218         .long   2473685474,2473685474
219         .long   1943591083,1943591083
220         .long   1395732834,1395732834
221         .long   1058346282,1058346282
222         .long   201589768,201589768
223         .long   1388824469,1388824469
224         .long   1696801606,1696801606
225         .long   1589887901,1589887901
226         .long   672667696,672667696
227         .long   2711000631,2711000631
228         .long   251987210,251987210
229         .long   3046808111,3046808111
230         .long   151455502,151455502
231         .long   907153956,907153956
232         .long   2608889883,2608889883
233         .long   1038279391,1038279391
234         .long   652995533,652995533
235         .long   1764173646,1764173646
236         .long   3451040383,3451040383
237         .long   2675275242,2675275242
238         .long   453576978,453576978
239         .long   2659418909,2659418909
240         .long   1949051992,1949051992
241         .long   773462580,773462580
242         .long   756751158,756751158
243         .long   2993581788,2993581788
244         .long   3998898868,3998898868
245         .long   4221608027,4221608027
246         .long   4132590244,4132590244
247         .long   1295727478,1295727478
248         .long   1641469623,1641469623
249         .long   3467883389,3467883389
250         .long   2066295122,2066295122
251         .long   1055122397,1055122397
252         .long   1898917726,1898917726
253         .long   2542044179,2542044179
254         .long   4115878822,4115878822
255         .long   1758581177,1758581177
256         .long   0,0
257         .long   753790401,753790401
258         .long   1612718144,1612718144
259         .long   536673507,536673507
260         .long   3367088505,3367088505
261         .long   3982187446,3982187446
262         .long   3194645204,3194645204
263         .long   1187761037,1187761037
264         .long   3653156455,3653156455
265         .long   1262041458,1262041458
266         .long   3729410708,3729410708
267         .long   3561770136,3561770136
268         .long   3898103984,3898103984
269         .long   1255133061,1255133061
270         .long   1808847035,1808847035
271         .long   720367557,720367557
272         .long   3853167183,3853167183
273         .long   385612781,385612781
274         .long   3309519750,3309519750
275         .long   3612167578,3612167578
276         .long   1429418854,1429418854
277         .long   2491778321,2491778321
278         .long   3477423498,3477423498
279         .long   284817897,284817897
280         .long   100794884,100794884
281         .long   2172616702,2172616702
282         .long   4031795360,4031795360
283         .long   1144798328,1144798328
284         .long   3131023141,3131023141
285         .long   3819481163,3819481163
286         .long   4082192802,4082192802
287         .long   4272137053,4272137053
288         .long   3225436288,3225436288
289         .long   2324664069,2324664069
290         .long   2912064063,2912064063
291         .long   3164445985,3164445985
292         .long   1211644016,1211644016
293         .long   83228145,83228145
294         .long   3753688163,3753688163
295         .long   3249976951,3249976951
296         .long   1977277103,1977277103
297         .long   1663115586,1663115586
298         .long   806359072,806359072
299         .long   452984805,452984805
300         .long   250868733,250868733
301         .long   1842533055,1842533055
302         .long   1288555905,1288555905
303         .long   336333848,336333848
304         .long   890442534,890442534
305         .long   804056259,804056259
306         .long   3781124030,3781124030
307         .long   2727843637,2727843637
308         .long   3427026056,3427026056
309         .long   957814574,957814574
310         .long   1472513171,1472513171
311         .long   4071073621,4071073621
312         .long   2189328124,2189328124
313         .long   1195195770,1195195770
314         .long   2892260552,2892260552
315         .long   3881655738,3881655738
316         .long   723065138,723065138
317         .long   2507371494,2507371494
318         .long   2690670784,2690670784
319         .long   2558624025,2558624025
320         .long   3511635870,3511635870
321         .long   2145180835,2145180835
322         .long   1713513028,1713513028
323         .long   2116692564,2116692564
324         .long   2878378043,2878378043
325         .long   2206763019,2206763019
326         .long   3393603212,3393603212
327         .long   703524551,703524551
328         .long   3552098411,3552098411
329         .long   1007948840,1007948840
330         .long   2044649127,2044649127
331         .long   3797835452,3797835452
332         .long   487262998,487262998
333         .long   1994120109,1994120109
334         .long   1004593371,1004593371
335         .long   1446130276,1446130276
336         .long   1312438900,1312438900
337         .long   503974420,503974420
338         .long   3679013266,3679013266
339         .long   168166924,168166924
340         .long   1814307912,1814307912
341         .long   3831258296,3831258296
342         .long   1573044895,1573044895
343         .long   1859376061,1859376061
344         .long   4021070915,4021070915
345         .long   2791465668,2791465668
346         .long   2828112185,2828112185
347         .long   2761266481,2761266481
348         .long   937747667,937747667
349         .long   2339994098,2339994098
350         .long   854058965,854058965
351         .long   1137232011,1137232011
352         .long   1496790894,1496790894
353         .long   3077402074,3077402074
354         .long   2358086913,2358086913
355         .long   1691735473,1691735473
356         .long   3528347292,3528347292
357         .long   3769215305,3769215305
358         .long   3027004632,3027004632
359         .long   4199962284,4199962284
360         .long   133494003,133494003
361         .long   636152527,636152527
362         .long   2942657994,2942657994
363         .long   2390391540,2390391540
364         .long   3920539207,3920539207
365         .long   403179536,403179536
366         .long   3585784431,3585784431
367         .long   2289596656,2289596656
368         .long   1864705354,1864705354
369         .long   1915629148,1915629148
370         .long   605822008,605822008
371         .long   4054230615,4054230615
372         .long   3350508659,3350508659
373         .long   1371981463,1371981463
374         .long   602466507,602466507
375         .long   2094914977,2094914977
376         .long   2624877800,2624877800
377         .long   555687742,555687742
378         .long   3712699286,3712699286
379         .long   3703422305,3703422305
380         .long   2257292045,2257292045
381         .long   2240449039,2240449039
382         .long   2423288032,2423288032
383         .long   1111375484,1111375484
384         .long   3300242801,3300242801
385         .long   2858837708,2858837708
386         .long   3628615824,3628615824
387         .long   84083462,84083462
388         .long   32962295,32962295
389         .long   302911004,302911004
390         .long   2741068226,2741068226
391         .long   1597322602,1597322602
392         .long   4183250862,4183250862
393         .long   3501832553,3501832553
394         .long   2441512471,2441512471
395         .long   1489093017,1489093017
396         .long   656219450,656219450
397         .long   3114180135,3114180135
398         .long   954327513,954327513
399         .long   335083755,335083755
400         .long   3013122091,3013122091
401         .long   856756514,856756514
402         .long   3144247762,3144247762
403         .long   1893325225,1893325225
404         .long   2307821063,2307821063
405         .long   2811532339,2811532339
406         .long   3063651117,3063651117
407         .long   572399164,572399164
408         .long   2458355477,2458355477
409         .long   552200649,552200649
410         .long   1238290055,1238290055
411         .long   4283782570,4283782570
412         .long   2015897680,2015897680
413         .long   2061492133,2061492133
414         .long   2408352771,2408352771
415         .long   4171342169,4171342169
416         .long   2156497161,2156497161
417         .long   386731290,386731290
418         .long   3669999461,3669999461
419         .long   837215959,837215959
420         .long   3326231172,3326231172
421         .long   3093850320,3093850320
422         .long   3275833730,3275833730
423         .long   2962856233,2962856233
424         .long   1999449434,1999449434
425         .long   286199582,286199582
426         .long   3417354363,3417354363
427         .long   4233385128,4233385128
428         .long   3602627437,3602627437
429         .long   974525996,974525996
430         .long   1,2,4,8
431         .long   16,32,64,128
432         .long   27,54,0,0,0,0,0,0
433 .L__x86_AES_encrypt_end:
434 .size   _x86_AES_encrypt,.L__x86_AES_encrypt_end-_x86_AES_encrypt
435 .ident  "_x86_AES_encrypt"
436 .globl  AES_Te
437 .text
438 .globl  AES_encrypt
439 .type   AES_encrypt,@function
440 .align  16
441 AES_encrypt:
442         pushl   %ebp
443         pushl   %ebx
444         pushl   %esi
445         pushl   %edi
446
447         movl    20(%esp),       %esi
448         movl    28(%esp),       %edi
449         movl    %esp,           %eax
450         subl    $24,            %esp
451         andl    $-64,           %esp
452         addl    $4,             %esp
453         movl    %eax,           16(%esp)
454         call    .L001pic_point
455 .L001pic_point:
456         popl    %ebp
457         leal    AES_Te-.L001pic_point(%ebp),%ebp
458         movl    (%esi),         %eax
459         movl    4(%esi),        %ebx
460         movl    8(%esi),        %ecx
461         movl    12(%esi),       %edx
462         call    _x86_AES_encrypt
463         movl    16(%esp),       %esp
464         movl    24(%esp),       %esi
465         movl    %eax,           (%esi)
466         movl    %ebx,           4(%esi)
467         movl    %ecx,           8(%esi)
468         movl    %edx,           12(%esi)
469         popl    %edi
470         popl    %esi
471         popl    %ebx
472         popl    %ebp
473         ret
474 .L_AES_encrypt_end:
475 .size   AES_encrypt,.L_AES_encrypt_end-AES_encrypt
476 .ident  "AES_encrypt"
477 .globl  AES_Td
478 .text
479 .globl  _x86_AES_decrypt
480 .type   _x86_AES_decrypt,@function
481 .align  16
482 _x86_AES_decrypt:
483         movl    %edi,           12(%esp)
484         xorl    (%edi),         %eax
485         xorl    4(%edi),        %ebx
486         xorl    8(%edi),        %ecx
487         xorl    12(%edi),       %edx
488         movl    240(%edi),      %esi
489         leal    -2(%esi,%esi),  %esi
490         leal    (%edi,%esi,8),  %esi
491         movl    %esi,           16(%esp)
492 .align  4
493 .L002loop:
494         movl    %eax,           %esi
495         andl    $255,           %esi
496         movl    (%ebp,%esi,8),  %esi
497         movzbl  %dh,            %edi
498         xorl    3(%ebp,%edi,8), %esi
499         movl    %ecx,           %edi
500         shrl    $16,            %edi
501         andl    $255,           %edi
502         xorl    2(%ebp,%edi,8), %esi
503         movl    %ebx,           %edi
504         shrl    $24,            %edi
505         xorl    1(%ebp,%edi,8), %esi
506         movl    %esi,           4(%esp)
507
508         movl    %ebx,           %esi
509         andl    $255,           %esi
510         movl    (%ebp,%esi,8),  %esi
511         movzbl  %ah,            %edi
512         xorl    3(%ebp,%edi,8), %esi
513         movl    %edx,           %edi
514         shrl    $16,            %edi
515         andl    $255,           %edi
516         xorl    2(%ebp,%edi,8), %esi
517         movl    %ecx,           %edi
518         shrl    $24,            %edi
519         xorl    1(%ebp,%edi,8), %esi
520         movl    %esi,           8(%esp)
521
522         movl    %ecx,           %esi
523         andl    $255,           %esi
524         movl    (%ebp,%esi,8),  %esi
525         movzbl  %bh,            %edi
526         xorl    3(%ebp,%edi,8), %esi
527         movl    %eax,           %edi
528         shrl    $16,            %edi
529         andl    $255,           %edi
530         xorl    2(%ebp,%edi,8), %esi
531         movl    %edx,           %edi
532         shrl    $24,            %edi
533         xorl    1(%ebp,%edi,8), %esi
534
535         movl    12(%esp),       %edi
536         andl    $255,           %edx
537         movl    (%ebp,%edx,8),  %edx
538         movzbl  %ch,            %ecx
539         xorl    3(%ebp,%ecx,8), %edx
540         movl    %esi,           %ecx
541         shrl    $16,            %ebx
542         andl    $255,           %ebx
543         xorl    2(%ebp,%ebx,8), %edx
544         movl    8(%esp),        %ebx
545         shrl    $24,            %eax
546         xorl    1(%ebp,%eax,8), %edx
547         movl    4(%esp),        %eax
548
549         addl    $16,            %edi
550         xorl    (%edi),         %eax
551         xorl    4(%edi),        %ebx
552         xorl    8(%edi),        %ecx
553         xorl    12(%edi),       %edx
554         cmpl    16(%esp),       %edi
555         movl    %edi,           12(%esp)
556         jb      .L002loop
557         movl    %eax,           %esi
558         andl    $255,           %esi
559         movzbl  2048(%ebp,%esi,1),%esi
560         movzbl  %dh,            %edi
561         movzbl  2048(%ebp,%edi,1),%edi
562         sall    $8,             %edi
563         xorl    %edi,           %esi
564         movl    %ecx,           %edi
565         shrl    $16,            %edi
566         andl    $255,           %edi
567         movzbl  2048(%ebp,%edi,1),%edi
568         sall    $16,            %edi
569         xorl    %edi,           %esi
570         movl    %ebx,           %edi
571         shrl    $24,            %edi
572         movzbl  2048(%ebp,%edi,1),%edi
573         sall    $24,            %edi
574         xorl    %edi,           %esi
575         movl    %esi,           4(%esp)
576         movl    %ebx,           %esi
577         andl    $255,           %esi
578         movzbl  2048(%ebp,%esi,1),%esi
579         movzbl  %ah,            %edi
580         movzbl  2048(%ebp,%edi,1),%edi
581         sall    $8,             %edi
582         xorl    %edi,           %esi
583         movl    %edx,           %edi
584         shrl    $16,            %edi
585         andl    $255,           %edi
586         movzbl  2048(%ebp,%edi,1),%edi
587         sall    $16,            %edi
588         xorl    %edi,           %esi
589         movl    %ecx,           %edi
590         shrl    $24,            %edi
591         movzbl  2048(%ebp,%edi,1),%edi
592         sall    $24,            %edi
593         xorl    %edi,           %esi
594         movl    %esi,           8(%esp)
595         movl    %ecx,           %esi
596         andl    $255,           %esi
597         movzbl  2048(%ebp,%esi,1),%esi
598         movzbl  %bh,            %edi
599         movzbl  2048(%ebp,%edi,1),%edi
600         sall    $8,             %edi
601         xorl    %edi,           %esi
602         movl    %eax,           %edi
603         shrl    $16,            %edi
604         andl    $255,           %edi
605         movzbl  2048(%ebp,%edi,1),%edi
606         sall    $16,            %edi
607         xorl    %edi,           %esi
608         movl    %edx,           %edi
609         shrl    $24,            %edi
610         movzbl  2048(%ebp,%edi,1),%edi
611         sall    $24,            %edi
612         xorl    %edi,           %esi
613         movl    12(%esp),       %edi
614         andl    $255,           %edx
615         movzbl  2048(%ebp,%edx,1),%edx
616         movzbl  %ch,            %ecx
617         movzbl  2048(%ebp,%ecx,1),%ecx
618         sall    $8,             %ecx
619         xorl    %ecx,           %edx
620         movl    %esi,           %ecx
621         shrl    $16,            %ebx
622         andl    $255,           %ebx
623         movzbl  2048(%ebp,%ebx,1),%ebx
624         sall    $16,            %ebx
625         xorl    %ebx,           %edx
626         movl    8(%esp),        %ebx
627         shrl    $24,            %eax
628         movzbl  2048(%ebp,%eax,1),%eax
629         sall    $24,            %eax
630         xorl    %eax,           %edx
631         movl    4(%esp),        %eax
632         addl    $16,            %edi
633         xorl    (%edi),         %eax
634         xorl    4(%edi),        %ebx
635         xorl    8(%edi),        %ecx
636         xorl    12(%edi),       %edx
637         ret
638 .align  64
639 AES_Td:
640         .long   1353184337,1353184337
641         .long   1399144830,1399144830
642         .long   3282310938,3282310938
643         .long   2522752826,2522752826
644         .long   3412831035,3412831035
645         .long   4047871263,4047871263
646         .long   2874735276,2874735276
647         .long   2466505547,2466505547
648         .long   1442459680,1442459680
649         .long   4134368941,4134368941
650         .long   2440481928,2440481928
651         .long   625738485,625738485
652         .long   4242007375,4242007375
653         .long   3620416197,3620416197
654         .long   2151953702,2151953702
655         .long   2409849525,2409849525
656         .long   1230680542,1230680542
657         .long   1729870373,1729870373
658         .long   2551114309,2551114309
659         .long   3787521629,3787521629
660         .long   41234371,41234371
661         .long   317738113,317738113
662         .long   2744600205,2744600205
663         .long   3338261355,3338261355
664         .long   3881799427,3881799427
665         .long   2510066197,2510066197
666         .long   3950669247,3950669247
667         .long   3663286933,3663286933
668         .long   763608788,763608788
669         .long   3542185048,3542185048
670         .long   694804553,694804553
671         .long   1154009486,1154009486
672         .long   1787413109,1787413109
673         .long   2021232372,2021232372
674         .long   1799248025,1799248025
675         .long   3715217703,3715217703
676         .long   3058688446,3058688446
677         .long   397248752,397248752
678         .long   1722556617,1722556617
679         .long   3023752829,3023752829
680         .long   407560035,407560035
681         .long   2184256229,2184256229
682         .long   1613975959,1613975959
683         .long   1165972322,1165972322
684         .long   3765920945,3765920945
685         .long   2226023355,2226023355
686         .long   480281086,480281086
687         .long   2485848313,2485848313
688         .long   1483229296,1483229296
689         .long   436028815,436028815
690         .long   2272059028,2272059028
691         .long   3086515026,3086515026
692         .long   601060267,601060267
693         .long   3791801202,3791801202
694         .long   1468997603,1468997603
695         .long   715871590,715871590
696         .long   120122290,120122290
697         .long   63092015,63092015
698         .long   2591802758,2591802758
699         .long   2768779219,2768779219
700         .long   4068943920,4068943920
701         .long   2997206819,2997206819
702         .long   3127509762,3127509762
703         .long   1552029421,1552029421
704         .long   723308426,723308426
705         .long   2461301159,2461301159
706         .long   4042393587,4042393587
707         .long   2715969870,2715969870
708         .long   3455375973,3455375973
709         .long   3586000134,3586000134
710         .long   526529745,526529745
711         .long   2331944644,2331944644
712         .long   2639474228,2639474228
713         .long   2689987490,2689987490
714         .long   853641733,853641733
715         .long   1978398372,1978398372
716         .long   971801355,971801355
717         .long   2867814464,2867814464
718         .long   111112542,111112542
719         .long   1360031421,1360031421
720         .long   4186579262,4186579262
721         .long   1023860118,1023860118
722         .long   2919579357,2919579357
723         .long   1186850381,1186850381
724         .long   3045938321,3045938321
725         .long   90031217,90031217
726         .long   1876166148,1876166148
727         .long   4279586912,4279586912
728         .long   620468249,620468249
729         .long   2548678102,2548678102
730         .long   3426959497,3426959497
731         .long   2006899047,2006899047
732         .long   3175278768,3175278768
733         .long   2290845959,2290845959
734         .long   945494503,945494503
735         .long   3689859193,3689859193
736         .long   1191869601,1191869601
737         .long   3910091388,3910091388
738         .long   3374220536,3374220536
739         .long   0,0
740         .long   2206629897,2206629897
741         .long   1223502642,1223502642
742         .long   2893025566,2893025566
743         .long   1316117100,1316117100
744         .long   4227796733,4227796733
745         .long   1446544655,1446544655
746         .long   517320253,517320253
747         .long   658058550,658058550
748         .long   1691946762,1691946762
749         .long   564550760,564550760
750         .long   3511966619,3511966619
751         .long   976107044,976107044
752         .long   2976320012,2976320012
753         .long   266819475,266819475
754         .long   3533106868,3533106868
755         .long   2660342555,2660342555
756         .long   1338359936,1338359936
757         .long   2720062561,2720062561
758         .long   1766553434,1766553434
759         .long   370807324,370807324
760         .long   179999714,179999714
761         .long   3844776128,3844776128
762         .long   1138762300,1138762300
763         .long   488053522,488053522
764         .long   185403662,185403662
765         .long   2915535858,2915535858
766         .long   3114841645,3114841645
767         .long   3366526484,3366526484
768         .long   2233069911,2233069911
769         .long   1275557295,1275557295
770         .long   3151862254,3151862254
771         .long   4250959779,4250959779
772         .long   2670068215,2670068215
773         .long   3170202204,3170202204
774         .long   3309004356,3309004356
775         .long   880737115,880737115
776         .long   1982415755,1982415755
777         .long   3703972811,3703972811
778         .long   1761406390,1761406390
779         .long   1676797112,1676797112
780         .long   3403428311,3403428311
781         .long   277177154,277177154
782         .long   1076008723,1076008723
783         .long   538035844,538035844
784         .long   2099530373,2099530373
785         .long   4164795346,4164795346
786         .long   288553390,288553390
787         .long   1839278535,1839278535
788         .long   1261411869,1261411869
789         .long   4080055004,4080055004
790         .long   3964831245,3964831245
791         .long   3504587127,3504587127
792         .long   1813426987,1813426987
793         .long   2579067049,2579067049
794         .long   4199060497,4199060497
795         .long   577038663,577038663
796         .long   3297574056,3297574056
797         .long   440397984,440397984
798         .long   3626794326,3626794326
799         .long   4019204898,4019204898
800         .long   3343796615,3343796615
801         .long   3251714265,3251714265
802         .long   4272081548,4272081548
803         .long   906744984,906744984
804         .long   3481400742,3481400742
805         .long   685669029,685669029
806         .long   646887386,646887386
807         .long   2764025151,2764025151
808         .long   3835509292,3835509292
809         .long   227702864,227702864
810         .long   2613862250,2613862250
811         .long   1648787028,1648787028
812         .long   3256061430,3256061430
813         .long   3904428176,3904428176
814         .long   1593260334,1593260334
815         .long   4121936770,4121936770
816         .long   3196083615,3196083615
817         .long   2090061929,2090061929
818         .long   2838353263,2838353263
819         .long   3004310991,3004310991
820         .long   999926984,999926984
821         .long   2809993232,2809993232
822         .long   1852021992,1852021992
823         .long   2075868123,2075868123
824         .long   158869197,158869197
825         .long   4095236462,4095236462
826         .long   28809964,28809964
827         .long   2828685187,2828685187
828         .long   1701746150,1701746150
829         .long   2129067946,2129067946
830         .long   147831841,147831841
831         .long   3873969647,3873969647
832         .long   3650873274,3650873274
833         .long   3459673930,3459673930
834         .long   3557400554,3557400554
835         .long   3598495785,3598495785
836         .long   2947720241,2947720241
837         .long   824393514,824393514
838         .long   815048134,815048134
839         .long   3227951669,3227951669
840         .long   935087732,935087732
841         .long   2798289660,2798289660
842         .long   2966458592,2966458592
843         .long   366520115,366520115
844         .long   1251476721,1251476721
845         .long   4158319681,4158319681
846         .long   240176511,240176511
847         .long   804688151,804688151
848         .long   2379631990,2379631990
849         .long   1303441219,1303441219
850         .long   1414376140,1414376140
851         .long   3741619940,3741619940
852         .long   3820343710,3820343710
853         .long   461924940,461924940
854         .long   3089050817,3089050817
855         .long   2136040774,2136040774
856         .long   82468509,82468509
857         .long   1563790337,1563790337
858         .long   1937016826,1937016826
859         .long   776014843,776014843
860         .long   1511876531,1511876531
861         .long   1389550482,1389550482
862         .long   861278441,861278441
863         .long   323475053,323475053
864         .long   2355222426,2355222426
865         .long   2047648055,2047648055
866         .long   2383738969,2383738969
867         .long   2302415851,2302415851
868         .long   3995576782,3995576782
869         .long   902390199,902390199
870         .long   3991215329,3991215329
871         .long   1018251130,1018251130
872         .long   1507840668,1507840668
873         .long   1064563285,1064563285
874         .long   2043548696,2043548696
875         .long   3208103795,3208103795
876         .long   3939366739,3939366739
877         .long   1537932639,1537932639
878         .long   342834655,342834655
879         .long   2262516856,2262516856
880         .long   2180231114,2180231114
881         .long   1053059257,1053059257
882         .long   741614648,741614648
883         .long   1598071746,1598071746
884         .long   1925389590,1925389590
885         .long   203809468,203809468
886         .long   2336832552,2336832552
887         .long   1100287487,1100287487
888         .long   1895934009,1895934009
889         .long   3736275976,3736275976
890         .long   2632234200,2632234200
891         .long   2428589668,2428589668
892         .long   1636092795,1636092795
893         .long   1890988757,1890988757
894         .long   1952214088,1952214088
895         .long   1113045200,1113045200
896         .byte   82,9,106,213,48,54,165,56
897         .byte   191,64,163,158,129,243,215,251
898         .byte   124,227,57,130,155,47,255,135
899         .byte   52,142,67,68,196,222,233,203
900         .byte   84,123,148,50,166,194,35,61
901         .byte   238,76,149,11,66,250,195,78
902         .byte   8,46,161,102,40,217,36,178
903         .byte   118,91,162,73,109,139,209,37
904         .byte   114,248,246,100,134,104,152,22
905         .byte   212,164,92,204,93,101,182,146
906         .byte   108,112,72,80,253,237,185,218
907         .byte   94,21,70,87,167,141,157,132
908         .byte   144,216,171,0,140,188,211,10
909         .byte   247,228,88,5,184,179,69,6
910         .byte   208,44,30,143,202,63,15,2
911         .byte   193,175,189,3,1,19,138,107
912         .byte   58,145,17,65,79,103,220,234
913         .byte   151,242,207,206,240,180,230,115
914         .byte   150,172,116,34,231,173,53,133
915         .byte   226,249,55,232,28,117,223,110
916         .byte   71,241,26,113,29,41,197,137
917         .byte   111,183,98,14,170,24,190,27
918         .byte   252,86,62,75,198,210,121,32
919         .byte   154,219,192,254,120,205,90,244
920         .byte   31,221,168,51,136,7,199,49
921         .byte   177,18,16,89,39,128,236,95
922         .byte   96,81,127,169,25,181,74,13
923         .byte   45,229,122,159,147,201,156,239
924         .byte   160,224,59,77,174,42,245,176
925         .byte   200,235,187,60,131,83,153,97
926         .byte   23,43,4,126,186,119,214,38
927         .byte   225,105,20,99,85,33,12,125
928 .L__x86_AES_decrypt_end:
929 .size   _x86_AES_decrypt,.L__x86_AES_decrypt_end-_x86_AES_decrypt
930 .ident  "_x86_AES_decrypt"
931 .globl  AES_Td
932 .text
933 .globl  AES_decrypt
934 .type   AES_decrypt,@function
935 .align  16
936 AES_decrypt:
937         pushl   %ebp
938         pushl   %ebx
939         pushl   %esi
940         pushl   %edi
941
942         movl    20(%esp),       %esi
943         movl    28(%esp),       %edi
944         movl    %esp,           %eax
945         subl    $24,            %esp
946         andl    $-64,           %esp
947         addl    $4,             %esp
948         movl    %eax,           16(%esp)
949         call    .L003pic_point
950 .L003pic_point:
951         popl    %ebp
952         leal    AES_Td-.L003pic_point(%ebp),%ebp
953         leal    2176(%ebp),     %ebp
954         movl    -128(%ebp),     %eax
955         movl    -96(%ebp),      %ebx
956         movl    -64(%ebp),      %ecx
957         movl    -32(%ebp),      %edx
958         movl    (%ebp),         %eax
959         movl    32(%ebp),       %ebx
960         movl    64(%ebp),       %ecx
961         movl    96(%ebp),       %edx
962         leal    -2176(%ebp),    %ebp
963         movl    (%esi),         %eax
964         movl    4(%esi),        %ebx
965         movl    8(%esi),        %ecx
966         movl    12(%esi),       %edx
967         call    _x86_AES_decrypt
968         movl    16(%esp),       %esp
969         movl    24(%esp),       %esi
970         movl    %eax,           (%esi)
971         movl    %ebx,           4(%esi)
972         movl    %ecx,           8(%esi)
973         movl    %edx,           12(%esi)
974         popl    %edi
975         popl    %esi
976         popl    %ebx
977         popl    %ebp
978         ret
979 .L_AES_decrypt_end:
980 .size   AES_decrypt,.L_AES_decrypt_end-AES_decrypt
981 .ident  "AES_decrypt"
982 .globl  AES_Te
983 .globl  AES_Td
984 .text
985 .globl  AES_cbc_encrypt
986 .type   AES_cbc_encrypt,@function
987 .align  16
988 AES_cbc_encrypt:
989         pushl   %ebp
990         pushl   %ebx
991         pushl   %esi
992         pushl   %edi
993
994         movl    28(%esp),       %ecx
995         cmpl    $0,             %ecx
996         je      .L004enc_out
997         call    .L005pic_point
998 .L005pic_point:
999         popl    %ebp
1000         pushfl
1001         cld
1002         cmpl    $0,             44(%esp)
1003         je      .L006DECRYPT
1004         leal    AES_Te-.L005pic_point(%ebp),%ebp
1005         leal    -308(%esp),     %edi
1006         andl    $-64,           %edi
1007         movl    %ebp,           %eax
1008         leal    2048(%ebp),     %ebx
1009         movl    %edi,           %edx
1010         andl    $4095,          %eax
1011         andl    $4095,          %ebx
1012         andl    $4095,          %edx
1013         cmpl    %ebx,           %edx
1014         jb      .L007te_break_out
1015         subl    %ebx,           %edx
1016         subl    %edx,           %edi
1017         jmp     .L008te_ok
1018 .L007te_break_out:
1019         subl    %eax,           %edx
1020         andl    $4095,          %edx
1021         addl    $320,           %edx
1022         subl    %edx,           %edi
1023 .align  4
1024 .L008te_ok:
1025         movl    24(%esp),       %eax
1026         movl    28(%esp),       %ebx
1027         movl    36(%esp),       %edx
1028         movl    40(%esp),       %esi
1029         xchgl   %edi,           %esp
1030         addl    $4,             %esp
1031         movl    %edi,           16(%esp)
1032         movl    %eax,           20(%esp)
1033         movl    %ebx,           24(%esp)
1034         movl    %ecx,           28(%esp)
1035         movl    %edx,           32(%esp)
1036         movl    %esi,           36(%esp)
1037         movl    $0,             300(%esp)
1038         movl    %edx,           %ebx
1039         movl    $61,            %ecx
1040         subl    %ebp,           %ebx
1041         movl    %edx,           %esi
1042         andl    $4095,          %ebx
1043         leal    60(%esp),       %edi
1044         cmpl    $2048,          %ebx
1045         jb      .L009do_ecopy
1046         cmpl    $3852,          %ebx
1047         jb      .L010skip_ecopy
1048 .align  4
1049 .L009do_ecopy:
1050         movl    %edi,           32(%esp)
1051         .long   2784229001
1052 .L010skip_ecopy:
1053         movl    %eax,           %esi
1054         movl    $16,            %edi
1055 .align  4
1056 .L011prefetch_te:
1057         movl    (%ebp),         %eax
1058         movl    32(%ebp),       %ebx
1059         movl    64(%ebp),       %ecx
1060         movl    96(%ebp),       %edx
1061         leal    128(%ebp),      %ebp
1062         decl    %edi
1063         jnz     .L011prefetch_te
1064         subl    $2048,          %ebp
1065         movl    28(%esp),       %ecx
1066         movl    36(%esp),       %edi
1067         testl   $4294967280,    %ecx
1068         jz      .L012enc_tail
1069         movl    (%edi),         %eax
1070         movl    4(%edi),        %ebx
1071 .align  4
1072 .L013enc_loop:
1073         movl    8(%edi),        %ecx
1074         movl    12(%edi),       %edx
1075         xorl    (%esi),         %eax
1076         xorl    4(%esi),        %ebx
1077         xorl    8(%esi),        %ecx
1078         xorl    12(%esi),       %edx
1079         movl    32(%esp),       %edi
1080         call    _x86_AES_encrypt
1081         movl    20(%esp),       %esi
1082         movl    24(%esp),       %edi
1083         movl    %eax,           (%edi)
1084         movl    %ebx,           4(%edi)
1085         movl    %ecx,           8(%edi)
1086         movl    %edx,           12(%edi)
1087         movl    28(%esp),       %ecx
1088         leal    16(%esi),       %esi
1089         movl    %esi,           20(%esp)
1090         leal    16(%edi),       %edx
1091         movl    %edx,           24(%esp)
1092         subl    $16,            %ecx
1093         testl   $4294967280,    %ecx
1094         movl    %ecx,           28(%esp)
1095         jnz     .L013enc_loop
1096         testl   $15,            %ecx
1097         jnz     .L012enc_tail
1098         movl    36(%esp),       %esi
1099         movl    8(%edi),        %ecx
1100         movl    12(%edi),       %edx
1101         movl    %eax,           (%esi)
1102         movl    %ebx,           4(%esi)
1103         movl    %ecx,           8(%esi)
1104         movl    %edx,           12(%esi)
1105         cmpl    $0,             300(%esp)
1106         movl    32(%esp),       %edi
1107         movl    16(%esp),       %esp
1108         je      .L014skip_ezero
1109         movl    $60,            %ecx
1110         xorl    %eax,           %eax
1111 .align  4
1112         .long   2884892297
1113 .L014skip_ezero:
1114         popfl
1115 .L004enc_out:
1116         popl    %edi
1117         popl    %esi
1118         popl    %ebx
1119         popl    %ebp
1120         ret
1121         pushfl
1122 .align  4
1123 .L012enc_tail:
1124         pushl   %edi
1125         movl    24(%esp),       %edi
1126         movl    $16,            %ebx
1127         subl    %ecx,           %ebx
1128         cmpl    %esi,           %edi
1129         je      .L015enc_in_place
1130 .align  4
1131         .long   2767451785
1132         jmp     .L016enc_skip_in_place
1133 .L015enc_in_place:
1134         leal    (%edi,%ecx),    %edi
1135 .L016enc_skip_in_place:
1136         movl    %ebx,           %ecx
1137         xorl    %eax,           %eax
1138 .align  4
1139         .long   2868115081
1140         popl    %edi
1141         movl    24(%esp),       %esi
1142         movl    (%edi),         %eax
1143         movl    4(%edi),        %ebx
1144         movl    $16,            28(%esp)
1145         jmp     .L013enc_loop
1146 .align  4
1147 .L006DECRYPT:
1148         leal    AES_Td-.L005pic_point(%ebp),%ebp
1149         leal    -308(%esp),     %edi
1150         andl    $-64,           %edi
1151         movl    %ebp,           %eax
1152         leal    2304(%ebp),     %ebx
1153         movl    %edi,           %edx
1154         andl    $4095,          %eax
1155         andl    $4095,          %ebx
1156         andl    $4095,          %edx
1157         cmpl    %ebx,           %edx
1158         jb      .L017td_break_out
1159         subl    %ebx,           %edx
1160         subl    %edx,           %edi
1161         jmp     .L018td_ok
1162 .L017td_break_out:
1163         subl    %eax,           %edx
1164         andl    $4095,          %edx
1165         addl    $320,           %edx
1166         subl    %edx,           %edi
1167 .align  4
1168 .L018td_ok:
1169         movl    24(%esp),       %eax
1170         movl    28(%esp),       %ebx
1171         movl    36(%esp),       %edx
1172         movl    40(%esp),       %esi
1173         xchgl   %edi,           %esp
1174         addl    $4,             %esp
1175         movl    %edi,           16(%esp)
1176         movl    %eax,           20(%esp)
1177         movl    %ebx,           24(%esp)
1178         movl    %ecx,           28(%esp)
1179         movl    %edx,           32(%esp)
1180         movl    %esi,           36(%esp)
1181         movl    $0,             300(%esp)
1182         movl    %edx,           %ebx
1183         movl    $61,            %ecx
1184         subl    %ebp,           %ebx
1185         movl    %edx,           %esi
1186         andl    $4095,          %ebx
1187         leal    60(%esp),       %edi
1188         cmpl    $2304,          %ebx
1189         jb      .L019do_dcopy
1190         cmpl    $3852,          %ebx
1191         jb      .L020skip_dcopy
1192 .align  4
1193 .L019do_dcopy:
1194         movl    %edi,           32(%esp)
1195         .long   2784229001
1196 .L020skip_dcopy:
1197         movl    %eax,           %esi
1198         movl    $18,            %edi
1199 .align  4
1200 .L021prefetch_td:
1201         movl    (%ebp),         %eax
1202         movl    32(%ebp),       %ebx
1203         movl    64(%ebp),       %ecx
1204         movl    96(%ebp),       %edx
1205         leal    128(%ebp),      %ebp
1206         decl    %edi
1207         jnz     .L021prefetch_td
1208         subl    $2304,          %ebp
1209         cmpl    24(%esp),       %esi
1210         je      .L022dec_in_place
1211         movl    36(%esp),       %edi
1212         movl    %edi,           40(%esp)
1213 .align  4
1214 .L023dec_loop:
1215         movl    (%esi),         %eax
1216         movl    4(%esi),        %ebx
1217         movl    8(%esi),        %ecx
1218         movl    12(%esi),       %edx
1219         movl    32(%esp),       %edi
1220         call    _x86_AES_decrypt
1221         movl    40(%esp),       %edi
1222         movl    28(%esp),       %esi
1223         xorl    (%edi),         %eax
1224         xorl    4(%edi),        %ebx
1225         xorl    8(%edi),        %ecx
1226         xorl    12(%edi),       %edx
1227         subl    $16,            %esi
1228         jc      .L024dec_partial
1229         movl    %esi,           28(%esp)
1230         movl    20(%esp),       %esi
1231         movl    24(%esp),       %edi
1232         movl    %eax,           (%edi)
1233         movl    %ebx,           4(%edi)
1234         movl    %ecx,           8(%edi)
1235         movl    %edx,           12(%edi)
1236         movl    %esi,           40(%esp)
1237         leal    16(%esi),       %esi
1238         movl    %esi,           20(%esp)
1239         leal    16(%edi),       %edi
1240         movl    %edi,           24(%esp)
1241         jnz     .L023dec_loop
1242         movl    40(%esp),       %edi
1243 .L025dec_end:
1244         movl    36(%esp),       %esi
1245         movl    (%edi),         %eax
1246         movl    4(%edi),        %ebx
1247         movl    8(%edi),        %ecx
1248         movl    12(%edi),       %edx
1249         movl    %eax,           (%esi)
1250         movl    %ebx,           4(%esi)
1251         movl    %ecx,           8(%esi)
1252         movl    %edx,           12(%esi)
1253         jmp     .L026dec_out
1254 .align  4
1255 .L024dec_partial:
1256         leal    44(%esp),       %edi
1257         movl    %eax,           (%edi)
1258         movl    %ebx,           4(%edi)
1259         movl    %ecx,           8(%edi)
1260         movl    %edx,           12(%edi)
1261         leal    16(%esi),       %ecx
1262         movl    %edi,           %esi
1263         movl    24(%esp),       %edi
1264         .long   2767451785
1265         movl    20(%esp),       %edi
1266         jmp     .L025dec_end
1267 .align  4
1268 .L022dec_in_place:
1269 .L027dec_in_place_loop:
1270         leal    44(%esp),       %edi
1271         movl    (%esi),         %eax
1272         movl    4(%esi),        %ebx
1273         movl    8(%esi),        %ecx
1274         movl    12(%esi),       %edx
1275         movl    %eax,           (%edi)
1276         movl    %ebx,           4(%edi)
1277         movl    %ecx,           8(%edi)
1278         movl    %edx,           12(%edi)
1279         movl    32(%esp),       %edi
1280         call    _x86_AES_decrypt
1281         movl    36(%esp),       %edi
1282         movl    24(%esp),       %esi
1283         xorl    (%edi),         %eax
1284         xorl    4(%edi),        %ebx
1285         xorl    8(%edi),        %ecx
1286         xorl    12(%edi),       %edx
1287         movl    %eax,           (%esi)
1288         movl    %ebx,           4(%esi)
1289         movl    %ecx,           8(%esi)
1290         movl    %edx,           12(%esi)
1291         leal    16(%esi),       %esi
1292         movl    %esi,           24(%esp)
1293         leal    44(%esp),       %esi
1294         movl    (%esi),         %eax
1295         movl    4(%esi),        %ebx
1296         movl    8(%esi),        %ecx
1297         movl    12(%esi),       %edx
1298         movl    %eax,           (%edi)
1299         movl    %ebx,           4(%edi)
1300         movl    %ecx,           8(%edi)
1301         movl    %edx,           12(%edi)
1302         movl    20(%esp),       %esi
1303         leal    16(%esi),       %esi
1304         movl    %esi,           20(%esp)
1305         movl    28(%esp),       %ecx
1306         subl    $16,            %ecx
1307         jc      .L028dec_in_place_partial
1308         movl    %ecx,           28(%esp)
1309         jnz     .L027dec_in_place_loop
1310         jmp     .L026dec_out
1311 .align  4
1312 .L028dec_in_place_partial:
1313         movl    24(%esp),       %edi
1314         leal    44(%esp),       %esi
1315         leal    (%edi,%ecx),    %edi
1316         leal    16(%esi,%ecx),  %esi
1317         negl    %ecx
1318         .long   2767451785
1319 .align  4
1320 .L026dec_out:
1321         cmpl    $0,             300(%esp)
1322         movl    32(%esp),       %edi
1323         movl    16(%esp),       %esp
1324         je      .L029skip_dzero
1325         movl    $60,            %ecx
1326         xorl    %eax,           %eax
1327 .align  4
1328         .long   2884892297
1329 .L029skip_dzero:
1330         popfl
1331         popl    %edi
1332         popl    %esi
1333         popl    %ebx
1334         popl    %ebp
1335         ret
1336 .L_AES_cbc_encrypt_end:
1337 .size   AES_cbc_encrypt,.L_AES_cbc_encrypt_end-AES_cbc_encrypt
1338 .ident  "AES_cbc_encrypt"
1339 .globl  AES_Te
1340 .text
1341 .globl  AES_set_encrypt_key
1342 .type   AES_set_encrypt_key,@function
1343 .align  16
1344 AES_set_encrypt_key:
1345         pushl   %ebp
1346         pushl   %ebx
1347         pushl   %esi
1348         pushl   %edi
1349
1350         movl    20(%esp),       %esi
1351         movl    28(%esp),       %edi
1352         testl   $-1,            %esi
1353         jz      .L030badpointer
1354         testl   $-1,            %edi
1355         jz      .L030badpointer
1356         call    .L031pic_point
1357 .L031pic_point:
1358         popl    %ebp
1359         leal    AES_Te-.L031pic_point(%ebp),%ebp
1360         movl    24(%esp),       %ecx
1361         cmpl    $128,           %ecx
1362         je      .L03210rounds
1363         cmpl    $192,           %ecx
1364         je      .L03312rounds
1365         cmpl    $256,           %ecx
1366         je      .L03414rounds
1367         movl    $-2,            %eax
1368         jmp     .L035exit
1369 .L03210rounds:
1370         movl    (%esi),         %eax
1371         movl    4(%esi),        %ebx
1372         movl    8(%esi),        %ecx
1373         movl    12(%esi),       %edx
1374         movl    %eax,           (%edi)
1375         movl    %ebx,           4(%edi)
1376         movl    %ecx,           8(%edi)
1377         movl    %edx,           12(%edi)
1378         xorl    %ecx,           %ecx
1379         jmp     .L03610shortcut
1380 .align  4
1381 .L03710loop:
1382         movl    (%edi),         %eax
1383         movl    12(%edi),       %edx
1384 .L03610shortcut:
1385         movzbl  %dl,            %esi
1386         movl    2(%ebp,%esi,8), %ebx
1387         movzbl  %dh,            %esi
1388         andl    $4278190080,    %ebx
1389         xorl    %ebx,           %eax
1390         movl    2(%ebp,%esi,8), %ebx
1391         shrl    $16,            %edx
1392         andl    $255,           %ebx
1393         movzbl  %dl,            %esi
1394         xorl    %ebx,           %eax
1395         movl    (%ebp,%esi,8),  %ebx
1396         movzbl  %dh,            %esi
1397         andl    $65280,         %ebx
1398         xorl    %ebx,           %eax
1399         movl    (%ebp,%esi,8),  %ebx
1400         andl    $16711680,      %ebx
1401         xorl    %ebx,           %eax
1402         xorl    2048(%ebp,%ecx,4),%eax
1403         movl    %eax,           16(%edi)
1404         xorl    4(%edi),        %eax
1405         movl    %eax,           20(%edi)
1406         xorl    8(%edi),        %eax
1407         movl    %eax,           24(%edi)
1408         xorl    12(%edi),       %eax
1409         movl    %eax,           28(%edi)
1410         incl    %ecx
1411         addl    $16,            %edi
1412         cmpl    $10,            %ecx
1413         jl      .L03710loop
1414         movl    $10,            80(%edi)
1415         xorl    %eax,           %eax
1416         jmp     .L035exit
1417 .L03312rounds:
1418         movl    (%esi),         %eax
1419         movl    4(%esi),        %ebx
1420         movl    8(%esi),        %ecx
1421         movl    12(%esi),       %edx
1422         movl    %eax,           (%edi)
1423         movl    %ebx,           4(%edi)
1424         movl    %ecx,           8(%edi)
1425         movl    %edx,           12(%edi)
1426         movl    16(%esi),       %ecx
1427         movl    20(%esi),       %edx
1428         movl    %ecx,           16(%edi)
1429         movl    %edx,           20(%edi)
1430         xorl    %ecx,           %ecx
1431         jmp     .L03812shortcut
1432 .align  4
1433 .L03912loop:
1434         movl    (%edi),         %eax
1435         movl    20(%edi),       %edx
1436 .L03812shortcut:
1437         movzbl  %dl,            %esi
1438         movl    2(%ebp,%esi,8), %ebx
1439         movzbl  %dh,            %esi
1440         andl    $4278190080,    %ebx
1441         xorl    %ebx,           %eax
1442         movl    2(%ebp,%esi,8), %ebx
1443         shrl    $16,            %edx
1444         andl    $255,           %ebx
1445         movzbl  %dl,            %esi
1446         xorl    %ebx,           %eax
1447         movl    (%ebp,%esi,8),  %ebx
1448         movzbl  %dh,            %esi
1449         andl    $65280,         %ebx
1450         xorl    %ebx,           %eax
1451         movl    (%ebp,%esi,8),  %ebx
1452         andl    $16711680,      %ebx
1453         xorl    %ebx,           %eax
1454         xorl    2048(%ebp,%ecx,4),%eax
1455         movl    %eax,           24(%edi)
1456         xorl    4(%edi),        %eax
1457         movl    %eax,           28(%edi)
1458         xorl    8(%edi),        %eax
1459         movl    %eax,           32(%edi)
1460         xorl    12(%edi),       %eax
1461         movl    %eax,           36(%edi)
1462         cmpl    $7,             %ecx
1463         je      .L04012break
1464         incl    %ecx
1465         xorl    16(%edi),       %eax
1466         movl    %eax,           40(%edi)
1467         xorl    20(%edi),       %eax
1468         movl    %eax,           44(%edi)
1469         addl    $24,            %edi
1470         jmp     .L03912loop
1471 .L04012break:
1472         movl    $12,            72(%edi)
1473         xorl    %eax,           %eax
1474         jmp     .L035exit
1475 .L03414rounds:
1476         movl    (%esi),         %eax
1477         movl    4(%esi),        %ebx
1478         movl    8(%esi),        %ecx
1479         movl    12(%esi),       %edx
1480         movl    %eax,           (%edi)
1481         movl    %ebx,           4(%edi)
1482         movl    %ecx,           8(%edi)
1483         movl    %edx,           12(%edi)
1484         movl    16(%esi),       %eax
1485         movl    20(%esi),       %ebx
1486         movl    24(%esi),       %ecx
1487         movl    28(%esi),       %edx
1488         movl    %eax,           16(%edi)
1489         movl    %ebx,           20(%edi)
1490         movl    %ecx,           24(%edi)
1491         movl    %edx,           28(%edi)
1492         xorl    %ecx,           %ecx
1493         jmp     .L04114shortcut
1494 .align  4
1495 .L04214loop:
1496         movl    28(%edi),       %edx
1497 .L04114shortcut:
1498         movl    (%edi),         %eax
1499         movzbl  %dl,            %esi
1500         movl    2(%ebp,%esi,8), %ebx
1501         movzbl  %dh,            %esi
1502         andl    $4278190080,    %ebx
1503         xorl    %ebx,           %eax
1504         movl    2(%ebp,%esi,8), %ebx
1505         shrl    $16,            %edx
1506         andl    $255,           %ebx
1507         movzbl  %dl,            %esi
1508         xorl    %ebx,           %eax
1509         movl    (%ebp,%esi,8),  %ebx
1510         movzbl  %dh,            %esi
1511         andl    $65280,         %ebx
1512         xorl    %ebx,           %eax
1513         movl    (%ebp,%esi,8),  %ebx
1514         andl    $16711680,      %ebx
1515         xorl    %ebx,           %eax
1516         xorl    2048(%ebp,%ecx,4),%eax
1517         movl    %eax,           32(%edi)
1518         xorl    4(%edi),        %eax
1519         movl    %eax,           36(%edi)
1520         xorl    8(%edi),        %eax
1521         movl    %eax,           40(%edi)
1522         xorl    12(%edi),       %eax
1523         movl    %eax,           44(%edi)
1524         cmpl    $6,             %ecx
1525         je      .L04314break
1526         incl    %ecx
1527         movl    %eax,           %edx
1528         movl    16(%edi),       %eax
1529         movzbl  %dl,            %esi
1530         movl    2(%ebp,%esi,8), %ebx
1531         movzbl  %dh,            %esi
1532         andl    $255,           %ebx
1533         xorl    %ebx,           %eax
1534         movl    (%ebp,%esi,8),  %ebx
1535         shrl    $16,            %edx
1536         andl    $65280,         %ebx
1537         movzbl  %dl,            %esi
1538         xorl    %ebx,           %eax
1539         movl    (%ebp,%esi,8),  %ebx
1540         movzbl  %dh,            %esi
1541         andl    $16711680,      %ebx
1542         xorl    %ebx,           %eax
1543         movl    2(%ebp,%esi,8), %ebx
1544         andl    $4278190080,    %ebx
1545         xorl    %ebx,           %eax
1546         movl    %eax,           48(%edi)
1547         xorl    20(%edi),       %eax
1548         movl    %eax,           52(%edi)
1549         xorl    24(%edi),       %eax
1550         movl    %eax,           56(%edi)
1551         xorl    28(%edi),       %eax
1552         movl    %eax,           60(%edi)
1553         addl    $32,            %edi
1554         jmp     .L04214loop
1555 .L04314break:
1556         movl    $14,            48(%edi)
1557         xorl    %eax,           %eax
1558         jmp     .L035exit
1559 .L030badpointer:
1560         movl    $-1,            %eax
1561 .L035exit:
1562         popl    %edi
1563         popl    %esi
1564         popl    %ebx
1565         popl    %ebp
1566         ret
1567 .L_AES_set_encrypt_key_end:
1568 .size   AES_set_encrypt_key,.L_AES_set_encrypt_key_end-AES_set_encrypt_key
1569 .ident  "AES_set_encrypt_key"
1570 .globl  AES_Td
1571 .globl  AES_Te
1572 .text
1573 .globl  AES_set_decrypt_key
1574 .type   AES_set_decrypt_key,@function
1575 .align  16
1576 AES_set_decrypt_key:
1577         movl    4(%esp),        %eax
1578         movl    8(%esp),        %ecx
1579         movl    12(%esp),       %edx
1580         subl    $12,            %esp
1581         movl    %eax,           (%esp)
1582         movl    %ecx,           4(%esp)
1583         movl    %edx,           8(%esp)
1584         call    AES_set_encrypt_key
1585         addl    $12,            %esp
1586         cmpl    $0,             %eax
1587         je      .L044proceed
1588         ret
1589 .L044proceed:
1590         pushl   %ebp
1591         pushl   %ebx
1592         pushl   %esi
1593         pushl   %edi
1594         movl    28(%esp),       %esi
1595         movl    240(%esi),      %ecx
1596         leal    (,%ecx,4),      %ecx
1597         leal    (%esi,%ecx,4),  %edi
1598 .align  4
1599 .L045invert:
1600         movl    (%esi),         %eax
1601         movl    4(%esi),        %ebx
1602         movl    (%edi),         %ecx
1603         movl    4(%edi),        %edx
1604         movl    %eax,           (%edi)
1605         movl    %ebx,           4(%edi)
1606         movl    %ecx,           (%esi)
1607         movl    %edx,           4(%esi)
1608         movl    8(%esi),        %eax
1609         movl    12(%esi),       %ebx
1610         movl    8(%edi),        %ecx
1611         movl    12(%edi),       %edx
1612         movl    %eax,           8(%edi)
1613         movl    %ebx,           12(%edi)
1614         movl    %ecx,           8(%esi)
1615         movl    %edx,           12(%esi)
1616         addl    $16,            %esi
1617         subl    $16,            %edi
1618         cmpl    %edi,           %esi
1619         jne     .L045invert
1620         call    .L046pic_point
1621 .L046pic_point:
1622         popl    %ebp
1623         leal    AES_Td-.L046pic_point(%ebp),%edi
1624         leal    AES_Te-.L046pic_point(%ebp),%ebp
1625         movl    28(%esp),       %esi
1626         movl    240(%esi),      %ecx
1627         decl    %ecx
1628 .align  4
1629 .L047permute:
1630         addl    $16,            %esi
1631         movl    (%esi),         %eax
1632         movl    %eax,           %edx
1633         movzbl  %ah,            %ebx
1634         shrl    $16,            %edx
1635         andl    $255,           %eax
1636         movzbl  2(%ebp,%eax,8), %eax
1637         movzbl  2(%ebp,%ebx,8), %ebx
1638         movl    (%edi,%eax,8),  %eax
1639         xorl    3(%edi,%ebx,8), %eax
1640         movzbl  %dh,            %ebx
1641         andl    $255,           %edx
1642         movzbl  2(%ebp,%edx,8), %edx
1643         movzbl  2(%ebp,%ebx,8), %ebx
1644         xorl    2(%edi,%edx,8), %eax
1645         xorl    1(%edi,%ebx,8), %eax
1646         movl    %eax,           (%esi)
1647         movl    4(%esi),        %eax
1648         movl    %eax,           %edx
1649         movzbl  %ah,            %ebx
1650         shrl    $16,            %edx
1651         andl    $255,           %eax
1652         movzbl  2(%ebp,%eax,8), %eax
1653         movzbl  2(%ebp,%ebx,8), %ebx
1654         movl    (%edi,%eax,8),  %eax
1655         xorl    3(%edi,%ebx,8), %eax
1656         movzbl  %dh,            %ebx
1657         andl    $255,           %edx
1658         movzbl  2(%ebp,%edx,8), %edx
1659         movzbl  2(%ebp,%ebx,8), %ebx
1660         xorl    2(%edi,%edx,8), %eax
1661         xorl    1(%edi,%ebx,8), %eax
1662         movl    %eax,           4(%esi)
1663         movl    8(%esi),        %eax
1664         movl    %eax,           %edx
1665         movzbl  %ah,            %ebx
1666         shrl    $16,            %edx
1667         andl    $255,           %eax
1668         movzbl  2(%ebp,%eax,8), %eax
1669         movzbl  2(%ebp,%ebx,8), %ebx
1670         movl    (%edi,%eax,8),  %eax
1671         xorl    3(%edi,%ebx,8), %eax
1672         movzbl  %dh,            %ebx
1673         andl    $255,           %edx
1674         movzbl  2(%ebp,%edx,8), %edx
1675         movzbl  2(%ebp,%ebx,8), %ebx
1676         xorl    2(%edi,%edx,8), %eax
1677         xorl    1(%edi,%ebx,8), %eax
1678         movl    %eax,           8(%esi)
1679         movl    12(%esi),       %eax
1680         movl    %eax,           %edx
1681         movzbl  %ah,            %ebx
1682         shrl    $16,            %edx
1683         andl    $255,           %eax
1684         movzbl  2(%ebp,%eax,8), %eax
1685         movzbl  2(%ebp,%ebx,8), %ebx
1686         movl    (%edi,%eax,8),  %eax
1687         xorl    3(%edi,%ebx,8), %eax
1688         movzbl  %dh,            %ebx
1689         andl    $255,           %edx
1690         movzbl  2(%ebp,%edx,8), %edx
1691         movzbl  2(%ebp,%ebx,8), %ebx
1692         xorl    2(%edi,%edx,8), %eax
1693         xorl    1(%edi,%ebx,8), %eax
1694         movl    %eax,           12(%esi)
1695         decl    %ecx
1696         jnz     .L047permute
1697         xorl    %eax,           %eax
1698         popl    %edi
1699         popl    %esi
1700         popl    %ebx
1701         popl    %ebp
1702         ret
1703 .L_AES_set_decrypt_key_end:
1704 .size   AES_set_decrypt_key,.L_AES_set_decrypt_key_end-AES_set_decrypt_key
1705 .ident  "AES_set_decrypt_key"