VirtualBox

source: vbox/trunk/src/libs/openssl-3.0.7/crypto/genasm-nasm/rc4-md5-x86_64.S@ 98024

Last change on this file since 98024 was 83531, checked in by vboxsync, 5 years ago

setting svn:sync-process=export for openssl-1.1.1f, all files except tests

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

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette