Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / boringssl / win-x86 / crypto / sha / sha1-586.asm
blobe24449d2006878e88c882ef27858b1be8d0a7c47
1 %ifidn __OUTPUT_FORMAT__,obj
2 section code use32 class=code align=64
3 %elifidn __OUTPUT_FORMAT__,win32
4 %ifdef __YASM_VERSION_ID__
5 %if __YASM_VERSION_ID__ < 01010000h
6 %error yasm version 1.1.0 or later needed.
7 %endif
8 ; Yasm automatically includes .00 and complains about redefining it.
9 ; https://www.tortall.net/projects/yasm/manual/html/objfmt-win32-safeseh.html
10 %else
11 $@feat.00 equ 1
12 %endif
13 section .text code align=64
14 %else
15 section .text code
16 %endif
17 ;extern _OPENSSL_ia32cap_P
18 global _sha1_block_data_order
19 align 16
20 _sha1_block_data_order:
21 L$_sha1_block_data_order_begin:
22 push ebp
23 push ebx
24 push esi
25 push edi
26 call L$000pic_point
27 L$000pic_point:
28 pop ebp
29 lea esi,[_OPENSSL_ia32cap_P]
30 lea ebp,[(L$K_XX_XX-L$000pic_point)+ebp]
31 mov eax,DWORD [esi]
32 mov edx,DWORD [4+esi]
33 test edx,512
34 jz NEAR L$001x86
35 mov ecx,DWORD [8+esi]
36 test eax,16777216
37 jz NEAR L$001x86
38 test ecx,536870912
39 jnz NEAR L$shaext_shortcut
40 jmp NEAR L$ssse3_shortcut
41 align 16
42 L$001x86:
43 mov ebp,DWORD [20+esp]
44 mov esi,DWORD [24+esp]
45 mov eax,DWORD [28+esp]
46 sub esp,76
47 shl eax,6
48 add eax,esi
49 mov DWORD [104+esp],eax
50 mov edi,DWORD [16+ebp]
51 jmp NEAR L$002loop
52 align 16
53 L$002loop:
54 mov eax,DWORD [esi]
55 mov ebx,DWORD [4+esi]
56 mov ecx,DWORD [8+esi]
57 mov edx,DWORD [12+esi]
58 bswap eax
59 bswap ebx
60 bswap ecx
61 bswap edx
62 mov DWORD [esp],eax
63 mov DWORD [4+esp],ebx
64 mov DWORD [8+esp],ecx
65 mov DWORD [12+esp],edx
66 mov eax,DWORD [16+esi]
67 mov ebx,DWORD [20+esi]
68 mov ecx,DWORD [24+esi]
69 mov edx,DWORD [28+esi]
70 bswap eax
71 bswap ebx
72 bswap ecx
73 bswap edx
74 mov DWORD [16+esp],eax
75 mov DWORD [20+esp],ebx
76 mov DWORD [24+esp],ecx
77 mov DWORD [28+esp],edx
78 mov eax,DWORD [32+esi]
79 mov ebx,DWORD [36+esi]
80 mov ecx,DWORD [40+esi]
81 mov edx,DWORD [44+esi]
82 bswap eax
83 bswap ebx
84 bswap ecx
85 bswap edx
86 mov DWORD [32+esp],eax
87 mov DWORD [36+esp],ebx
88 mov DWORD [40+esp],ecx
89 mov DWORD [44+esp],edx
90 mov eax,DWORD [48+esi]
91 mov ebx,DWORD [52+esi]
92 mov ecx,DWORD [56+esi]
93 mov edx,DWORD [60+esi]
94 bswap eax
95 bswap ebx
96 bswap ecx
97 bswap edx
98 mov DWORD [48+esp],eax
99 mov DWORD [52+esp],ebx
100 mov DWORD [56+esp],ecx
101 mov DWORD [60+esp],edx
102 mov DWORD [100+esp],esi
103 mov eax,DWORD [ebp]
104 mov ebx,DWORD [4+ebp]
105 mov ecx,DWORD [8+ebp]
106 mov edx,DWORD [12+ebp]
107 ; 00_15 0
108 mov esi,ecx
109 mov ebp,eax
110 rol ebp,5
111 xor esi,edx
112 add ebp,edi
113 mov edi,DWORD [esp]
114 and esi,ebx
115 ror ebx,2
116 xor esi,edx
117 lea ebp,[1518500249+edi*1+ebp]
118 add ebp,esi
119 ; 00_15 1
120 mov edi,ebx
121 mov esi,ebp
122 rol ebp,5
123 xor edi,ecx
124 add ebp,edx
125 mov edx,DWORD [4+esp]
126 and edi,eax
127 ror eax,2
128 xor edi,ecx
129 lea ebp,[1518500249+edx*1+ebp]
130 add ebp,edi
131 ; 00_15 2
132 mov edx,eax
133 mov edi,ebp
134 rol ebp,5
135 xor edx,ebx
136 add ebp,ecx
137 mov ecx,DWORD [8+esp]
138 and edx,esi
139 ror esi,2
140 xor edx,ebx
141 lea ebp,[1518500249+ecx*1+ebp]
142 add ebp,edx
143 ; 00_15 3
144 mov ecx,esi
145 mov edx,ebp
146 rol ebp,5
147 xor ecx,eax
148 add ebp,ebx
149 mov ebx,DWORD [12+esp]
150 and ecx,edi
151 ror edi,2
152 xor ecx,eax
153 lea ebp,[1518500249+ebx*1+ebp]
154 add ebp,ecx
155 ; 00_15 4
156 mov ebx,edi
157 mov ecx,ebp
158 rol ebp,5
159 xor ebx,esi
160 add ebp,eax
161 mov eax,DWORD [16+esp]
162 and ebx,edx
163 ror edx,2
164 xor ebx,esi
165 lea ebp,[1518500249+eax*1+ebp]
166 add ebp,ebx
167 ; 00_15 5
168 mov eax,edx
169 mov ebx,ebp
170 rol ebp,5
171 xor eax,edi
172 add ebp,esi
173 mov esi,DWORD [20+esp]
174 and eax,ecx
175 ror ecx,2
176 xor eax,edi
177 lea ebp,[1518500249+esi*1+ebp]
178 add ebp,eax
179 ; 00_15 6
180 mov esi,ecx
181 mov eax,ebp
182 rol ebp,5
183 xor esi,edx
184 add ebp,edi
185 mov edi,DWORD [24+esp]
186 and esi,ebx
187 ror ebx,2
188 xor esi,edx
189 lea ebp,[1518500249+edi*1+ebp]
190 add ebp,esi
191 ; 00_15 7
192 mov edi,ebx
193 mov esi,ebp
194 rol ebp,5
195 xor edi,ecx
196 add ebp,edx
197 mov edx,DWORD [28+esp]
198 and edi,eax
199 ror eax,2
200 xor edi,ecx
201 lea ebp,[1518500249+edx*1+ebp]
202 add ebp,edi
203 ; 00_15 8
204 mov edx,eax
205 mov edi,ebp
206 rol ebp,5
207 xor edx,ebx
208 add ebp,ecx
209 mov ecx,DWORD [32+esp]
210 and edx,esi
211 ror esi,2
212 xor edx,ebx
213 lea ebp,[1518500249+ecx*1+ebp]
214 add ebp,edx
215 ; 00_15 9
216 mov ecx,esi
217 mov edx,ebp
218 rol ebp,5
219 xor ecx,eax
220 add ebp,ebx
221 mov ebx,DWORD [36+esp]
222 and ecx,edi
223 ror edi,2
224 xor ecx,eax
225 lea ebp,[1518500249+ebx*1+ebp]
226 add ebp,ecx
227 ; 00_15 10
228 mov ebx,edi
229 mov ecx,ebp
230 rol ebp,5
231 xor ebx,esi
232 add ebp,eax
233 mov eax,DWORD [40+esp]
234 and ebx,edx
235 ror edx,2
236 xor ebx,esi
237 lea ebp,[1518500249+eax*1+ebp]
238 add ebp,ebx
239 ; 00_15 11
240 mov eax,edx
241 mov ebx,ebp
242 rol ebp,5
243 xor eax,edi
244 add ebp,esi
245 mov esi,DWORD [44+esp]
246 and eax,ecx
247 ror ecx,2
248 xor eax,edi
249 lea ebp,[1518500249+esi*1+ebp]
250 add ebp,eax
251 ; 00_15 12
252 mov esi,ecx
253 mov eax,ebp
254 rol ebp,5
255 xor esi,edx
256 add ebp,edi
257 mov edi,DWORD [48+esp]
258 and esi,ebx
259 ror ebx,2
260 xor esi,edx
261 lea ebp,[1518500249+edi*1+ebp]
262 add ebp,esi
263 ; 00_15 13
264 mov edi,ebx
265 mov esi,ebp
266 rol ebp,5
267 xor edi,ecx
268 add ebp,edx
269 mov edx,DWORD [52+esp]
270 and edi,eax
271 ror eax,2
272 xor edi,ecx
273 lea ebp,[1518500249+edx*1+ebp]
274 add ebp,edi
275 ; 00_15 14
276 mov edx,eax
277 mov edi,ebp
278 rol ebp,5
279 xor edx,ebx
280 add ebp,ecx
281 mov ecx,DWORD [56+esp]
282 and edx,esi
283 ror esi,2
284 xor edx,ebx
285 lea ebp,[1518500249+ecx*1+ebp]
286 add ebp,edx
287 ; 00_15 15
288 mov ecx,esi
289 mov edx,ebp
290 rol ebp,5
291 xor ecx,eax
292 add ebp,ebx
293 mov ebx,DWORD [60+esp]
294 and ecx,edi
295 ror edi,2
296 xor ecx,eax
297 lea ebp,[1518500249+ebx*1+ebp]
298 mov ebx,DWORD [esp]
299 add ecx,ebp
300 ; 16_19 16
301 mov ebp,edi
302 xor ebx,DWORD [8+esp]
303 xor ebp,esi
304 xor ebx,DWORD [32+esp]
305 and ebp,edx
306 xor ebx,DWORD [52+esp]
307 rol ebx,1
308 xor ebp,esi
309 add eax,ebp
310 mov ebp,ecx
311 ror edx,2
312 mov DWORD [esp],ebx
313 rol ebp,5
314 lea ebx,[1518500249+eax*1+ebx]
315 mov eax,DWORD [4+esp]
316 add ebx,ebp
317 ; 16_19 17
318 mov ebp,edx
319 xor eax,DWORD [12+esp]
320 xor ebp,edi
321 xor eax,DWORD [36+esp]
322 and ebp,ecx
323 xor eax,DWORD [56+esp]
324 rol eax,1
325 xor ebp,edi
326 add esi,ebp
327 mov ebp,ebx
328 ror ecx,2
329 mov DWORD [4+esp],eax
330 rol ebp,5
331 lea eax,[1518500249+esi*1+eax]
332 mov esi,DWORD [8+esp]
333 add eax,ebp
334 ; 16_19 18
335 mov ebp,ecx
336 xor esi,DWORD [16+esp]
337 xor ebp,edx
338 xor esi,DWORD [40+esp]
339 and ebp,ebx
340 xor esi,DWORD [60+esp]
341 rol esi,1
342 xor ebp,edx
343 add edi,ebp
344 mov ebp,eax
345 ror ebx,2
346 mov DWORD [8+esp],esi
347 rol ebp,5
348 lea esi,[1518500249+edi*1+esi]
349 mov edi,DWORD [12+esp]
350 add esi,ebp
351 ; 16_19 19
352 mov ebp,ebx
353 xor edi,DWORD [20+esp]
354 xor ebp,ecx
355 xor edi,DWORD [44+esp]
356 and ebp,eax
357 xor edi,DWORD [esp]
358 rol edi,1
359 xor ebp,ecx
360 add edx,ebp
361 mov ebp,esi
362 ror eax,2
363 mov DWORD [12+esp],edi
364 rol ebp,5
365 lea edi,[1518500249+edx*1+edi]
366 mov edx,DWORD [16+esp]
367 add edi,ebp
368 ; 20_39 20
369 mov ebp,esi
370 xor edx,DWORD [24+esp]
371 xor ebp,eax
372 xor edx,DWORD [48+esp]
373 xor ebp,ebx
374 xor edx,DWORD [4+esp]
375 rol edx,1
376 add ecx,ebp
377 ror esi,2
378 mov ebp,edi
379 rol ebp,5
380 mov DWORD [16+esp],edx
381 lea edx,[1859775393+ecx*1+edx]
382 mov ecx,DWORD [20+esp]
383 add edx,ebp
384 ; 20_39 21
385 mov ebp,edi
386 xor ecx,DWORD [28+esp]
387 xor ebp,esi
388 xor ecx,DWORD [52+esp]
389 xor ebp,eax
390 xor ecx,DWORD [8+esp]
391 rol ecx,1
392 add ebx,ebp
393 ror edi,2
394 mov ebp,edx
395 rol ebp,5
396 mov DWORD [20+esp],ecx
397 lea ecx,[1859775393+ebx*1+ecx]
398 mov ebx,DWORD [24+esp]
399 add ecx,ebp
400 ; 20_39 22
401 mov ebp,edx
402 xor ebx,DWORD [32+esp]
403 xor ebp,edi
404 xor ebx,DWORD [56+esp]
405 xor ebp,esi
406 xor ebx,DWORD [12+esp]
407 rol ebx,1
408 add eax,ebp
409 ror edx,2
410 mov ebp,ecx
411 rol ebp,5
412 mov DWORD [24+esp],ebx
413 lea ebx,[1859775393+eax*1+ebx]
414 mov eax,DWORD [28+esp]
415 add ebx,ebp
416 ; 20_39 23
417 mov ebp,ecx
418 xor eax,DWORD [36+esp]
419 xor ebp,edx
420 xor eax,DWORD [60+esp]
421 xor ebp,edi
422 xor eax,DWORD [16+esp]
423 rol eax,1
424 add esi,ebp
425 ror ecx,2
426 mov ebp,ebx
427 rol ebp,5
428 mov DWORD [28+esp],eax
429 lea eax,[1859775393+esi*1+eax]
430 mov esi,DWORD [32+esp]
431 add eax,ebp
432 ; 20_39 24
433 mov ebp,ebx
434 xor esi,DWORD [40+esp]
435 xor ebp,ecx
436 xor esi,DWORD [esp]
437 xor ebp,edx
438 xor esi,DWORD [20+esp]
439 rol esi,1
440 add edi,ebp
441 ror ebx,2
442 mov ebp,eax
443 rol ebp,5
444 mov DWORD [32+esp],esi
445 lea esi,[1859775393+edi*1+esi]
446 mov edi,DWORD [36+esp]
447 add esi,ebp
448 ; 20_39 25
449 mov ebp,eax
450 xor edi,DWORD [44+esp]
451 xor ebp,ebx
452 xor edi,DWORD [4+esp]
453 xor ebp,ecx
454 xor edi,DWORD [24+esp]
455 rol edi,1
456 add edx,ebp
457 ror eax,2
458 mov ebp,esi
459 rol ebp,5
460 mov DWORD [36+esp],edi
461 lea edi,[1859775393+edx*1+edi]
462 mov edx,DWORD [40+esp]
463 add edi,ebp
464 ; 20_39 26
465 mov ebp,esi
466 xor edx,DWORD [48+esp]
467 xor ebp,eax
468 xor edx,DWORD [8+esp]
469 xor ebp,ebx
470 xor edx,DWORD [28+esp]
471 rol edx,1
472 add ecx,ebp
473 ror esi,2
474 mov ebp,edi
475 rol ebp,5
476 mov DWORD [40+esp],edx
477 lea edx,[1859775393+ecx*1+edx]
478 mov ecx,DWORD [44+esp]
479 add edx,ebp
480 ; 20_39 27
481 mov ebp,edi
482 xor ecx,DWORD [52+esp]
483 xor ebp,esi
484 xor ecx,DWORD [12+esp]
485 xor ebp,eax
486 xor ecx,DWORD [32+esp]
487 rol ecx,1
488 add ebx,ebp
489 ror edi,2
490 mov ebp,edx
491 rol ebp,5
492 mov DWORD [44+esp],ecx
493 lea ecx,[1859775393+ebx*1+ecx]
494 mov ebx,DWORD [48+esp]
495 add ecx,ebp
496 ; 20_39 28
497 mov ebp,edx
498 xor ebx,DWORD [56+esp]
499 xor ebp,edi
500 xor ebx,DWORD [16+esp]
501 xor ebp,esi
502 xor ebx,DWORD [36+esp]
503 rol ebx,1
504 add eax,ebp
505 ror edx,2
506 mov ebp,ecx
507 rol ebp,5
508 mov DWORD [48+esp],ebx
509 lea ebx,[1859775393+eax*1+ebx]
510 mov eax,DWORD [52+esp]
511 add ebx,ebp
512 ; 20_39 29
513 mov ebp,ecx
514 xor eax,DWORD [60+esp]
515 xor ebp,edx
516 xor eax,DWORD [20+esp]
517 xor ebp,edi
518 xor eax,DWORD [40+esp]
519 rol eax,1
520 add esi,ebp
521 ror ecx,2
522 mov ebp,ebx
523 rol ebp,5
524 mov DWORD [52+esp],eax
525 lea eax,[1859775393+esi*1+eax]
526 mov esi,DWORD [56+esp]
527 add eax,ebp
528 ; 20_39 30
529 mov ebp,ebx
530 xor esi,DWORD [esp]
531 xor ebp,ecx
532 xor esi,DWORD [24+esp]
533 xor ebp,edx
534 xor esi,DWORD [44+esp]
535 rol esi,1
536 add edi,ebp
537 ror ebx,2
538 mov ebp,eax
539 rol ebp,5
540 mov DWORD [56+esp],esi
541 lea esi,[1859775393+edi*1+esi]
542 mov edi,DWORD [60+esp]
543 add esi,ebp
544 ; 20_39 31
545 mov ebp,eax
546 xor edi,DWORD [4+esp]
547 xor ebp,ebx
548 xor edi,DWORD [28+esp]
549 xor ebp,ecx
550 xor edi,DWORD [48+esp]
551 rol edi,1
552 add edx,ebp
553 ror eax,2
554 mov ebp,esi
555 rol ebp,5
556 mov DWORD [60+esp],edi
557 lea edi,[1859775393+edx*1+edi]
558 mov edx,DWORD [esp]
559 add edi,ebp
560 ; 20_39 32
561 mov ebp,esi
562 xor edx,DWORD [8+esp]
563 xor ebp,eax
564 xor edx,DWORD [32+esp]
565 xor ebp,ebx
566 xor edx,DWORD [52+esp]
567 rol edx,1
568 add ecx,ebp
569 ror esi,2
570 mov ebp,edi
571 rol ebp,5
572 mov DWORD [esp],edx
573 lea edx,[1859775393+ecx*1+edx]
574 mov ecx,DWORD [4+esp]
575 add edx,ebp
576 ; 20_39 33
577 mov ebp,edi
578 xor ecx,DWORD [12+esp]
579 xor ebp,esi
580 xor ecx,DWORD [36+esp]
581 xor ebp,eax
582 xor ecx,DWORD [56+esp]
583 rol ecx,1
584 add ebx,ebp
585 ror edi,2
586 mov ebp,edx
587 rol ebp,5
588 mov DWORD [4+esp],ecx
589 lea ecx,[1859775393+ebx*1+ecx]
590 mov ebx,DWORD [8+esp]
591 add ecx,ebp
592 ; 20_39 34
593 mov ebp,edx
594 xor ebx,DWORD [16+esp]
595 xor ebp,edi
596 xor ebx,DWORD [40+esp]
597 xor ebp,esi
598 xor ebx,DWORD [60+esp]
599 rol ebx,1
600 add eax,ebp
601 ror edx,2
602 mov ebp,ecx
603 rol ebp,5
604 mov DWORD [8+esp],ebx
605 lea ebx,[1859775393+eax*1+ebx]
606 mov eax,DWORD [12+esp]
607 add ebx,ebp
608 ; 20_39 35
609 mov ebp,ecx
610 xor eax,DWORD [20+esp]
611 xor ebp,edx
612 xor eax,DWORD [44+esp]
613 xor ebp,edi
614 xor eax,DWORD [esp]
615 rol eax,1
616 add esi,ebp
617 ror ecx,2
618 mov ebp,ebx
619 rol ebp,5
620 mov DWORD [12+esp],eax
621 lea eax,[1859775393+esi*1+eax]
622 mov esi,DWORD [16+esp]
623 add eax,ebp
624 ; 20_39 36
625 mov ebp,ebx
626 xor esi,DWORD [24+esp]
627 xor ebp,ecx
628 xor esi,DWORD [48+esp]
629 xor ebp,edx
630 xor esi,DWORD [4+esp]
631 rol esi,1
632 add edi,ebp
633 ror ebx,2
634 mov ebp,eax
635 rol ebp,5
636 mov DWORD [16+esp],esi
637 lea esi,[1859775393+edi*1+esi]
638 mov edi,DWORD [20+esp]
639 add esi,ebp
640 ; 20_39 37
641 mov ebp,eax
642 xor edi,DWORD [28+esp]
643 xor ebp,ebx
644 xor edi,DWORD [52+esp]
645 xor ebp,ecx
646 xor edi,DWORD [8+esp]
647 rol edi,1
648 add edx,ebp
649 ror eax,2
650 mov ebp,esi
651 rol ebp,5
652 mov DWORD [20+esp],edi
653 lea edi,[1859775393+edx*1+edi]
654 mov edx,DWORD [24+esp]
655 add edi,ebp
656 ; 20_39 38
657 mov ebp,esi
658 xor edx,DWORD [32+esp]
659 xor ebp,eax
660 xor edx,DWORD [56+esp]
661 xor ebp,ebx
662 xor edx,DWORD [12+esp]
663 rol edx,1
664 add ecx,ebp
665 ror esi,2
666 mov ebp,edi
667 rol ebp,5
668 mov DWORD [24+esp],edx
669 lea edx,[1859775393+ecx*1+edx]
670 mov ecx,DWORD [28+esp]
671 add edx,ebp
672 ; 20_39 39
673 mov ebp,edi
674 xor ecx,DWORD [36+esp]
675 xor ebp,esi
676 xor ecx,DWORD [60+esp]
677 xor ebp,eax
678 xor ecx,DWORD [16+esp]
679 rol ecx,1
680 add ebx,ebp
681 ror edi,2
682 mov ebp,edx
683 rol ebp,5
684 mov DWORD [28+esp],ecx
685 lea ecx,[1859775393+ebx*1+ecx]
686 mov ebx,DWORD [32+esp]
687 add ecx,ebp
688 ; 40_59 40
689 mov ebp,edi
690 xor ebx,DWORD [40+esp]
691 xor ebp,esi
692 xor ebx,DWORD [esp]
693 and ebp,edx
694 xor ebx,DWORD [20+esp]
695 rol ebx,1
696 add ebp,eax
697 ror edx,2
698 mov eax,ecx
699 rol eax,5
700 mov DWORD [32+esp],ebx
701 lea ebx,[2400959708+ebp*1+ebx]
702 mov ebp,edi
703 add ebx,eax
704 and ebp,esi
705 mov eax,DWORD [36+esp]
706 add ebx,ebp
707 ; 40_59 41
708 mov ebp,edx
709 xor eax,DWORD [44+esp]
710 xor ebp,edi
711 xor eax,DWORD [4+esp]
712 and ebp,ecx
713 xor eax,DWORD [24+esp]
714 rol eax,1
715 add ebp,esi
716 ror ecx,2
717 mov esi,ebx
718 rol esi,5
719 mov DWORD [36+esp],eax
720 lea eax,[2400959708+ebp*1+eax]
721 mov ebp,edx
722 add eax,esi
723 and ebp,edi
724 mov esi,DWORD [40+esp]
725 add eax,ebp
726 ; 40_59 42
727 mov ebp,ecx
728 xor esi,DWORD [48+esp]
729 xor ebp,edx
730 xor esi,DWORD [8+esp]
731 and ebp,ebx
732 xor esi,DWORD [28+esp]
733 rol esi,1
734 add ebp,edi
735 ror ebx,2
736 mov edi,eax
737 rol edi,5
738 mov DWORD [40+esp],esi
739 lea esi,[2400959708+ebp*1+esi]
740 mov ebp,ecx
741 add esi,edi
742 and ebp,edx
743 mov edi,DWORD [44+esp]
744 add esi,ebp
745 ; 40_59 43
746 mov ebp,ebx
747 xor edi,DWORD [52+esp]
748 xor ebp,ecx
749 xor edi,DWORD [12+esp]
750 and ebp,eax
751 xor edi,DWORD [32+esp]
752 rol edi,1
753 add ebp,edx
754 ror eax,2
755 mov edx,esi
756 rol edx,5
757 mov DWORD [44+esp],edi
758 lea edi,[2400959708+ebp*1+edi]
759 mov ebp,ebx
760 add edi,edx
761 and ebp,ecx
762 mov edx,DWORD [48+esp]
763 add edi,ebp
764 ; 40_59 44
765 mov ebp,eax
766 xor edx,DWORD [56+esp]
767 xor ebp,ebx
768 xor edx,DWORD [16+esp]
769 and ebp,esi
770 xor edx,DWORD [36+esp]
771 rol edx,1
772 add ebp,ecx
773 ror esi,2
774 mov ecx,edi
775 rol ecx,5
776 mov DWORD [48+esp],edx
777 lea edx,[2400959708+ebp*1+edx]
778 mov ebp,eax
779 add edx,ecx
780 and ebp,ebx
781 mov ecx,DWORD [52+esp]
782 add edx,ebp
783 ; 40_59 45
784 mov ebp,esi
785 xor ecx,DWORD [60+esp]
786 xor ebp,eax
787 xor ecx,DWORD [20+esp]
788 and ebp,edi
789 xor ecx,DWORD [40+esp]
790 rol ecx,1
791 add ebp,ebx
792 ror edi,2
793 mov ebx,edx
794 rol ebx,5
795 mov DWORD [52+esp],ecx
796 lea ecx,[2400959708+ebp*1+ecx]
797 mov ebp,esi
798 add ecx,ebx
799 and ebp,eax
800 mov ebx,DWORD [56+esp]
801 add ecx,ebp
802 ; 40_59 46
803 mov ebp,edi
804 xor ebx,DWORD [esp]
805 xor ebp,esi
806 xor ebx,DWORD [24+esp]
807 and ebp,edx
808 xor ebx,DWORD [44+esp]
809 rol ebx,1
810 add ebp,eax
811 ror edx,2
812 mov eax,ecx
813 rol eax,5
814 mov DWORD [56+esp],ebx
815 lea ebx,[2400959708+ebp*1+ebx]
816 mov ebp,edi
817 add ebx,eax
818 and ebp,esi
819 mov eax,DWORD [60+esp]
820 add ebx,ebp
821 ; 40_59 47
822 mov ebp,edx
823 xor eax,DWORD [4+esp]
824 xor ebp,edi
825 xor eax,DWORD [28+esp]
826 and ebp,ecx
827 xor eax,DWORD [48+esp]
828 rol eax,1
829 add ebp,esi
830 ror ecx,2
831 mov esi,ebx
832 rol esi,5
833 mov DWORD [60+esp],eax
834 lea eax,[2400959708+ebp*1+eax]
835 mov ebp,edx
836 add eax,esi
837 and ebp,edi
838 mov esi,DWORD [esp]
839 add eax,ebp
840 ; 40_59 48
841 mov ebp,ecx
842 xor esi,DWORD [8+esp]
843 xor ebp,edx
844 xor esi,DWORD [32+esp]
845 and ebp,ebx
846 xor esi,DWORD [52+esp]
847 rol esi,1
848 add ebp,edi
849 ror ebx,2
850 mov edi,eax
851 rol edi,5
852 mov DWORD [esp],esi
853 lea esi,[2400959708+ebp*1+esi]
854 mov ebp,ecx
855 add esi,edi
856 and ebp,edx
857 mov edi,DWORD [4+esp]
858 add esi,ebp
859 ; 40_59 49
860 mov ebp,ebx
861 xor edi,DWORD [12+esp]
862 xor ebp,ecx
863 xor edi,DWORD [36+esp]
864 and ebp,eax
865 xor edi,DWORD [56+esp]
866 rol edi,1
867 add ebp,edx
868 ror eax,2
869 mov edx,esi
870 rol edx,5
871 mov DWORD [4+esp],edi
872 lea edi,[2400959708+ebp*1+edi]
873 mov ebp,ebx
874 add edi,edx
875 and ebp,ecx
876 mov edx,DWORD [8+esp]
877 add edi,ebp
878 ; 40_59 50
879 mov ebp,eax
880 xor edx,DWORD [16+esp]
881 xor ebp,ebx
882 xor edx,DWORD [40+esp]
883 and ebp,esi
884 xor edx,DWORD [60+esp]
885 rol edx,1
886 add ebp,ecx
887 ror esi,2
888 mov ecx,edi
889 rol ecx,5
890 mov DWORD [8+esp],edx
891 lea edx,[2400959708+ebp*1+edx]
892 mov ebp,eax
893 add edx,ecx
894 and ebp,ebx
895 mov ecx,DWORD [12+esp]
896 add edx,ebp
897 ; 40_59 51
898 mov ebp,esi
899 xor ecx,DWORD [20+esp]
900 xor ebp,eax
901 xor ecx,DWORD [44+esp]
902 and ebp,edi
903 xor ecx,DWORD [esp]
904 rol ecx,1
905 add ebp,ebx
906 ror edi,2
907 mov ebx,edx
908 rol ebx,5
909 mov DWORD [12+esp],ecx
910 lea ecx,[2400959708+ebp*1+ecx]
911 mov ebp,esi
912 add ecx,ebx
913 and ebp,eax
914 mov ebx,DWORD [16+esp]
915 add ecx,ebp
916 ; 40_59 52
917 mov ebp,edi
918 xor ebx,DWORD [24+esp]
919 xor ebp,esi
920 xor ebx,DWORD [48+esp]
921 and ebp,edx
922 xor ebx,DWORD [4+esp]
923 rol ebx,1
924 add ebp,eax
925 ror edx,2
926 mov eax,ecx
927 rol eax,5
928 mov DWORD [16+esp],ebx
929 lea ebx,[2400959708+ebp*1+ebx]
930 mov ebp,edi
931 add ebx,eax
932 and ebp,esi
933 mov eax,DWORD [20+esp]
934 add ebx,ebp
935 ; 40_59 53
936 mov ebp,edx
937 xor eax,DWORD [28+esp]
938 xor ebp,edi
939 xor eax,DWORD [52+esp]
940 and ebp,ecx
941 xor eax,DWORD [8+esp]
942 rol eax,1
943 add ebp,esi
944 ror ecx,2
945 mov esi,ebx
946 rol esi,5
947 mov DWORD [20+esp],eax
948 lea eax,[2400959708+ebp*1+eax]
949 mov ebp,edx
950 add eax,esi
951 and ebp,edi
952 mov esi,DWORD [24+esp]
953 add eax,ebp
954 ; 40_59 54
955 mov ebp,ecx
956 xor esi,DWORD [32+esp]
957 xor ebp,edx
958 xor esi,DWORD [56+esp]
959 and ebp,ebx
960 xor esi,DWORD [12+esp]
961 rol esi,1
962 add ebp,edi
963 ror ebx,2
964 mov edi,eax
965 rol edi,5
966 mov DWORD [24+esp],esi
967 lea esi,[2400959708+ebp*1+esi]
968 mov ebp,ecx
969 add esi,edi
970 and ebp,edx
971 mov edi,DWORD [28+esp]
972 add esi,ebp
973 ; 40_59 55
974 mov ebp,ebx
975 xor edi,DWORD [36+esp]
976 xor ebp,ecx
977 xor edi,DWORD [60+esp]
978 and ebp,eax
979 xor edi,DWORD [16+esp]
980 rol edi,1
981 add ebp,edx
982 ror eax,2
983 mov edx,esi
984 rol edx,5
985 mov DWORD [28+esp],edi
986 lea edi,[2400959708+ebp*1+edi]
987 mov ebp,ebx
988 add edi,edx
989 and ebp,ecx
990 mov edx,DWORD [32+esp]
991 add edi,ebp
992 ; 40_59 56
993 mov ebp,eax
994 xor edx,DWORD [40+esp]
995 xor ebp,ebx
996 xor edx,DWORD [esp]
997 and ebp,esi
998 xor edx,DWORD [20+esp]
999 rol edx,1
1000 add ebp,ecx
1001 ror esi,2
1002 mov ecx,edi
1003 rol ecx,5
1004 mov DWORD [32+esp],edx
1005 lea edx,[2400959708+ebp*1+edx]
1006 mov ebp,eax
1007 add edx,ecx
1008 and ebp,ebx
1009 mov ecx,DWORD [36+esp]
1010 add edx,ebp
1011 ; 40_59 57
1012 mov ebp,esi
1013 xor ecx,DWORD [44+esp]
1014 xor ebp,eax
1015 xor ecx,DWORD [4+esp]
1016 and ebp,edi
1017 xor ecx,DWORD [24+esp]
1018 rol ecx,1
1019 add ebp,ebx
1020 ror edi,2
1021 mov ebx,edx
1022 rol ebx,5
1023 mov DWORD [36+esp],ecx
1024 lea ecx,[2400959708+ebp*1+ecx]
1025 mov ebp,esi
1026 add ecx,ebx
1027 and ebp,eax
1028 mov ebx,DWORD [40+esp]
1029 add ecx,ebp
1030 ; 40_59 58
1031 mov ebp,edi
1032 xor ebx,DWORD [48+esp]
1033 xor ebp,esi
1034 xor ebx,DWORD [8+esp]
1035 and ebp,edx
1036 xor ebx,DWORD [28+esp]
1037 rol ebx,1
1038 add ebp,eax
1039 ror edx,2
1040 mov eax,ecx
1041 rol eax,5
1042 mov DWORD [40+esp],ebx
1043 lea ebx,[2400959708+ebp*1+ebx]
1044 mov ebp,edi
1045 add ebx,eax
1046 and ebp,esi
1047 mov eax,DWORD [44+esp]
1048 add ebx,ebp
1049 ; 40_59 59
1050 mov ebp,edx
1051 xor eax,DWORD [52+esp]
1052 xor ebp,edi
1053 xor eax,DWORD [12+esp]
1054 and ebp,ecx
1055 xor eax,DWORD [32+esp]
1056 rol eax,1
1057 add ebp,esi
1058 ror ecx,2
1059 mov esi,ebx
1060 rol esi,5
1061 mov DWORD [44+esp],eax
1062 lea eax,[2400959708+ebp*1+eax]
1063 mov ebp,edx
1064 add eax,esi
1065 and ebp,edi
1066 mov esi,DWORD [48+esp]
1067 add eax,ebp
1068 ; 20_39 60
1069 mov ebp,ebx
1070 xor esi,DWORD [56+esp]
1071 xor ebp,ecx
1072 xor esi,DWORD [16+esp]
1073 xor ebp,edx
1074 xor esi,DWORD [36+esp]
1075 rol esi,1
1076 add edi,ebp
1077 ror ebx,2
1078 mov ebp,eax
1079 rol ebp,5
1080 mov DWORD [48+esp],esi
1081 lea esi,[3395469782+edi*1+esi]
1082 mov edi,DWORD [52+esp]
1083 add esi,ebp
1084 ; 20_39 61
1085 mov ebp,eax
1086 xor edi,DWORD [60+esp]
1087 xor ebp,ebx
1088 xor edi,DWORD [20+esp]
1089 xor ebp,ecx
1090 xor edi,DWORD [40+esp]
1091 rol edi,1
1092 add edx,ebp
1093 ror eax,2
1094 mov ebp,esi
1095 rol ebp,5
1096 mov DWORD [52+esp],edi
1097 lea edi,[3395469782+edx*1+edi]
1098 mov edx,DWORD [56+esp]
1099 add edi,ebp
1100 ; 20_39 62
1101 mov ebp,esi
1102 xor edx,DWORD [esp]
1103 xor ebp,eax
1104 xor edx,DWORD [24+esp]
1105 xor ebp,ebx
1106 xor edx,DWORD [44+esp]
1107 rol edx,1
1108 add ecx,ebp
1109 ror esi,2
1110 mov ebp,edi
1111 rol ebp,5
1112 mov DWORD [56+esp],edx
1113 lea edx,[3395469782+ecx*1+edx]
1114 mov ecx,DWORD [60+esp]
1115 add edx,ebp
1116 ; 20_39 63
1117 mov ebp,edi
1118 xor ecx,DWORD [4+esp]
1119 xor ebp,esi
1120 xor ecx,DWORD [28+esp]
1121 xor ebp,eax
1122 xor ecx,DWORD [48+esp]
1123 rol ecx,1
1124 add ebx,ebp
1125 ror edi,2
1126 mov ebp,edx
1127 rol ebp,5
1128 mov DWORD [60+esp],ecx
1129 lea ecx,[3395469782+ebx*1+ecx]
1130 mov ebx,DWORD [esp]
1131 add ecx,ebp
1132 ; 20_39 64
1133 mov ebp,edx
1134 xor ebx,DWORD [8+esp]
1135 xor ebp,edi
1136 xor ebx,DWORD [32+esp]
1137 xor ebp,esi
1138 xor ebx,DWORD [52+esp]
1139 rol ebx,1
1140 add eax,ebp
1141 ror edx,2
1142 mov ebp,ecx
1143 rol ebp,5
1144 mov DWORD [esp],ebx
1145 lea ebx,[3395469782+eax*1+ebx]
1146 mov eax,DWORD [4+esp]
1147 add ebx,ebp
1148 ; 20_39 65
1149 mov ebp,ecx
1150 xor eax,DWORD [12+esp]
1151 xor ebp,edx
1152 xor eax,DWORD [36+esp]
1153 xor ebp,edi
1154 xor eax,DWORD [56+esp]
1155 rol eax,1
1156 add esi,ebp
1157 ror ecx,2
1158 mov ebp,ebx
1159 rol ebp,5
1160 mov DWORD [4+esp],eax
1161 lea eax,[3395469782+esi*1+eax]
1162 mov esi,DWORD [8+esp]
1163 add eax,ebp
1164 ; 20_39 66
1165 mov ebp,ebx
1166 xor esi,DWORD [16+esp]
1167 xor ebp,ecx
1168 xor esi,DWORD [40+esp]
1169 xor ebp,edx
1170 xor esi,DWORD [60+esp]
1171 rol esi,1
1172 add edi,ebp
1173 ror ebx,2
1174 mov ebp,eax
1175 rol ebp,5
1176 mov DWORD [8+esp],esi
1177 lea esi,[3395469782+edi*1+esi]
1178 mov edi,DWORD [12+esp]
1179 add esi,ebp
1180 ; 20_39 67
1181 mov ebp,eax
1182 xor edi,DWORD [20+esp]
1183 xor ebp,ebx
1184 xor edi,DWORD [44+esp]
1185 xor ebp,ecx
1186 xor edi,DWORD [esp]
1187 rol edi,1
1188 add edx,ebp
1189 ror eax,2
1190 mov ebp,esi
1191 rol ebp,5
1192 mov DWORD [12+esp],edi
1193 lea edi,[3395469782+edx*1+edi]
1194 mov edx,DWORD [16+esp]
1195 add edi,ebp
1196 ; 20_39 68
1197 mov ebp,esi
1198 xor edx,DWORD [24+esp]
1199 xor ebp,eax
1200 xor edx,DWORD [48+esp]
1201 xor ebp,ebx
1202 xor edx,DWORD [4+esp]
1203 rol edx,1
1204 add ecx,ebp
1205 ror esi,2
1206 mov ebp,edi
1207 rol ebp,5
1208 mov DWORD [16+esp],edx
1209 lea edx,[3395469782+ecx*1+edx]
1210 mov ecx,DWORD [20+esp]
1211 add edx,ebp
1212 ; 20_39 69
1213 mov ebp,edi
1214 xor ecx,DWORD [28+esp]
1215 xor ebp,esi
1216 xor ecx,DWORD [52+esp]
1217 xor ebp,eax
1218 xor ecx,DWORD [8+esp]
1219 rol ecx,1
1220 add ebx,ebp
1221 ror edi,2
1222 mov ebp,edx
1223 rol ebp,5
1224 mov DWORD [20+esp],ecx
1225 lea ecx,[3395469782+ebx*1+ecx]
1226 mov ebx,DWORD [24+esp]
1227 add ecx,ebp
1228 ; 20_39 70
1229 mov ebp,edx
1230 xor ebx,DWORD [32+esp]
1231 xor ebp,edi
1232 xor ebx,DWORD [56+esp]
1233 xor ebp,esi
1234 xor ebx,DWORD [12+esp]
1235 rol ebx,1
1236 add eax,ebp
1237 ror edx,2
1238 mov ebp,ecx
1239 rol ebp,5
1240 mov DWORD [24+esp],ebx
1241 lea ebx,[3395469782+eax*1+ebx]
1242 mov eax,DWORD [28+esp]
1243 add ebx,ebp
1244 ; 20_39 71
1245 mov ebp,ecx
1246 xor eax,DWORD [36+esp]
1247 xor ebp,edx
1248 xor eax,DWORD [60+esp]
1249 xor ebp,edi
1250 xor eax,DWORD [16+esp]
1251 rol eax,1
1252 add esi,ebp
1253 ror ecx,2
1254 mov ebp,ebx
1255 rol ebp,5
1256 mov DWORD [28+esp],eax
1257 lea eax,[3395469782+esi*1+eax]
1258 mov esi,DWORD [32+esp]
1259 add eax,ebp
1260 ; 20_39 72
1261 mov ebp,ebx
1262 xor esi,DWORD [40+esp]
1263 xor ebp,ecx
1264 xor esi,DWORD [esp]
1265 xor ebp,edx
1266 xor esi,DWORD [20+esp]
1267 rol esi,1
1268 add edi,ebp
1269 ror ebx,2
1270 mov ebp,eax
1271 rol ebp,5
1272 mov DWORD [32+esp],esi
1273 lea esi,[3395469782+edi*1+esi]
1274 mov edi,DWORD [36+esp]
1275 add esi,ebp
1276 ; 20_39 73
1277 mov ebp,eax
1278 xor edi,DWORD [44+esp]
1279 xor ebp,ebx
1280 xor edi,DWORD [4+esp]
1281 xor ebp,ecx
1282 xor edi,DWORD [24+esp]
1283 rol edi,1
1284 add edx,ebp
1285 ror eax,2
1286 mov ebp,esi
1287 rol ebp,5
1288 mov DWORD [36+esp],edi
1289 lea edi,[3395469782+edx*1+edi]
1290 mov edx,DWORD [40+esp]
1291 add edi,ebp
1292 ; 20_39 74
1293 mov ebp,esi
1294 xor edx,DWORD [48+esp]
1295 xor ebp,eax
1296 xor edx,DWORD [8+esp]
1297 xor ebp,ebx
1298 xor edx,DWORD [28+esp]
1299 rol edx,1
1300 add ecx,ebp
1301 ror esi,2
1302 mov ebp,edi
1303 rol ebp,5
1304 mov DWORD [40+esp],edx
1305 lea edx,[3395469782+ecx*1+edx]
1306 mov ecx,DWORD [44+esp]
1307 add edx,ebp
1308 ; 20_39 75
1309 mov ebp,edi
1310 xor ecx,DWORD [52+esp]
1311 xor ebp,esi
1312 xor ecx,DWORD [12+esp]
1313 xor ebp,eax
1314 xor ecx,DWORD [32+esp]
1315 rol ecx,1
1316 add ebx,ebp
1317 ror edi,2
1318 mov ebp,edx
1319 rol ebp,5
1320 mov DWORD [44+esp],ecx
1321 lea ecx,[3395469782+ebx*1+ecx]
1322 mov ebx,DWORD [48+esp]
1323 add ecx,ebp
1324 ; 20_39 76
1325 mov ebp,edx
1326 xor ebx,DWORD [56+esp]
1327 xor ebp,edi
1328 xor ebx,DWORD [16+esp]
1329 xor ebp,esi
1330 xor ebx,DWORD [36+esp]
1331 rol ebx,1
1332 add eax,ebp
1333 ror edx,2
1334 mov ebp,ecx
1335 rol ebp,5
1336 mov DWORD [48+esp],ebx
1337 lea ebx,[3395469782+eax*1+ebx]
1338 mov eax,DWORD [52+esp]
1339 add ebx,ebp
1340 ; 20_39 77
1341 mov ebp,ecx
1342 xor eax,DWORD [60+esp]
1343 xor ebp,edx
1344 xor eax,DWORD [20+esp]
1345 xor ebp,edi
1346 xor eax,DWORD [40+esp]
1347 rol eax,1
1348 add esi,ebp
1349 ror ecx,2
1350 mov ebp,ebx
1351 rol ebp,5
1352 lea eax,[3395469782+esi*1+eax]
1353 mov esi,DWORD [56+esp]
1354 add eax,ebp
1355 ; 20_39 78
1356 mov ebp,ebx
1357 xor esi,DWORD [esp]
1358 xor ebp,ecx
1359 xor esi,DWORD [24+esp]
1360 xor ebp,edx
1361 xor esi,DWORD [44+esp]
1362 rol esi,1
1363 add edi,ebp
1364 ror ebx,2
1365 mov ebp,eax
1366 rol ebp,5
1367 lea esi,[3395469782+edi*1+esi]
1368 mov edi,DWORD [60+esp]
1369 add esi,ebp
1370 ; 20_39 79
1371 mov ebp,eax
1372 xor edi,DWORD [4+esp]
1373 xor ebp,ebx
1374 xor edi,DWORD [28+esp]
1375 xor ebp,ecx
1376 xor edi,DWORD [48+esp]
1377 rol edi,1
1378 add edx,ebp
1379 ror eax,2
1380 mov ebp,esi
1381 rol ebp,5
1382 lea edi,[3395469782+edx*1+edi]
1383 add edi,ebp
1384 mov ebp,DWORD [96+esp]
1385 mov edx,DWORD [100+esp]
1386 add edi,DWORD [ebp]
1387 add esi,DWORD [4+ebp]
1388 add eax,DWORD [8+ebp]
1389 add ebx,DWORD [12+ebp]
1390 add ecx,DWORD [16+ebp]
1391 mov DWORD [ebp],edi
1392 add edx,64
1393 mov DWORD [4+ebp],esi
1394 cmp edx,DWORD [104+esp]
1395 mov DWORD [8+ebp],eax
1396 mov edi,ecx
1397 mov DWORD [12+ebp],ebx
1398 mov esi,edx
1399 mov DWORD [16+ebp],ecx
1400 jb NEAR L$002loop
1401 add esp,76
1402 pop edi
1403 pop esi
1404 pop ebx
1405 pop ebp
1407 align 16
1408 __sha1_block_data_order_shaext:
1409 push ebp
1410 push ebx
1411 push esi
1412 push edi
1413 call L$003pic_point
1414 L$003pic_point:
1415 pop ebp
1416 lea ebp,[(L$K_XX_XX-L$003pic_point)+ebp]
1417 L$shaext_shortcut:
1418 mov edi,DWORD [20+esp]
1419 mov ebx,esp
1420 mov esi,DWORD [24+esp]
1421 mov ecx,DWORD [28+esp]
1422 sub esp,32
1423 movdqu xmm0,[edi]
1424 movd xmm1,DWORD [16+edi]
1425 and esp,-32
1426 movdqa xmm3,[80+ebp]
1427 movdqu xmm4,[esi]
1428 pshufd xmm0,xmm0,27
1429 movdqu xmm5,[16+esi]
1430 pshufd xmm1,xmm1,27
1431 movdqu xmm6,[32+esi]
1432 db 102,15,56,0,227
1433 movdqu xmm7,[48+esi]
1434 db 102,15,56,0,235
1435 db 102,15,56,0,243
1436 db 102,15,56,0,251
1437 jmp NEAR L$004loop_shaext
1438 align 16
1439 L$004loop_shaext:
1440 dec ecx
1441 lea eax,[64+esi]
1442 movdqa [esp],xmm1
1443 paddd xmm1,xmm4
1444 cmovne esi,eax
1445 movdqa [16+esp],xmm0
1446 db 15,56,201,229
1447 movdqa xmm2,xmm0
1448 db 15,58,204,193,0
1449 db 15,56,200,213
1450 pxor xmm4,xmm6
1451 db 15,56,201,238
1452 db 15,56,202,231
1453 movdqa xmm1,xmm0
1454 db 15,58,204,194,0
1455 db 15,56,200,206
1456 pxor xmm5,xmm7
1457 db 15,56,202,236
1458 db 15,56,201,247
1459 movdqa xmm2,xmm0
1460 db 15,58,204,193,0
1461 db 15,56,200,215
1462 pxor xmm6,xmm4
1463 db 15,56,201,252
1464 db 15,56,202,245
1465 movdqa xmm1,xmm0
1466 db 15,58,204,194,0
1467 db 15,56,200,204
1468 pxor xmm7,xmm5
1469 db 15,56,202,254
1470 db 15,56,201,229
1471 movdqa xmm2,xmm0
1472 db 15,58,204,193,0
1473 db 15,56,200,213
1474 pxor xmm4,xmm6
1475 db 15,56,201,238
1476 db 15,56,202,231
1477 movdqa xmm1,xmm0
1478 db 15,58,204,194,1
1479 db 15,56,200,206
1480 pxor xmm5,xmm7
1481 db 15,56,202,236
1482 db 15,56,201,247
1483 movdqa xmm2,xmm0
1484 db 15,58,204,193,1
1485 db 15,56,200,215
1486 pxor xmm6,xmm4
1487 db 15,56,201,252
1488 db 15,56,202,245
1489 movdqa xmm1,xmm0
1490 db 15,58,204,194,1
1491 db 15,56,200,204
1492 pxor xmm7,xmm5
1493 db 15,56,202,254
1494 db 15,56,201,229
1495 movdqa xmm2,xmm0
1496 db 15,58,204,193,1
1497 db 15,56,200,213
1498 pxor xmm4,xmm6
1499 db 15,56,201,238
1500 db 15,56,202,231
1501 movdqa xmm1,xmm0
1502 db 15,58,204,194,1
1503 db 15,56,200,206
1504 pxor xmm5,xmm7
1505 db 15,56,202,236
1506 db 15,56,201,247
1507 movdqa xmm2,xmm0
1508 db 15,58,204,193,2
1509 db 15,56,200,215
1510 pxor xmm6,xmm4
1511 db 15,56,201,252
1512 db 15,56,202,245
1513 movdqa xmm1,xmm0
1514 db 15,58,204,194,2
1515 db 15,56,200,204
1516 pxor xmm7,xmm5
1517 db 15,56,202,254
1518 db 15,56,201,229
1519 movdqa xmm2,xmm0
1520 db 15,58,204,193,2
1521 db 15,56,200,213
1522 pxor xmm4,xmm6
1523 db 15,56,201,238
1524 db 15,56,202,231
1525 movdqa xmm1,xmm0
1526 db 15,58,204,194,2
1527 db 15,56,200,206
1528 pxor xmm5,xmm7
1529 db 15,56,202,236
1530 db 15,56,201,247
1531 movdqa xmm2,xmm0
1532 db 15,58,204,193,2
1533 db 15,56,200,215
1534 pxor xmm6,xmm4
1535 db 15,56,201,252
1536 db 15,56,202,245
1537 movdqa xmm1,xmm0
1538 db 15,58,204,194,3
1539 db 15,56,200,204
1540 pxor xmm7,xmm5
1541 db 15,56,202,254
1542 movdqu xmm4,[esi]
1543 movdqa xmm2,xmm0
1544 db 15,58,204,193,3
1545 db 15,56,200,213
1546 movdqu xmm5,[16+esi]
1547 db 102,15,56,0,227
1548 movdqa xmm1,xmm0
1549 db 15,58,204,194,3
1550 db 15,56,200,206
1551 movdqu xmm6,[32+esi]
1552 db 102,15,56,0,235
1553 movdqa xmm2,xmm0
1554 db 15,58,204,193,3
1555 db 15,56,200,215
1556 movdqu xmm7,[48+esi]
1557 db 102,15,56,0,243
1558 movdqa xmm1,xmm0
1559 db 15,58,204,194,3
1560 movdqa xmm2,[esp]
1561 db 102,15,56,0,251
1562 db 15,56,200,202
1563 paddd xmm0,[16+esp]
1564 jnz NEAR L$004loop_shaext
1565 pshufd xmm0,xmm0,27
1566 pshufd xmm1,xmm1,27
1567 movdqu [edi],xmm0
1568 movd DWORD [16+edi],xmm1
1569 mov esp,ebx
1570 pop edi
1571 pop esi
1572 pop ebx
1573 pop ebp
1575 align 16
1576 __sha1_block_data_order_ssse3:
1577 push ebp
1578 push ebx
1579 push esi
1580 push edi
1581 call L$005pic_point
1582 L$005pic_point:
1583 pop ebp
1584 lea ebp,[(L$K_XX_XX-L$005pic_point)+ebp]
1585 L$ssse3_shortcut:
1586 movdqa xmm7,[ebp]
1587 movdqa xmm0,[16+ebp]
1588 movdqa xmm1,[32+ebp]
1589 movdqa xmm2,[48+ebp]
1590 movdqa xmm6,[64+ebp]
1591 mov edi,DWORD [20+esp]
1592 mov ebp,DWORD [24+esp]
1593 mov edx,DWORD [28+esp]
1594 mov esi,esp
1595 sub esp,208
1596 and esp,-64
1597 movdqa [112+esp],xmm0
1598 movdqa [128+esp],xmm1
1599 movdqa [144+esp],xmm2
1600 shl edx,6
1601 movdqa [160+esp],xmm7
1602 add edx,ebp
1603 movdqa [176+esp],xmm6
1604 add ebp,64
1605 mov DWORD [192+esp],edi
1606 mov DWORD [196+esp],ebp
1607 mov DWORD [200+esp],edx
1608 mov DWORD [204+esp],esi
1609 mov eax,DWORD [edi]
1610 mov ebx,DWORD [4+edi]
1611 mov ecx,DWORD [8+edi]
1612 mov edx,DWORD [12+edi]
1613 mov edi,DWORD [16+edi]
1614 mov esi,ebx
1615 movdqu xmm0,[ebp-64]
1616 movdqu xmm1,[ebp-48]
1617 movdqu xmm2,[ebp-32]
1618 movdqu xmm3,[ebp-16]
1619 db 102,15,56,0,198
1620 db 102,15,56,0,206
1621 db 102,15,56,0,214
1622 movdqa [96+esp],xmm7
1623 db 102,15,56,0,222
1624 paddd xmm0,xmm7
1625 paddd xmm1,xmm7
1626 paddd xmm2,xmm7
1627 movdqa [esp],xmm0
1628 psubd xmm0,xmm7
1629 movdqa [16+esp],xmm1
1630 psubd xmm1,xmm7
1631 movdqa [32+esp],xmm2
1632 mov ebp,ecx
1633 psubd xmm2,xmm7
1634 xor ebp,edx
1635 pshufd xmm4,xmm0,238
1636 and esi,ebp
1637 jmp NEAR L$006loop
1638 align 16
1639 L$006loop:
1640 ror ebx,2
1641 xor esi,edx
1642 mov ebp,eax
1643 punpcklqdq xmm4,xmm1
1644 movdqa xmm6,xmm3
1645 add edi,DWORD [esp]
1646 xor ebx,ecx
1647 paddd xmm7,xmm3
1648 movdqa [64+esp],xmm0
1649 rol eax,5
1650 add edi,esi
1651 psrldq xmm6,4
1652 and ebp,ebx
1653 xor ebx,ecx
1654 pxor xmm4,xmm0
1655 add edi,eax
1656 ror eax,7
1657 pxor xmm6,xmm2
1658 xor ebp,ecx
1659 mov esi,edi
1660 add edx,DWORD [4+esp]
1661 pxor xmm4,xmm6
1662 xor eax,ebx
1663 rol edi,5
1664 movdqa [48+esp],xmm7
1665 add edx,ebp
1666 and esi,eax
1667 movdqa xmm0,xmm4
1668 xor eax,ebx
1669 add edx,edi
1670 ror edi,7
1671 movdqa xmm6,xmm4
1672 xor esi,ebx
1673 pslldq xmm0,12
1674 paddd xmm4,xmm4
1675 mov ebp,edx
1676 add ecx,DWORD [8+esp]
1677 psrld xmm6,31
1678 xor edi,eax
1679 rol edx,5
1680 movdqa xmm7,xmm0
1681 add ecx,esi
1682 and ebp,edi
1683 xor edi,eax
1684 psrld xmm0,30
1685 add ecx,edx
1686 ror edx,7
1687 por xmm4,xmm6
1688 xor ebp,eax
1689 mov esi,ecx
1690 add ebx,DWORD [12+esp]
1691 pslld xmm7,2
1692 xor edx,edi
1693 rol ecx,5
1694 pxor xmm4,xmm0
1695 movdqa xmm0,[96+esp]
1696 add ebx,ebp
1697 and esi,edx
1698 pxor xmm4,xmm7
1699 pshufd xmm5,xmm1,238
1700 xor edx,edi
1701 add ebx,ecx
1702 ror ecx,7
1703 xor esi,edi
1704 mov ebp,ebx
1705 punpcklqdq xmm5,xmm2
1706 movdqa xmm7,xmm4
1707 add eax,DWORD [16+esp]
1708 xor ecx,edx
1709 paddd xmm0,xmm4
1710 movdqa [80+esp],xmm1
1711 rol ebx,5
1712 add eax,esi
1713 psrldq xmm7,4
1714 and ebp,ecx
1715 xor ecx,edx
1716 pxor xmm5,xmm1
1717 add eax,ebx
1718 ror ebx,7
1719 pxor xmm7,xmm3
1720 xor ebp,edx
1721 mov esi,eax
1722 add edi,DWORD [20+esp]
1723 pxor xmm5,xmm7
1724 xor ebx,ecx
1725 rol eax,5
1726 movdqa [esp],xmm0
1727 add edi,ebp
1728 and esi,ebx
1729 movdqa xmm1,xmm5
1730 xor ebx,ecx
1731 add edi,eax
1732 ror eax,7
1733 movdqa xmm7,xmm5
1734 xor esi,ecx
1735 pslldq xmm1,12
1736 paddd xmm5,xmm5
1737 mov ebp,edi
1738 add edx,DWORD [24+esp]
1739 psrld xmm7,31
1740 xor eax,ebx
1741 rol edi,5
1742 movdqa xmm0,xmm1
1743 add edx,esi
1744 and ebp,eax
1745 xor eax,ebx
1746 psrld xmm1,30
1747 add edx,edi
1748 ror edi,7
1749 por xmm5,xmm7
1750 xor ebp,ebx
1751 mov esi,edx
1752 add ecx,DWORD [28+esp]
1753 pslld xmm0,2
1754 xor edi,eax
1755 rol edx,5
1756 pxor xmm5,xmm1
1757 movdqa xmm1,[112+esp]
1758 add ecx,ebp
1759 and esi,edi
1760 pxor xmm5,xmm0
1761 pshufd xmm6,xmm2,238
1762 xor edi,eax
1763 add ecx,edx
1764 ror edx,7
1765 xor esi,eax
1766 mov ebp,ecx
1767 punpcklqdq xmm6,xmm3
1768 movdqa xmm0,xmm5
1769 add ebx,DWORD [32+esp]
1770 xor edx,edi
1771 paddd xmm1,xmm5
1772 movdqa [96+esp],xmm2
1773 rol ecx,5
1774 add ebx,esi
1775 psrldq xmm0,4
1776 and ebp,edx
1777 xor edx,edi
1778 pxor xmm6,xmm2
1779 add ebx,ecx
1780 ror ecx,7
1781 pxor xmm0,xmm4
1782 xor ebp,edi
1783 mov esi,ebx
1784 add eax,DWORD [36+esp]
1785 pxor xmm6,xmm0
1786 xor ecx,edx
1787 rol ebx,5
1788 movdqa [16+esp],xmm1
1789 add eax,ebp
1790 and esi,ecx
1791 movdqa xmm2,xmm6
1792 xor ecx,edx
1793 add eax,ebx
1794 ror ebx,7
1795 movdqa xmm0,xmm6
1796 xor esi,edx
1797 pslldq xmm2,12
1798 paddd xmm6,xmm6
1799 mov ebp,eax
1800 add edi,DWORD [40+esp]
1801 psrld xmm0,31
1802 xor ebx,ecx
1803 rol eax,5
1804 movdqa xmm1,xmm2
1805 add edi,esi
1806 and ebp,ebx
1807 xor ebx,ecx
1808 psrld xmm2,30
1809 add edi,eax
1810 ror eax,7
1811 por xmm6,xmm0
1812 xor ebp,ecx
1813 movdqa xmm0,[64+esp]
1814 mov esi,edi
1815 add edx,DWORD [44+esp]
1816 pslld xmm1,2
1817 xor eax,ebx
1818 rol edi,5
1819 pxor xmm6,xmm2
1820 movdqa xmm2,[112+esp]
1821 add edx,ebp
1822 and esi,eax
1823 pxor xmm6,xmm1
1824 pshufd xmm7,xmm3,238
1825 xor eax,ebx
1826 add edx,edi
1827 ror edi,7
1828 xor esi,ebx
1829 mov ebp,edx
1830 punpcklqdq xmm7,xmm4
1831 movdqa xmm1,xmm6
1832 add ecx,DWORD [48+esp]
1833 xor edi,eax
1834 paddd xmm2,xmm6
1835 movdqa [64+esp],xmm3
1836 rol edx,5
1837 add ecx,esi
1838 psrldq xmm1,4
1839 and ebp,edi
1840 xor edi,eax
1841 pxor xmm7,xmm3
1842 add ecx,edx
1843 ror edx,7
1844 pxor xmm1,xmm5
1845 xor ebp,eax
1846 mov esi,ecx
1847 add ebx,DWORD [52+esp]
1848 pxor xmm7,xmm1
1849 xor edx,edi
1850 rol ecx,5
1851 movdqa [32+esp],xmm2
1852 add ebx,ebp
1853 and esi,edx
1854 movdqa xmm3,xmm7
1855 xor edx,edi
1856 add ebx,ecx
1857 ror ecx,7
1858 movdqa xmm1,xmm7
1859 xor esi,edi
1860 pslldq xmm3,12
1861 paddd xmm7,xmm7
1862 mov ebp,ebx
1863 add eax,DWORD [56+esp]
1864 psrld xmm1,31
1865 xor ecx,edx
1866 rol ebx,5
1867 movdqa xmm2,xmm3
1868 add eax,esi
1869 and ebp,ecx
1870 xor ecx,edx
1871 psrld xmm3,30
1872 add eax,ebx
1873 ror ebx,7
1874 por xmm7,xmm1
1875 xor ebp,edx
1876 movdqa xmm1,[80+esp]
1877 mov esi,eax
1878 add edi,DWORD [60+esp]
1879 pslld xmm2,2
1880 xor ebx,ecx
1881 rol eax,5
1882 pxor xmm7,xmm3
1883 movdqa xmm3,[112+esp]
1884 add edi,ebp
1885 and esi,ebx
1886 pxor xmm7,xmm2
1887 pshufd xmm2,xmm6,238
1888 xor ebx,ecx
1889 add edi,eax
1890 ror eax,7
1891 pxor xmm0,xmm4
1892 punpcklqdq xmm2,xmm7
1893 xor esi,ecx
1894 mov ebp,edi
1895 add edx,DWORD [esp]
1896 pxor xmm0,xmm1
1897 movdqa [80+esp],xmm4
1898 xor eax,ebx
1899 rol edi,5
1900 movdqa xmm4,xmm3
1901 add edx,esi
1902 paddd xmm3,xmm7
1903 and ebp,eax
1904 pxor xmm0,xmm2
1905 xor eax,ebx
1906 add edx,edi
1907 ror edi,7
1908 xor ebp,ebx
1909 movdqa xmm2,xmm0
1910 movdqa [48+esp],xmm3
1911 mov esi,edx
1912 add ecx,DWORD [4+esp]
1913 xor edi,eax
1914 rol edx,5
1915 pslld xmm0,2
1916 add ecx,ebp
1917 and esi,edi
1918 psrld xmm2,30
1919 xor edi,eax
1920 add ecx,edx
1921 ror edx,7
1922 xor esi,eax
1923 mov ebp,ecx
1924 add ebx,DWORD [8+esp]
1925 xor edx,edi
1926 rol ecx,5
1927 por xmm0,xmm2
1928 add ebx,esi
1929 and ebp,edx
1930 movdqa xmm2,[96+esp]
1931 xor edx,edi
1932 add ebx,ecx
1933 add eax,DWORD [12+esp]
1934 xor ebp,edi
1935 mov esi,ebx
1936 pshufd xmm3,xmm7,238
1937 rol ebx,5
1938 add eax,ebp
1939 xor esi,edx
1940 ror ecx,7
1941 add eax,ebx
1942 add edi,DWORD [16+esp]
1943 pxor xmm1,xmm5
1944 punpcklqdq xmm3,xmm0
1945 xor esi,ecx
1946 mov ebp,eax
1947 rol eax,5
1948 pxor xmm1,xmm2
1949 movdqa [96+esp],xmm5
1950 add edi,esi
1951 xor ebp,ecx
1952 movdqa xmm5,xmm4
1953 ror ebx,7
1954 paddd xmm4,xmm0
1955 add edi,eax
1956 pxor xmm1,xmm3
1957 add edx,DWORD [20+esp]
1958 xor ebp,ebx
1959 mov esi,edi
1960 rol edi,5
1961 movdqa xmm3,xmm1
1962 movdqa [esp],xmm4
1963 add edx,ebp
1964 xor esi,ebx
1965 ror eax,7
1966 add edx,edi
1967 pslld xmm1,2
1968 add ecx,DWORD [24+esp]
1969 xor esi,eax
1970 psrld xmm3,30
1971 mov ebp,edx
1972 rol edx,5
1973 add ecx,esi
1974 xor ebp,eax
1975 ror edi,7
1976 add ecx,edx
1977 por xmm1,xmm3
1978 add ebx,DWORD [28+esp]
1979 xor ebp,edi
1980 movdqa xmm3,[64+esp]
1981 mov esi,ecx
1982 rol ecx,5
1983 add ebx,ebp
1984 xor esi,edi
1985 ror edx,7
1986 pshufd xmm4,xmm0,238
1987 add ebx,ecx
1988 add eax,DWORD [32+esp]
1989 pxor xmm2,xmm6
1990 punpcklqdq xmm4,xmm1
1991 xor esi,edx
1992 mov ebp,ebx
1993 rol ebx,5
1994 pxor xmm2,xmm3
1995 movdqa [64+esp],xmm6
1996 add eax,esi
1997 xor ebp,edx
1998 movdqa xmm6,[128+esp]
1999 ror ecx,7
2000 paddd xmm5,xmm1
2001 add eax,ebx
2002 pxor xmm2,xmm4
2003 add edi,DWORD [36+esp]
2004 xor ebp,ecx
2005 mov esi,eax
2006 rol eax,5
2007 movdqa xmm4,xmm2
2008 movdqa [16+esp],xmm5
2009 add edi,ebp
2010 xor esi,ecx
2011 ror ebx,7
2012 add edi,eax
2013 pslld xmm2,2
2014 add edx,DWORD [40+esp]
2015 xor esi,ebx
2016 psrld xmm4,30
2017 mov ebp,edi
2018 rol edi,5
2019 add edx,esi
2020 xor ebp,ebx
2021 ror eax,7
2022 add edx,edi
2023 por xmm2,xmm4
2024 add ecx,DWORD [44+esp]
2025 xor ebp,eax
2026 movdqa xmm4,[80+esp]
2027 mov esi,edx
2028 rol edx,5
2029 add ecx,ebp
2030 xor esi,eax
2031 ror edi,7
2032 pshufd xmm5,xmm1,238
2033 add ecx,edx
2034 add ebx,DWORD [48+esp]
2035 pxor xmm3,xmm7
2036 punpcklqdq xmm5,xmm2
2037 xor esi,edi
2038 mov ebp,ecx
2039 rol ecx,5
2040 pxor xmm3,xmm4
2041 movdqa [80+esp],xmm7
2042 add ebx,esi
2043 xor ebp,edi
2044 movdqa xmm7,xmm6
2045 ror edx,7
2046 paddd xmm6,xmm2
2047 add ebx,ecx
2048 pxor xmm3,xmm5
2049 add eax,DWORD [52+esp]
2050 xor ebp,edx
2051 mov esi,ebx
2052 rol ebx,5
2053 movdqa xmm5,xmm3
2054 movdqa [32+esp],xmm6
2055 add eax,ebp
2056 xor esi,edx
2057 ror ecx,7
2058 add eax,ebx
2059 pslld xmm3,2
2060 add edi,DWORD [56+esp]
2061 xor esi,ecx
2062 psrld xmm5,30
2063 mov ebp,eax
2064 rol eax,5
2065 add edi,esi
2066 xor ebp,ecx
2067 ror ebx,7
2068 add edi,eax
2069 por xmm3,xmm5
2070 add edx,DWORD [60+esp]
2071 xor ebp,ebx
2072 movdqa xmm5,[96+esp]
2073 mov esi,edi
2074 rol edi,5
2075 add edx,ebp
2076 xor esi,ebx
2077 ror eax,7
2078 pshufd xmm6,xmm2,238
2079 add edx,edi
2080 add ecx,DWORD [esp]
2081 pxor xmm4,xmm0
2082 punpcklqdq xmm6,xmm3
2083 xor esi,eax
2084 mov ebp,edx
2085 rol edx,5
2086 pxor xmm4,xmm5
2087 movdqa [96+esp],xmm0
2088 add ecx,esi
2089 xor ebp,eax
2090 movdqa xmm0,xmm7
2091 ror edi,7
2092 paddd xmm7,xmm3
2093 add ecx,edx
2094 pxor xmm4,xmm6
2095 add ebx,DWORD [4+esp]
2096 xor ebp,edi
2097 mov esi,ecx
2098 rol ecx,5
2099 movdqa xmm6,xmm4
2100 movdqa [48+esp],xmm7
2101 add ebx,ebp
2102 xor esi,edi
2103 ror edx,7
2104 add ebx,ecx
2105 pslld xmm4,2
2106 add eax,DWORD [8+esp]
2107 xor esi,edx
2108 psrld xmm6,30
2109 mov ebp,ebx
2110 rol ebx,5
2111 add eax,esi
2112 xor ebp,edx
2113 ror ecx,7
2114 add eax,ebx
2115 por xmm4,xmm6
2116 add edi,DWORD [12+esp]
2117 xor ebp,ecx
2118 movdqa xmm6,[64+esp]
2119 mov esi,eax
2120 rol eax,5
2121 add edi,ebp
2122 xor esi,ecx
2123 ror ebx,7
2124 pshufd xmm7,xmm3,238
2125 add edi,eax
2126 add edx,DWORD [16+esp]
2127 pxor xmm5,xmm1
2128 punpcklqdq xmm7,xmm4
2129 xor esi,ebx
2130 mov ebp,edi
2131 rol edi,5
2132 pxor xmm5,xmm6
2133 movdqa [64+esp],xmm1
2134 add edx,esi
2135 xor ebp,ebx
2136 movdqa xmm1,xmm0
2137 ror eax,7
2138 paddd xmm0,xmm4
2139 add edx,edi
2140 pxor xmm5,xmm7
2141 add ecx,DWORD [20+esp]
2142 xor ebp,eax
2143 mov esi,edx
2144 rol edx,5
2145 movdqa xmm7,xmm5
2146 movdqa [esp],xmm0
2147 add ecx,ebp
2148 xor esi,eax
2149 ror edi,7
2150 add ecx,edx
2151 pslld xmm5,2
2152 add ebx,DWORD [24+esp]
2153 xor esi,edi
2154 psrld xmm7,30
2155 mov ebp,ecx
2156 rol ecx,5
2157 add ebx,esi
2158 xor ebp,edi
2159 ror edx,7
2160 add ebx,ecx
2161 por xmm5,xmm7
2162 add eax,DWORD [28+esp]
2163 movdqa xmm7,[80+esp]
2164 ror ecx,7
2165 mov esi,ebx
2166 xor ebp,edx
2167 rol ebx,5
2168 pshufd xmm0,xmm4,238
2169 add eax,ebp
2170 xor esi,ecx
2171 xor ecx,edx
2172 add eax,ebx
2173 add edi,DWORD [32+esp]
2174 pxor xmm6,xmm2
2175 punpcklqdq xmm0,xmm5
2176 and esi,ecx
2177 xor ecx,edx
2178 ror ebx,7
2179 pxor xmm6,xmm7
2180 movdqa [80+esp],xmm2
2181 mov ebp,eax
2182 xor esi,ecx
2183 rol eax,5
2184 movdqa xmm2,xmm1
2185 add edi,esi
2186 paddd xmm1,xmm5
2187 xor ebp,ebx
2188 pxor xmm6,xmm0
2189 xor ebx,ecx
2190 add edi,eax
2191 add edx,DWORD [36+esp]
2192 and ebp,ebx
2193 movdqa xmm0,xmm6
2194 movdqa [16+esp],xmm1
2195 xor ebx,ecx
2196 ror eax,7
2197 mov esi,edi
2198 xor ebp,ebx
2199 rol edi,5
2200 pslld xmm6,2
2201 add edx,ebp
2202 xor esi,eax
2203 psrld xmm0,30
2204 xor eax,ebx
2205 add edx,edi
2206 add ecx,DWORD [40+esp]
2207 and esi,eax
2208 xor eax,ebx
2209 ror edi,7
2210 por xmm6,xmm0
2211 mov ebp,edx
2212 xor esi,eax
2213 movdqa xmm0,[96+esp]
2214 rol edx,5
2215 add ecx,esi
2216 xor ebp,edi
2217 xor edi,eax
2218 add ecx,edx
2219 pshufd xmm1,xmm5,238
2220 add ebx,DWORD [44+esp]
2221 and ebp,edi
2222 xor edi,eax
2223 ror edx,7
2224 mov esi,ecx
2225 xor ebp,edi
2226 rol ecx,5
2227 add ebx,ebp
2228 xor esi,edx
2229 xor edx,edi
2230 add ebx,ecx
2231 add eax,DWORD [48+esp]
2232 pxor xmm7,xmm3
2233 punpcklqdq xmm1,xmm6
2234 and esi,edx
2235 xor edx,edi
2236 ror ecx,7
2237 pxor xmm7,xmm0
2238 movdqa [96+esp],xmm3
2239 mov ebp,ebx
2240 xor esi,edx
2241 rol ebx,5
2242 movdqa xmm3,[144+esp]
2243 add eax,esi
2244 paddd xmm2,xmm6
2245 xor ebp,ecx
2246 pxor xmm7,xmm1
2247 xor ecx,edx
2248 add eax,ebx
2249 add edi,DWORD [52+esp]
2250 and ebp,ecx
2251 movdqa xmm1,xmm7
2252 movdqa [32+esp],xmm2
2253 xor ecx,edx
2254 ror ebx,7
2255 mov esi,eax
2256 xor ebp,ecx
2257 rol eax,5
2258 pslld xmm7,2
2259 add edi,ebp
2260 xor esi,ebx
2261 psrld xmm1,30
2262 xor ebx,ecx
2263 add edi,eax
2264 add edx,DWORD [56+esp]
2265 and esi,ebx
2266 xor ebx,ecx
2267 ror eax,7
2268 por xmm7,xmm1
2269 mov ebp,edi
2270 xor esi,ebx
2271 movdqa xmm1,[64+esp]
2272 rol edi,5
2273 add edx,esi
2274 xor ebp,eax
2275 xor eax,ebx
2276 add edx,edi
2277 pshufd xmm2,xmm6,238
2278 add ecx,DWORD [60+esp]
2279 and ebp,eax
2280 xor eax,ebx
2281 ror edi,7
2282 mov esi,edx
2283 xor ebp,eax
2284 rol edx,5
2285 add ecx,ebp
2286 xor esi,edi
2287 xor edi,eax
2288 add ecx,edx
2289 add ebx,DWORD [esp]
2290 pxor xmm0,xmm4
2291 punpcklqdq xmm2,xmm7
2292 and esi,edi
2293 xor edi,eax
2294 ror edx,7
2295 pxor xmm0,xmm1
2296 movdqa [64+esp],xmm4
2297 mov ebp,ecx
2298 xor esi,edi
2299 rol ecx,5
2300 movdqa xmm4,xmm3
2301 add ebx,esi
2302 paddd xmm3,xmm7
2303 xor ebp,edx
2304 pxor xmm0,xmm2
2305 xor edx,edi
2306 add ebx,ecx
2307 add eax,DWORD [4+esp]
2308 and ebp,edx
2309 movdqa xmm2,xmm0
2310 movdqa [48+esp],xmm3
2311 xor edx,edi
2312 ror ecx,7
2313 mov esi,ebx
2314 xor ebp,edx
2315 rol ebx,5
2316 pslld xmm0,2
2317 add eax,ebp
2318 xor esi,ecx
2319 psrld xmm2,30
2320 xor ecx,edx
2321 add eax,ebx
2322 add edi,DWORD [8+esp]
2323 and esi,ecx
2324 xor ecx,edx
2325 ror ebx,7
2326 por xmm0,xmm2
2327 mov ebp,eax
2328 xor esi,ecx
2329 movdqa xmm2,[80+esp]
2330 rol eax,5
2331 add edi,esi
2332 xor ebp,ebx
2333 xor ebx,ecx
2334 add edi,eax
2335 pshufd xmm3,xmm7,238
2336 add edx,DWORD [12+esp]
2337 and ebp,ebx
2338 xor ebx,ecx
2339 ror eax,7
2340 mov esi,edi
2341 xor ebp,ebx
2342 rol edi,5
2343 add edx,ebp
2344 xor esi,eax
2345 xor eax,ebx
2346 add edx,edi
2347 add ecx,DWORD [16+esp]
2348 pxor xmm1,xmm5
2349 punpcklqdq xmm3,xmm0
2350 and esi,eax
2351 xor eax,ebx
2352 ror edi,7
2353 pxor xmm1,xmm2
2354 movdqa [80+esp],xmm5
2355 mov ebp,edx
2356 xor esi,eax
2357 rol edx,5
2358 movdqa xmm5,xmm4
2359 add ecx,esi
2360 paddd xmm4,xmm0
2361 xor ebp,edi
2362 pxor xmm1,xmm3
2363 xor edi,eax
2364 add ecx,edx
2365 add ebx,DWORD [20+esp]
2366 and ebp,edi
2367 movdqa xmm3,xmm1
2368 movdqa [esp],xmm4
2369 xor edi,eax
2370 ror edx,7
2371 mov esi,ecx
2372 xor ebp,edi
2373 rol ecx,5
2374 pslld xmm1,2
2375 add ebx,ebp
2376 xor esi,edx
2377 psrld xmm3,30
2378 xor edx,edi
2379 add ebx,ecx
2380 add eax,DWORD [24+esp]
2381 and esi,edx
2382 xor edx,edi
2383 ror ecx,7
2384 por xmm1,xmm3
2385 mov ebp,ebx
2386 xor esi,edx
2387 movdqa xmm3,[96+esp]
2388 rol ebx,5
2389 add eax,esi
2390 xor ebp,ecx
2391 xor ecx,edx
2392 add eax,ebx
2393 pshufd xmm4,xmm0,238
2394 add edi,DWORD [28+esp]
2395 and ebp,ecx
2396 xor ecx,edx
2397 ror ebx,7
2398 mov esi,eax
2399 xor ebp,ecx
2400 rol eax,5
2401 add edi,ebp
2402 xor esi,ebx
2403 xor ebx,ecx
2404 add edi,eax
2405 add edx,DWORD [32+esp]
2406 pxor xmm2,xmm6
2407 punpcklqdq xmm4,xmm1
2408 and esi,ebx
2409 xor ebx,ecx
2410 ror eax,7
2411 pxor xmm2,xmm3
2412 movdqa [96+esp],xmm6
2413 mov ebp,edi
2414 xor esi,ebx
2415 rol edi,5
2416 movdqa xmm6,xmm5
2417 add edx,esi
2418 paddd xmm5,xmm1
2419 xor ebp,eax
2420 pxor xmm2,xmm4
2421 xor eax,ebx
2422 add edx,edi
2423 add ecx,DWORD [36+esp]
2424 and ebp,eax
2425 movdqa xmm4,xmm2
2426 movdqa [16+esp],xmm5
2427 xor eax,ebx
2428 ror edi,7
2429 mov esi,edx
2430 xor ebp,eax
2431 rol edx,5
2432 pslld xmm2,2
2433 add ecx,ebp
2434 xor esi,edi
2435 psrld xmm4,30
2436 xor edi,eax
2437 add ecx,edx
2438 add ebx,DWORD [40+esp]
2439 and esi,edi
2440 xor edi,eax
2441 ror edx,7
2442 por xmm2,xmm4
2443 mov ebp,ecx
2444 xor esi,edi
2445 movdqa xmm4,[64+esp]
2446 rol ecx,5
2447 add ebx,esi
2448 xor ebp,edx
2449 xor edx,edi
2450 add ebx,ecx
2451 pshufd xmm5,xmm1,238
2452 add eax,DWORD [44+esp]
2453 and ebp,edx
2454 xor edx,edi
2455 ror ecx,7
2456 mov esi,ebx
2457 xor ebp,edx
2458 rol ebx,5
2459 add eax,ebp
2460 xor esi,edx
2461 add eax,ebx
2462 add edi,DWORD [48+esp]
2463 pxor xmm3,xmm7
2464 punpcklqdq xmm5,xmm2
2465 xor esi,ecx
2466 mov ebp,eax
2467 rol eax,5
2468 pxor xmm3,xmm4
2469 movdqa [64+esp],xmm7
2470 add edi,esi
2471 xor ebp,ecx
2472 movdqa xmm7,xmm6
2473 ror ebx,7
2474 paddd xmm6,xmm2
2475 add edi,eax
2476 pxor xmm3,xmm5
2477 add edx,DWORD [52+esp]
2478 xor ebp,ebx
2479 mov esi,edi
2480 rol edi,5
2481 movdqa xmm5,xmm3
2482 movdqa [32+esp],xmm6
2483 add edx,ebp
2484 xor esi,ebx
2485 ror eax,7
2486 add edx,edi
2487 pslld xmm3,2
2488 add ecx,DWORD [56+esp]
2489 xor esi,eax
2490 psrld xmm5,30
2491 mov ebp,edx
2492 rol edx,5
2493 add ecx,esi
2494 xor ebp,eax
2495 ror edi,7
2496 add ecx,edx
2497 por xmm3,xmm5
2498 add ebx,DWORD [60+esp]
2499 xor ebp,edi
2500 mov esi,ecx
2501 rol ecx,5
2502 add ebx,ebp
2503 xor esi,edi
2504 ror edx,7
2505 add ebx,ecx
2506 add eax,DWORD [esp]
2507 xor esi,edx
2508 mov ebp,ebx
2509 rol ebx,5
2510 add eax,esi
2511 xor ebp,edx
2512 ror ecx,7
2513 paddd xmm7,xmm3
2514 add eax,ebx
2515 add edi,DWORD [4+esp]
2516 xor ebp,ecx
2517 mov esi,eax
2518 movdqa [48+esp],xmm7
2519 rol eax,5
2520 add edi,ebp
2521 xor esi,ecx
2522 ror ebx,7
2523 add edi,eax
2524 add edx,DWORD [8+esp]
2525 xor esi,ebx
2526 mov ebp,edi
2527 rol edi,5
2528 add edx,esi
2529 xor ebp,ebx
2530 ror eax,7
2531 add edx,edi
2532 add ecx,DWORD [12+esp]
2533 xor ebp,eax
2534 mov esi,edx
2535 rol edx,5
2536 add ecx,ebp
2537 xor esi,eax
2538 ror edi,7
2539 add ecx,edx
2540 mov ebp,DWORD [196+esp]
2541 cmp ebp,DWORD [200+esp]
2542 je NEAR L$007done
2543 movdqa xmm7,[160+esp]
2544 movdqa xmm6,[176+esp]
2545 movdqu xmm0,[ebp]
2546 movdqu xmm1,[16+ebp]
2547 movdqu xmm2,[32+ebp]
2548 movdqu xmm3,[48+ebp]
2549 add ebp,64
2550 db 102,15,56,0,198
2551 mov DWORD [196+esp],ebp
2552 movdqa [96+esp],xmm7
2553 add ebx,DWORD [16+esp]
2554 xor esi,edi
2555 mov ebp,ecx
2556 rol ecx,5
2557 add ebx,esi
2558 xor ebp,edi
2559 ror edx,7
2560 db 102,15,56,0,206
2561 add ebx,ecx
2562 add eax,DWORD [20+esp]
2563 xor ebp,edx
2564 mov esi,ebx
2565 paddd xmm0,xmm7
2566 rol ebx,5
2567 add eax,ebp
2568 xor esi,edx
2569 ror ecx,7
2570 movdqa [esp],xmm0
2571 add eax,ebx
2572 add edi,DWORD [24+esp]
2573 xor esi,ecx
2574 mov ebp,eax
2575 psubd xmm0,xmm7
2576 rol eax,5
2577 add edi,esi
2578 xor ebp,ecx
2579 ror ebx,7
2580 add edi,eax
2581 add edx,DWORD [28+esp]
2582 xor ebp,ebx
2583 mov esi,edi
2584 rol edi,5
2585 add edx,ebp
2586 xor esi,ebx
2587 ror eax,7
2588 add edx,edi
2589 add ecx,DWORD [32+esp]
2590 xor esi,eax
2591 mov ebp,edx
2592 rol edx,5
2593 add ecx,esi
2594 xor ebp,eax
2595 ror edi,7
2596 db 102,15,56,0,214
2597 add ecx,edx
2598 add ebx,DWORD [36+esp]
2599 xor ebp,edi
2600 mov esi,ecx
2601 paddd xmm1,xmm7
2602 rol ecx,5
2603 add ebx,ebp
2604 xor esi,edi
2605 ror edx,7
2606 movdqa [16+esp],xmm1
2607 add ebx,ecx
2608 add eax,DWORD [40+esp]
2609 xor esi,edx
2610 mov ebp,ebx
2611 psubd xmm1,xmm7
2612 rol ebx,5
2613 add eax,esi
2614 xor ebp,edx
2615 ror ecx,7
2616 add eax,ebx
2617 add edi,DWORD [44+esp]
2618 xor ebp,ecx
2619 mov esi,eax
2620 rol eax,5
2621 add edi,ebp
2622 xor esi,ecx
2623 ror ebx,7
2624 add edi,eax
2625 add edx,DWORD [48+esp]
2626 xor esi,ebx
2627 mov ebp,edi
2628 rol edi,5
2629 add edx,esi
2630 xor ebp,ebx
2631 ror eax,7
2632 db 102,15,56,0,222
2633 add edx,edi
2634 add ecx,DWORD [52+esp]
2635 xor ebp,eax
2636 mov esi,edx
2637 paddd xmm2,xmm7
2638 rol edx,5
2639 add ecx,ebp
2640 xor esi,eax
2641 ror edi,7
2642 movdqa [32+esp],xmm2
2643 add ecx,edx
2644 add ebx,DWORD [56+esp]
2645 xor esi,edi
2646 mov ebp,ecx
2647 psubd xmm2,xmm7
2648 rol ecx,5
2649 add ebx,esi
2650 xor ebp,edi
2651 ror edx,7
2652 add ebx,ecx
2653 add eax,DWORD [60+esp]
2654 xor ebp,edx
2655 mov esi,ebx
2656 rol ebx,5
2657 add eax,ebp
2658 ror ecx,7
2659 add eax,ebx
2660 mov ebp,DWORD [192+esp]
2661 add eax,DWORD [ebp]
2662 add esi,DWORD [4+ebp]
2663 add ecx,DWORD [8+ebp]
2664 mov DWORD [ebp],eax
2665 add edx,DWORD [12+ebp]
2666 mov DWORD [4+ebp],esi
2667 add edi,DWORD [16+ebp]
2668 mov DWORD [8+ebp],ecx
2669 mov ebx,ecx
2670 mov DWORD [12+ebp],edx
2671 xor ebx,edx
2672 mov DWORD [16+ebp],edi
2673 mov ebp,esi
2674 pshufd xmm4,xmm0,238
2675 and esi,ebx
2676 mov ebx,ebp
2677 jmp NEAR L$006loop
2678 align 16
2679 L$007done:
2680 add ebx,DWORD [16+esp]
2681 xor esi,edi
2682 mov ebp,ecx
2683 rol ecx,5
2684 add ebx,esi
2685 xor ebp,edi
2686 ror edx,7
2687 add ebx,ecx
2688 add eax,DWORD [20+esp]
2689 xor ebp,edx
2690 mov esi,ebx
2691 rol ebx,5
2692 add eax,ebp
2693 xor esi,edx
2694 ror ecx,7
2695 add eax,ebx
2696 add edi,DWORD [24+esp]
2697 xor esi,ecx
2698 mov ebp,eax
2699 rol eax,5
2700 add edi,esi
2701 xor ebp,ecx
2702 ror ebx,7
2703 add edi,eax
2704 add edx,DWORD [28+esp]
2705 xor ebp,ebx
2706 mov esi,edi
2707 rol edi,5
2708 add edx,ebp
2709 xor esi,ebx
2710 ror eax,7
2711 add edx,edi
2712 add ecx,DWORD [32+esp]
2713 xor esi,eax
2714 mov ebp,edx
2715 rol edx,5
2716 add ecx,esi
2717 xor ebp,eax
2718 ror edi,7
2719 add ecx,edx
2720 add ebx,DWORD [36+esp]
2721 xor ebp,edi
2722 mov esi,ecx
2723 rol ecx,5
2724 add ebx,ebp
2725 xor esi,edi
2726 ror edx,7
2727 add ebx,ecx
2728 add eax,DWORD [40+esp]
2729 xor esi,edx
2730 mov ebp,ebx
2731 rol ebx,5
2732 add eax,esi
2733 xor ebp,edx
2734 ror ecx,7
2735 add eax,ebx
2736 add edi,DWORD [44+esp]
2737 xor ebp,ecx
2738 mov esi,eax
2739 rol eax,5
2740 add edi,ebp
2741 xor esi,ecx
2742 ror ebx,7
2743 add edi,eax
2744 add edx,DWORD [48+esp]
2745 xor esi,ebx
2746 mov ebp,edi
2747 rol edi,5
2748 add edx,esi
2749 xor ebp,ebx
2750 ror eax,7
2751 add edx,edi
2752 add ecx,DWORD [52+esp]
2753 xor ebp,eax
2754 mov esi,edx
2755 rol edx,5
2756 add ecx,ebp
2757 xor esi,eax
2758 ror edi,7
2759 add ecx,edx
2760 add ebx,DWORD [56+esp]
2761 xor esi,edi
2762 mov ebp,ecx
2763 rol ecx,5
2764 add ebx,esi
2765 xor ebp,edi
2766 ror edx,7
2767 add ebx,ecx
2768 add eax,DWORD [60+esp]
2769 xor ebp,edx
2770 mov esi,ebx
2771 rol ebx,5
2772 add eax,ebp
2773 ror ecx,7
2774 add eax,ebx
2775 mov ebp,DWORD [192+esp]
2776 add eax,DWORD [ebp]
2777 mov esp,DWORD [204+esp]
2778 add esi,DWORD [4+ebp]
2779 add ecx,DWORD [8+ebp]
2780 mov DWORD [ebp],eax
2781 add edx,DWORD [12+ebp]
2782 mov DWORD [4+ebp],esi
2783 add edi,DWORD [16+ebp]
2784 mov DWORD [8+ebp],ecx
2785 mov DWORD [12+ebp],edx
2786 mov DWORD [16+ebp],edi
2787 pop edi
2788 pop esi
2789 pop ebx
2790 pop ebp
2792 align 64
2793 L$K_XX_XX:
2794 dd 1518500249,1518500249,1518500249,1518500249
2795 dd 1859775393,1859775393,1859775393,1859775393
2796 dd 2400959708,2400959708,2400959708,2400959708
2797 dd 3395469782,3395469782,3395469782,3395469782
2798 dd 66051,67438087,134810123,202182159
2799 db 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
2800 db 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115
2801 db 102,111,114,109,32,102,111,114,32,120,56,54,44,32,67,82
2802 db 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112
2803 db 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
2804 segment .bss
2805 common _OPENSSL_ia32cap_P 16