Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / boringssl / win-x86_64 / crypto / md5 / md5-x86_64.asm
1 default rel
2 %define XMMWORD
3 %define YMMWORD
4 %define ZMMWORD
5 section .text code align=64
6
7 ALIGN   16
8
9 global  md5_block_asm_data_order
10
11 md5_block_asm_data_order:
12         mov     QWORD[8+rsp],rdi        ;WIN64 prologue
13         mov     QWORD[16+rsp],rsi
14         mov     rax,rsp
15 $L$SEH_begin_md5_block_asm_data_order:
16         mov     rdi,rcx
17         mov     rsi,rdx
18         mov     rdx,r8
19
20
21         push    rbp
22         push    rbx
23         push    r12
24         push    r14
25         push    r15
26 $L$prologue:
27
28
29
30
31         mov     rbp,rdi
32         shl     rdx,6
33         lea     rdi,[rdx*1+rsi]
34         mov     eax,DWORD[rbp]
35         mov     ebx,DWORD[4+rbp]
36         mov     ecx,DWORD[8+rbp]
37         mov     edx,DWORD[12+rbp]
38
39
40
41
42
43
44
45         cmp     rsi,rdi
46         je      NEAR $L$end
47
48
49 $L$loop:
50         mov     r8d,eax
51         mov     r9d,ebx
52         mov     r14d,ecx
53         mov     r15d,edx
54         mov     r10d,DWORD[rsi]
55         mov     r11d,edx
56         xor     r11d,ecx
57         lea     eax,[((-680876936))+r10*1+rax]
58         and     r11d,ebx
59         xor     r11d,edx
60         mov     r10d,DWORD[4+rsi]
61         add     eax,r11d
62         rol     eax,7
63         mov     r11d,ecx
64         add     eax,ebx
65         xor     r11d,ebx
66         lea     edx,[((-389564586))+r10*1+rdx]
67         and     r11d,eax
68         xor     r11d,ecx
69         mov     r10d,DWORD[8+rsi]
70         add     edx,r11d
71         rol     edx,12
72         mov     r11d,ebx
73         add     edx,eax
74         xor     r11d,eax
75         lea     ecx,[606105819+r10*1+rcx]
76         and     r11d,edx
77         xor     r11d,ebx
78         mov     r10d,DWORD[12+rsi]
79         add     ecx,r11d
80         rol     ecx,17
81         mov     r11d,eax
82         add     ecx,edx
83         xor     r11d,edx
84         lea     ebx,[((-1044525330))+r10*1+rbx]
85         and     r11d,ecx
86         xor     r11d,eax
87         mov     r10d,DWORD[16+rsi]
88         add     ebx,r11d
89         rol     ebx,22
90         mov     r11d,edx
91         add     ebx,ecx
92         xor     r11d,ecx
93         lea     eax,[((-176418897))+r10*1+rax]
94         and     r11d,ebx
95         xor     r11d,edx
96         mov     r10d,DWORD[20+rsi]
97         add     eax,r11d
98         rol     eax,7
99         mov     r11d,ecx
100         add     eax,ebx
101         xor     r11d,ebx
102         lea     edx,[1200080426+r10*1+rdx]
103         and     r11d,eax
104         xor     r11d,ecx
105         mov     r10d,DWORD[24+rsi]
106         add     edx,r11d
107         rol     edx,12
108         mov     r11d,ebx
109         add     edx,eax
110         xor     r11d,eax
111         lea     ecx,[((-1473231341))+r10*1+rcx]
112         and     r11d,edx
113         xor     r11d,ebx
114         mov     r10d,DWORD[28+rsi]
115         add     ecx,r11d
116         rol     ecx,17
117         mov     r11d,eax
118         add     ecx,edx
119         xor     r11d,edx
120         lea     ebx,[((-45705983))+r10*1+rbx]
121         and     r11d,ecx
122         xor     r11d,eax
123         mov     r10d,DWORD[32+rsi]
124         add     ebx,r11d
125         rol     ebx,22
126         mov     r11d,edx
127         add     ebx,ecx
128         xor     r11d,ecx
129         lea     eax,[1770035416+r10*1+rax]
130         and     r11d,ebx
131         xor     r11d,edx
132         mov     r10d,DWORD[36+rsi]
133         add     eax,r11d
134         rol     eax,7
135         mov     r11d,ecx
136         add     eax,ebx
137         xor     r11d,ebx
138         lea     edx,[((-1958414417))+r10*1+rdx]
139         and     r11d,eax
140         xor     r11d,ecx
141         mov     r10d,DWORD[40+rsi]
142         add     edx,r11d
143         rol     edx,12
144         mov     r11d,ebx
145         add     edx,eax
146         xor     r11d,eax
147         lea     ecx,[((-42063))+r10*1+rcx]
148         and     r11d,edx
149         xor     r11d,ebx
150         mov     r10d,DWORD[44+rsi]
151         add     ecx,r11d
152         rol     ecx,17
153         mov     r11d,eax
154         add     ecx,edx
155         xor     r11d,edx
156         lea     ebx,[((-1990404162))+r10*1+rbx]
157         and     r11d,ecx
158         xor     r11d,eax
159         mov     r10d,DWORD[48+rsi]
160         add     ebx,r11d
161         rol     ebx,22
162         mov     r11d,edx
163         add     ebx,ecx
164         xor     r11d,ecx
165         lea     eax,[1804603682+r10*1+rax]
166         and     r11d,ebx
167         xor     r11d,edx
168         mov     r10d,DWORD[52+rsi]
169         add     eax,r11d
170         rol     eax,7
171         mov     r11d,ecx
172         add     eax,ebx
173         xor     r11d,ebx
174         lea     edx,[((-40341101))+r10*1+rdx]
175         and     r11d,eax
176         xor     r11d,ecx
177         mov     r10d,DWORD[56+rsi]
178         add     edx,r11d
179         rol     edx,12
180         mov     r11d,ebx
181         add     edx,eax
182         xor     r11d,eax
183         lea     ecx,[((-1502002290))+r10*1+rcx]
184         and     r11d,edx
185         xor     r11d,ebx
186         mov     r10d,DWORD[60+rsi]
187         add     ecx,r11d
188         rol     ecx,17
189         mov     r11d,eax
190         add     ecx,edx
191         xor     r11d,edx
192         lea     ebx,[1236535329+r10*1+rbx]
193         and     r11d,ecx
194         xor     r11d,eax
195         mov     r10d,DWORD[rsi]
196         add     ebx,r11d
197         rol     ebx,22
198         mov     r11d,edx
199         add     ebx,ecx
200         mov     r10d,DWORD[4+rsi]
201         mov     r11d,edx
202         mov     r12d,edx
203         not     r11d
204         lea     eax,[((-165796510))+r10*1+rax]
205         and     r12d,ebx
206         and     r11d,ecx
207         mov     r10d,DWORD[24+rsi]
208         or      r12d,r11d
209         mov     r11d,ecx
210         add     eax,r12d
211         mov     r12d,ecx
212         rol     eax,5
213         add     eax,ebx
214         not     r11d
215         lea     edx,[((-1069501632))+r10*1+rdx]
216         and     r12d,eax
217         and     r11d,ebx
218         mov     r10d,DWORD[44+rsi]
219         or      r12d,r11d
220         mov     r11d,ebx
221         add     edx,r12d
222         mov     r12d,ebx
223         rol     edx,9
224         add     edx,eax
225         not     r11d
226         lea     ecx,[643717713+r10*1+rcx]
227         and     r12d,edx
228         and     r11d,eax
229         mov     r10d,DWORD[rsi]
230         or      r12d,r11d
231         mov     r11d,eax
232         add     ecx,r12d
233         mov     r12d,eax
234         rol     ecx,14
235         add     ecx,edx
236         not     r11d
237         lea     ebx,[((-373897302))+r10*1+rbx]
238         and     r12d,ecx
239         and     r11d,edx
240         mov     r10d,DWORD[20+rsi]
241         or      r12d,r11d
242         mov     r11d,edx
243         add     ebx,r12d
244         mov     r12d,edx
245         rol     ebx,20
246         add     ebx,ecx
247         not     r11d
248         lea     eax,[((-701558691))+r10*1+rax]
249         and     r12d,ebx
250         and     r11d,ecx
251         mov     r10d,DWORD[40+rsi]
252         or      r12d,r11d
253         mov     r11d,ecx
254         add     eax,r12d
255         mov     r12d,ecx
256         rol     eax,5
257         add     eax,ebx
258         not     r11d
259         lea     edx,[38016083+r10*1+rdx]
260         and     r12d,eax
261         and     r11d,ebx
262         mov     r10d,DWORD[60+rsi]
263         or      r12d,r11d
264         mov     r11d,ebx
265         add     edx,r12d
266         mov     r12d,ebx
267         rol     edx,9
268         add     edx,eax
269         not     r11d
270         lea     ecx,[((-660478335))+r10*1+rcx]
271         and     r12d,edx
272         and     r11d,eax
273         mov     r10d,DWORD[16+rsi]
274         or      r12d,r11d
275         mov     r11d,eax
276         add     ecx,r12d
277         mov     r12d,eax
278         rol     ecx,14
279         add     ecx,edx
280         not     r11d
281         lea     ebx,[((-405537848))+r10*1+rbx]
282         and     r12d,ecx
283         and     r11d,edx
284         mov     r10d,DWORD[36+rsi]
285         or      r12d,r11d
286         mov     r11d,edx
287         add     ebx,r12d
288         mov     r12d,edx
289         rol     ebx,20
290         add     ebx,ecx
291         not     r11d
292         lea     eax,[568446438+r10*1+rax]
293         and     r12d,ebx
294         and     r11d,ecx
295         mov     r10d,DWORD[56+rsi]
296         or      r12d,r11d
297         mov     r11d,ecx
298         add     eax,r12d
299         mov     r12d,ecx
300         rol     eax,5
301         add     eax,ebx
302         not     r11d
303         lea     edx,[((-1019803690))+r10*1+rdx]
304         and     r12d,eax
305         and     r11d,ebx
306         mov     r10d,DWORD[12+rsi]
307         or      r12d,r11d
308         mov     r11d,ebx
309         add     edx,r12d
310         mov     r12d,ebx
311         rol     edx,9
312         add     edx,eax
313         not     r11d
314         lea     ecx,[((-187363961))+r10*1+rcx]
315         and     r12d,edx
316         and     r11d,eax
317         mov     r10d,DWORD[32+rsi]
318         or      r12d,r11d
319         mov     r11d,eax
320         add     ecx,r12d
321         mov     r12d,eax
322         rol     ecx,14
323         add     ecx,edx
324         not     r11d
325         lea     ebx,[1163531501+r10*1+rbx]
326         and     r12d,ecx
327         and     r11d,edx
328         mov     r10d,DWORD[52+rsi]
329         or      r12d,r11d
330         mov     r11d,edx
331         add     ebx,r12d
332         mov     r12d,edx
333         rol     ebx,20
334         add     ebx,ecx
335         not     r11d
336         lea     eax,[((-1444681467))+r10*1+rax]
337         and     r12d,ebx
338         and     r11d,ecx
339         mov     r10d,DWORD[8+rsi]
340         or      r12d,r11d
341         mov     r11d,ecx
342         add     eax,r12d
343         mov     r12d,ecx
344         rol     eax,5
345         add     eax,ebx
346         not     r11d
347         lea     edx,[((-51403784))+r10*1+rdx]
348         and     r12d,eax
349         and     r11d,ebx
350         mov     r10d,DWORD[28+rsi]
351         or      r12d,r11d
352         mov     r11d,ebx
353         add     edx,r12d
354         mov     r12d,ebx
355         rol     edx,9
356         add     edx,eax
357         not     r11d
358         lea     ecx,[1735328473+r10*1+rcx]
359         and     r12d,edx
360         and     r11d,eax
361         mov     r10d,DWORD[48+rsi]
362         or      r12d,r11d
363         mov     r11d,eax
364         add     ecx,r12d
365         mov     r12d,eax
366         rol     ecx,14
367         add     ecx,edx
368         not     r11d
369         lea     ebx,[((-1926607734))+r10*1+rbx]
370         and     r12d,ecx
371         and     r11d,edx
372         mov     r10d,DWORD[rsi]
373         or      r12d,r11d
374         mov     r11d,edx
375         add     ebx,r12d
376         mov     r12d,edx
377         rol     ebx,20
378         add     ebx,ecx
379         mov     r10d,DWORD[20+rsi]
380         mov     r11d,ecx
381         lea     eax,[((-378558))+r10*1+rax]
382         mov     r10d,DWORD[32+rsi]
383         xor     r11d,edx
384         xor     r11d,ebx
385         add     eax,r11d
386         rol     eax,4
387         mov     r11d,ebx
388         add     eax,ebx
389         lea     edx,[((-2022574463))+r10*1+rdx]
390         mov     r10d,DWORD[44+rsi]
391         xor     r11d,ecx
392         xor     r11d,eax
393         add     edx,r11d
394         rol     edx,11
395         mov     r11d,eax
396         add     edx,eax
397         lea     ecx,[1839030562+r10*1+rcx]
398         mov     r10d,DWORD[56+rsi]
399         xor     r11d,ebx
400         xor     r11d,edx
401         add     ecx,r11d
402         rol     ecx,16
403         mov     r11d,edx
404         add     ecx,edx
405         lea     ebx,[((-35309556))+r10*1+rbx]
406         mov     r10d,DWORD[4+rsi]
407         xor     r11d,eax
408         xor     r11d,ecx
409         add     ebx,r11d
410         rol     ebx,23
411         mov     r11d,ecx
412         add     ebx,ecx
413         lea     eax,[((-1530992060))+r10*1+rax]
414         mov     r10d,DWORD[16+rsi]
415         xor     r11d,edx
416         xor     r11d,ebx
417         add     eax,r11d
418         rol     eax,4
419         mov     r11d,ebx
420         add     eax,ebx
421         lea     edx,[1272893353+r10*1+rdx]
422         mov     r10d,DWORD[28+rsi]
423         xor     r11d,ecx
424         xor     r11d,eax
425         add     edx,r11d
426         rol     edx,11
427         mov     r11d,eax
428         add     edx,eax
429         lea     ecx,[((-155497632))+r10*1+rcx]
430         mov     r10d,DWORD[40+rsi]
431         xor     r11d,ebx
432         xor     r11d,edx
433         add     ecx,r11d
434         rol     ecx,16
435         mov     r11d,edx
436         add     ecx,edx
437         lea     ebx,[((-1094730640))+r10*1+rbx]
438         mov     r10d,DWORD[52+rsi]
439         xor     r11d,eax
440         xor     r11d,ecx
441         add     ebx,r11d
442         rol     ebx,23
443         mov     r11d,ecx
444         add     ebx,ecx
445         lea     eax,[681279174+r10*1+rax]
446         mov     r10d,DWORD[rsi]
447         xor     r11d,edx
448         xor     r11d,ebx
449         add     eax,r11d
450         rol     eax,4
451         mov     r11d,ebx
452         add     eax,ebx
453         lea     edx,[((-358537222))+r10*1+rdx]
454         mov     r10d,DWORD[12+rsi]
455         xor     r11d,ecx
456         xor     r11d,eax
457         add     edx,r11d
458         rol     edx,11
459         mov     r11d,eax
460         add     edx,eax
461         lea     ecx,[((-722521979))+r10*1+rcx]
462         mov     r10d,DWORD[24+rsi]
463         xor     r11d,ebx
464         xor     r11d,edx
465         add     ecx,r11d
466         rol     ecx,16
467         mov     r11d,edx
468         add     ecx,edx
469         lea     ebx,[76029189+r10*1+rbx]
470         mov     r10d,DWORD[36+rsi]
471         xor     r11d,eax
472         xor     r11d,ecx
473         add     ebx,r11d
474         rol     ebx,23
475         mov     r11d,ecx
476         add     ebx,ecx
477         lea     eax,[((-640364487))+r10*1+rax]
478         mov     r10d,DWORD[48+rsi]
479         xor     r11d,edx
480         xor     r11d,ebx
481         add     eax,r11d
482         rol     eax,4
483         mov     r11d,ebx
484         add     eax,ebx
485         lea     edx,[((-421815835))+r10*1+rdx]
486         mov     r10d,DWORD[60+rsi]
487         xor     r11d,ecx
488         xor     r11d,eax
489         add     edx,r11d
490         rol     edx,11
491         mov     r11d,eax
492         add     edx,eax
493         lea     ecx,[530742520+r10*1+rcx]
494         mov     r10d,DWORD[8+rsi]
495         xor     r11d,ebx
496         xor     r11d,edx
497         add     ecx,r11d
498         rol     ecx,16
499         mov     r11d,edx
500         add     ecx,edx
501         lea     ebx,[((-995338651))+r10*1+rbx]
502         mov     r10d,DWORD[rsi]
503         xor     r11d,eax
504         xor     r11d,ecx
505         add     ebx,r11d
506         rol     ebx,23
507         mov     r11d,ecx
508         add     ebx,ecx
509         mov     r10d,DWORD[rsi]
510         mov     r11d,0xffffffff
511         xor     r11d,edx
512         lea     eax,[((-198630844))+r10*1+rax]
513         or      r11d,ebx
514         xor     r11d,ecx
515         add     eax,r11d
516         mov     r10d,DWORD[28+rsi]
517         mov     r11d,0xffffffff
518         rol     eax,6
519         xor     r11d,ecx
520         add     eax,ebx
521         lea     edx,[1126891415+r10*1+rdx]
522         or      r11d,eax
523         xor     r11d,ebx
524         add     edx,r11d
525         mov     r10d,DWORD[56+rsi]
526         mov     r11d,0xffffffff
527         rol     edx,10
528         xor     r11d,ebx
529         add     edx,eax
530         lea     ecx,[((-1416354905))+r10*1+rcx]
531         or      r11d,edx
532         xor     r11d,eax
533         add     ecx,r11d
534         mov     r10d,DWORD[20+rsi]
535         mov     r11d,0xffffffff
536         rol     ecx,15
537         xor     r11d,eax
538         add     ecx,edx
539         lea     ebx,[((-57434055))+r10*1+rbx]
540         or      r11d,ecx
541         xor     r11d,edx
542         add     ebx,r11d
543         mov     r10d,DWORD[48+rsi]
544         mov     r11d,0xffffffff
545         rol     ebx,21
546         xor     r11d,edx
547         add     ebx,ecx
548         lea     eax,[1700485571+r10*1+rax]
549         or      r11d,ebx
550         xor     r11d,ecx
551         add     eax,r11d
552         mov     r10d,DWORD[12+rsi]
553         mov     r11d,0xffffffff
554         rol     eax,6
555         xor     r11d,ecx
556         add     eax,ebx
557         lea     edx,[((-1894986606))+r10*1+rdx]
558         or      r11d,eax
559         xor     r11d,ebx
560         add     edx,r11d
561         mov     r10d,DWORD[40+rsi]
562         mov     r11d,0xffffffff
563         rol     edx,10
564         xor     r11d,ebx
565         add     edx,eax
566         lea     ecx,[((-1051523))+r10*1+rcx]
567         or      r11d,edx
568         xor     r11d,eax
569         add     ecx,r11d
570         mov     r10d,DWORD[4+rsi]
571         mov     r11d,0xffffffff
572         rol     ecx,15
573         xor     r11d,eax
574         add     ecx,edx
575         lea     ebx,[((-2054922799))+r10*1+rbx]
576         or      r11d,ecx
577         xor     r11d,edx
578         add     ebx,r11d
579         mov     r10d,DWORD[32+rsi]
580         mov     r11d,0xffffffff
581         rol     ebx,21
582         xor     r11d,edx
583         add     ebx,ecx
584         lea     eax,[1873313359+r10*1+rax]
585         or      r11d,ebx
586         xor     r11d,ecx
587         add     eax,r11d
588         mov     r10d,DWORD[60+rsi]
589         mov     r11d,0xffffffff
590         rol     eax,6
591         xor     r11d,ecx
592         add     eax,ebx
593         lea     edx,[((-30611744))+r10*1+rdx]
594         or      r11d,eax
595         xor     r11d,ebx
596         add     edx,r11d
597         mov     r10d,DWORD[24+rsi]
598         mov     r11d,0xffffffff
599         rol     edx,10
600         xor     r11d,ebx
601         add     edx,eax
602         lea     ecx,[((-1560198380))+r10*1+rcx]
603         or      r11d,edx
604         xor     r11d,eax
605         add     ecx,r11d
606         mov     r10d,DWORD[52+rsi]
607         mov     r11d,0xffffffff
608         rol     ecx,15
609         xor     r11d,eax
610         add     ecx,edx
611         lea     ebx,[1309151649+r10*1+rbx]
612         or      r11d,ecx
613         xor     r11d,edx
614         add     ebx,r11d
615         mov     r10d,DWORD[16+rsi]
616         mov     r11d,0xffffffff
617         rol     ebx,21
618         xor     r11d,edx
619         add     ebx,ecx
620         lea     eax,[((-145523070))+r10*1+rax]
621         or      r11d,ebx
622         xor     r11d,ecx
623         add     eax,r11d
624         mov     r10d,DWORD[44+rsi]
625         mov     r11d,0xffffffff
626         rol     eax,6
627         xor     r11d,ecx
628         add     eax,ebx
629         lea     edx,[((-1120210379))+r10*1+rdx]
630         or      r11d,eax
631         xor     r11d,ebx
632         add     edx,r11d
633         mov     r10d,DWORD[8+rsi]
634         mov     r11d,0xffffffff
635         rol     edx,10
636         xor     r11d,ebx
637         add     edx,eax
638         lea     ecx,[718787259+r10*1+rcx]
639         or      r11d,edx
640         xor     r11d,eax
641         add     ecx,r11d
642         mov     r10d,DWORD[36+rsi]
643         mov     r11d,0xffffffff
644         rol     ecx,15
645         xor     r11d,eax
646         add     ecx,edx
647         lea     ebx,[((-343485551))+r10*1+rbx]
648         or      r11d,ecx
649         xor     r11d,edx
650         add     ebx,r11d
651         mov     r10d,DWORD[rsi]
652         mov     r11d,0xffffffff
653         rol     ebx,21
654         xor     r11d,edx
655         add     ebx,ecx
656
657         add     eax,r8d
658         add     ebx,r9d
659         add     ecx,r14d
660         add     edx,r15d
661
662
663         add     rsi,64
664         cmp     rsi,rdi
665         jb      NEAR $L$loop
666
667
668 $L$end:
669         mov     DWORD[rbp],eax
670         mov     DWORD[4+rbp],ebx
671         mov     DWORD[8+rbp],ecx
672         mov     DWORD[12+rbp],edx
673
674         mov     r15,QWORD[rsp]
675         mov     r14,QWORD[8+rsp]
676         mov     r12,QWORD[16+rsp]
677         mov     rbx,QWORD[24+rsp]
678         mov     rbp,QWORD[32+rsp]
679         add     rsp,40
680 $L$epilogue:
681         mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
682         mov     rsi,QWORD[16+rsp]
683         DB      0F3h,0C3h               ;repret
684 $L$SEH_end_md5_block_asm_data_order:
685 EXTERN  __imp_RtlVirtualUnwind
686
687 ALIGN   16
688 se_handler:
689         push    rsi
690         push    rdi
691         push    rbx
692         push    rbp
693         push    r12
694         push    r13
695         push    r14
696         push    r15
697         pushfq
698         sub     rsp,64
699
700         mov     rax,QWORD[120+r8]
701         mov     rbx,QWORD[248+r8]
702
703         lea     r10,[$L$prologue]
704         cmp     rbx,r10
705         jb      NEAR $L$in_prologue
706
707         mov     rax,QWORD[152+r8]
708
709         lea     r10,[$L$epilogue]
710         cmp     rbx,r10
711         jae     NEAR $L$in_prologue
712
713         lea     rax,[40+rax]
714
715         mov     rbp,QWORD[((-8))+rax]
716         mov     rbx,QWORD[((-16))+rax]
717         mov     r12,QWORD[((-24))+rax]
718         mov     r14,QWORD[((-32))+rax]
719         mov     r15,QWORD[((-40))+rax]
720         mov     QWORD[144+r8],rbx
721         mov     QWORD[160+r8],rbp
722         mov     QWORD[216+r8],r12
723         mov     QWORD[232+r8],r14
724         mov     QWORD[240+r8],r15
725
726 $L$in_prologue:
727         mov     rdi,QWORD[8+rax]
728         mov     rsi,QWORD[16+rax]
729         mov     QWORD[152+r8],rax
730         mov     QWORD[168+r8],rsi
731         mov     QWORD[176+r8],rdi
732
733         mov     rdi,QWORD[40+r9]
734         mov     rsi,r8
735         mov     ecx,154
736         DD      0xa548f3fc
737
738         mov     rsi,r9
739         xor     rcx,rcx
740         mov     rdx,QWORD[8+rsi]
741         mov     r8,QWORD[rsi]
742         mov     r9,QWORD[16+rsi]
743         mov     r10,QWORD[40+rsi]
744         lea     r11,[56+rsi]
745         lea     r12,[24+rsi]
746         mov     QWORD[32+rsp],r10
747         mov     QWORD[40+rsp],r11
748         mov     QWORD[48+rsp],r12
749         mov     QWORD[56+rsp],rcx
750         call    QWORD[__imp_RtlVirtualUnwind]
751
752         mov     eax,1
753         add     rsp,64
754         popfq
755         pop     r15
756         pop     r14
757         pop     r13
758         pop     r12
759         pop     rbp
760         pop     rbx
761         pop     rdi
762         pop     rsi
763         DB      0F3h,0C3h               ;repret
764
765
766 section .pdata rdata align=4
767 ALIGN   4
768         DD      $L$SEH_begin_md5_block_asm_data_order wrt ..imagebase
769         DD      $L$SEH_end_md5_block_asm_data_order wrt ..imagebase
770         DD      $L$SEH_info_md5_block_asm_data_order wrt ..imagebase
771
772 section .xdata rdata align=8
773 ALIGN   8
774 $L$SEH_info_md5_block_asm_data_order:
775 DB      9,0,0,0
776         DD      se_handler wrt ..imagebase