Add a Notification Settings Button to all web notifications behind the web platform...
[chromium-blink-merge.git] / third_party / boringssl / win-x86 / crypto / md5 / md5-586.asm
blob67ee21651fc45ba6a6dc0d40bed4fe1a939c0709
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 global _md5_block_asm_data_order
18 align 16
19 _md5_block_asm_data_order:
20 L$_md5_block_asm_data_order_begin:
21 push esi
22 push edi
23 mov edi,DWORD [12+esp]
24 mov esi,DWORD [16+esp]
25 mov ecx,DWORD [20+esp]
26 push ebp
27 shl ecx,6
28 push ebx
29 add ecx,esi
30 sub ecx,64
31 mov eax,DWORD [edi]
32 push ecx
33 mov ebx,DWORD [4+edi]
34 mov ecx,DWORD [8+edi]
35 mov edx,DWORD [12+edi]
36 L$000start:
38 ; R0 section
39 mov edi,ecx
40 mov ebp,DWORD [esi]
41 ; R0 0
42 xor edi,edx
43 and edi,ebx
44 lea eax,[3614090360+ebp*1+eax]
45 xor edi,edx
46 add eax,edi
47 mov edi,ebx
48 rol eax,7
49 mov ebp,DWORD [4+esi]
50 add eax,ebx
51 ; R0 1
52 xor edi,ecx
53 and edi,eax
54 lea edx,[3905402710+ebp*1+edx]
55 xor edi,ecx
56 add edx,edi
57 mov edi,eax
58 rol edx,12
59 mov ebp,DWORD [8+esi]
60 add edx,eax
61 ; R0 2
62 xor edi,ebx
63 and edi,edx
64 lea ecx,[606105819+ebp*1+ecx]
65 xor edi,ebx
66 add ecx,edi
67 mov edi,edx
68 rol ecx,17
69 mov ebp,DWORD [12+esi]
70 add ecx,edx
71 ; R0 3
72 xor edi,eax
73 and edi,ecx
74 lea ebx,[3250441966+ebp*1+ebx]
75 xor edi,eax
76 add ebx,edi
77 mov edi,ecx
78 rol ebx,22
79 mov ebp,DWORD [16+esi]
80 add ebx,ecx
81 ; R0 4
82 xor edi,edx
83 and edi,ebx
84 lea eax,[4118548399+ebp*1+eax]
85 xor edi,edx
86 add eax,edi
87 mov edi,ebx
88 rol eax,7
89 mov ebp,DWORD [20+esi]
90 add eax,ebx
91 ; R0 5
92 xor edi,ecx
93 and edi,eax
94 lea edx,[1200080426+ebp*1+edx]
95 xor edi,ecx
96 add edx,edi
97 mov edi,eax
98 rol edx,12
99 mov ebp,DWORD [24+esi]
100 add edx,eax
101 ; R0 6
102 xor edi,ebx
103 and edi,edx
104 lea ecx,[2821735955+ebp*1+ecx]
105 xor edi,ebx
106 add ecx,edi
107 mov edi,edx
108 rol ecx,17
109 mov ebp,DWORD [28+esi]
110 add ecx,edx
111 ; R0 7
112 xor edi,eax
113 and edi,ecx
114 lea ebx,[4249261313+ebp*1+ebx]
115 xor edi,eax
116 add ebx,edi
117 mov edi,ecx
118 rol ebx,22
119 mov ebp,DWORD [32+esi]
120 add ebx,ecx
121 ; R0 8
122 xor edi,edx
123 and edi,ebx
124 lea eax,[1770035416+ebp*1+eax]
125 xor edi,edx
126 add eax,edi
127 mov edi,ebx
128 rol eax,7
129 mov ebp,DWORD [36+esi]
130 add eax,ebx
131 ; R0 9
132 xor edi,ecx
133 and edi,eax
134 lea edx,[2336552879+ebp*1+edx]
135 xor edi,ecx
136 add edx,edi
137 mov edi,eax
138 rol edx,12
139 mov ebp,DWORD [40+esi]
140 add edx,eax
141 ; R0 10
142 xor edi,ebx
143 and edi,edx
144 lea ecx,[4294925233+ebp*1+ecx]
145 xor edi,ebx
146 add ecx,edi
147 mov edi,edx
148 rol ecx,17
149 mov ebp,DWORD [44+esi]
150 add ecx,edx
151 ; R0 11
152 xor edi,eax
153 and edi,ecx
154 lea ebx,[2304563134+ebp*1+ebx]
155 xor edi,eax
156 add ebx,edi
157 mov edi,ecx
158 rol ebx,22
159 mov ebp,DWORD [48+esi]
160 add ebx,ecx
161 ; R0 12
162 xor edi,edx
163 and edi,ebx
164 lea eax,[1804603682+ebp*1+eax]
165 xor edi,edx
166 add eax,edi
167 mov edi,ebx
168 rol eax,7
169 mov ebp,DWORD [52+esi]
170 add eax,ebx
171 ; R0 13
172 xor edi,ecx
173 and edi,eax
174 lea edx,[4254626195+ebp*1+edx]
175 xor edi,ecx
176 add edx,edi
177 mov edi,eax
178 rol edx,12
179 mov ebp,DWORD [56+esi]
180 add edx,eax
181 ; R0 14
182 xor edi,ebx
183 and edi,edx
184 lea ecx,[2792965006+ebp*1+ecx]
185 xor edi,ebx
186 add ecx,edi
187 mov edi,edx
188 rol ecx,17
189 mov ebp,DWORD [60+esi]
190 add ecx,edx
191 ; R0 15
192 xor edi,eax
193 and edi,ecx
194 lea ebx,[1236535329+ebp*1+ebx]
195 xor edi,eax
196 add ebx,edi
197 mov edi,ecx
198 rol ebx,22
199 mov ebp,DWORD [4+esi]
200 add ebx,ecx
202 ; R1 section
203 ; R1 16
204 lea eax,[4129170786+ebp*1+eax]
205 xor edi,ebx
206 and edi,edx
207 mov ebp,DWORD [24+esi]
208 xor edi,ecx
209 add eax,edi
210 mov edi,ebx
211 rol eax,5
212 add eax,ebx
213 ; R1 17
214 lea edx,[3225465664+ebp*1+edx]
215 xor edi,eax
216 and edi,ecx
217 mov ebp,DWORD [44+esi]
218 xor edi,ebx
219 add edx,edi
220 mov edi,eax
221 rol edx,9
222 add edx,eax
223 ; R1 18
224 lea ecx,[643717713+ebp*1+ecx]
225 xor edi,edx
226 and edi,ebx
227 mov ebp,DWORD [esi]
228 xor edi,eax
229 add ecx,edi
230 mov edi,edx
231 rol ecx,14
232 add ecx,edx
233 ; R1 19
234 lea ebx,[3921069994+ebp*1+ebx]
235 xor edi,ecx
236 and edi,eax
237 mov ebp,DWORD [20+esi]
238 xor edi,edx
239 add ebx,edi
240 mov edi,ecx
241 rol ebx,20
242 add ebx,ecx
243 ; R1 20
244 lea eax,[3593408605+ebp*1+eax]
245 xor edi,ebx
246 and edi,edx
247 mov ebp,DWORD [40+esi]
248 xor edi,ecx
249 add eax,edi
250 mov edi,ebx
251 rol eax,5
252 add eax,ebx
253 ; R1 21
254 lea edx,[38016083+ebp*1+edx]
255 xor edi,eax
256 and edi,ecx
257 mov ebp,DWORD [60+esi]
258 xor edi,ebx
259 add edx,edi
260 mov edi,eax
261 rol edx,9
262 add edx,eax
263 ; R1 22
264 lea ecx,[3634488961+ebp*1+ecx]
265 xor edi,edx
266 and edi,ebx
267 mov ebp,DWORD [16+esi]
268 xor edi,eax
269 add ecx,edi
270 mov edi,edx
271 rol ecx,14
272 add ecx,edx
273 ; R1 23
274 lea ebx,[3889429448+ebp*1+ebx]
275 xor edi,ecx
276 and edi,eax
277 mov ebp,DWORD [36+esi]
278 xor edi,edx
279 add ebx,edi
280 mov edi,ecx
281 rol ebx,20
282 add ebx,ecx
283 ; R1 24
284 lea eax,[568446438+ebp*1+eax]
285 xor edi,ebx
286 and edi,edx
287 mov ebp,DWORD [56+esi]
288 xor edi,ecx
289 add eax,edi
290 mov edi,ebx
291 rol eax,5
292 add eax,ebx
293 ; R1 25
294 lea edx,[3275163606+ebp*1+edx]
295 xor edi,eax
296 and edi,ecx
297 mov ebp,DWORD [12+esi]
298 xor edi,ebx
299 add edx,edi
300 mov edi,eax
301 rol edx,9
302 add edx,eax
303 ; R1 26
304 lea ecx,[4107603335+ebp*1+ecx]
305 xor edi,edx
306 and edi,ebx
307 mov ebp,DWORD [32+esi]
308 xor edi,eax
309 add ecx,edi
310 mov edi,edx
311 rol ecx,14
312 add ecx,edx
313 ; R1 27
314 lea ebx,[1163531501+ebp*1+ebx]
315 xor edi,ecx
316 and edi,eax
317 mov ebp,DWORD [52+esi]
318 xor edi,edx
319 add ebx,edi
320 mov edi,ecx
321 rol ebx,20
322 add ebx,ecx
323 ; R1 28
324 lea eax,[2850285829+ebp*1+eax]
325 xor edi,ebx
326 and edi,edx
327 mov ebp,DWORD [8+esi]
328 xor edi,ecx
329 add eax,edi
330 mov edi,ebx
331 rol eax,5
332 add eax,ebx
333 ; R1 29
334 lea edx,[4243563512+ebp*1+edx]
335 xor edi,eax
336 and edi,ecx
337 mov ebp,DWORD [28+esi]
338 xor edi,ebx
339 add edx,edi
340 mov edi,eax
341 rol edx,9
342 add edx,eax
343 ; R1 30
344 lea ecx,[1735328473+ebp*1+ecx]
345 xor edi,edx
346 and edi,ebx
347 mov ebp,DWORD [48+esi]
348 xor edi,eax
349 add ecx,edi
350 mov edi,edx
351 rol ecx,14
352 add ecx,edx
353 ; R1 31
354 lea ebx,[2368359562+ebp*1+ebx]
355 xor edi,ecx
356 and edi,eax
357 mov ebp,DWORD [20+esi]
358 xor edi,edx
359 add ebx,edi
360 mov edi,ecx
361 rol ebx,20
362 add ebx,ecx
364 ; R2 section
365 ; R2 32
366 xor edi,edx
367 xor edi,ebx
368 lea eax,[4294588738+ebp*1+eax]
369 add eax,edi
370 rol eax,4
371 mov ebp,DWORD [32+esi]
372 mov edi,ebx
373 ; R2 33
374 lea edx,[2272392833+ebp*1+edx]
375 add eax,ebx
376 xor edi,ecx
377 xor edi,eax
378 mov ebp,DWORD [44+esi]
379 add edx,edi
380 mov edi,eax
381 rol edx,11
382 add edx,eax
383 ; R2 34
384 xor edi,ebx
385 xor edi,edx
386 lea ecx,[1839030562+ebp*1+ecx]
387 add ecx,edi
388 rol ecx,16
389 mov ebp,DWORD [56+esi]
390 mov edi,edx
391 ; R2 35
392 lea ebx,[4259657740+ebp*1+ebx]
393 add ecx,edx
394 xor edi,eax
395 xor edi,ecx
396 mov ebp,DWORD [4+esi]
397 add ebx,edi
398 mov edi,ecx
399 rol ebx,23
400 add ebx,ecx
401 ; R2 36
402 xor edi,edx
403 xor edi,ebx
404 lea eax,[2763975236+ebp*1+eax]
405 add eax,edi
406 rol eax,4
407 mov ebp,DWORD [16+esi]
408 mov edi,ebx
409 ; R2 37
410 lea edx,[1272893353+ebp*1+edx]
411 add eax,ebx
412 xor edi,ecx
413 xor edi,eax
414 mov ebp,DWORD [28+esi]
415 add edx,edi
416 mov edi,eax
417 rol edx,11
418 add edx,eax
419 ; R2 38
420 xor edi,ebx
421 xor edi,edx
422 lea ecx,[4139469664+ebp*1+ecx]
423 add ecx,edi
424 rol ecx,16
425 mov ebp,DWORD [40+esi]
426 mov edi,edx
427 ; R2 39
428 lea ebx,[3200236656+ebp*1+ebx]
429 add ecx,edx
430 xor edi,eax
431 xor edi,ecx
432 mov ebp,DWORD [52+esi]
433 add ebx,edi
434 mov edi,ecx
435 rol ebx,23
436 add ebx,ecx
437 ; R2 40
438 xor edi,edx
439 xor edi,ebx
440 lea eax,[681279174+ebp*1+eax]
441 add eax,edi
442 rol eax,4
443 mov ebp,DWORD [esi]
444 mov edi,ebx
445 ; R2 41
446 lea edx,[3936430074+ebp*1+edx]
447 add eax,ebx
448 xor edi,ecx
449 xor edi,eax
450 mov ebp,DWORD [12+esi]
451 add edx,edi
452 mov edi,eax
453 rol edx,11
454 add edx,eax
455 ; R2 42
456 xor edi,ebx
457 xor edi,edx
458 lea ecx,[3572445317+ebp*1+ecx]
459 add ecx,edi
460 rol ecx,16
461 mov ebp,DWORD [24+esi]
462 mov edi,edx
463 ; R2 43
464 lea ebx,[76029189+ebp*1+ebx]
465 add ecx,edx
466 xor edi,eax
467 xor edi,ecx
468 mov ebp,DWORD [36+esi]
469 add ebx,edi
470 mov edi,ecx
471 rol ebx,23
472 add ebx,ecx
473 ; R2 44
474 xor edi,edx
475 xor edi,ebx
476 lea eax,[3654602809+ebp*1+eax]
477 add eax,edi
478 rol eax,4
479 mov ebp,DWORD [48+esi]
480 mov edi,ebx
481 ; R2 45
482 lea edx,[3873151461+ebp*1+edx]
483 add eax,ebx
484 xor edi,ecx
485 xor edi,eax
486 mov ebp,DWORD [60+esi]
487 add edx,edi
488 mov edi,eax
489 rol edx,11
490 add edx,eax
491 ; R2 46
492 xor edi,ebx
493 xor edi,edx
494 lea ecx,[530742520+ebp*1+ecx]
495 add ecx,edi
496 rol ecx,16
497 mov ebp,DWORD [8+esi]
498 mov edi,edx
499 ; R2 47
500 lea ebx,[3299628645+ebp*1+ebx]
501 add ecx,edx
502 xor edi,eax
503 xor edi,ecx
504 mov ebp,DWORD [esi]
505 add ebx,edi
506 mov edi,-1
507 rol ebx,23
508 add ebx,ecx
510 ; R3 section
511 ; R3 48
512 xor edi,edx
513 or edi,ebx
514 lea eax,[4096336452+ebp*1+eax]
515 xor edi,ecx
516 mov ebp,DWORD [28+esi]
517 add eax,edi
518 mov edi,-1
519 rol eax,6
520 xor edi,ecx
521 add eax,ebx
522 ; R3 49
523 or edi,eax
524 lea edx,[1126891415+ebp*1+edx]
525 xor edi,ebx
526 mov ebp,DWORD [56+esi]
527 add edx,edi
528 mov edi,-1
529 rol edx,10
530 xor edi,ebx
531 add edx,eax
532 ; R3 50
533 or edi,edx
534 lea ecx,[2878612391+ebp*1+ecx]
535 xor edi,eax
536 mov ebp,DWORD [20+esi]
537 add ecx,edi
538 mov edi,-1
539 rol ecx,15
540 xor edi,eax
541 add ecx,edx
542 ; R3 51
543 or edi,ecx
544 lea ebx,[4237533241+ebp*1+ebx]
545 xor edi,edx
546 mov ebp,DWORD [48+esi]
547 add ebx,edi
548 mov edi,-1
549 rol ebx,21
550 xor edi,edx
551 add ebx,ecx
552 ; R3 52
553 or edi,ebx
554 lea eax,[1700485571+ebp*1+eax]
555 xor edi,ecx
556 mov ebp,DWORD [12+esi]
557 add eax,edi
558 mov edi,-1
559 rol eax,6
560 xor edi,ecx
561 add eax,ebx
562 ; R3 53
563 or edi,eax
564 lea edx,[2399980690+ebp*1+edx]
565 xor edi,ebx
566 mov ebp,DWORD [40+esi]
567 add edx,edi
568 mov edi,-1
569 rol edx,10
570 xor edi,ebx
571 add edx,eax
572 ; R3 54
573 or edi,edx
574 lea ecx,[4293915773+ebp*1+ecx]
575 xor edi,eax
576 mov ebp,DWORD [4+esi]
577 add ecx,edi
578 mov edi,-1
579 rol ecx,15
580 xor edi,eax
581 add ecx,edx
582 ; R3 55
583 or edi,ecx
584 lea ebx,[2240044497+ebp*1+ebx]
585 xor edi,edx
586 mov ebp,DWORD [32+esi]
587 add ebx,edi
588 mov edi,-1
589 rol ebx,21
590 xor edi,edx
591 add ebx,ecx
592 ; R3 56
593 or edi,ebx
594 lea eax,[1873313359+ebp*1+eax]
595 xor edi,ecx
596 mov ebp,DWORD [60+esi]
597 add eax,edi
598 mov edi,-1
599 rol eax,6
600 xor edi,ecx
601 add eax,ebx
602 ; R3 57
603 or edi,eax
604 lea edx,[4264355552+ebp*1+edx]
605 xor edi,ebx
606 mov ebp,DWORD [24+esi]
607 add edx,edi
608 mov edi,-1
609 rol edx,10
610 xor edi,ebx
611 add edx,eax
612 ; R3 58
613 or edi,edx
614 lea ecx,[2734768916+ebp*1+ecx]
615 xor edi,eax
616 mov ebp,DWORD [52+esi]
617 add ecx,edi
618 mov edi,-1
619 rol ecx,15
620 xor edi,eax
621 add ecx,edx
622 ; R3 59
623 or edi,ecx
624 lea ebx,[1309151649+ebp*1+ebx]
625 xor edi,edx
626 mov ebp,DWORD [16+esi]
627 add ebx,edi
628 mov edi,-1
629 rol ebx,21
630 xor edi,edx
631 add ebx,ecx
632 ; R3 60
633 or edi,ebx
634 lea eax,[4149444226+ebp*1+eax]
635 xor edi,ecx
636 mov ebp,DWORD [44+esi]
637 add eax,edi
638 mov edi,-1
639 rol eax,6
640 xor edi,ecx
641 add eax,ebx
642 ; R3 61
643 or edi,eax
644 lea edx,[3174756917+ebp*1+edx]
645 xor edi,ebx
646 mov ebp,DWORD [8+esi]
647 add edx,edi
648 mov edi,-1
649 rol edx,10
650 xor edi,ebx
651 add edx,eax
652 ; R3 62
653 or edi,edx
654 lea ecx,[718787259+ebp*1+ecx]
655 xor edi,eax
656 mov ebp,DWORD [36+esi]
657 add ecx,edi
658 mov edi,-1
659 rol ecx,15
660 xor edi,eax
661 add ecx,edx
662 ; R3 63
663 or edi,ecx
664 lea ebx,[3951481745+ebp*1+ebx]
665 xor edi,edx
666 mov ebp,DWORD [24+esp]
667 add ebx,edi
668 add esi,64
669 rol ebx,21
670 mov edi,DWORD [ebp]
671 add ebx,ecx
672 add eax,edi
673 mov edi,DWORD [4+ebp]
674 add ebx,edi
675 mov edi,DWORD [8+ebp]
676 add ecx,edi
677 mov edi,DWORD [12+ebp]
678 add edx,edi
679 mov DWORD [ebp],eax
680 mov DWORD [4+ebp],ebx
681 mov edi,DWORD [esp]
682 mov DWORD [8+ebp],ecx
683 mov DWORD [12+ebp],edx
684 cmp edi,esi
685 jae NEAR L$000start
686 pop eax
687 pop ebx
688 pop ebp
689 pop edi
690 pop esi