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