xref: /dragonfly/crypto/libressl/crypto/rc4/rc4-md5-elf-x86_64.S (revision 72c3367655e64985522b7a48ddfab613e869dc68)
1#include "x86_arch.h"
2.text
3.align    16
4
5.globl    rc4_md5_enc
6.type     rc4_md5_enc,@function
7rc4_md5_enc:
8          cmpq      $0,%r9
9          je        .Labort
10          pushq     %rbx
11          pushq     %rbp
12          pushq     %r12
13          pushq     %r13
14          pushq     %r14
15          pushq     %r15
16          subq      $40,%rsp
17.Lbody:
18          movq      %rcx,%r11
19          movq      %r9,%r12
20          movq      %rsi,%r13
21          movq      %rdx,%r14
22          movq      %r8,%r15
23          xorq      %rbp,%rbp
24          xorq      %rcx,%rcx
25
26          leaq      8(%rdi),%rdi
27          movb      -8(%rdi),%bpl
28          movb      -4(%rdi),%cl
29
30          incb      %bpl
31          subq      %r13,%r14
32          movl      (%rdi,%rbp,4),%eax
33          addb      %al,%cl
34          leaq      (%rdi,%rbp,4),%rsi
35          shlq      $6,%r12
36          addq      %r15,%r12
37          movq      %r12,16(%rsp)
38
39          movq      %r11,24(%rsp)
40          movl      0(%r11),%r8d
41          movl      4(%r11),%r9d
42          movl      8(%r11),%r10d
43          movl      12(%r11),%r11d
44          jmp       .Loop
45
46.align    16
47.Loop:
48          movl      %r8d,0(%rsp)
49          movl      %r9d,4(%rsp)
50          movl      %r10d,8(%rsp)
51          movl      %r11d,%r12d
52          movl      %r11d,12(%rsp)
53          pxor      %xmm0,%xmm0
54          movl      (%rdi,%rcx,4),%edx
55          xorl      %r10d,%r12d
56          movl      %eax,(%rdi,%rcx,4)
57          andl      %r9d,%r12d
58          addl      0(%r15),%r8d
59          addb      %dl,%al
60          movl      4(%rsi),%ebx
61          addl      $3614090360,%r8d
62          xorl      %r11d,%r12d
63          movzbl    %al,%eax
64          movl      %edx,0(%rsi)
65          addl      %r12d,%r8d
66          addb      %bl,%cl
67          roll      $7,%r8d
68          movl      %r10d,%r12d
69          movd      (%rdi,%rax,4),%xmm0
70
71          addl      %r9d,%r8d
72          pxor      %xmm1,%xmm1
73          movl      (%rdi,%rcx,4),%edx
74          xorl      %r9d,%r12d
75          movl      %ebx,(%rdi,%rcx,4)
76          andl      %r8d,%r12d
77          addl      4(%r15),%r11d
78          addb      %dl,%bl
79          movl      8(%rsi),%eax
80          addl      $3905402710,%r11d
81          xorl      %r10d,%r12d
82          movzbl    %bl,%ebx
83          movl      %edx,4(%rsi)
84          addl      %r12d,%r11d
85          addb      %al,%cl
86          roll      $12,%r11d
87          movl      %r9d,%r12d
88          movd      (%rdi,%rbx,4),%xmm1
89
90          addl      %r8d,%r11d
91          movl      (%rdi,%rcx,4),%edx
92          xorl      %r8d,%r12d
93          movl      %eax,(%rdi,%rcx,4)
94          andl      %r11d,%r12d
95          addl      8(%r15),%r10d
96          addb      %dl,%al
97          movl      12(%rsi),%ebx
98          addl      $606105819,%r10d
99          xorl      %r9d,%r12d
100          movzbl    %al,%eax
101          movl      %edx,8(%rsi)
102          addl      %r12d,%r10d
103          addb      %bl,%cl
104          roll      $17,%r10d
105          movl      %r8d,%r12d
106          pinsrw    $1,(%rdi,%rax,4),%xmm0
107
108          addl      %r11d,%r10d
109          movl      (%rdi,%rcx,4),%edx
110          xorl      %r11d,%r12d
111          movl      %ebx,(%rdi,%rcx,4)
112          andl      %r10d,%r12d
113          addl      12(%r15),%r9d
114          addb      %dl,%bl
115          movl      16(%rsi),%eax
116          addl      $3250441966,%r9d
117          xorl      %r8d,%r12d
118          movzbl    %bl,%ebx
119          movl      %edx,12(%rsi)
120          addl      %r12d,%r9d
121          addb      %al,%cl
122          roll      $22,%r9d
123          movl      %r11d,%r12d
124          pinsrw    $1,(%rdi,%rbx,4),%xmm1
125
126          addl      %r10d,%r9d
127          movl      (%rdi,%rcx,4),%edx
128          xorl      %r10d,%r12d
129          movl      %eax,(%rdi,%rcx,4)
130          andl      %r9d,%r12d
131          addl      16(%r15),%r8d
132          addb      %dl,%al
133          movl      20(%rsi),%ebx
134          addl      $4118548399,%r8d
135          xorl      %r11d,%r12d
136          movzbl    %al,%eax
137          movl      %edx,16(%rsi)
138          addl      %r12d,%r8d
139          addb      %bl,%cl
140          roll      $7,%r8d
141          movl      %r10d,%r12d
142          pinsrw    $2,(%rdi,%rax,4),%xmm0
143
144          addl      %r9d,%r8d
145          movl      (%rdi,%rcx,4),%edx
146          xorl      %r9d,%r12d
147          movl      %ebx,(%rdi,%rcx,4)
148          andl      %r8d,%r12d
149          addl      20(%r15),%r11d
150          addb      %dl,%bl
151          movl      24(%rsi),%eax
152          addl      $1200080426,%r11d
153          xorl      %r10d,%r12d
154          movzbl    %bl,%ebx
155          movl      %edx,20(%rsi)
156          addl      %r12d,%r11d
157          addb      %al,%cl
158          roll      $12,%r11d
159          movl      %r9d,%r12d
160          pinsrw    $2,(%rdi,%rbx,4),%xmm1
161
162          addl      %r8d,%r11d
163          movl      (%rdi,%rcx,4),%edx
164          xorl      %r8d,%r12d
165          movl      %eax,(%rdi,%rcx,4)
166          andl      %r11d,%r12d
167          addl      24(%r15),%r10d
168          addb      %dl,%al
169          movl      28(%rsi),%ebx
170          addl      $2821735955,%r10d
171          xorl      %r9d,%r12d
172          movzbl    %al,%eax
173          movl      %edx,24(%rsi)
174          addl      %r12d,%r10d
175          addb      %bl,%cl
176          roll      $17,%r10d
177          movl      %r8d,%r12d
178          pinsrw    $3,(%rdi,%rax,4),%xmm0
179
180          addl      %r11d,%r10d
181          movl      (%rdi,%rcx,4),%edx
182          xorl      %r11d,%r12d
183          movl      %ebx,(%rdi,%rcx,4)
184          andl      %r10d,%r12d
185          addl      28(%r15),%r9d
186          addb      %dl,%bl
187          movl      32(%rsi),%eax
188          addl      $4249261313,%r9d
189          xorl      %r8d,%r12d
190          movzbl    %bl,%ebx
191          movl      %edx,28(%rsi)
192          addl      %r12d,%r9d
193          addb      %al,%cl
194          roll      $22,%r9d
195          movl      %r11d,%r12d
196          pinsrw    $3,(%rdi,%rbx,4),%xmm1
197
198          addl      %r10d,%r9d
199          movl      (%rdi,%rcx,4),%edx
200          xorl      %r10d,%r12d
201          movl      %eax,(%rdi,%rcx,4)
202          andl      %r9d,%r12d
203          addl      32(%r15),%r8d
204          addb      %dl,%al
205          movl      36(%rsi),%ebx
206          addl      $1770035416,%r8d
207          xorl      %r11d,%r12d
208          movzbl    %al,%eax
209          movl      %edx,32(%rsi)
210          addl      %r12d,%r8d
211          addb      %bl,%cl
212          roll      $7,%r8d
213          movl      %r10d,%r12d
214          pinsrw    $4,(%rdi,%rax,4),%xmm0
215
216          addl      %r9d,%r8d
217          movl      (%rdi,%rcx,4),%edx
218          xorl      %r9d,%r12d
219          movl      %ebx,(%rdi,%rcx,4)
220          andl      %r8d,%r12d
221          addl      36(%r15),%r11d
222          addb      %dl,%bl
223          movl      40(%rsi),%eax
224          addl      $2336552879,%r11d
225          xorl      %r10d,%r12d
226          movzbl    %bl,%ebx
227          movl      %edx,36(%rsi)
228          addl      %r12d,%r11d
229          addb      %al,%cl
230          roll      $12,%r11d
231          movl      %r9d,%r12d
232          pinsrw    $4,(%rdi,%rbx,4),%xmm1
233
234          addl      %r8d,%r11d
235          movl      (%rdi,%rcx,4),%edx
236          xorl      %r8d,%r12d
237          movl      %eax,(%rdi,%rcx,4)
238          andl      %r11d,%r12d
239          addl      40(%r15),%r10d
240          addb      %dl,%al
241          movl      44(%rsi),%ebx
242          addl      $4294925233,%r10d
243          xorl      %r9d,%r12d
244          movzbl    %al,%eax
245          movl      %edx,40(%rsi)
246          addl      %r12d,%r10d
247          addb      %bl,%cl
248          roll      $17,%r10d
249          movl      %r8d,%r12d
250          pinsrw    $5,(%rdi,%rax,4),%xmm0
251
252          addl      %r11d,%r10d
253          movl      (%rdi,%rcx,4),%edx
254          xorl      %r11d,%r12d
255          movl      %ebx,(%rdi,%rcx,4)
256          andl      %r10d,%r12d
257          addl      44(%r15),%r9d
258          addb      %dl,%bl
259          movl      48(%rsi),%eax
260          addl      $2304563134,%r9d
261          xorl      %r8d,%r12d
262          movzbl    %bl,%ebx
263          movl      %edx,44(%rsi)
264          addl      %r12d,%r9d
265          addb      %al,%cl
266          roll      $22,%r9d
267          movl      %r11d,%r12d
268          pinsrw    $5,(%rdi,%rbx,4),%xmm1
269
270          addl      %r10d,%r9d
271          movl      (%rdi,%rcx,4),%edx
272          xorl      %r10d,%r12d
273          movl      %eax,(%rdi,%rcx,4)
274          andl      %r9d,%r12d
275          addl      48(%r15),%r8d
276          addb      %dl,%al
277          movl      52(%rsi),%ebx
278          addl      $1804603682,%r8d
279          xorl      %r11d,%r12d
280          movzbl    %al,%eax
281          movl      %edx,48(%rsi)
282          addl      %r12d,%r8d
283          addb      %bl,%cl
284          roll      $7,%r8d
285          movl      %r10d,%r12d
286          pinsrw    $6,(%rdi,%rax,4),%xmm0
287
288          addl      %r9d,%r8d
289          movl      (%rdi,%rcx,4),%edx
290          xorl      %r9d,%r12d
291          movl      %ebx,(%rdi,%rcx,4)
292          andl      %r8d,%r12d
293          addl      52(%r15),%r11d
294          addb      %dl,%bl
295          movl      56(%rsi),%eax
296          addl      $4254626195,%r11d
297          xorl      %r10d,%r12d
298          movzbl    %bl,%ebx
299          movl      %edx,52(%rsi)
300          addl      %r12d,%r11d
301          addb      %al,%cl
302          roll      $12,%r11d
303          movl      %r9d,%r12d
304          pinsrw    $6,(%rdi,%rbx,4),%xmm1
305
306          addl      %r8d,%r11d
307          movl      (%rdi,%rcx,4),%edx
308          xorl      %r8d,%r12d
309          movl      %eax,(%rdi,%rcx,4)
310          andl      %r11d,%r12d
311          addl      56(%r15),%r10d
312          addb      %dl,%al
313          movl      60(%rsi),%ebx
314          addl      $2792965006,%r10d
315          xorl      %r9d,%r12d
316          movzbl    %al,%eax
317          movl      %edx,56(%rsi)
318          addl      %r12d,%r10d
319          addb      %bl,%cl
320          roll      $17,%r10d
321          movl      %r8d,%r12d
322          pinsrw    $7,(%rdi,%rax,4),%xmm0
323
324          addl      %r11d,%r10d
325          movdqu    (%r13),%xmm2
326          movl      (%rdi,%rcx,4),%edx
327          xorl      %r11d,%r12d
328          movl      %ebx,(%rdi,%rcx,4)
329          andl      %r10d,%r12d
330          addl      60(%r15),%r9d
331          addb      %dl,%bl
332          movl      64(%rsi),%eax
333          addl      $1236535329,%r9d
334          xorl      %r8d,%r12d
335          movzbl    %bl,%ebx
336          movl      %edx,60(%rsi)
337          addl      %r12d,%r9d
338          addb      %al,%cl
339          roll      $22,%r9d
340          movl      %r10d,%r12d
341          pinsrw    $7,(%rdi,%rbx,4),%xmm1
342
343          addl      %r10d,%r9d
344          psllq     $8,%xmm1
345          pxor      %xmm0,%xmm2
346          pxor      %xmm1,%xmm2
347          pxor      %xmm0,%xmm0
348          movl      (%rdi,%rcx,4),%edx
349          xorl      %r9d,%r12d
350          movl      %eax,(%rdi,%rcx,4)
351          andl      %r11d,%r12d
352          addl      4(%r15),%r8d
353          addb      %dl,%al
354          movl      68(%rsi),%ebx
355          addl      $4129170786,%r8d
356          xorl      %r10d,%r12d
357          movzbl    %al,%eax
358          movl      %edx,64(%rsi)
359          addl      %r12d,%r8d
360          addb      %bl,%cl
361          roll      $5,%r8d
362          movl      %r9d,%r12d
363          movd      (%rdi,%rax,4),%xmm0
364
365          addl      %r9d,%r8d
366          pxor      %xmm1,%xmm1
367          movl      (%rdi,%rcx,4),%edx
368          xorl      %r8d,%r12d
369          movl      %ebx,(%rdi,%rcx,4)
370          andl      %r10d,%r12d
371          addl      24(%r15),%r11d
372          addb      %dl,%bl
373          movl      72(%rsi),%eax
374          addl      $3225465664,%r11d
375          xorl      %r9d,%r12d
376          movzbl    %bl,%ebx
377          movl      %edx,68(%rsi)
378          addl      %r12d,%r11d
379          addb      %al,%cl
380          roll      $9,%r11d
381          movl      %r8d,%r12d
382          movd      (%rdi,%rbx,4),%xmm1
383
384          addl      %r8d,%r11d
385          movl      (%rdi,%rcx,4),%edx
386          xorl      %r11d,%r12d
387          movl      %eax,(%rdi,%rcx,4)
388          andl      %r9d,%r12d
389          addl      44(%r15),%r10d
390          addb      %dl,%al
391          movl      76(%rsi),%ebx
392          addl      $643717713,%r10d
393          xorl      %r8d,%r12d
394          movzbl    %al,%eax
395          movl      %edx,72(%rsi)
396          addl      %r12d,%r10d
397          addb      %bl,%cl
398          roll      $14,%r10d
399          movl      %r11d,%r12d
400          pinsrw    $1,(%rdi,%rax,4),%xmm0
401
402          addl      %r11d,%r10d
403          movl      (%rdi,%rcx,4),%edx
404          xorl      %r10d,%r12d
405          movl      %ebx,(%rdi,%rcx,4)
406          andl      %r8d,%r12d
407          addl      0(%r15),%r9d
408          addb      %dl,%bl
409          movl      80(%rsi),%eax
410          addl      $3921069994,%r9d
411          xorl      %r11d,%r12d
412          movzbl    %bl,%ebx
413          movl      %edx,76(%rsi)
414          addl      %r12d,%r9d
415          addb      %al,%cl
416          roll      $20,%r9d
417          movl      %r10d,%r12d
418          pinsrw    $1,(%rdi,%rbx,4),%xmm1
419
420          addl      %r10d,%r9d
421          movl      (%rdi,%rcx,4),%edx
422          xorl      %r9d,%r12d
423          movl      %eax,(%rdi,%rcx,4)
424          andl      %r11d,%r12d
425          addl      20(%r15),%r8d
426          addb      %dl,%al
427          movl      84(%rsi),%ebx
428          addl      $3593408605,%r8d
429          xorl      %r10d,%r12d
430          movzbl    %al,%eax
431          movl      %edx,80(%rsi)
432          addl      %r12d,%r8d
433          addb      %bl,%cl
434          roll      $5,%r8d
435          movl      %r9d,%r12d
436          pinsrw    $2,(%rdi,%rax,4),%xmm0
437
438          addl      %r9d,%r8d
439          movl      (%rdi,%rcx,4),%edx
440          xorl      %r8d,%r12d
441          movl      %ebx,(%rdi,%rcx,4)
442          andl      %r10d,%r12d
443          addl      40(%r15),%r11d
444          addb      %dl,%bl
445          movl      88(%rsi),%eax
446          addl      $38016083,%r11d
447          xorl      %r9d,%r12d
448          movzbl    %bl,%ebx
449          movl      %edx,84(%rsi)
450          addl      %r12d,%r11d
451          addb      %al,%cl
452          roll      $9,%r11d
453          movl      %r8d,%r12d
454          pinsrw    $2,(%rdi,%rbx,4),%xmm1
455
456          addl      %r8d,%r11d
457          movl      (%rdi,%rcx,4),%edx
458          xorl      %r11d,%r12d
459          movl      %eax,(%rdi,%rcx,4)
460          andl      %r9d,%r12d
461          addl      60(%r15),%r10d
462          addb      %dl,%al
463          movl      92(%rsi),%ebx
464          addl      $3634488961,%r10d
465          xorl      %r8d,%r12d
466          movzbl    %al,%eax
467          movl      %edx,88(%rsi)
468          addl      %r12d,%r10d
469          addb      %bl,%cl
470          roll      $14,%r10d
471          movl      %r11d,%r12d
472          pinsrw    $3,(%rdi,%rax,4),%xmm0
473
474          addl      %r11d,%r10d
475          movl      (%rdi,%rcx,4),%edx
476          xorl      %r10d,%r12d
477          movl      %ebx,(%rdi,%rcx,4)
478          andl      %r8d,%r12d
479          addl      16(%r15),%r9d
480          addb      %dl,%bl
481          movl      96(%rsi),%eax
482          addl      $3889429448,%r9d
483          xorl      %r11d,%r12d
484          movzbl    %bl,%ebx
485          movl      %edx,92(%rsi)
486          addl      %r12d,%r9d
487          addb      %al,%cl
488          roll      $20,%r9d
489          movl      %r10d,%r12d
490          pinsrw    $3,(%rdi,%rbx,4),%xmm1
491
492          addl      %r10d,%r9d
493          movl      (%rdi,%rcx,4),%edx
494          xorl      %r9d,%r12d
495          movl      %eax,(%rdi,%rcx,4)
496          andl      %r11d,%r12d
497          addl      36(%r15),%r8d
498          addb      %dl,%al
499          movl      100(%rsi),%ebx
500          addl      $568446438,%r8d
501          xorl      %r10d,%r12d
502          movzbl    %al,%eax
503          movl      %edx,96(%rsi)
504          addl      %r12d,%r8d
505          addb      %bl,%cl
506          roll      $5,%r8d
507          movl      %r9d,%r12d
508          pinsrw    $4,(%rdi,%rax,4),%xmm0
509
510          addl      %r9d,%r8d
511          movl      (%rdi,%rcx,4),%edx
512          xorl      %r8d,%r12d
513          movl      %ebx,(%rdi,%rcx,4)
514          andl      %r10d,%r12d
515          addl      56(%r15),%r11d
516          addb      %dl,%bl
517          movl      104(%rsi),%eax
518          addl      $3275163606,%r11d
519          xorl      %r9d,%r12d
520          movzbl    %bl,%ebx
521          movl      %edx,100(%rsi)
522          addl      %r12d,%r11d
523          addb      %al,%cl
524          roll      $9,%r11d
525          movl      %r8d,%r12d
526          pinsrw    $4,(%rdi,%rbx,4),%xmm1
527
528          addl      %r8d,%r11d
529          movl      (%rdi,%rcx,4),%edx
530          xorl      %r11d,%r12d
531          movl      %eax,(%rdi,%rcx,4)
532          andl      %r9d,%r12d
533          addl      12(%r15),%r10d
534          addb      %dl,%al
535          movl      108(%rsi),%ebx
536          addl      $4107603335,%r10d
537          xorl      %r8d,%r12d
538          movzbl    %al,%eax
539          movl      %edx,104(%rsi)
540          addl      %r12d,%r10d
541          addb      %bl,%cl
542          roll      $14,%r10d
543          movl      %r11d,%r12d
544          pinsrw    $5,(%rdi,%rax,4),%xmm0
545
546          addl      %r11d,%r10d
547          movl      (%rdi,%rcx,4),%edx
548          xorl      %r10d,%r12d
549          movl      %ebx,(%rdi,%rcx,4)
550          andl      %r8d,%r12d
551          addl      32(%r15),%r9d
552          addb      %dl,%bl
553          movl      112(%rsi),%eax
554          addl      $1163531501,%r9d
555          xorl      %r11d,%r12d
556          movzbl    %bl,%ebx
557          movl      %edx,108(%rsi)
558          addl      %r12d,%r9d
559          addb      %al,%cl
560          roll      $20,%r9d
561          movl      %r10d,%r12d
562          pinsrw    $5,(%rdi,%rbx,4),%xmm1
563
564          addl      %r10d,%r9d
565          movl      (%rdi,%rcx,4),%edx
566          xorl      %r9d,%r12d
567          movl      %eax,(%rdi,%rcx,4)
568          andl      %r11d,%r12d
569          addl      52(%r15),%r8d
570          addb      %dl,%al
571          movl      116(%rsi),%ebx
572          addl      $2850285829,%r8d
573          xorl      %r10d,%r12d
574          movzbl    %al,%eax
575          movl      %edx,112(%rsi)
576          addl      %r12d,%r8d
577          addb      %bl,%cl
578          roll      $5,%r8d
579          movl      %r9d,%r12d
580          pinsrw    $6,(%rdi,%rax,4),%xmm0
581
582          addl      %r9d,%r8d
583          movl      (%rdi,%rcx,4),%edx
584          xorl      %r8d,%r12d
585          movl      %ebx,(%rdi,%rcx,4)
586          andl      %r10d,%r12d
587          addl      8(%r15),%r11d
588          addb      %dl,%bl
589          movl      120(%rsi),%eax
590          addl      $4243563512,%r11d
591          xorl      %r9d,%r12d
592          movzbl    %bl,%ebx
593          movl      %edx,116(%rsi)
594          addl      %r12d,%r11d
595          addb      %al,%cl
596          roll      $9,%r11d
597          movl      %r8d,%r12d
598          pinsrw    $6,(%rdi,%rbx,4),%xmm1
599
600          addl      %r8d,%r11d
601          movl      (%rdi,%rcx,4),%edx
602          xorl      %r11d,%r12d
603          movl      %eax,(%rdi,%rcx,4)
604          andl      %r9d,%r12d
605          addl      28(%r15),%r10d
606          addb      %dl,%al
607          movl      124(%rsi),%ebx
608          addl      $1735328473,%r10d
609          xorl      %r8d,%r12d
610          movzbl    %al,%eax
611          movl      %edx,120(%rsi)
612          addl      %r12d,%r10d
613          addb      %bl,%cl
614          roll      $14,%r10d
615          movl      %r11d,%r12d
616          pinsrw    $7,(%rdi,%rax,4),%xmm0
617
618          addl      %r11d,%r10d
619          movdqu    16(%r13),%xmm3
620          addb      $32,%bpl
621          movl      (%rdi,%rcx,4),%edx
622          xorl      %r10d,%r12d
623          movl      %ebx,(%rdi,%rcx,4)
624          andl      %r8d,%r12d
625          addl      48(%r15),%r9d
626          addb      %dl,%bl
627          movl      0(%rdi,%rbp,4),%eax
628          addl      $2368359562,%r9d
629          xorl      %r11d,%r12d
630          movzbl    %bl,%ebx
631          movl      %edx,124(%rsi)
632          addl      %r12d,%r9d
633          addb      %al,%cl
634          roll      $20,%r9d
635          movl      %r11d,%r12d
636          pinsrw    $7,(%rdi,%rbx,4),%xmm1
637
638          addl      %r10d,%r9d
639          movq      %rcx,%rsi
640          xorq      %rcx,%rcx
641          movb      %sil,%cl
642          leaq      (%rdi,%rbp,4),%rsi
643          psllq     $8,%xmm1
644          pxor      %xmm0,%xmm3
645          pxor      %xmm1,%xmm3
646          pxor      %xmm0,%xmm0
647          movl      (%rdi,%rcx,4),%edx
648          xorl      %r10d,%r12d
649          movl      %eax,(%rdi,%rcx,4)
650          xorl      %r9d,%r12d
651          addl      20(%r15),%r8d
652          addb      %dl,%al
653          movl      4(%rsi),%ebx
654          addl      $4294588738,%r8d
655          movzbl    %al,%eax
656          addl      %r12d,%r8d
657          movl      %edx,0(%rsi)
658          addb      %bl,%cl
659          roll      $4,%r8d
660          movl      %r10d,%r12d
661          movd      (%rdi,%rax,4),%xmm0
662
663          addl      %r9d,%r8d
664          pxor      %xmm1,%xmm1
665          movl      (%rdi,%rcx,4),%edx
666          xorl      %r9d,%r12d
667          movl      %ebx,(%rdi,%rcx,4)
668          xorl      %r8d,%r12d
669          addl      32(%r15),%r11d
670          addb      %dl,%bl
671          movl      8(%rsi),%eax
672          addl      $2272392833,%r11d
673          movzbl    %bl,%ebx
674          addl      %r12d,%r11d
675          movl      %edx,4(%rsi)
676          addb      %al,%cl
677          roll      $11,%r11d
678          movl      %r9d,%r12d
679          movd      (%rdi,%rbx,4),%xmm1
680
681          addl      %r8d,%r11d
682          movl      (%rdi,%rcx,4),%edx
683          xorl      %r8d,%r12d
684          movl      %eax,(%rdi,%rcx,4)
685          xorl      %r11d,%r12d
686          addl      44(%r15),%r10d
687          addb      %dl,%al
688          movl      12(%rsi),%ebx
689          addl      $1839030562,%r10d
690          movzbl    %al,%eax
691          addl      %r12d,%r10d
692          movl      %edx,8(%rsi)
693          addb      %bl,%cl
694          roll      $16,%r10d
695          movl      %r8d,%r12d
696          pinsrw    $1,(%rdi,%rax,4),%xmm0
697
698          addl      %r11d,%r10d
699          movl      (%rdi,%rcx,4),%edx
700          xorl      %r11d,%r12d
701          movl      %ebx,(%rdi,%rcx,4)
702          xorl      %r10d,%r12d
703          addl      56(%r15),%r9d
704          addb      %dl,%bl
705          movl      16(%rsi),%eax
706          addl      $4259657740,%r9d
707          movzbl    %bl,%ebx
708          addl      %r12d,%r9d
709          movl      %edx,12(%rsi)
710          addb      %al,%cl
711          roll      $23,%r9d
712          movl      %r11d,%r12d
713          pinsrw    $1,(%rdi,%rbx,4),%xmm1
714
715          addl      %r10d,%r9d
716          movl      (%rdi,%rcx,4),%edx
717          xorl      %r10d,%r12d
718          movl      %eax,(%rdi,%rcx,4)
719          xorl      %r9d,%r12d
720          addl      4(%r15),%r8d
721          addb      %dl,%al
722          movl      20(%rsi),%ebx
723          addl      $2763975236,%r8d
724          movzbl    %al,%eax
725          addl      %r12d,%r8d
726          movl      %edx,16(%rsi)
727          addb      %bl,%cl
728          roll      $4,%r8d
729          movl      %r10d,%r12d
730          pinsrw    $2,(%rdi,%rax,4),%xmm0
731
732          addl      %r9d,%r8d
733          movl      (%rdi,%rcx,4),%edx
734          xorl      %r9d,%r12d
735          movl      %ebx,(%rdi,%rcx,4)
736          xorl      %r8d,%r12d
737          addl      16(%r15),%r11d
738          addb      %dl,%bl
739          movl      24(%rsi),%eax
740          addl      $1272893353,%r11d
741          movzbl    %bl,%ebx
742          addl      %r12d,%r11d
743          movl      %edx,20(%rsi)
744          addb      %al,%cl
745          roll      $11,%r11d
746          movl      %r9d,%r12d
747          pinsrw    $2,(%rdi,%rbx,4),%xmm1
748
749          addl      %r8d,%r11d
750          movl      (%rdi,%rcx,4),%edx
751          xorl      %r8d,%r12d
752          movl      %eax,(%rdi,%rcx,4)
753          xorl      %r11d,%r12d
754          addl      28(%r15),%r10d
755          addb      %dl,%al
756          movl      28(%rsi),%ebx
757          addl      $4139469664,%r10d
758          movzbl    %al,%eax
759          addl      %r12d,%r10d
760          movl      %edx,24(%rsi)
761          addb      %bl,%cl
762          roll      $16,%r10d
763          movl      %r8d,%r12d
764          pinsrw    $3,(%rdi,%rax,4),%xmm0
765
766          addl      %r11d,%r10d
767          movl      (%rdi,%rcx,4),%edx
768          xorl      %r11d,%r12d
769          movl      %ebx,(%rdi,%rcx,4)
770          xorl      %r10d,%r12d
771          addl      40(%r15),%r9d
772          addb      %dl,%bl
773          movl      32(%rsi),%eax
774          addl      $3200236656,%r9d
775          movzbl    %bl,%ebx
776          addl      %r12d,%r9d
777          movl      %edx,28(%rsi)
778          addb      %al,%cl
779          roll      $23,%r9d
780          movl      %r11d,%r12d
781          pinsrw    $3,(%rdi,%rbx,4),%xmm1
782
783          addl      %r10d,%r9d
784          movl      (%rdi,%rcx,4),%edx
785          xorl      %r10d,%r12d
786          movl      %eax,(%rdi,%rcx,4)
787          xorl      %r9d,%r12d
788          addl      52(%r15),%r8d
789          addb      %dl,%al
790          movl      36(%rsi),%ebx
791          addl      $681279174,%r8d
792          movzbl    %al,%eax
793          addl      %r12d,%r8d
794          movl      %edx,32(%rsi)
795          addb      %bl,%cl
796          roll      $4,%r8d
797          movl      %r10d,%r12d
798          pinsrw    $4,(%rdi,%rax,4),%xmm0
799
800          addl      %r9d,%r8d
801          movl      (%rdi,%rcx,4),%edx
802          xorl      %r9d,%r12d
803          movl      %ebx,(%rdi,%rcx,4)
804          xorl      %r8d,%r12d
805          addl      0(%r15),%r11d
806          addb      %dl,%bl
807          movl      40(%rsi),%eax
808          addl      $3936430074,%r11d
809          movzbl    %bl,%ebx
810          addl      %r12d,%r11d
811          movl      %edx,36(%rsi)
812          addb      %al,%cl
813          roll      $11,%r11d
814          movl      %r9d,%r12d
815          pinsrw    $4,(%rdi,%rbx,4),%xmm1
816
817          addl      %r8d,%r11d
818          movl      (%rdi,%rcx,4),%edx
819          xorl      %r8d,%r12d
820          movl      %eax,(%rdi,%rcx,4)
821          xorl      %r11d,%r12d
822          addl      12(%r15),%r10d
823          addb      %dl,%al
824          movl      44(%rsi),%ebx
825          addl      $3572445317,%r10d
826          movzbl    %al,%eax
827          addl      %r12d,%r10d
828          movl      %edx,40(%rsi)
829          addb      %bl,%cl
830          roll      $16,%r10d
831          movl      %r8d,%r12d
832          pinsrw    $5,(%rdi,%rax,4),%xmm0
833
834          addl      %r11d,%r10d
835          movl      (%rdi,%rcx,4),%edx
836          xorl      %r11d,%r12d
837          movl      %ebx,(%rdi,%rcx,4)
838          xorl      %r10d,%r12d
839          addl      24(%r15),%r9d
840          addb      %dl,%bl
841          movl      48(%rsi),%eax
842          addl      $76029189,%r9d
843          movzbl    %bl,%ebx
844          addl      %r12d,%r9d
845          movl      %edx,44(%rsi)
846          addb      %al,%cl
847          roll      $23,%r9d
848          movl      %r11d,%r12d
849          pinsrw    $5,(%rdi,%rbx,4),%xmm1
850
851          addl      %r10d,%r9d
852          movl      (%rdi,%rcx,4),%edx
853          xorl      %r10d,%r12d
854          movl      %eax,(%rdi,%rcx,4)
855          xorl      %r9d,%r12d
856          addl      36(%r15),%r8d
857          addb      %dl,%al
858          movl      52(%rsi),%ebx
859          addl      $3654602809,%r8d
860          movzbl    %al,%eax
861          addl      %r12d,%r8d
862          movl      %edx,48(%rsi)
863          addb      %bl,%cl
864          roll      $4,%r8d
865          movl      %r10d,%r12d
866          pinsrw    $6,(%rdi,%rax,4),%xmm0
867
868          addl      %r9d,%r8d
869          movl      (%rdi,%rcx,4),%edx
870          xorl      %r9d,%r12d
871          movl      %ebx,(%rdi,%rcx,4)
872          xorl      %r8d,%r12d
873          addl      48(%r15),%r11d
874          addb      %dl,%bl
875          movl      56(%rsi),%eax
876          addl      $3873151461,%r11d
877          movzbl    %bl,%ebx
878          addl      %r12d,%r11d
879          movl      %edx,52(%rsi)
880          addb      %al,%cl
881          roll      $11,%r11d
882          movl      %r9d,%r12d
883          pinsrw    $6,(%rdi,%rbx,4),%xmm1
884
885          addl      %r8d,%r11d
886          movl      (%rdi,%rcx,4),%edx
887          xorl      %r8d,%r12d
888          movl      %eax,(%rdi,%rcx,4)
889          xorl      %r11d,%r12d
890          addl      60(%r15),%r10d
891          addb      %dl,%al
892          movl      60(%rsi),%ebx
893          addl      $530742520,%r10d
894          movzbl    %al,%eax
895          addl      %r12d,%r10d
896          movl      %edx,56(%rsi)
897          addb      %bl,%cl
898          roll      $16,%r10d
899          movl      %r8d,%r12d
900          pinsrw    $7,(%rdi,%rax,4),%xmm0
901
902          addl      %r11d,%r10d
903          movdqu    32(%r13),%xmm4
904          movl      (%rdi,%rcx,4),%edx
905          xorl      %r11d,%r12d
906          movl      %ebx,(%rdi,%rcx,4)
907          xorl      %r10d,%r12d
908          addl      8(%r15),%r9d
909          addb      %dl,%bl
910          movl      64(%rsi),%eax
911          addl      $3299628645,%r9d
912          movzbl    %bl,%ebx
913          addl      %r12d,%r9d
914          movl      %edx,60(%rsi)
915          addb      %al,%cl
916          roll      $23,%r9d
917          movl      $-1,%r12d
918          pinsrw    $7,(%rdi,%rbx,4),%xmm1
919
920          addl      %r10d,%r9d
921          psllq     $8,%xmm1
922          pxor      %xmm0,%xmm4
923          pxor      %xmm1,%xmm4
924          pxor      %xmm0,%xmm0
925          movl      (%rdi,%rcx,4),%edx
926          xorl      %r11d,%r12d
927          movl      %eax,(%rdi,%rcx,4)
928          orl       %r9d,%r12d
929          addl      0(%r15),%r8d
930          addb      %dl,%al
931          movl      68(%rsi),%ebx
932          addl      $4096336452,%r8d
933          movzbl    %al,%eax
934          xorl      %r10d,%r12d
935          movl      %edx,64(%rsi)
936          addl      %r12d,%r8d
937          addb      %bl,%cl
938          roll      $6,%r8d
939          movl      $-1,%r12d
940          movd      (%rdi,%rax,4),%xmm0
941
942          addl      %r9d,%r8d
943          pxor      %xmm1,%xmm1
944          movl      (%rdi,%rcx,4),%edx
945          xorl      %r10d,%r12d
946          movl      %ebx,(%rdi,%rcx,4)
947          orl       %r8d,%r12d
948          addl      28(%r15),%r11d
949          addb      %dl,%bl
950          movl      72(%rsi),%eax
951          addl      $1126891415,%r11d
952          movzbl    %bl,%ebx
953          xorl      %r9d,%r12d
954          movl      %edx,68(%rsi)
955          addl      %r12d,%r11d
956          addb      %al,%cl
957          roll      $10,%r11d
958          movl      $-1,%r12d
959          movd      (%rdi,%rbx,4),%xmm1
960
961          addl      %r8d,%r11d
962          movl      (%rdi,%rcx,4),%edx
963          xorl      %r9d,%r12d
964          movl      %eax,(%rdi,%rcx,4)
965          orl       %r11d,%r12d
966          addl      56(%r15),%r10d
967          addb      %dl,%al
968          movl      76(%rsi),%ebx
969          addl      $2878612391,%r10d
970          movzbl    %al,%eax
971          xorl      %r8d,%r12d
972          movl      %edx,72(%rsi)
973          addl      %r12d,%r10d
974          addb      %bl,%cl
975          roll      $15,%r10d
976          movl      $-1,%r12d
977          pinsrw    $1,(%rdi,%rax,4),%xmm0
978
979          addl      %r11d,%r10d
980          movl      (%rdi,%rcx,4),%edx
981          xorl      %r8d,%r12d
982          movl      %ebx,(%rdi,%rcx,4)
983          orl       %r10d,%r12d
984          addl      20(%r15),%r9d
985          addb      %dl,%bl
986          movl      80(%rsi),%eax
987          addl      $4237533241,%r9d
988          movzbl    %bl,%ebx
989          xorl      %r11d,%r12d
990          movl      %edx,76(%rsi)
991          addl      %r12d,%r9d
992          addb      %al,%cl
993          roll      $21,%r9d
994          movl      $-1,%r12d
995          pinsrw    $1,(%rdi,%rbx,4),%xmm1
996
997          addl      %r10d,%r9d
998          movl      (%rdi,%rcx,4),%edx
999          xorl      %r11d,%r12d
1000          movl      %eax,(%rdi,%rcx,4)
1001          orl       %r9d,%r12d
1002          addl      48(%r15),%r8d
1003          addb      %dl,%al
1004          movl      84(%rsi),%ebx
1005          addl      $1700485571,%r8d
1006          movzbl    %al,%eax
1007          xorl      %r10d,%r12d
1008          movl      %edx,80(%rsi)
1009          addl      %r12d,%r8d
1010          addb      %bl,%cl
1011          roll      $6,%r8d
1012          movl      $-1,%r12d
1013          pinsrw    $2,(%rdi,%rax,4),%xmm0
1014
1015          addl      %r9d,%r8d
1016          movl      (%rdi,%rcx,4),%edx
1017          xorl      %r10d,%r12d
1018          movl      %ebx,(%rdi,%rcx,4)
1019          orl       %r8d,%r12d
1020          addl      12(%r15),%r11d
1021          addb      %dl,%bl
1022          movl      88(%rsi),%eax
1023          addl      $2399980690,%r11d
1024          movzbl    %bl,%ebx
1025          xorl      %r9d,%r12d
1026          movl      %edx,84(%rsi)
1027          addl      %r12d,%r11d
1028          addb      %al,%cl
1029          roll      $10,%r11d
1030          movl      $-1,%r12d
1031          pinsrw    $2,(%rdi,%rbx,4),%xmm1
1032
1033          addl      %r8d,%r11d
1034          movl      (%rdi,%rcx,4),%edx
1035          xorl      %r9d,%r12d
1036          movl      %eax,(%rdi,%rcx,4)
1037          orl       %r11d,%r12d
1038          addl      40(%r15),%r10d
1039          addb      %dl,%al
1040          movl      92(%rsi),%ebx
1041          addl      $4293915773,%r10d
1042          movzbl    %al,%eax
1043          xorl      %r8d,%r12d
1044          movl      %edx,88(%rsi)
1045          addl      %r12d,%r10d
1046          addb      %bl,%cl
1047          roll      $15,%r10d
1048          movl      $-1,%r12d
1049          pinsrw    $3,(%rdi,%rax,4),%xmm0
1050
1051          addl      %r11d,%r10d
1052          movl      (%rdi,%rcx,4),%edx
1053          xorl      %r8d,%r12d
1054          movl      %ebx,(%rdi,%rcx,4)
1055          orl       %r10d,%r12d
1056          addl      4(%r15),%r9d
1057          addb      %dl,%bl
1058          movl      96(%rsi),%eax
1059          addl      $2240044497,%r9d
1060          movzbl    %bl,%ebx
1061          xorl      %r11d,%r12d
1062          movl      %edx,92(%rsi)
1063          addl      %r12d,%r9d
1064          addb      %al,%cl
1065          roll      $21,%r9d
1066          movl      $-1,%r12d
1067          pinsrw    $3,(%rdi,%rbx,4),%xmm1
1068
1069          addl      %r10d,%r9d
1070          movl      (%rdi,%rcx,4),%edx
1071          xorl      %r11d,%r12d
1072          movl      %eax,(%rdi,%rcx,4)
1073          orl       %r9d,%r12d
1074          addl      32(%r15),%r8d
1075          addb      %dl,%al
1076          movl      100(%rsi),%ebx
1077          addl      $1873313359,%r8d
1078          movzbl    %al,%eax
1079          xorl      %r10d,%r12d
1080          movl      %edx,96(%rsi)
1081          addl      %r12d,%r8d
1082          addb      %bl,%cl
1083          roll      $6,%r8d
1084          movl      $-1,%r12d
1085          pinsrw    $4,(%rdi,%rax,4),%xmm0
1086
1087          addl      %r9d,%r8d
1088          movl      (%rdi,%rcx,4),%edx
1089          xorl      %r10d,%r12d
1090          movl      %ebx,(%rdi,%rcx,4)
1091          orl       %r8d,%r12d
1092          addl      60(%r15),%r11d
1093          addb      %dl,%bl
1094          movl      104(%rsi),%eax
1095          addl      $4264355552,%r11d
1096          movzbl    %bl,%ebx
1097          xorl      %r9d,%r12d
1098          movl      %edx,100(%rsi)
1099          addl      %r12d,%r11d
1100          addb      %al,%cl
1101          roll      $10,%r11d
1102          movl      $-1,%r12d
1103          pinsrw    $4,(%rdi,%rbx,4),%xmm1
1104
1105          addl      %r8d,%r11d
1106          movl      (%rdi,%rcx,4),%edx
1107          xorl      %r9d,%r12d
1108          movl      %eax,(%rdi,%rcx,4)
1109          orl       %r11d,%r12d
1110          addl      24(%r15),%r10d
1111          addb      %dl,%al
1112          movl      108(%rsi),%ebx
1113          addl      $2734768916,%r10d
1114          movzbl    %al,%eax
1115          xorl      %r8d,%r12d
1116          movl      %edx,104(%rsi)
1117          addl      %r12d,%r10d
1118          addb      %bl,%cl
1119          roll      $15,%r10d
1120          movl      $-1,%r12d
1121          pinsrw    $5,(%rdi,%rax,4),%xmm0
1122
1123          addl      %r11d,%r10d
1124          movl      (%rdi,%rcx,4),%edx
1125          xorl      %r8d,%r12d
1126          movl      %ebx,(%rdi,%rcx,4)
1127          orl       %r10d,%r12d
1128          addl      52(%r15),%r9d
1129          addb      %dl,%bl
1130          movl      112(%rsi),%eax
1131          addl      $1309151649,%r9d
1132          movzbl    %bl,%ebx
1133          xorl      %r11d,%r12d
1134          movl      %edx,108(%rsi)
1135          addl      %r12d,%r9d
1136          addb      %al,%cl
1137          roll      $21,%r9d
1138          movl      $-1,%r12d
1139          pinsrw    $5,(%rdi,%rbx,4),%xmm1
1140
1141          addl      %r10d,%r9d
1142          movl      (%rdi,%rcx,4),%edx
1143          xorl      %r11d,%r12d
1144          movl      %eax,(%rdi,%rcx,4)
1145          orl       %r9d,%r12d
1146          addl      16(%r15),%r8d
1147          addb      %dl,%al
1148          movl      116(%rsi),%ebx
1149          addl      $4149444226,%r8d
1150          movzbl    %al,%eax
1151          xorl      %r10d,%r12d
1152          movl      %edx,112(%rsi)
1153          addl      %r12d,%r8d
1154          addb      %bl,%cl
1155          roll      $6,%r8d
1156          movl      $-1,%r12d
1157          pinsrw    $6,(%rdi,%rax,4),%xmm0
1158
1159          addl      %r9d,%r8d
1160          movl      (%rdi,%rcx,4),%edx
1161          xorl      %r10d,%r12d
1162          movl      %ebx,(%rdi,%rcx,4)
1163          orl       %r8d,%r12d
1164          addl      44(%r15),%r11d
1165          addb      %dl,%bl
1166          movl      120(%rsi),%eax
1167          addl      $3174756917,%r11d
1168          movzbl    %bl,%ebx
1169          xorl      %r9d,%r12d
1170          movl      %edx,116(%rsi)
1171          addl      %r12d,%r11d
1172          addb      %al,%cl
1173          roll      $10,%r11d
1174          movl      $-1,%r12d
1175          pinsrw    $6,(%rdi,%rbx,4),%xmm1
1176
1177          addl      %r8d,%r11d
1178          movl      (%rdi,%rcx,4),%edx
1179          xorl      %r9d,%r12d
1180          movl      %eax,(%rdi,%rcx,4)
1181          orl       %r11d,%r12d
1182          addl      8(%r15),%r10d
1183          addb      %dl,%al
1184          movl      124(%rsi),%ebx
1185          addl      $718787259,%r10d
1186          movzbl    %al,%eax
1187          xorl      %r8d,%r12d
1188          movl      %edx,120(%rsi)
1189          addl      %r12d,%r10d
1190          addb      %bl,%cl
1191          roll      $15,%r10d
1192          movl      $-1,%r12d
1193          pinsrw    $7,(%rdi,%rax,4),%xmm0
1194
1195          addl      %r11d,%r10d
1196          movdqu    48(%r13),%xmm5
1197          addb      $32,%bpl
1198          movl      (%rdi,%rcx,4),%edx
1199          xorl      %r8d,%r12d
1200          movl      %ebx,(%rdi,%rcx,4)
1201          orl       %r10d,%r12d
1202          addl      36(%r15),%r9d
1203          addb      %dl,%bl
1204          movl      0(%rdi,%rbp,4),%eax
1205          addl      $3951481745,%r9d
1206          movzbl    %bl,%ebx
1207          xorl      %r11d,%r12d
1208          movl      %edx,124(%rsi)
1209          addl      %r12d,%r9d
1210          addb      %al,%cl
1211          roll      $21,%r9d
1212          movl      $-1,%r12d
1213          pinsrw    $7,(%rdi,%rbx,4),%xmm1
1214
1215          addl      %r10d,%r9d
1216          movq      %rbp,%rsi
1217          xorq      %rbp,%rbp
1218          movb      %sil,%bpl
1219          movq      %rcx,%rsi
1220          xorq      %rcx,%rcx
1221          movb      %sil,%cl
1222          leaq      (%rdi,%rbp,4),%rsi
1223          psllq     $8,%xmm1
1224          pxor      %xmm0,%xmm5
1225          pxor      %xmm1,%xmm5
1226          addl      0(%rsp),%r8d
1227          addl      4(%rsp),%r9d
1228          addl      8(%rsp),%r10d
1229          addl      12(%rsp),%r11d
1230
1231          movdqu    %xmm2,(%r14,%r13,1)
1232          movdqu    %xmm3,16(%r14,%r13,1)
1233          movdqu    %xmm4,32(%r14,%r13,1)
1234          movdqu    %xmm5,48(%r14,%r13,1)
1235          leaq      64(%r15),%r15
1236          leaq      64(%r13),%r13
1237          cmpq      16(%rsp),%r15
1238          jb        .Loop
1239
1240          movq      24(%rsp),%r12
1241          subb      %al,%cl
1242          movl      %r8d,0(%r12)
1243          movl      %r9d,4(%r12)
1244          movl      %r10d,8(%r12)
1245          movl      %r11d,12(%r12)
1246          subb      $1,%bpl
1247          movl      %ebp,-8(%rdi)
1248          movl      %ecx,-4(%rdi)
1249
1250          movq      40(%rsp),%r15
1251          movq      48(%rsp),%r14
1252          movq      56(%rsp),%r13
1253          movq      64(%rsp),%r12
1254          movq      72(%rsp),%rbp
1255          movq      80(%rsp),%rbx
1256          leaq      88(%rsp),%rsp
1257.Lepilogue:
1258.Labort:
1259          retq
1260.size     rc4_md5_enc,.-rc4_md5_enc
1261#if defined(HAVE_GNU_STACK)
1262.section .note.GNU-stack,"",%progbits
1263#endif
1264