Changeset 95219 in vbox for trunk/src/libs/openssl-3.0.3/crypto/genasm-nasm/x86_64-mont5.S
- Timestamp:
- Jun 8, 2022 7:43:44 AM (3 years ago)
- Location:
- trunk/src/libs/openssl-3.0.3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/libs/openssl-3.0.3
- Property svn:mergeinfo
-
old new 14 14 /vendor/openssl/3.0.1:150323-150324 15 15 /vendor/openssl/3.0.2:150728-150729 16 /vendor/openssl/current:147554-150727 16 /vendor/openssl/3.0.3:151497-151729 17 /vendor/openssl/current:147554-151496
-
- Property svn:mergeinfo
-
trunk/src/libs/openssl-3.0.3/crypto/genasm-nasm/x86_64-mont5.S
r94114 r95219 30 30 test r9d,7 31 31 jnz NEAR $L$mul_enter 32 mov r11d,DWORD[((OPENSSL_ia32cap_P+8))] 32 33 jmp NEAR $L$mul4x_enter 33 34 … … 480 481 481 482 $L$mul4x_enter: 483 and r11d,0x80108 484 cmp r11d,0x80108 485 je NEAR $L$mulx4x_enter 482 486 push rbx 483 487 … … 1123 1127 mov rax,rsp 1124 1128 1129 mov r11d,DWORD[((OPENSSL_ia32cap_P+8))] 1130 and r11d,0x80108 1131 cmp r11d,0x80108 1132 je NEAR $L$powerx5_enter 1125 1133 push rbx 1126 1134 … … 2226 2234 mov rbp,rcx 2227 2235 DB 102,73,15,110,218 2236 mov r11d,DWORD[((OPENSSL_ia32cap_P+8))] 2237 and r11d,0x80108 2238 cmp r11d,0x80108 2239 jne NEAR $L$from_mont_nox 2240 2241 lea rdi,[r9*1+rax] 2242 call __bn_sqrx8x_reduction 2243 call __bn_postx4x_internal 2244 2245 pxor xmm0,xmm0 2246 lea rax,[48+rsp] 2247 jmp NEAR $L$from_mont_zero 2248 2249 ALIGN 32 2250 $L$from_mont_nox: 2228 2251 call __bn_sqr8x_reduction 2229 2252 call __bn_post4x_internal … … 2266 2289 2267 2290 $L$SEH_end_bn_from_mont8x: 2291 2292 ALIGN 32 2293 bn_mulx4x_mont_gather5: 2294 mov QWORD[8+rsp],rdi ;WIN64 prologue 2295 mov QWORD[16+rsp],rsi 2296 mov rax,rsp 2297 $L$SEH_begin_bn_mulx4x_mont_gather5: 2298 mov rdi,rcx 2299 mov rsi,rdx 2300 mov rdx,r8 2301 mov rcx,r9 2302 mov r8,QWORD[40+rsp] 2303 mov r9,QWORD[48+rsp] 2304 2305 2306 2307 mov rax,rsp 2308 2309 $L$mulx4x_enter: 2310 push rbx 2311 2312 push rbp 2313 2314 push r12 2315 2316 push r13 2317 2318 push r14 2319 2320 push r15 2321 2322 $L$mulx4x_prologue: 2323 2324 shl r9d,3 2325 lea r10,[r9*2+r9] 2326 neg r9 2327 mov r8,QWORD[r8] 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 lea r11,[((-320))+r9*2+rsp] 2339 mov rbp,rsp 2340 sub r11,rdi 2341 and r11,4095 2342 cmp r10,r11 2343 jb NEAR $L$mulx4xsp_alt 2344 sub rbp,r11 2345 lea rbp,[((-320))+r9*2+rbp] 2346 jmp NEAR $L$mulx4xsp_done 2347 2348 $L$mulx4xsp_alt: 2349 lea r10,[((4096-320))+r9*2] 2350 lea rbp,[((-320))+r9*2+rbp] 2351 sub r11,r10 2352 mov r10,0 2353 cmovc r11,r10 2354 sub rbp,r11 2355 $L$mulx4xsp_done: 2356 and rbp,-64 2357 mov r11,rsp 2358 sub r11,rbp 2359 and r11,-4096 2360 lea rsp,[rbp*1+r11] 2361 mov r10,QWORD[rsp] 2362 cmp rsp,rbp 2363 ja NEAR $L$mulx4x_page_walk 2364 jmp NEAR $L$mulx4x_page_walk_done 2365 2366 $L$mulx4x_page_walk: 2367 lea rsp,[((-4096))+rsp] 2368 mov r10,QWORD[rsp] 2369 cmp rsp,rbp 2370 ja NEAR $L$mulx4x_page_walk 2371 $L$mulx4x_page_walk_done: 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 mov QWORD[32+rsp],r8 2386 mov QWORD[40+rsp],rax 2387 2388 $L$mulx4x_body: 2389 call mulx4x_internal 2390 2391 mov rsi,QWORD[40+rsp] 2392 2393 mov rax,1 2394 2395 mov r15,QWORD[((-48))+rsi] 2396 2397 mov r14,QWORD[((-40))+rsi] 2398 2399 mov r13,QWORD[((-32))+rsi] 2400 2401 mov r12,QWORD[((-24))+rsi] 2402 2403 mov rbp,QWORD[((-16))+rsi] 2404 2405 mov rbx,QWORD[((-8))+rsi] 2406 2407 lea rsp,[rsi] 2408 2409 $L$mulx4x_epilogue: 2410 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 2411 mov rsi,QWORD[16+rsp] 2412 DB 0F3h,0C3h ;repret 2413 2414 $L$SEH_end_bn_mulx4x_mont_gather5: 2415 2416 2417 ALIGN 32 2418 mulx4x_internal: 2419 2420 mov QWORD[8+rsp],r9 2421 mov r10,r9 2422 neg r9 2423 shl r9,5 2424 neg r10 2425 lea r13,[128+r9*1+rdx] 2426 shr r9,5+5 2427 movd xmm5,DWORD[56+rax] 2428 sub r9,1 2429 lea rax,[$L$inc] 2430 mov QWORD[((16+8))+rsp],r13 2431 mov QWORD[((24+8))+rsp],r9 2432 mov QWORD[((56+8))+rsp],rdi 2433 movdqa xmm0,XMMWORD[rax] 2434 movdqa xmm1,XMMWORD[16+rax] 2435 lea r10,[((88-112))+r10*1+rsp] 2436 lea rdi,[128+rdx] 2437 2438 pshufd xmm5,xmm5,0 2439 movdqa xmm4,xmm1 2440 DB 0x67 2441 movdqa xmm2,xmm1 2442 DB 0x67 2443 paddd xmm1,xmm0 2444 pcmpeqd xmm0,xmm5 2445 movdqa xmm3,xmm4 2446 paddd xmm2,xmm1 2447 pcmpeqd xmm1,xmm5 2448 movdqa XMMWORD[112+r10],xmm0 2449 movdqa xmm0,xmm4 2450 2451 paddd xmm3,xmm2 2452 pcmpeqd xmm2,xmm5 2453 movdqa XMMWORD[128+r10],xmm1 2454 movdqa xmm1,xmm4 2455 2456 paddd xmm0,xmm3 2457 pcmpeqd xmm3,xmm5 2458 movdqa XMMWORD[144+r10],xmm2 2459 movdqa xmm2,xmm4 2460 2461 paddd xmm1,xmm0 2462 pcmpeqd xmm0,xmm5 2463 movdqa XMMWORD[160+r10],xmm3 2464 movdqa xmm3,xmm4 2465 paddd xmm2,xmm1 2466 pcmpeqd xmm1,xmm5 2467 movdqa XMMWORD[176+r10],xmm0 2468 movdqa xmm0,xmm4 2469 2470 paddd xmm3,xmm2 2471 pcmpeqd xmm2,xmm5 2472 movdqa XMMWORD[192+r10],xmm1 2473 movdqa xmm1,xmm4 2474 2475 paddd xmm0,xmm3 2476 pcmpeqd xmm3,xmm5 2477 movdqa XMMWORD[208+r10],xmm2 2478 movdqa xmm2,xmm4 2479 2480 paddd xmm1,xmm0 2481 pcmpeqd xmm0,xmm5 2482 movdqa XMMWORD[224+r10],xmm3 2483 movdqa xmm3,xmm4 2484 paddd xmm2,xmm1 2485 pcmpeqd xmm1,xmm5 2486 movdqa XMMWORD[240+r10],xmm0 2487 movdqa xmm0,xmm4 2488 2489 paddd xmm3,xmm2 2490 pcmpeqd xmm2,xmm5 2491 movdqa XMMWORD[256+r10],xmm1 2492 movdqa xmm1,xmm4 2493 2494 paddd xmm0,xmm3 2495 pcmpeqd xmm3,xmm5 2496 movdqa XMMWORD[272+r10],xmm2 2497 movdqa xmm2,xmm4 2498 2499 paddd xmm1,xmm0 2500 pcmpeqd xmm0,xmm5 2501 movdqa XMMWORD[288+r10],xmm3 2502 movdqa xmm3,xmm4 2503 DB 0x67 2504 paddd xmm2,xmm1 2505 pcmpeqd xmm1,xmm5 2506 movdqa XMMWORD[304+r10],xmm0 2507 2508 paddd xmm3,xmm2 2509 pcmpeqd xmm2,xmm5 2510 movdqa XMMWORD[320+r10],xmm1 2511 2512 pcmpeqd xmm3,xmm5 2513 movdqa XMMWORD[336+r10],xmm2 2514 2515 pand xmm0,XMMWORD[64+rdi] 2516 pand xmm1,XMMWORD[80+rdi] 2517 pand xmm2,XMMWORD[96+rdi] 2518 movdqa XMMWORD[352+r10],xmm3 2519 pand xmm3,XMMWORD[112+rdi] 2520 por xmm0,xmm2 2521 por xmm1,xmm3 2522 movdqa xmm4,XMMWORD[((-128))+rdi] 2523 movdqa xmm5,XMMWORD[((-112))+rdi] 2524 movdqa xmm2,XMMWORD[((-96))+rdi] 2525 pand xmm4,XMMWORD[112+r10] 2526 movdqa xmm3,XMMWORD[((-80))+rdi] 2527 pand xmm5,XMMWORD[128+r10] 2528 por xmm0,xmm4 2529 pand xmm2,XMMWORD[144+r10] 2530 por xmm1,xmm5 2531 pand xmm3,XMMWORD[160+r10] 2532 por xmm0,xmm2 2533 por xmm1,xmm3 2534 movdqa xmm4,XMMWORD[((-64))+rdi] 2535 movdqa xmm5,XMMWORD[((-48))+rdi] 2536 movdqa xmm2,XMMWORD[((-32))+rdi] 2537 pand xmm4,XMMWORD[176+r10] 2538 movdqa xmm3,XMMWORD[((-16))+rdi] 2539 pand xmm5,XMMWORD[192+r10] 2540 por xmm0,xmm4 2541 pand xmm2,XMMWORD[208+r10] 2542 por xmm1,xmm5 2543 pand xmm3,XMMWORD[224+r10] 2544 por xmm0,xmm2 2545 por xmm1,xmm3 2546 movdqa xmm4,XMMWORD[rdi] 2547 movdqa xmm5,XMMWORD[16+rdi] 2548 movdqa xmm2,XMMWORD[32+rdi] 2549 pand xmm4,XMMWORD[240+r10] 2550 movdqa xmm3,XMMWORD[48+rdi] 2551 pand xmm5,XMMWORD[256+r10] 2552 por xmm0,xmm4 2553 pand xmm2,XMMWORD[272+r10] 2554 por xmm1,xmm5 2555 pand xmm3,XMMWORD[288+r10] 2556 por xmm0,xmm2 2557 por xmm1,xmm3 2558 pxor xmm0,xmm1 2559 pshufd xmm1,xmm0,0x4e 2560 por xmm0,xmm1 2561 lea rdi,[256+rdi] 2562 DB 102,72,15,126,194 2563 lea rbx,[((64+32+8))+rsp] 2564 2565 mov r9,rdx 2566 mulx rax,r8,QWORD[rsi] 2567 mulx r12,r11,QWORD[8+rsi] 2568 add r11,rax 2569 mulx r13,rax,QWORD[16+rsi] 2570 adc r12,rax 2571 adc r13,0 2572 mulx r14,rax,QWORD[24+rsi] 2573 2574 mov r15,r8 2575 imul r8,QWORD[((32+8))+rsp] 2576 xor rbp,rbp 2577 mov rdx,r8 2578 2579 mov QWORD[((8+8))+rsp],rdi 2580 2581 lea rsi,[32+rsi] 2582 adcx r13,rax 2583 adcx r14,rbp 2584 2585 mulx r10,rax,QWORD[rcx] 2586 adcx r15,rax 2587 adox r10,r11 2588 mulx r11,rax,QWORD[8+rcx] 2589 adcx r10,rax 2590 adox r11,r12 2591 mulx r12,rax,QWORD[16+rcx] 2592 mov rdi,QWORD[((24+8))+rsp] 2593 mov QWORD[((-32))+rbx],r10 2594 adcx r11,rax 2595 adox r12,r13 2596 mulx r15,rax,QWORD[24+rcx] 2597 mov rdx,r9 2598 mov QWORD[((-24))+rbx],r11 2599 adcx r12,rax 2600 adox r15,rbp 2601 lea rcx,[32+rcx] 2602 mov QWORD[((-16))+rbx],r12 2603 jmp NEAR $L$mulx4x_1st 2604 2605 ALIGN 32 2606 $L$mulx4x_1st: 2607 adcx r15,rbp 2608 mulx rax,r10,QWORD[rsi] 2609 adcx r10,r14 2610 mulx r14,r11,QWORD[8+rsi] 2611 adcx r11,rax 2612 mulx rax,r12,QWORD[16+rsi] 2613 adcx r12,r14 2614 mulx r14,r13,QWORD[24+rsi] 2615 DB 0x67,0x67 2616 mov rdx,r8 2617 adcx r13,rax 2618 adcx r14,rbp 2619 lea rsi,[32+rsi] 2620 lea rbx,[32+rbx] 2621 2622 adox r10,r15 2623 mulx r15,rax,QWORD[rcx] 2624 adcx r10,rax 2625 adox r11,r15 2626 mulx r15,rax,QWORD[8+rcx] 2627 adcx r11,rax 2628 adox r12,r15 2629 mulx r15,rax,QWORD[16+rcx] 2630 mov QWORD[((-40))+rbx],r10 2631 adcx r12,rax 2632 mov QWORD[((-32))+rbx],r11 2633 adox r13,r15 2634 mulx r15,rax,QWORD[24+rcx] 2635 mov rdx,r9 2636 mov QWORD[((-24))+rbx],r12 2637 adcx r13,rax 2638 adox r15,rbp 2639 lea rcx,[32+rcx] 2640 mov QWORD[((-16))+rbx],r13 2641 2642 dec rdi 2643 jnz NEAR $L$mulx4x_1st 2644 2645 mov rax,QWORD[8+rsp] 2646 adc r15,rbp 2647 lea rsi,[rax*1+rsi] 2648 add r14,r15 2649 mov rdi,QWORD[((8+8))+rsp] 2650 adc rbp,rbp 2651 mov QWORD[((-8))+rbx],r14 2652 jmp NEAR $L$mulx4x_outer 2653 2654 ALIGN 32 2655 $L$mulx4x_outer: 2656 lea r10,[((16-256))+rbx] 2657 pxor xmm4,xmm4 2658 DB 0x67,0x67 2659 pxor xmm5,xmm5 2660 movdqa xmm0,XMMWORD[((-128))+rdi] 2661 movdqa xmm1,XMMWORD[((-112))+rdi] 2662 movdqa xmm2,XMMWORD[((-96))+rdi] 2663 pand xmm0,XMMWORD[256+r10] 2664 movdqa xmm3,XMMWORD[((-80))+rdi] 2665 pand xmm1,XMMWORD[272+r10] 2666 por xmm4,xmm0 2667 pand xmm2,XMMWORD[288+r10] 2668 por xmm5,xmm1 2669 pand xmm3,XMMWORD[304+r10] 2670 por xmm4,xmm2 2671 por xmm5,xmm3 2672 movdqa xmm0,XMMWORD[((-64))+rdi] 2673 movdqa xmm1,XMMWORD[((-48))+rdi] 2674 movdqa xmm2,XMMWORD[((-32))+rdi] 2675 pand xmm0,XMMWORD[320+r10] 2676 movdqa xmm3,XMMWORD[((-16))+rdi] 2677 pand xmm1,XMMWORD[336+r10] 2678 por xmm4,xmm0 2679 pand xmm2,XMMWORD[352+r10] 2680 por xmm5,xmm1 2681 pand xmm3,XMMWORD[368+r10] 2682 por xmm4,xmm2 2683 por xmm5,xmm3 2684 movdqa xmm0,XMMWORD[rdi] 2685 movdqa xmm1,XMMWORD[16+rdi] 2686 movdqa xmm2,XMMWORD[32+rdi] 2687 pand xmm0,XMMWORD[384+r10] 2688 movdqa xmm3,XMMWORD[48+rdi] 2689 pand xmm1,XMMWORD[400+r10] 2690 por xmm4,xmm0 2691 pand xmm2,XMMWORD[416+r10] 2692 por xmm5,xmm1 2693 pand xmm3,XMMWORD[432+r10] 2694 por xmm4,xmm2 2695 por xmm5,xmm3 2696 movdqa xmm0,XMMWORD[64+rdi] 2697 movdqa xmm1,XMMWORD[80+rdi] 2698 movdqa xmm2,XMMWORD[96+rdi] 2699 pand xmm0,XMMWORD[448+r10] 2700 movdqa xmm3,XMMWORD[112+rdi] 2701 pand xmm1,XMMWORD[464+r10] 2702 por xmm4,xmm0 2703 pand xmm2,XMMWORD[480+r10] 2704 por xmm5,xmm1 2705 pand xmm3,XMMWORD[496+r10] 2706 por xmm4,xmm2 2707 por xmm5,xmm3 2708 por xmm4,xmm5 2709 pshufd xmm0,xmm4,0x4e 2710 por xmm0,xmm4 2711 lea rdi,[256+rdi] 2712 DB 102,72,15,126,194 2713 2714 mov QWORD[rbx],rbp 2715 lea rbx,[32+rax*1+rbx] 2716 mulx r11,r8,QWORD[rsi] 2717 xor rbp,rbp 2718 mov r9,rdx 2719 mulx r12,r14,QWORD[8+rsi] 2720 adox r8,QWORD[((-32))+rbx] 2721 adcx r11,r14 2722 mulx r13,r15,QWORD[16+rsi] 2723 adox r11,QWORD[((-24))+rbx] 2724 adcx r12,r15 2725 mulx r14,rdx,QWORD[24+rsi] 2726 adox r12,QWORD[((-16))+rbx] 2727 adcx r13,rdx 2728 lea rcx,[rax*1+rcx] 2729 lea rsi,[32+rsi] 2730 adox r13,QWORD[((-8))+rbx] 2731 adcx r14,rbp 2732 adox r14,rbp 2733 2734 mov r15,r8 2735 imul r8,QWORD[((32+8))+rsp] 2736 2737 mov rdx,r8 2738 xor rbp,rbp 2739 mov QWORD[((8+8))+rsp],rdi 2740 2741 mulx r10,rax,QWORD[rcx] 2742 adcx r15,rax 2743 adox r10,r11 2744 mulx r11,rax,QWORD[8+rcx] 2745 adcx r10,rax 2746 adox r11,r12 2747 mulx r12,rax,QWORD[16+rcx] 2748 adcx r11,rax 2749 adox r12,r13 2750 mulx r15,rax,QWORD[24+rcx] 2751 mov rdx,r9 2752 mov rdi,QWORD[((24+8))+rsp] 2753 mov QWORD[((-32))+rbx],r10 2754 adcx r12,rax 2755 mov QWORD[((-24))+rbx],r11 2756 adox r15,rbp 2757 mov QWORD[((-16))+rbx],r12 2758 lea rcx,[32+rcx] 2759 jmp NEAR $L$mulx4x_inner 2760 2761 ALIGN 32 2762 $L$mulx4x_inner: 2763 mulx rax,r10,QWORD[rsi] 2764 adcx r15,rbp 2765 adox r10,r14 2766 mulx r14,r11,QWORD[8+rsi] 2767 adcx r10,QWORD[rbx] 2768 adox r11,rax 2769 mulx rax,r12,QWORD[16+rsi] 2770 adcx r11,QWORD[8+rbx] 2771 adox r12,r14 2772 mulx r14,r13,QWORD[24+rsi] 2773 mov rdx,r8 2774 adcx r12,QWORD[16+rbx] 2775 adox r13,rax 2776 adcx r13,QWORD[24+rbx] 2777 adox r14,rbp 2778 lea rsi,[32+rsi] 2779 lea rbx,[32+rbx] 2780 adcx r14,rbp 2781 2782 adox r10,r15 2783 mulx r15,rax,QWORD[rcx] 2784 adcx r10,rax 2785 adox r11,r15 2786 mulx r15,rax,QWORD[8+rcx] 2787 adcx r11,rax 2788 adox r12,r15 2789 mulx r15,rax,QWORD[16+rcx] 2790 mov QWORD[((-40))+rbx],r10 2791 adcx r12,rax 2792 adox r13,r15 2793 mov QWORD[((-32))+rbx],r11 2794 mulx r15,rax,QWORD[24+rcx] 2795 mov rdx,r9 2796 lea rcx,[32+rcx] 2797 mov QWORD[((-24))+rbx],r12 2798 adcx r13,rax 2799 adox r15,rbp 2800 mov QWORD[((-16))+rbx],r13 2801 2802 dec rdi 2803 jnz NEAR $L$mulx4x_inner 2804 2805 mov rax,QWORD[((0+8))+rsp] 2806 adc r15,rbp 2807 sub rdi,QWORD[rbx] 2808 mov rdi,QWORD[((8+8))+rsp] 2809 mov r10,QWORD[((16+8))+rsp] 2810 adc r14,r15 2811 lea rsi,[rax*1+rsi] 2812 adc rbp,rbp 2813 mov QWORD[((-8))+rbx],r14 2814 2815 cmp rdi,r10 2816 jb NEAR $L$mulx4x_outer 2817 2818 mov r10,QWORD[((-8))+rcx] 2819 mov r8,rbp 2820 mov r12,QWORD[rax*1+rcx] 2821 lea rbp,[rax*1+rcx] 2822 mov rcx,rax 2823 lea rdi,[rax*1+rbx] 2824 xor eax,eax 2825 xor r15,r15 2826 sub r10,r14 2827 adc r15,r15 2828 or r8,r15 2829 sar rcx,3+2 2830 sub rax,r8 2831 mov rdx,QWORD[((56+8))+rsp] 2832 dec r12 2833 mov r13,QWORD[8+rbp] 2834 xor r8,r8 2835 mov r14,QWORD[16+rbp] 2836 mov r15,QWORD[24+rbp] 2837 jmp NEAR $L$sqrx4x_sub_entry 2838 2839 2840 2841 ALIGN 32 2842 bn_powerx5: 2843 mov QWORD[8+rsp],rdi ;WIN64 prologue 2844 mov QWORD[16+rsp],rsi 2845 mov rax,rsp 2846 $L$SEH_begin_bn_powerx5: 2847 mov rdi,rcx 2848 mov rsi,rdx 2849 mov rdx,r8 2850 mov rcx,r9 2851 mov r8,QWORD[40+rsp] 2852 mov r9,QWORD[48+rsp] 2853 2854 2855 2856 mov rax,rsp 2857 2858 $L$powerx5_enter: 2859 push rbx 2860 2861 push rbp 2862 2863 push r12 2864 2865 push r13 2866 2867 push r14 2868 2869 push r15 2870 2871 $L$powerx5_prologue: 2872 2873 shl r9d,3 2874 lea r10,[r9*2+r9] 2875 neg r9 2876 mov r8,QWORD[r8] 2877 2878 2879 2880 2881 2882 2883 2884 2885 lea r11,[((-320))+r9*2+rsp] 2886 mov rbp,rsp 2887 sub r11,rdi 2888 and r11,4095 2889 cmp r10,r11 2890 jb NEAR $L$pwrx_sp_alt 2891 sub rbp,r11 2892 lea rbp,[((-320))+r9*2+rbp] 2893 jmp NEAR $L$pwrx_sp_done 2894 2895 ALIGN 32 2896 $L$pwrx_sp_alt: 2897 lea r10,[((4096-320))+r9*2] 2898 lea rbp,[((-320))+r9*2+rbp] 2899 sub r11,r10 2900 mov r10,0 2901 cmovc r11,r10 2902 sub rbp,r11 2903 $L$pwrx_sp_done: 2904 and rbp,-64 2905 mov r11,rsp 2906 sub r11,rbp 2907 and r11,-4096 2908 lea rsp,[rbp*1+r11] 2909 mov r10,QWORD[rsp] 2910 cmp rsp,rbp 2911 ja NEAR $L$pwrx_page_walk 2912 jmp NEAR $L$pwrx_page_walk_done 2913 2914 $L$pwrx_page_walk: 2915 lea rsp,[((-4096))+rsp] 2916 mov r10,QWORD[rsp] 2917 cmp rsp,rbp 2918 ja NEAR $L$pwrx_page_walk 2919 $L$pwrx_page_walk_done: 2920 2921 mov r10,r9 2922 neg r9 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 pxor xmm0,xmm0 2936 DB 102,72,15,110,207 2937 DB 102,72,15,110,209 2938 DB 102,73,15,110,218 2939 DB 102,72,15,110,226 2940 mov QWORD[32+rsp],r8 2941 mov QWORD[40+rsp],rax 2942 2943 $L$powerx5_body: 2944 2945 call __bn_sqrx8x_internal 2946 call __bn_postx4x_internal 2947 call __bn_sqrx8x_internal 2948 call __bn_postx4x_internal 2949 call __bn_sqrx8x_internal 2950 call __bn_postx4x_internal 2951 call __bn_sqrx8x_internal 2952 call __bn_postx4x_internal 2953 call __bn_sqrx8x_internal 2954 call __bn_postx4x_internal 2955 2956 mov r9,r10 2957 mov rdi,rsi 2958 DB 102,72,15,126,209 2959 DB 102,72,15,126,226 2960 mov rax,QWORD[40+rsp] 2961 2962 call mulx4x_internal 2963 2964 mov rsi,QWORD[40+rsp] 2965 2966 mov rax,1 2967 2968 mov r15,QWORD[((-48))+rsi] 2969 2970 mov r14,QWORD[((-40))+rsi] 2971 2972 mov r13,QWORD[((-32))+rsi] 2973 2974 mov r12,QWORD[((-24))+rsi] 2975 2976 mov rbp,QWORD[((-16))+rsi] 2977 2978 mov rbx,QWORD[((-8))+rsi] 2979 2980 lea rsp,[rsi] 2981 2982 $L$powerx5_epilogue: 2983 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 2984 mov rsi,QWORD[16+rsp] 2985 DB 0F3h,0C3h ;repret 2986 2987 $L$SEH_end_bn_powerx5: 2988 2989 global bn_sqrx8x_internal 2990 2991 2992 ALIGN 32 2993 bn_sqrx8x_internal: 2994 __bn_sqrx8x_internal: 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 lea rdi,[((48+8))+rsp] 3037 lea rbp,[r9*1+rsi] 3038 mov QWORD[((0+8))+rsp],r9 3039 mov QWORD[((8+8))+rsp],rbp 3040 jmp NEAR $L$sqr8x_zero_start 3041 3042 ALIGN 32 3043 DB 0x66,0x66,0x66,0x2e,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00 3044 $L$sqrx8x_zero: 3045 DB 0x3e 3046 movdqa XMMWORD[rdi],xmm0 3047 movdqa XMMWORD[16+rdi],xmm0 3048 movdqa XMMWORD[32+rdi],xmm0 3049 movdqa XMMWORD[48+rdi],xmm0 3050 $L$sqr8x_zero_start: 3051 movdqa XMMWORD[64+rdi],xmm0 3052 movdqa XMMWORD[80+rdi],xmm0 3053 movdqa XMMWORD[96+rdi],xmm0 3054 movdqa XMMWORD[112+rdi],xmm0 3055 lea rdi,[128+rdi] 3056 sub r9,64 3057 jnz NEAR $L$sqrx8x_zero 3058 3059 mov rdx,QWORD[rsi] 3060 3061 xor r10,r10 3062 xor r11,r11 3063 xor r12,r12 3064 xor r13,r13 3065 xor r14,r14 3066 xor r15,r15 3067 lea rdi,[((48+8))+rsp] 3068 xor rbp,rbp 3069 jmp NEAR $L$sqrx8x_outer_loop 3070 3071 ALIGN 32 3072 $L$sqrx8x_outer_loop: 3073 mulx rax,r8,QWORD[8+rsi] 3074 adcx r8,r9 3075 adox r10,rax 3076 mulx rax,r9,QWORD[16+rsi] 3077 adcx r9,r10 3078 adox r11,rax 3079 DB 0xc4,0xe2,0xab,0xf6,0x86,0x18,0x00,0x00,0x00 3080 adcx r10,r11 3081 adox r12,rax 3082 DB 0xc4,0xe2,0xa3,0xf6,0x86,0x20,0x00,0x00,0x00 3083 adcx r11,r12 3084 adox r13,rax 3085 mulx rax,r12,QWORD[40+rsi] 3086 adcx r12,r13 3087 adox r14,rax 3088 mulx rax,r13,QWORD[48+rsi] 3089 adcx r13,r14 3090 adox rax,r15 3091 mulx r15,r14,QWORD[56+rsi] 3092 mov rdx,QWORD[8+rsi] 3093 adcx r14,rax 3094 adox r15,rbp 3095 adc r15,QWORD[64+rdi] 3096 mov QWORD[8+rdi],r8 3097 mov QWORD[16+rdi],r9 3098 sbb rcx,rcx 3099 xor rbp,rbp 3100 3101 3102 mulx rbx,r8,QWORD[16+rsi] 3103 mulx rax,r9,QWORD[24+rsi] 3104 adcx r8,r10 3105 adox r9,rbx 3106 mulx rbx,r10,QWORD[32+rsi] 3107 adcx r9,r11 3108 adox r10,rax 3109 DB 0xc4,0xe2,0xa3,0xf6,0x86,0x28,0x00,0x00,0x00 3110 adcx r10,r12 3111 adox r11,rbx 3112 DB 0xc4,0xe2,0x9b,0xf6,0x9e,0x30,0x00,0x00,0x00 3113 adcx r11,r13 3114 adox r12,r14 3115 DB 0xc4,0x62,0x93,0xf6,0xb6,0x38,0x00,0x00,0x00 3116 mov rdx,QWORD[16+rsi] 3117 adcx r12,rax 3118 adox r13,rbx 3119 adcx r13,r15 3120 adox r14,rbp 3121 adcx r14,rbp 3122 3123 mov QWORD[24+rdi],r8 3124 mov QWORD[32+rdi],r9 3125 3126 mulx rbx,r8,QWORD[24+rsi] 3127 mulx rax,r9,QWORD[32+rsi] 3128 adcx r8,r10 3129 adox r9,rbx 3130 mulx rbx,r10,QWORD[40+rsi] 3131 adcx r9,r11 3132 adox r10,rax 3133 DB 0xc4,0xe2,0xa3,0xf6,0x86,0x30,0x00,0x00,0x00 3134 adcx r10,r12 3135 adox r11,r13 3136 DB 0xc4,0x62,0x9b,0xf6,0xae,0x38,0x00,0x00,0x00 3137 DB 0x3e 3138 mov rdx,QWORD[24+rsi] 3139 adcx r11,rbx 3140 adox r12,rax 3141 adcx r12,r14 3142 mov QWORD[40+rdi],r8 3143 mov QWORD[48+rdi],r9 3144 mulx rax,r8,QWORD[32+rsi] 3145 adox r13,rbp 3146 adcx r13,rbp 3147 3148 mulx rbx,r9,QWORD[40+rsi] 3149 adcx r8,r10 3150 adox r9,rax 3151 mulx rax,r10,QWORD[48+rsi] 3152 adcx r9,r11 3153 adox r10,r12 3154 mulx r12,r11,QWORD[56+rsi] 3155 mov rdx,QWORD[32+rsi] 3156 mov r14,QWORD[40+rsi] 3157 adcx r10,rbx 3158 adox r11,rax 3159 mov r15,QWORD[48+rsi] 3160 adcx r11,r13 3161 adox r12,rbp 3162 adcx r12,rbp 3163 3164 mov QWORD[56+rdi],r8 3165 mov QWORD[64+rdi],r9 3166 3167 mulx rax,r9,r14 3168 mov r8,QWORD[56+rsi] 3169 adcx r9,r10 3170 mulx rbx,r10,r15 3171 adox r10,rax 3172 adcx r10,r11 3173 mulx rax,r11,r8 3174 mov rdx,r14 3175 adox r11,rbx 3176 adcx r11,r12 3177 3178 adcx rax,rbp 3179 3180 mulx rbx,r14,r15 3181 mulx r13,r12,r8 3182 mov rdx,r15 3183 lea rsi,[64+rsi] 3184 adcx r11,r14 3185 adox r12,rbx 3186 adcx r12,rax 3187 adox r13,rbp 3188 3189 DB 0x67,0x67 3190 mulx r14,r8,r8 3191 adcx r13,r8 3192 adcx r14,rbp 3193 3194 cmp rsi,QWORD[((8+8))+rsp] 3195 je NEAR $L$sqrx8x_outer_break 3196 3197 neg rcx 3198 mov rcx,-8 3199 mov r15,rbp 3200 mov r8,QWORD[64+rdi] 3201 adcx r9,QWORD[72+rdi] 3202 adcx r10,QWORD[80+rdi] 3203 adcx r11,QWORD[88+rdi] 3204 adc r12,QWORD[96+rdi] 3205 adc r13,QWORD[104+rdi] 3206 adc r14,QWORD[112+rdi] 3207 adc r15,QWORD[120+rdi] 3208 lea rbp,[rsi] 3209 lea rdi,[128+rdi] 3210 sbb rax,rax 3211 3212 mov rdx,QWORD[((-64))+rsi] 3213 mov QWORD[((16+8))+rsp],rax 3214 mov QWORD[((24+8))+rsp],rdi 3215 3216 3217 xor eax,eax 3218 jmp NEAR $L$sqrx8x_loop 3219 3220 ALIGN 32 3221 $L$sqrx8x_loop: 3222 mov rbx,r8 3223 mulx r8,rax,QWORD[rbp] 3224 adcx rbx,rax 3225 adox r8,r9 3226 3227 mulx r9,rax,QWORD[8+rbp] 3228 adcx r8,rax 3229 adox r9,r10 3230 3231 mulx r10,rax,QWORD[16+rbp] 3232 adcx r9,rax 3233 adox r10,r11 3234 3235 mulx r11,rax,QWORD[24+rbp] 3236 adcx r10,rax 3237 adox r11,r12 3238 3239 DB 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 3240 adcx r11,rax 3241 adox r12,r13 3242 3243 mulx r13,rax,QWORD[40+rbp] 3244 adcx r12,rax 3245 adox r13,r14 3246 3247 mulx r14,rax,QWORD[48+rbp] 3248 mov QWORD[rcx*8+rdi],rbx 3249 mov ebx,0 3250 adcx r13,rax 3251 adox r14,r15 3252 3253 DB 0xc4,0x62,0xfb,0xf6,0xbd,0x38,0x00,0x00,0x00 3254 mov rdx,QWORD[8+rcx*8+rsi] 3255 adcx r14,rax 3256 adox r15,rbx 3257 adcx r15,rbx 3258 3259 DB 0x67 3260 inc rcx 3261 jnz NEAR $L$sqrx8x_loop 3262 3263 lea rbp,[64+rbp] 3264 mov rcx,-8 3265 cmp rbp,QWORD[((8+8))+rsp] 3266 je NEAR $L$sqrx8x_break 3267 3268 sub rbx,QWORD[((16+8))+rsp] 3269 DB 0x66 3270 mov rdx,QWORD[((-64))+rsi] 3271 adcx r8,QWORD[rdi] 3272 adcx r9,QWORD[8+rdi] 3273 adc r10,QWORD[16+rdi] 3274 adc r11,QWORD[24+rdi] 3275 adc r12,QWORD[32+rdi] 3276 adc r13,QWORD[40+rdi] 3277 adc r14,QWORD[48+rdi] 3278 adc r15,QWORD[56+rdi] 3279 lea rdi,[64+rdi] 3280 DB 0x67 3281 sbb rax,rax 3282 xor ebx,ebx 3283 mov QWORD[((16+8))+rsp],rax 3284 jmp NEAR $L$sqrx8x_loop 3285 3286 ALIGN 32 3287 $L$sqrx8x_break: 3288 xor rbp,rbp 3289 sub rbx,QWORD[((16+8))+rsp] 3290 adcx r8,rbp 3291 mov rcx,QWORD[((24+8))+rsp] 3292 adcx r9,rbp 3293 mov rdx,QWORD[rsi] 3294 adc r10,0 3295 mov QWORD[rdi],r8 3296 adc r11,0 3297 adc r12,0 3298 adc r13,0 3299 adc r14,0 3300 adc r15,0 3301 cmp rdi,rcx 3302 je NEAR $L$sqrx8x_outer_loop 3303 3304 mov QWORD[8+rdi],r9 3305 mov r9,QWORD[8+rcx] 3306 mov QWORD[16+rdi],r10 3307 mov r10,QWORD[16+rcx] 3308 mov QWORD[24+rdi],r11 3309 mov r11,QWORD[24+rcx] 3310 mov QWORD[32+rdi],r12 3311 mov r12,QWORD[32+rcx] 3312 mov QWORD[40+rdi],r13 3313 mov r13,QWORD[40+rcx] 3314 mov QWORD[48+rdi],r14 3315 mov r14,QWORD[48+rcx] 3316 mov QWORD[56+rdi],r15 3317 mov r15,QWORD[56+rcx] 3318 mov rdi,rcx 3319 jmp NEAR $L$sqrx8x_outer_loop 3320 3321 ALIGN 32 3322 $L$sqrx8x_outer_break: 3323 mov QWORD[72+rdi],r9 3324 DB 102,72,15,126,217 3325 mov QWORD[80+rdi],r10 3326 mov QWORD[88+rdi],r11 3327 mov QWORD[96+rdi],r12 3328 mov QWORD[104+rdi],r13 3329 mov QWORD[112+rdi],r14 3330 lea rdi,[((48+8))+rsp] 3331 mov rdx,QWORD[rcx*1+rsi] 3332 3333 mov r11,QWORD[8+rdi] 3334 xor r10,r10 3335 mov r9,QWORD[((0+8))+rsp] 3336 adox r11,r11 3337 mov r12,QWORD[16+rdi] 3338 mov r13,QWORD[24+rdi] 3339 3340 3341 ALIGN 32 3342 $L$sqrx4x_shift_n_add: 3343 mulx rbx,rax,rdx 3344 adox r12,r12 3345 adcx rax,r10 3346 DB 0x48,0x8b,0x94,0x0e,0x08,0x00,0x00,0x00 3347 DB 0x4c,0x8b,0x97,0x20,0x00,0x00,0x00 3348 adox r13,r13 3349 adcx rbx,r11 3350 mov r11,QWORD[40+rdi] 3351 mov QWORD[rdi],rax 3352 mov QWORD[8+rdi],rbx 3353 3354 mulx rbx,rax,rdx 3355 adox r10,r10 3356 adcx rax,r12 3357 mov rdx,QWORD[16+rcx*1+rsi] 3358 mov r12,QWORD[48+rdi] 3359 adox r11,r11 3360 adcx rbx,r13 3361 mov r13,QWORD[56+rdi] 3362 mov QWORD[16+rdi],rax 3363 mov QWORD[24+rdi],rbx 3364 3365 mulx rbx,rax,rdx 3366 adox r12,r12 3367 adcx rax,r10 3368 mov rdx,QWORD[24+rcx*1+rsi] 3369 lea rcx,[32+rcx] 3370 mov r10,QWORD[64+rdi] 3371 adox r13,r13 3372 adcx rbx,r11 3373 mov r11,QWORD[72+rdi] 3374 mov QWORD[32+rdi],rax 3375 mov QWORD[40+rdi],rbx 3376 3377 mulx rbx,rax,rdx 3378 adox r10,r10 3379 adcx rax,r12 3380 jrcxz $L$sqrx4x_shift_n_add_break 3381 DB 0x48,0x8b,0x94,0x0e,0x00,0x00,0x00,0x00 3382 adox r11,r11 3383 adcx rbx,r13 3384 mov r12,QWORD[80+rdi] 3385 mov r13,QWORD[88+rdi] 3386 mov QWORD[48+rdi],rax 3387 mov QWORD[56+rdi],rbx 3388 lea rdi,[64+rdi] 3389 nop 3390 jmp NEAR $L$sqrx4x_shift_n_add 3391 3392 ALIGN 32 3393 $L$sqrx4x_shift_n_add_break: 3394 adcx rbx,r13 3395 mov QWORD[48+rdi],rax 3396 mov QWORD[56+rdi],rbx 3397 lea rdi,[64+rdi] 3398 DB 102,72,15,126,213 3399 __bn_sqrx8x_reduction: 3400 xor eax,eax 3401 mov rbx,QWORD[((32+8))+rsp] 3402 mov rdx,QWORD[((48+8))+rsp] 3403 lea rcx,[((-64))+r9*1+rbp] 3404 3405 mov QWORD[((0+8))+rsp],rcx 3406 mov QWORD[((8+8))+rsp],rdi 3407 3408 lea rdi,[((48+8))+rsp] 3409 jmp NEAR $L$sqrx8x_reduction_loop 3410 3411 ALIGN 32 3412 $L$sqrx8x_reduction_loop: 3413 mov r9,QWORD[8+rdi] 3414 mov r10,QWORD[16+rdi] 3415 mov r11,QWORD[24+rdi] 3416 mov r12,QWORD[32+rdi] 3417 mov r8,rdx 3418 imul rdx,rbx 3419 mov r13,QWORD[40+rdi] 3420 mov r14,QWORD[48+rdi] 3421 mov r15,QWORD[56+rdi] 3422 mov QWORD[((24+8))+rsp],rax 3423 3424 lea rdi,[64+rdi] 3425 xor rsi,rsi 3426 mov rcx,-8 3427 jmp NEAR $L$sqrx8x_reduce 3428 3429 ALIGN 32 3430 $L$sqrx8x_reduce: 3431 mov rbx,r8 3432 mulx r8,rax,QWORD[rbp] 3433 adcx rax,rbx 3434 adox r8,r9 3435 3436 mulx r9,rbx,QWORD[8+rbp] 3437 adcx r8,rbx 3438 adox r9,r10 3439 3440 mulx r10,rbx,QWORD[16+rbp] 3441 adcx r9,rbx 3442 adox r10,r11 3443 3444 mulx r11,rbx,QWORD[24+rbp] 3445 adcx r10,rbx 3446 adox r11,r12 3447 3448 DB 0xc4,0x62,0xe3,0xf6,0xa5,0x20,0x00,0x00,0x00 3449 mov rax,rdx 3450 mov rdx,r8 3451 adcx r11,rbx 3452 adox r12,r13 3453 3454 mulx rdx,rbx,QWORD[((32+8))+rsp] 3455 mov rdx,rax 3456 mov QWORD[((64+48+8))+rcx*8+rsp],rax 3457 3458 mulx r13,rax,QWORD[40+rbp] 3459 adcx r12,rax 3460 adox r13,r14 3461 3462 mulx r14,rax,QWORD[48+rbp] 3463 adcx r13,rax 3464 adox r14,r15 3465 3466 mulx r15,rax,QWORD[56+rbp] 3467 mov rdx,rbx 3468 adcx r14,rax 3469 adox r15,rsi 3470 adcx r15,rsi 3471 3472 DB 0x67,0x67,0x67 3473 inc rcx 3474 jnz NEAR $L$sqrx8x_reduce 3475 3476 mov rax,rsi 3477 cmp rbp,QWORD[((0+8))+rsp] 3478 jae NEAR $L$sqrx8x_no_tail 3479 3480 mov rdx,QWORD[((48+8))+rsp] 3481 add r8,QWORD[rdi] 3482 lea rbp,[64+rbp] 3483 mov rcx,-8 3484 adcx r9,QWORD[8+rdi] 3485 adcx r10,QWORD[16+rdi] 3486 adc r11,QWORD[24+rdi] 3487 adc r12,QWORD[32+rdi] 3488 adc r13,QWORD[40+rdi] 3489 adc r14,QWORD[48+rdi] 3490 adc r15,QWORD[56+rdi] 3491 lea rdi,[64+rdi] 3492 sbb rax,rax 3493 3494 xor rsi,rsi 3495 mov QWORD[((16+8))+rsp],rax 3496 jmp NEAR $L$sqrx8x_tail 3497 3498 ALIGN 32 3499 $L$sqrx8x_tail: 3500 mov rbx,r8 3501 mulx r8,rax,QWORD[rbp] 3502 adcx rbx,rax 3503 adox r8,r9 3504 3505 mulx r9,rax,QWORD[8+rbp] 3506 adcx r8,rax 3507 adox r9,r10 3508 3509 mulx r10,rax,QWORD[16+rbp] 3510 adcx r9,rax 3511 adox r10,r11 3512 3513 mulx r11,rax,QWORD[24+rbp] 3514 adcx r10,rax 3515 adox r11,r12 3516 3517 DB 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 3518 adcx r11,rax 3519 adox r12,r13 3520 3521 mulx r13,rax,QWORD[40+rbp] 3522 adcx r12,rax 3523 adox r13,r14 3524 3525 mulx r14,rax,QWORD[48+rbp] 3526 adcx r13,rax 3527 adox r14,r15 3528 3529 mulx r15,rax,QWORD[56+rbp] 3530 mov rdx,QWORD[((72+48+8))+rcx*8+rsp] 3531 adcx r14,rax 3532 adox r15,rsi 3533 mov QWORD[rcx*8+rdi],rbx 3534 mov rbx,r8 3535 adcx r15,rsi 3536 3537 inc rcx 3538 jnz NEAR $L$sqrx8x_tail 3539 3540 cmp rbp,QWORD[((0+8))+rsp] 3541 jae NEAR $L$sqrx8x_tail_done 3542 3543 sub rsi,QWORD[((16+8))+rsp] 3544 mov rdx,QWORD[((48+8))+rsp] 3545 lea rbp,[64+rbp] 3546 adc r8,QWORD[rdi] 3547 adc r9,QWORD[8+rdi] 3548 adc r10,QWORD[16+rdi] 3549 adc r11,QWORD[24+rdi] 3550 adc r12,QWORD[32+rdi] 3551 adc r13,QWORD[40+rdi] 3552 adc r14,QWORD[48+rdi] 3553 adc r15,QWORD[56+rdi] 3554 lea rdi,[64+rdi] 3555 sbb rax,rax 3556 sub rcx,8 3557 3558 xor rsi,rsi 3559 mov QWORD[((16+8))+rsp],rax 3560 jmp NEAR $L$sqrx8x_tail 3561 3562 ALIGN 32 3563 $L$sqrx8x_tail_done: 3564 xor rax,rax 3565 add r8,QWORD[((24+8))+rsp] 3566 adc r9,0 3567 adc r10,0 3568 adc r11,0 3569 adc r12,0 3570 adc r13,0 3571 adc r14,0 3572 adc r15,0 3573 adc rax,0 3574 3575 sub rsi,QWORD[((16+8))+rsp] 3576 $L$sqrx8x_no_tail: 3577 adc r8,QWORD[rdi] 3578 DB 102,72,15,126,217 3579 adc r9,QWORD[8+rdi] 3580 mov rsi,QWORD[56+rbp] 3581 DB 102,72,15,126,213 3582 adc r10,QWORD[16+rdi] 3583 adc r11,QWORD[24+rdi] 3584 adc r12,QWORD[32+rdi] 3585 adc r13,QWORD[40+rdi] 3586 adc r14,QWORD[48+rdi] 3587 adc r15,QWORD[56+rdi] 3588 adc rax,0 3589 3590 mov rbx,QWORD[((32+8))+rsp] 3591 mov rdx,QWORD[64+rcx*1+rdi] 3592 3593 mov QWORD[rdi],r8 3594 lea r8,[64+rdi] 3595 mov QWORD[8+rdi],r9 3596 mov QWORD[16+rdi],r10 3597 mov QWORD[24+rdi],r11 3598 mov QWORD[32+rdi],r12 3599 mov QWORD[40+rdi],r13 3600 mov QWORD[48+rdi],r14 3601 mov QWORD[56+rdi],r15 3602 3603 lea rdi,[64+rcx*1+rdi] 3604 cmp r8,QWORD[((8+8))+rsp] 3605 jb NEAR $L$sqrx8x_reduction_loop 3606 DB 0F3h,0C3h ;repret 3607 3608 3609 ALIGN 32 3610 __bn_postx4x_internal: 3611 3612 mov r12,QWORD[rbp] 3613 mov r10,rcx 3614 mov r9,rcx 3615 neg rax 3616 sar rcx,3+2 3617 3618 DB 102,72,15,126,202 3619 DB 102,72,15,126,206 3620 dec r12 3621 mov r13,QWORD[8+rbp] 3622 xor r8,r8 3623 mov r14,QWORD[16+rbp] 3624 mov r15,QWORD[24+rbp] 3625 jmp NEAR $L$sqrx4x_sub_entry 3626 3627 ALIGN 16 3628 $L$sqrx4x_sub: 3629 mov r12,QWORD[rbp] 3630 mov r13,QWORD[8+rbp] 3631 mov r14,QWORD[16+rbp] 3632 mov r15,QWORD[24+rbp] 3633 $L$sqrx4x_sub_entry: 3634 andn r12,r12,rax 3635 lea rbp,[32+rbp] 3636 andn r13,r13,rax 3637 andn r14,r14,rax 3638 andn r15,r15,rax 3639 3640 neg r8 3641 adc r12,QWORD[rdi] 3642 adc r13,QWORD[8+rdi] 3643 adc r14,QWORD[16+rdi] 3644 adc r15,QWORD[24+rdi] 3645 mov QWORD[rdx],r12 3646 lea rdi,[32+rdi] 3647 mov QWORD[8+rdx],r13 3648 sbb r8,r8 3649 mov QWORD[16+rdx],r14 3650 mov QWORD[24+rdx],r15 3651 lea rdx,[32+rdx] 3652 3653 inc rcx 3654 jnz NEAR $L$sqrx4x_sub 3655 3656 neg r9 3657 3658 DB 0F3h,0C3h ;repret 3659 3660 2268 3661 global bn_get_bits5 2269 3662 … … 2602 3995 DD $L$SEH_end_bn_from_mont8x wrt ..imagebase 2603 3996 DD $L$SEH_info_bn_from_mont8x wrt ..imagebase 3997 DD $L$SEH_begin_bn_mulx4x_mont_gather5 wrt ..imagebase 3998 DD $L$SEH_end_bn_mulx4x_mont_gather5 wrt ..imagebase 3999 DD $L$SEH_info_bn_mulx4x_mont_gather5 wrt ..imagebase 4000 4001 DD $L$SEH_begin_bn_powerx5 wrt ..imagebase 4002 DD $L$SEH_end_bn_powerx5 wrt ..imagebase 4003 DD $L$SEH_info_bn_powerx5 wrt ..imagebase 2604 4004 DD $L$SEH_begin_bn_gather5 wrt ..imagebase 2605 4005 DD $L$SEH_end_bn_gather5 wrt ..imagebase … … 2628 4028 DD $L$from_prologue wrt ..imagebase,$L$from_body wrt ..imagebase,$L$from_epilogue wrt ..imagebase 2629 4029 ALIGN 8 4030 $L$SEH_info_bn_mulx4x_mont_gather5: 4031 DB 9,0,0,0 4032 DD mul_handler wrt ..imagebase 4033 DD $L$mulx4x_prologue wrt ..imagebase,$L$mulx4x_body wrt ..imagebase,$L$mulx4x_epilogue wrt ..imagebase 4034 ALIGN 8 4035 $L$SEH_info_bn_powerx5: 4036 DB 9,0,0,0 4037 DD mul_handler wrt ..imagebase 4038 DD $L$powerx5_prologue wrt ..imagebase,$L$powerx5_body wrt ..imagebase,$L$powerx5_epilogue wrt ..imagebase 4039 ALIGN 8 2630 4040 $L$SEH_info_bn_gather5: 2631 4041 DB 0x01,0x0b,0x03,0x0a
Note:
See TracChangeset
for help on using the changeset viewer.