VirtualBox

Ignore:
Timestamp:
Jun 8, 2022 8:35:57 AM (3 years ago)
Author:
vboxsync
Message:

libs/openssl-3.0.3: Recreated openssl assembler files, bugref:10128

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/libs/openssl-3.0.3/crypto/genasm-nasm/rsaz-avx2.S

    r95219 r95221  
    66
    77
    8 global  rsaz_1024_sqr_avx2
     8global  rsaz_avx2_eligible
    99
    10 ALIGN   64
    11 rsaz_1024_sqr_avx2:
    12         mov     QWORD[8+rsp],rdi        ;WIN64 prologue
    13         mov     QWORD[16+rsp],rsi
    14         mov     rax,rsp
    15 $L$SEH_begin_rsaz_1024_sqr_avx2:
    16         mov     rdi,rcx
    17         mov     rsi,rdx
    18         mov     rdx,r8
    19         mov     rcx,r9
    20         mov     r8,QWORD[40+rsp]
    21 
    22 
    23 
    24         lea     rax,[rsp]
    25 
    26         push    rbx
    27 
    28         push    rbp
    29 
    30         push    r12
    31 
    32         push    r13
    33 
    34         push    r14
    35 
    36         push    r15
    37 
    38         vzeroupper
    39         lea     rsp,[((-168))+rsp]
    40         vmovaps XMMWORD[(-216)+rax],xmm6
    41         vmovaps XMMWORD[(-200)+rax],xmm7
    42         vmovaps XMMWORD[(-184)+rax],xmm8
    43         vmovaps XMMWORD[(-168)+rax],xmm9
    44         vmovaps XMMWORD[(-152)+rax],xmm10
    45         vmovaps XMMWORD[(-136)+rax],xmm11
    46         vmovaps XMMWORD[(-120)+rax],xmm12
    47         vmovaps XMMWORD[(-104)+rax],xmm13
    48         vmovaps XMMWORD[(-88)+rax],xmm14
    49         vmovaps XMMWORD[(-72)+rax],xmm15
    50 $L$sqr_1024_body:
    51         mov     rbp,rax
    52 
    53         mov     r13,rdx
    54         sub     rsp,832
    55         mov     r15,r13
    56         sub     rdi,-128
    57         sub     rsi,-128
    58         sub     r13,-128
    59 
    60         and     r15,4095
    61         add     r15,32*10
    62         shr     r15,12
    63         vpxor   ymm9,ymm9,ymm9
    64         jz      NEAR $L$sqr_1024_no_n_copy
    65 
    66 
    67 
    68 
    69 
    70         sub     rsp,32*10
    71         vmovdqu ymm0,YMMWORD[((0-128))+r13]
    72         and     rsp,-2048
    73         vmovdqu ymm1,YMMWORD[((32-128))+r13]
    74         vmovdqu ymm2,YMMWORD[((64-128))+r13]
    75         vmovdqu ymm3,YMMWORD[((96-128))+r13]
    76         vmovdqu ymm4,YMMWORD[((128-128))+r13]
    77         vmovdqu ymm5,YMMWORD[((160-128))+r13]
    78         vmovdqu ymm6,YMMWORD[((192-128))+r13]
    79         vmovdqu ymm7,YMMWORD[((224-128))+r13]
    80         vmovdqu ymm8,YMMWORD[((256-128))+r13]
    81         lea     r13,[((832+128))+rsp]
    82         vmovdqu YMMWORD[(0-128)+r13],ymm0
    83         vmovdqu YMMWORD[(32-128)+r13],ymm1
    84         vmovdqu YMMWORD[(64-128)+r13],ymm2
    85         vmovdqu YMMWORD[(96-128)+r13],ymm3
    86         vmovdqu YMMWORD[(128-128)+r13],ymm4
    87         vmovdqu YMMWORD[(160-128)+r13],ymm5
    88         vmovdqu YMMWORD[(192-128)+r13],ymm6
    89         vmovdqu YMMWORD[(224-128)+r13],ymm7
    90         vmovdqu YMMWORD[(256-128)+r13],ymm8
    91         vmovdqu YMMWORD[(288-128)+r13],ymm9
    92 
    93 $L$sqr_1024_no_n_copy:
    94         and     rsp,-1024
    95 
    96         vmovdqu ymm1,YMMWORD[((32-128))+rsi]
    97         vmovdqu ymm2,YMMWORD[((64-128))+rsi]
    98         vmovdqu ymm3,YMMWORD[((96-128))+rsi]
    99         vmovdqu ymm4,YMMWORD[((128-128))+rsi]
    100         vmovdqu ymm5,YMMWORD[((160-128))+rsi]
    101         vmovdqu ymm6,YMMWORD[((192-128))+rsi]
    102         vmovdqu ymm7,YMMWORD[((224-128))+rsi]
    103         vmovdqu ymm8,YMMWORD[((256-128))+rsi]
    104 
    105         lea     rbx,[192+rsp]
    106         vmovdqu ymm15,YMMWORD[$L$and_mask]
    107         jmp     NEAR $L$OOP_GRANDE_SQR_1024
    108 
    109 ALIGN   32
    110 $L$OOP_GRANDE_SQR_1024:
    111         lea     r9,[((576+128))+rsp]
    112         lea     r12,[448+rsp]
    113 
    114 
    115 
    116 
    117         vpaddq  ymm1,ymm1,ymm1
    118         vpbroadcastq    ymm10,QWORD[((0-128))+rsi]
    119         vpaddq  ymm2,ymm2,ymm2
    120         vmovdqa YMMWORD[(0-128)+r9],ymm1
    121         vpaddq  ymm3,ymm3,ymm3
    122         vmovdqa YMMWORD[(32-128)+r9],ymm2
    123         vpaddq  ymm4,ymm4,ymm4
    124         vmovdqa YMMWORD[(64-128)+r9],ymm3
    125         vpaddq  ymm5,ymm5,ymm5
    126         vmovdqa YMMWORD[(96-128)+r9],ymm4
    127         vpaddq  ymm6,ymm6,ymm6
    128         vmovdqa YMMWORD[(128-128)+r9],ymm5
    129         vpaddq  ymm7,ymm7,ymm7
    130         vmovdqa YMMWORD[(160-128)+r9],ymm6
    131         vpaddq  ymm8,ymm8,ymm8
    132         vmovdqa YMMWORD[(192-128)+r9],ymm7
    133         vpxor   ymm9,ymm9,ymm9
    134         vmovdqa YMMWORD[(224-128)+r9],ymm8
    135 
    136         vpmuludq        ymm0,ymm10,YMMWORD[((0-128))+rsi]
    137         vpbroadcastq    ymm11,QWORD[((32-128))+rsi]
    138         vmovdqu YMMWORD[(288-192)+rbx],ymm9
    139         vpmuludq        ymm1,ymm1,ymm10
    140         vmovdqu YMMWORD[(320-448)+r12],ymm9
    141         vpmuludq        ymm2,ymm2,ymm10
    142         vmovdqu YMMWORD[(352-448)+r12],ymm9
    143         vpmuludq        ymm3,ymm3,ymm10
    144         vmovdqu YMMWORD[(384-448)+r12],ymm9
    145         vpmuludq        ymm4,ymm4,ymm10
    146         vmovdqu YMMWORD[(416-448)+r12],ymm9
    147         vpmuludq        ymm5,ymm5,ymm10
    148         vmovdqu YMMWORD[(448-448)+r12],ymm9
    149         vpmuludq        ymm6,ymm6,ymm10
    150         vmovdqu YMMWORD[(480-448)+r12],ymm9
    151         vpmuludq        ymm7,ymm7,ymm10
    152         vmovdqu YMMWORD[(512-448)+r12],ymm9
    153         vpmuludq        ymm8,ymm8,ymm10
    154         vpbroadcastq    ymm10,QWORD[((64-128))+rsi]
    155         vmovdqu YMMWORD[(544-448)+r12],ymm9
    156 
    157         mov     r15,rsi
    158         mov     r14d,4
    159         jmp     NEAR $L$sqr_entry_1024
    160 ALIGN   32
    161 $L$OOP_SQR_1024:
    162         vpbroadcastq    ymm11,QWORD[((32-128))+r15]
    163         vpmuludq        ymm0,ymm10,YMMWORD[((0-128))+rsi]
    164         vpaddq  ymm0,ymm0,YMMWORD[((0-192))+rbx]
    165         vpmuludq        ymm1,ymm10,YMMWORD[((0-128))+r9]
    166         vpaddq  ymm1,ymm1,YMMWORD[((32-192))+rbx]
    167         vpmuludq        ymm2,ymm10,YMMWORD[((32-128))+r9]
    168         vpaddq  ymm2,ymm2,YMMWORD[((64-192))+rbx]
    169         vpmuludq        ymm3,ymm10,YMMWORD[((64-128))+r9]
    170         vpaddq  ymm3,ymm3,YMMWORD[((96-192))+rbx]
    171         vpmuludq        ymm4,ymm10,YMMWORD[((96-128))+r9]
    172         vpaddq  ymm4,ymm4,YMMWORD[((128-192))+rbx]
    173         vpmuludq        ymm5,ymm10,YMMWORD[((128-128))+r9]
    174         vpaddq  ymm5,ymm5,YMMWORD[((160-192))+rbx]
    175         vpmuludq        ymm6,ymm10,YMMWORD[((160-128))+r9]
    176         vpaddq  ymm6,ymm6,YMMWORD[((192-192))+rbx]
    177         vpmuludq        ymm7,ymm10,YMMWORD[((192-128))+r9]
    178         vpaddq  ymm7,ymm7,YMMWORD[((224-192))+rbx]
    179         vpmuludq        ymm8,ymm10,YMMWORD[((224-128))+r9]
    180         vpbroadcastq    ymm10,QWORD[((64-128))+r15]
    181         vpaddq  ymm8,ymm8,YMMWORD[((256-192))+rbx]
    182 $L$sqr_entry_1024:
    183         vmovdqu YMMWORD[(0-192)+rbx],ymm0
    184         vmovdqu YMMWORD[(32-192)+rbx],ymm1
    185 
    186         vpmuludq        ymm12,ymm11,YMMWORD[((32-128))+rsi]
    187         vpaddq  ymm2,ymm2,ymm12
    188         vpmuludq        ymm14,ymm11,YMMWORD[((32-128))+r9]
    189         vpaddq  ymm3,ymm3,ymm14
    190         vpmuludq        ymm13,ymm11,YMMWORD[((64-128))+r9]
    191         vpaddq  ymm4,ymm4,ymm13
    192         vpmuludq        ymm12,ymm11,YMMWORD[((96-128))+r9]
    193         vpaddq  ymm5,ymm5,ymm12
    194         vpmuludq        ymm14,ymm11,YMMWORD[((128-128))+r9]
    195         vpaddq  ymm6,ymm6,ymm14
    196         vpmuludq        ymm13,ymm11,YMMWORD[((160-128))+r9]
    197         vpaddq  ymm7,ymm7,ymm13
    198         vpmuludq        ymm12,ymm11,YMMWORD[((192-128))+r9]
    199         vpaddq  ymm8,ymm8,ymm12
    200         vpmuludq        ymm0,ymm11,YMMWORD[((224-128))+r9]
    201         vpbroadcastq    ymm11,QWORD[((96-128))+r15]
    202         vpaddq  ymm0,ymm0,YMMWORD[((288-192))+rbx]
    203 
    204         vmovdqu YMMWORD[(64-192)+rbx],ymm2
    205         vmovdqu YMMWORD[(96-192)+rbx],ymm3
    206 
    207         vpmuludq        ymm13,ymm10,YMMWORD[((64-128))+rsi]
    208         vpaddq  ymm4,ymm4,ymm13
    209         vpmuludq        ymm12,ymm10,YMMWORD[((64-128))+r9]
    210         vpaddq  ymm5,ymm5,ymm12
    211         vpmuludq        ymm14,ymm10,YMMWORD[((96-128))+r9]
    212         vpaddq  ymm6,ymm6,ymm14
    213         vpmuludq        ymm13,ymm10,YMMWORD[((128-128))+r9]
    214         vpaddq  ymm7,ymm7,ymm13
    215         vpmuludq        ymm12,ymm10,YMMWORD[((160-128))+r9]
    216         vpaddq  ymm8,ymm8,ymm12
    217         vpmuludq        ymm14,ymm10,YMMWORD[((192-128))+r9]
    218         vpaddq  ymm0,ymm0,ymm14
    219         vpmuludq        ymm1,ymm10,YMMWORD[((224-128))+r9]
    220         vpbroadcastq    ymm10,QWORD[((128-128))+r15]
    221         vpaddq  ymm1,ymm1,YMMWORD[((320-448))+r12]
    222 
    223         vmovdqu YMMWORD[(128-192)+rbx],ymm4
    224         vmovdqu YMMWORD[(160-192)+rbx],ymm5
    225 
    226         vpmuludq        ymm12,ymm11,YMMWORD[((96-128))+rsi]
    227         vpaddq  ymm6,ymm6,ymm12
    228         vpmuludq        ymm14,ymm11,YMMWORD[((96-128))+r9]
    229         vpaddq  ymm7,ymm7,ymm14
    230         vpmuludq        ymm13,ymm11,YMMWORD[((128-128))+r9]
    231         vpaddq  ymm8,ymm8,ymm13
    232         vpmuludq        ymm12,ymm11,YMMWORD[((160-128))+r9]
    233         vpaddq  ymm0,ymm0,ymm12
    234         vpmuludq        ymm14,ymm11,YMMWORD[((192-128))+r9]
    235         vpaddq  ymm1,ymm1,ymm14
    236         vpmuludq        ymm2,ymm11,YMMWORD[((224-128))+r9]
    237         vpbroadcastq    ymm11,QWORD[((160-128))+r15]
    238         vpaddq  ymm2,ymm2,YMMWORD[((352-448))+r12]
    239 
    240         vmovdqu YMMWORD[(192-192)+rbx],ymm6
    241         vmovdqu YMMWORD[(224-192)+rbx],ymm7
    242 
    243         vpmuludq        ymm12,ymm10,YMMWORD[((128-128))+rsi]
    244         vpaddq  ymm8,ymm8,ymm12
    245         vpmuludq        ymm14,ymm10,YMMWORD[((128-128))+r9]
    246         vpaddq  ymm0,ymm0,ymm14
    247         vpmuludq        ymm13,ymm10,YMMWORD[((160-128))+r9]
    248         vpaddq  ymm1,ymm1,ymm13
    249         vpmuludq        ymm12,ymm10,YMMWORD[((192-128))+r9]
    250         vpaddq  ymm2,ymm2,ymm12
    251         vpmuludq        ymm3,ymm10,YMMWORD[((224-128))+r9]
    252         vpbroadcastq    ymm10,QWORD[((192-128))+r15]
    253         vpaddq  ymm3,ymm3,YMMWORD[((384-448))+r12]
    254 
    255         vmovdqu YMMWORD[(256-192)+rbx],ymm8
    256         vmovdqu YMMWORD[(288-192)+rbx],ymm0
    257         lea     rbx,[8+rbx]
    258 
    259         vpmuludq        ymm13,ymm11,YMMWORD[((160-128))+rsi]
    260         vpaddq  ymm1,ymm1,ymm13
    261         vpmuludq        ymm12,ymm11,YMMWORD[((160-128))+r9]
    262         vpaddq  ymm2,ymm2,ymm12
    263         vpmuludq        ymm14,ymm11,YMMWORD[((192-128))+r9]
    264         vpaddq  ymm3,ymm3,ymm14
    265         vpmuludq        ymm4,ymm11,YMMWORD[((224-128))+r9]
    266         vpbroadcastq    ymm11,QWORD[((224-128))+r15]
    267         vpaddq  ymm4,ymm4,YMMWORD[((416-448))+r12]
    268 
    269         vmovdqu YMMWORD[(320-448)+r12],ymm1
    270         vmovdqu YMMWORD[(352-448)+r12],ymm2
    271 
    272         vpmuludq        ymm12,ymm10,YMMWORD[((192-128))+rsi]
    273         vpaddq  ymm3,ymm3,ymm12
    274         vpmuludq        ymm14,ymm10,YMMWORD[((192-128))+r9]
    275         vpbroadcastq    ymm0,QWORD[((256-128))+r15]
    276         vpaddq  ymm4,ymm4,ymm14
    277         vpmuludq        ymm5,ymm10,YMMWORD[((224-128))+r9]
    278         vpbroadcastq    ymm10,QWORD[((0+8-128))+r15]
    279         vpaddq  ymm5,ymm5,YMMWORD[((448-448))+r12]
    280 
    281         vmovdqu YMMWORD[(384-448)+r12],ymm3
    282         vmovdqu YMMWORD[(416-448)+r12],ymm4
    283         lea     r15,[8+r15]
    284 
    285         vpmuludq        ymm12,ymm11,YMMWORD[((224-128))+rsi]
    286         vpaddq  ymm5,ymm5,ymm12
    287         vpmuludq        ymm6,ymm11,YMMWORD[((224-128))+r9]
    288         vpaddq  ymm6,ymm6,YMMWORD[((480-448))+r12]
    289 
    290         vpmuludq        ymm7,ymm0,YMMWORD[((256-128))+rsi]
    291         vmovdqu YMMWORD[(448-448)+r12],ymm5
    292         vpaddq  ymm7,ymm7,YMMWORD[((512-448))+r12]
    293         vmovdqu YMMWORD[(480-448)+r12],ymm6
    294         vmovdqu YMMWORD[(512-448)+r12],ymm7
    295         lea     r12,[8+r12]
    296 
    297         dec     r14d
    298         jnz     NEAR $L$OOP_SQR_1024
    299 
    300         vmovdqu ymm8,YMMWORD[256+rsp]
    301         vmovdqu ymm1,YMMWORD[288+rsp]
    302         vmovdqu ymm2,YMMWORD[320+rsp]
    303         lea     rbx,[192+rsp]
    304 
    305         vpsrlq  ymm14,ymm8,29
    306         vpand   ymm8,ymm8,ymm15
    307         vpsrlq  ymm11,ymm1,29
    308         vpand   ymm1,ymm1,ymm15
    309 
    310         vpermq  ymm14,ymm14,0x93
    311         vpxor   ymm9,ymm9,ymm9
    312         vpermq  ymm11,ymm11,0x93
    313 
    314         vpblendd        ymm10,ymm14,ymm9,3
    315         vpblendd        ymm14,ymm11,ymm14,3
    316         vpaddq  ymm8,ymm8,ymm10
    317         vpblendd        ymm11,ymm9,ymm11,3
    318         vpaddq  ymm1,ymm1,ymm14
    319         vpaddq  ymm2,ymm2,ymm11
    320         vmovdqu YMMWORD[(288-192)+rbx],ymm1
    321         vmovdqu YMMWORD[(320-192)+rbx],ymm2
    322 
    323         mov     rax,QWORD[rsp]
    324         mov     r10,QWORD[8+rsp]
    325         mov     r11,QWORD[16+rsp]
    326         mov     r12,QWORD[24+rsp]
    327         vmovdqu ymm1,YMMWORD[32+rsp]
    328         vmovdqu ymm2,YMMWORD[((64-192))+rbx]
    329         vmovdqu ymm3,YMMWORD[((96-192))+rbx]
    330         vmovdqu ymm4,YMMWORD[((128-192))+rbx]
    331         vmovdqu ymm5,YMMWORD[((160-192))+rbx]
    332         vmovdqu ymm6,YMMWORD[((192-192))+rbx]
    333         vmovdqu ymm7,YMMWORD[((224-192))+rbx]
    334 
    335         mov     r9,rax
    336         imul    eax,ecx
    337         and     eax,0x1fffffff
    338         vmovd   xmm12,eax
    339 
    340         mov     rdx,rax
    341         imul    rax,QWORD[((-128))+r13]
    342         vpbroadcastq    ymm12,xmm12
    343         add     r9,rax
    344         mov     rax,rdx
    345         imul    rax,QWORD[((8-128))+r13]
    346         shr     r9,29
    347         add     r10,rax
    348         mov     rax,rdx
    349         imul    rax,QWORD[((16-128))+r13]
    350         add     r10,r9
    351         add     r11,rax
    352         imul    rdx,QWORD[((24-128))+r13]
    353         add     r12,rdx
    354 
    355         mov     rax,r10
    356         imul    eax,ecx
    357         and     eax,0x1fffffff
    358 
    359         mov     r14d,9
    360         jmp     NEAR $L$OOP_REDUCE_1024
    361 
    362 ALIGN   32
    363 $L$OOP_REDUCE_1024:
    364         vmovd   xmm13,eax
    365         vpbroadcastq    ymm13,xmm13
    366 
    367         vpmuludq        ymm10,ymm12,YMMWORD[((32-128))+r13]
    368         mov     rdx,rax
    369         imul    rax,QWORD[((-128))+r13]
    370         vpaddq  ymm1,ymm1,ymm10
    371         add     r10,rax
    372         vpmuludq        ymm14,ymm12,YMMWORD[((64-128))+r13]
    373         mov     rax,rdx
    374         imul    rax,QWORD[((8-128))+r13]
    375         vpaddq  ymm2,ymm2,ymm14
    376         vpmuludq        ymm11,ymm12,YMMWORD[((96-128))+r13]
    377 DB      0x67
    378         add     r11,rax
    379 DB      0x67
    380         mov     rax,rdx
    381         imul    rax,QWORD[((16-128))+r13]
    382         shr     r10,29
    383         vpaddq  ymm3,ymm3,ymm11
    384         vpmuludq        ymm10,ymm12,YMMWORD[((128-128))+r13]
    385         add     r12,rax
    386         add     r11,r10
    387         vpaddq  ymm4,ymm4,ymm10
    388         vpmuludq        ymm14,ymm12,YMMWORD[((160-128))+r13]
    389         mov     rax,r11
    390         imul    eax,ecx
    391         vpaddq  ymm5,ymm5,ymm14
    392         vpmuludq        ymm11,ymm12,YMMWORD[((192-128))+r13]
    393         and     eax,0x1fffffff
    394         vpaddq  ymm6,ymm6,ymm11
    395         vpmuludq        ymm10,ymm12,YMMWORD[((224-128))+r13]
    396         vpaddq  ymm7,ymm7,ymm10
    397         vpmuludq        ymm14,ymm12,YMMWORD[((256-128))+r13]
    398         vmovd   xmm12,eax
    399 
    400         vpaddq  ymm8,ymm8,ymm14
    401 
    402         vpbroadcastq    ymm12,xmm12
    403 
    404         vpmuludq        ymm11,ymm13,YMMWORD[((32-8-128))+r13]
    405         vmovdqu ymm14,YMMWORD[((96-8-128))+r13]
    406         mov     rdx,rax
    407         imul    rax,QWORD[((-128))+r13]
    408         vpaddq  ymm1,ymm1,ymm11
    409         vpmuludq        ymm10,ymm13,YMMWORD[((64-8-128))+r13]
    410         vmovdqu ymm11,YMMWORD[((128-8-128))+r13]
    411         add     r11,rax
    412         mov     rax,rdx
    413         imul    rax,QWORD[((8-128))+r13]
    414         vpaddq  ymm2,ymm2,ymm10
    415         add     rax,r12
    416         shr     r11,29
    417         vpmuludq        ymm14,ymm14,ymm13
    418         vmovdqu ymm10,YMMWORD[((160-8-128))+r13]
    419         add     rax,r11
    420         vpaddq  ymm3,ymm3,ymm14
    421         vpmuludq        ymm11,ymm11,ymm13
    422         vmovdqu ymm14,YMMWORD[((192-8-128))+r13]
    423 DB      0x67
    424         mov     r12,rax
    425         imul    eax,ecx
    426         vpaddq  ymm4,ymm4,ymm11
    427         vpmuludq        ymm10,ymm10,ymm13
    428 DB      0xc4,0x41,0x7e,0x6f,0x9d,0x58,0x00,0x00,0x00
    429         and     eax,0x1fffffff
    430         vpaddq  ymm5,ymm5,ymm10
    431         vpmuludq        ymm14,ymm14,ymm13
    432         vmovdqu ymm10,YMMWORD[((256-8-128))+r13]
    433         vpaddq  ymm6,ymm6,ymm14
    434         vpmuludq        ymm11,ymm11,ymm13
    435         vmovdqu ymm9,YMMWORD[((288-8-128))+r13]
    436         vmovd   xmm0,eax
    437         imul    rax,QWORD[((-128))+r13]
    438         vpaddq  ymm7,ymm7,ymm11
    439         vpmuludq        ymm10,ymm10,ymm13
    440         vmovdqu ymm14,YMMWORD[((32-16-128))+r13]
    441         vpbroadcastq    ymm0,xmm0
    442         vpaddq  ymm8,ymm8,ymm10
    443         vpmuludq        ymm9,ymm9,ymm13
    444         vmovdqu ymm11,YMMWORD[((64-16-128))+r13]
    445         add     r12,rax
    446 
    447         vmovdqu ymm13,YMMWORD[((32-24-128))+r13]
    448         vpmuludq        ymm14,ymm14,ymm12
    449         vmovdqu ymm10,YMMWORD[((96-16-128))+r13]
    450         vpaddq  ymm1,ymm1,ymm14
    451         vpmuludq        ymm13,ymm13,ymm0
    452         vpmuludq        ymm11,ymm11,ymm12
    453 DB      0xc4,0x41,0x7e,0x6f,0xb5,0xf0,0xff,0xff,0xff
    454         vpaddq  ymm13,ymm13,ymm1
    455         vpaddq  ymm2,ymm2,ymm11
    456         vpmuludq        ymm10,ymm10,ymm12
    457         vmovdqu ymm11,YMMWORD[((160-16-128))+r13]
    458 DB      0x67
    459         vmovq   rax,xmm13
    460         vmovdqu YMMWORD[rsp],ymm13
    461         vpaddq  ymm3,ymm3,ymm10
    462         vpmuludq        ymm14,ymm14,ymm12
    463         vmovdqu ymm10,YMMWORD[((192-16-128))+r13]
    464         vpaddq  ymm4,ymm4,ymm14
    465         vpmuludq        ymm11,ymm11,ymm12
    466         vmovdqu ymm14,YMMWORD[((224-16-128))+r13]
    467         vpaddq  ymm5,ymm5,ymm11
    468         vpmuludq        ymm10,ymm10,ymm12
    469         vmovdqu ymm11,YMMWORD[((256-16-128))+r13]
    470         vpaddq  ymm6,ymm6,ymm10
    471         vpmuludq        ymm14,ymm14,ymm12
    472         shr     r12,29
    473         vmovdqu ymm10,YMMWORD[((288-16-128))+r13]
    474         add     rax,r12
    475         vpaddq  ymm7,ymm7,ymm14
    476         vpmuludq        ymm11,ymm11,ymm12
    477 
    478         mov     r9,rax
    479         imul    eax,ecx
    480         vpaddq  ymm8,ymm8,ymm11
    481         vpmuludq        ymm10,ymm10,ymm12
    482         and     eax,0x1fffffff
    483         vmovd   xmm12,eax
    484         vmovdqu ymm11,YMMWORD[((96-24-128))+r13]
    485 DB      0x67
    486         vpaddq  ymm9,ymm9,ymm10
    487         vpbroadcastq    ymm12,xmm12
    488 
    489         vpmuludq        ymm14,ymm0,YMMWORD[((64-24-128))+r13]
    490         vmovdqu ymm10,YMMWORD[((128-24-128))+r13]
    491         mov     rdx,rax
    492         imul    rax,QWORD[((-128))+r13]
    493         mov     r10,QWORD[8+rsp]
    494         vpaddq  ymm1,ymm2,ymm14
    495         vpmuludq        ymm11,ymm11,ymm0
    496         vmovdqu ymm14,YMMWORD[((160-24-128))+r13]
    497         add     r9,rax
    498         mov     rax,rdx
    499         imul    rax,QWORD[((8-128))+r13]
    500 DB      0x67
    501         shr     r9,29
    502         mov     r11,QWORD[16+rsp]
    503         vpaddq  ymm2,ymm3,ymm11
    504         vpmuludq        ymm10,ymm10,ymm0
    505         vmovdqu ymm11,YMMWORD[((192-24-128))+r13]
    506         add     r10,rax
    507         mov     rax,rdx
    508         imul    rax,QWORD[((16-128))+r13]
    509         vpaddq  ymm3,ymm4,ymm10
    510         vpmuludq        ymm14,ymm14,ymm0
    511         vmovdqu ymm10,YMMWORD[((224-24-128))+r13]
    512         imul    rdx,QWORD[((24-128))+r13]
    513         add     r11,rax
    514         lea     rax,[r10*1+r9]
    515         vpaddq  ymm4,ymm5,ymm14
    516         vpmuludq        ymm11,ymm11,ymm0
    517         vmovdqu ymm14,YMMWORD[((256-24-128))+r13]
    518         mov     r10,rax
    519         imul    eax,ecx
    520         vpmuludq        ymm10,ymm10,ymm0
    521         vpaddq  ymm5,ymm6,ymm11
    522         vmovdqu ymm11,YMMWORD[((288-24-128))+r13]
    523         and     eax,0x1fffffff
    524         vpaddq  ymm6,ymm7,ymm10
    525         vpmuludq        ymm14,ymm14,ymm0
    526         add     rdx,QWORD[24+rsp]
    527         vpaddq  ymm7,ymm8,ymm14
    528         vpmuludq        ymm11,ymm11,ymm0
    529         vpaddq  ymm8,ymm9,ymm11
    530         vmovq   xmm9,r12
    531         mov     r12,rdx
    532 
    533         dec     r14d
    534         jnz     NEAR $L$OOP_REDUCE_1024
    535         lea     r12,[448+rsp]
    536         vpaddq  ymm0,ymm13,ymm9
    537         vpxor   ymm9,ymm9,ymm9
    538 
    539         vpaddq  ymm0,ymm0,YMMWORD[((288-192))+rbx]
    540         vpaddq  ymm1,ymm1,YMMWORD[((320-448))+r12]
    541         vpaddq  ymm2,ymm2,YMMWORD[((352-448))+r12]
    542         vpaddq  ymm3,ymm3,YMMWORD[((384-448))+r12]
    543         vpaddq  ymm4,ymm4,YMMWORD[((416-448))+r12]
    544         vpaddq  ymm5,ymm5,YMMWORD[((448-448))+r12]
    545         vpaddq  ymm6,ymm6,YMMWORD[((480-448))+r12]
    546         vpaddq  ymm7,ymm7,YMMWORD[((512-448))+r12]
    547         vpaddq  ymm8,ymm8,YMMWORD[((544-448))+r12]
    548 
    549         vpsrlq  ymm14,ymm0,29
    550         vpand   ymm0,ymm0,ymm15
    551         vpsrlq  ymm11,ymm1,29
    552         vpand   ymm1,ymm1,ymm15
    553         vpsrlq  ymm12,ymm2,29
    554         vpermq  ymm14,ymm14,0x93
    555         vpand   ymm2,ymm2,ymm15
    556         vpsrlq  ymm13,ymm3,29
    557         vpermq  ymm11,ymm11,0x93
    558         vpand   ymm3,ymm3,ymm15
    559         vpermq  ymm12,ymm12,0x93
    560 
    561         vpblendd        ymm10,ymm14,ymm9,3
    562         vpermq  ymm13,ymm13,0x93
    563         vpblendd        ymm14,ymm11,ymm14,3
    564         vpaddq  ymm0,ymm0,ymm10
    565         vpblendd        ymm11,ymm12,ymm11,3
    566         vpaddq  ymm1,ymm1,ymm14
    567         vpblendd        ymm12,ymm13,ymm12,3
    568         vpaddq  ymm2,ymm2,ymm11
    569         vpblendd        ymm13,ymm9,ymm13,3
    570         vpaddq  ymm3,ymm3,ymm12
    571         vpaddq  ymm4,ymm4,ymm13
    572 
    573         vpsrlq  ymm14,ymm0,29
    574         vpand   ymm0,ymm0,ymm15
    575         vpsrlq  ymm11,ymm1,29
    576         vpand   ymm1,ymm1,ymm15
    577         vpsrlq  ymm12,ymm2,29
    578         vpermq  ymm14,ymm14,0x93
    579         vpand   ymm2,ymm2,ymm15
    580         vpsrlq  ymm13,ymm3,29
    581         vpermq  ymm11,ymm11,0x93
    582         vpand   ymm3,ymm3,ymm15
    583         vpermq  ymm12,ymm12,0x93
    584 
    585         vpblendd        ymm10,ymm14,ymm9,3
    586         vpermq  ymm13,ymm13,0x93
    587         vpblendd        ymm14,ymm11,ymm14,3
    588         vpaddq  ymm0,ymm0,ymm10
    589         vpblendd        ymm11,ymm12,ymm11,3
    590         vpaddq  ymm1,ymm1,ymm14
    591         vmovdqu YMMWORD[(0-128)+rdi],ymm0
    592         vpblendd        ymm12,ymm13,ymm12,3
    593         vpaddq  ymm2,ymm2,ymm11
    594         vmovdqu YMMWORD[(32-128)+rdi],ymm1
    595         vpblendd        ymm13,ymm9,ymm13,3
    596         vpaddq  ymm3,ymm3,ymm12
    597         vmovdqu YMMWORD[(64-128)+rdi],ymm2
    598         vpaddq  ymm4,ymm4,ymm13
    599         vmovdqu YMMWORD[(96-128)+rdi],ymm3
    600         vpsrlq  ymm14,ymm4,29
    601         vpand   ymm4,ymm4,ymm15
    602         vpsrlq  ymm11,ymm5,29
    603         vpand   ymm5,ymm5,ymm15
    604         vpsrlq  ymm12,ymm6,29
    605         vpermq  ymm14,ymm14,0x93
    606         vpand   ymm6,ymm6,ymm15
    607         vpsrlq  ymm13,ymm7,29
    608         vpermq  ymm11,ymm11,0x93
    609         vpand   ymm7,ymm7,ymm15
    610         vpsrlq  ymm0,ymm8,29
    611         vpermq  ymm12,ymm12,0x93
    612         vpand   ymm8,ymm8,ymm15
    613         vpermq  ymm13,ymm13,0x93
    614 
    615         vpblendd        ymm10,ymm14,ymm9,3
    616         vpermq  ymm0,ymm0,0x93
    617         vpblendd        ymm14,ymm11,ymm14,3
    618         vpaddq  ymm4,ymm4,ymm10
    619         vpblendd        ymm11,ymm12,ymm11,3
    620         vpaddq  ymm5,ymm5,ymm14
    621         vpblendd        ymm12,ymm13,ymm12,3
    622         vpaddq  ymm6,ymm6,ymm11
    623         vpblendd        ymm13,ymm0,ymm13,3
    624         vpaddq  ymm7,ymm7,ymm12
    625         vpaddq  ymm8,ymm8,ymm13
    626 
    627         vpsrlq  ymm14,ymm4,29
    628         vpand   ymm4,ymm4,ymm15
    629         vpsrlq  ymm11,ymm5,29
    630         vpand   ymm5,ymm5,ymm15
    631         vpsrlq  ymm12,ymm6,29
    632         vpermq  ymm14,ymm14,0x93
    633         vpand   ymm6,ymm6,ymm15
    634         vpsrlq  ymm13,ymm7,29
    635         vpermq  ymm11,ymm11,0x93
    636         vpand   ymm7,ymm7,ymm15
    637         vpsrlq  ymm0,ymm8,29
    638         vpermq  ymm12,ymm12,0x93
    639         vpand   ymm8,ymm8,ymm15
    640         vpermq  ymm13,ymm13,0x93
    641 
    642         vpblendd        ymm10,ymm14,ymm9,3
    643         vpermq  ymm0,ymm0,0x93
    644         vpblendd        ymm14,ymm11,ymm14,3
    645         vpaddq  ymm4,ymm4,ymm10
    646         vpblendd        ymm11,ymm12,ymm11,3
    647         vpaddq  ymm5,ymm5,ymm14
    648         vmovdqu YMMWORD[(128-128)+rdi],ymm4
    649         vpblendd        ymm12,ymm13,ymm12,3
    650         vpaddq  ymm6,ymm6,ymm11
    651         vmovdqu YMMWORD[(160-128)+rdi],ymm5
    652         vpblendd        ymm13,ymm0,ymm13,3
    653         vpaddq  ymm7,ymm7,ymm12
    654         vmovdqu YMMWORD[(192-128)+rdi],ymm6
    655         vpaddq  ymm8,ymm8,ymm13
    656         vmovdqu YMMWORD[(224-128)+rdi],ymm7
    657         vmovdqu YMMWORD[(256-128)+rdi],ymm8
    658 
    659         mov     rsi,rdi
    660         dec     r8d
    661         jne     NEAR $L$OOP_GRANDE_SQR_1024
    662 
    663         vzeroall
    664         mov     rax,rbp
    665 
    666 $L$sqr_1024_in_tail:
    667         movaps  xmm6,XMMWORD[((-216))+rax]
    668         movaps  xmm7,XMMWORD[((-200))+rax]
    669         movaps  xmm8,XMMWORD[((-184))+rax]
    670         movaps  xmm9,XMMWORD[((-168))+rax]
    671         movaps  xmm10,XMMWORD[((-152))+rax]
    672         movaps  xmm11,XMMWORD[((-136))+rax]
    673         movaps  xmm12,XMMWORD[((-120))+rax]
    674         movaps  xmm13,XMMWORD[((-104))+rax]
    675         movaps  xmm14,XMMWORD[((-88))+rax]
    676         movaps  xmm15,XMMWORD[((-72))+rax]
    677         mov     r15,QWORD[((-48))+rax]
    678 
    679         mov     r14,QWORD[((-40))+rax]
    680 
    681         mov     r13,QWORD[((-32))+rax]
    682 
    683         mov     r12,QWORD[((-24))+rax]
    684 
    685         mov     rbp,QWORD[((-16))+rax]
    686 
    687         mov     rbx,QWORD[((-8))+rax]
    688 
    689         lea     rsp,[rax]
    690 
    691 $L$sqr_1024_epilogue:
    692         mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
    693         mov     rsi,QWORD[16+rsp]
    694         DB      0F3h,0C3h               ;repret
    695 
    696 $L$SEH_end_rsaz_1024_sqr_avx2:
    697 global  rsaz_1024_mul_avx2
    698 
    699 ALIGN   64
    700 rsaz_1024_mul_avx2:
    701         mov     QWORD[8+rsp],rdi        ;WIN64 prologue
    702         mov     QWORD[16+rsp],rsi
    703         mov     rax,rsp
    704 $L$SEH_begin_rsaz_1024_mul_avx2:
    705         mov     rdi,rcx
    706         mov     rsi,rdx
    707         mov     rdx,r8
    708         mov     rcx,r9
    709         mov     r8,QWORD[40+rsp]
    710 
    711 
    712 
    713         lea     rax,[rsp]
    714 
    715         push    rbx
    716 
    717         push    rbp
    718 
    719         push    r12
    720 
    721         push    r13
    722 
    723         push    r14
    724 
    725         push    r15
    726 
    727         vzeroupper
    728         lea     rsp,[((-168))+rsp]
    729         vmovaps XMMWORD[(-216)+rax],xmm6
    730         vmovaps XMMWORD[(-200)+rax],xmm7
    731         vmovaps XMMWORD[(-184)+rax],xmm8
    732         vmovaps XMMWORD[(-168)+rax],xmm9
    733         vmovaps XMMWORD[(-152)+rax],xmm10
    734         vmovaps XMMWORD[(-136)+rax],xmm11
    735         vmovaps XMMWORD[(-120)+rax],xmm12
    736         vmovaps XMMWORD[(-104)+rax],xmm13
    737         vmovaps XMMWORD[(-88)+rax],xmm14
    738         vmovaps XMMWORD[(-72)+rax],xmm15
    739 $L$mul_1024_body:
    740         mov     rbp,rax
    741 
    742         vzeroall
    743         mov     r13,rdx
    744         sub     rsp,64
    745 
    746 
    747 
    748 
    749 
    750 
    751 DB      0x67,0x67
    752         mov     r15,rsi
    753         and     r15,4095
    754         add     r15,32*10
    755         shr     r15,12
    756         mov     r15,rsi
    757         cmovnz  rsi,r13
    758         cmovnz  r13,r15
    759 
    760         mov     r15,rcx
    761         sub     rsi,-128
    762         sub     rcx,-128
    763         sub     rdi,-128
    764 
    765         and     r15,4095
    766         add     r15,32*10
    767 DB      0x67,0x67
    768         shr     r15,12
    769         jz      NEAR $L$mul_1024_no_n_copy
    770 
    771 
    772 
    773 
    774 
    775         sub     rsp,32*10
    776         vmovdqu ymm0,YMMWORD[((0-128))+rcx]
    777         and     rsp,-512
    778         vmovdqu ymm1,YMMWORD[((32-128))+rcx]
    779         vmovdqu ymm2,YMMWORD[((64-128))+rcx]
    780         vmovdqu ymm3,YMMWORD[((96-128))+rcx]
    781         vmovdqu ymm4,YMMWORD[((128-128))+rcx]
    782         vmovdqu ymm5,YMMWORD[((160-128))+rcx]
    783         vmovdqu ymm6,YMMWORD[((192-128))+rcx]
    784         vmovdqu ymm7,YMMWORD[((224-128))+rcx]
    785         vmovdqu ymm8,YMMWORD[((256-128))+rcx]
    786         lea     rcx,[((64+128))+rsp]
    787         vmovdqu YMMWORD[(0-128)+rcx],ymm0
    788         vpxor   ymm0,ymm0,ymm0
    789         vmovdqu YMMWORD[(32-128)+rcx],ymm1
    790         vpxor   ymm1,ymm1,ymm1
    791         vmovdqu YMMWORD[(64-128)+rcx],ymm2
    792         vpxor   ymm2,ymm2,ymm2
    793         vmovdqu YMMWORD[(96-128)+rcx],ymm3
    794         vpxor   ymm3,ymm3,ymm3
    795         vmovdqu YMMWORD[(128-128)+rcx],ymm4
    796         vpxor   ymm4,ymm4,ymm4
    797         vmovdqu YMMWORD[(160-128)+rcx],ymm5
    798         vpxor   ymm5,ymm5,ymm5
    799         vmovdqu YMMWORD[(192-128)+rcx],ymm6
    800         vpxor   ymm6,ymm6,ymm6
    801         vmovdqu YMMWORD[(224-128)+rcx],ymm7
    802         vpxor   ymm7,ymm7,ymm7
    803         vmovdqu YMMWORD[(256-128)+rcx],ymm8
    804         vmovdqa ymm8,ymm0
    805         vmovdqu YMMWORD[(288-128)+rcx],ymm9
    806 $L$mul_1024_no_n_copy:
    807         and     rsp,-64
    808 
    809         mov     rbx,QWORD[r13]
    810         vpbroadcastq    ymm10,QWORD[r13]
    811         vmovdqu YMMWORD[rsp],ymm0
    812         xor     r9,r9
    813 DB      0x67
    814         xor     r10,r10
    815         xor     r11,r11
    816         xor     r12,r12
    817 
    818         vmovdqu ymm15,YMMWORD[$L$and_mask]
    819         mov     r14d,9
    820         vmovdqu YMMWORD[(288-128)+rdi],ymm9
    821         jmp     NEAR $L$oop_mul_1024
    822 
    823 ALIGN   32
    824 $L$oop_mul_1024:
    825         vpsrlq  ymm9,ymm3,29
    826         mov     rax,rbx
    827         imul    rax,QWORD[((-128))+rsi]
    828         add     rax,r9
    829         mov     r10,rbx
    830         imul    r10,QWORD[((8-128))+rsi]
    831         add     r10,QWORD[8+rsp]
    832 
    833         mov     r9,rax
    834         imul    eax,r8d
    835         and     eax,0x1fffffff
    836 
    837         mov     r11,rbx
    838         imul    r11,QWORD[((16-128))+rsi]
    839         add     r11,QWORD[16+rsp]
    840 
    841         mov     r12,rbx
    842         imul    r12,QWORD[((24-128))+rsi]
    843         add     r12,QWORD[24+rsp]
    844         vpmuludq        ymm0,ymm10,YMMWORD[((32-128))+rsi]
    845         vmovd   xmm11,eax
    846         vpaddq  ymm1,ymm1,ymm0
    847         vpmuludq        ymm12,ymm10,YMMWORD[((64-128))+rsi]
    848         vpbroadcastq    ymm11,xmm11
    849         vpaddq  ymm2,ymm2,ymm12
    850         vpmuludq        ymm13,ymm10,YMMWORD[((96-128))+rsi]
    851         vpand   ymm3,ymm3,ymm15
    852         vpaddq  ymm3,ymm3,ymm13
    853         vpmuludq        ymm0,ymm10,YMMWORD[((128-128))+rsi]
    854         vpaddq  ymm4,ymm4,ymm0
    855         vpmuludq        ymm12,ymm10,YMMWORD[((160-128))+rsi]
    856         vpaddq  ymm5,ymm5,ymm12
    857         vpmuludq        ymm13,ymm10,YMMWORD[((192-128))+rsi]
    858         vpaddq  ymm6,ymm6,ymm13
    859         vpmuludq        ymm0,ymm10,YMMWORD[((224-128))+rsi]
    860         vpermq  ymm9,ymm9,0x93
    861         vpaddq  ymm7,ymm7,ymm0
    862         vpmuludq        ymm12,ymm10,YMMWORD[((256-128))+rsi]
    863         vpbroadcastq    ymm10,QWORD[8+r13]
    864         vpaddq  ymm8,ymm8,ymm12
    865 
    866         mov     rdx,rax
    867         imul    rax,QWORD[((-128))+rcx]
    868         add     r9,rax
    869         mov     rax,rdx
    870         imul    rax,QWORD[((8-128))+rcx]
    871         add     r10,rax
    872         mov     rax,rdx
    873         imul    rax,QWORD[((16-128))+rcx]
    874         add     r11,rax
    875         shr     r9,29
    876         imul    rdx,QWORD[((24-128))+rcx]
    877         add     r12,rdx
    878         add     r10,r9
    879 
    880         vpmuludq        ymm13,ymm11,YMMWORD[((32-128))+rcx]
    881         vmovq   rbx,xmm10
    882         vpaddq  ymm1,ymm1,ymm13
    883         vpmuludq        ymm0,ymm11,YMMWORD[((64-128))+rcx]
    884         vpaddq  ymm2,ymm2,ymm0
    885         vpmuludq        ymm12,ymm11,YMMWORD[((96-128))+rcx]
    886         vpaddq  ymm3,ymm3,ymm12
    887         vpmuludq        ymm13,ymm11,YMMWORD[((128-128))+rcx]
    888         vpaddq  ymm4,ymm4,ymm13
    889         vpmuludq        ymm0,ymm11,YMMWORD[((160-128))+rcx]
    890         vpaddq  ymm5,ymm5,ymm0
    891         vpmuludq        ymm12,ymm11,YMMWORD[((192-128))+rcx]
    892         vpaddq  ymm6,ymm6,ymm12
    893         vpmuludq        ymm13,ymm11,YMMWORD[((224-128))+rcx]
    894         vpblendd        ymm12,ymm9,ymm14,3
    895         vpaddq  ymm7,ymm7,ymm13
    896         vpmuludq        ymm0,ymm11,YMMWORD[((256-128))+rcx]
    897         vpaddq  ymm3,ymm3,ymm12
    898         vpaddq  ymm8,ymm8,ymm0
    899 
    900         mov     rax,rbx
    901         imul    rax,QWORD[((-128))+rsi]
    902         add     r10,rax
    903         vmovdqu ymm12,YMMWORD[((-8+32-128))+rsi]
    904         mov     rax,rbx
    905         imul    rax,QWORD[((8-128))+rsi]
    906         add     r11,rax
    907         vmovdqu ymm13,YMMWORD[((-8+64-128))+rsi]
    908 
    909         mov     rax,r10
    910         vpblendd        ymm9,ymm9,ymm14,0xfc
    911         imul    eax,r8d
    912         vpaddq  ymm4,ymm4,ymm9
    913         and     eax,0x1fffffff
    914 
    915         imul    rbx,QWORD[((16-128))+rsi]
    916         add     r12,rbx
    917         vpmuludq        ymm12,ymm12,ymm10
    918         vmovd   xmm11,eax
    919         vmovdqu ymm0,YMMWORD[((-8+96-128))+rsi]
    920         vpaddq  ymm1,ymm1,ymm12
    921         vpmuludq        ymm13,ymm13,ymm10
    922         vpbroadcastq    ymm11,xmm11
    923         vmovdqu ymm12,YMMWORD[((-8+128-128))+rsi]
    924         vpaddq  ymm2,ymm2,ymm13
    925         vpmuludq        ymm0,ymm0,ymm10
    926         vmovdqu ymm13,YMMWORD[((-8+160-128))+rsi]
    927         vpaddq  ymm3,ymm3,ymm0
    928         vpmuludq        ymm12,ymm12,ymm10
    929         vmovdqu ymm0,YMMWORD[((-8+192-128))+rsi]
    930         vpaddq  ymm4,ymm4,ymm12
    931         vpmuludq        ymm13,ymm13,ymm10
    932         vmovdqu ymm12,YMMWORD[((-8+224-128))+rsi]
    933         vpaddq  ymm5,ymm5,ymm13
    934         vpmuludq        ymm0,ymm0,ymm10
    935         vmovdqu ymm13,YMMWORD[((-8+256-128))+rsi]
    936         vpaddq  ymm6,ymm6,ymm0
    937         vpmuludq        ymm12,ymm12,ymm10
    938         vmovdqu ymm9,YMMWORD[((-8+288-128))+rsi]
    939         vpaddq  ymm7,ymm7,ymm12
    940         vpmuludq        ymm13,ymm13,ymm10
    941         vpaddq  ymm8,ymm8,ymm13
    942         vpmuludq        ymm9,ymm9,ymm10
    943         vpbroadcastq    ymm10,QWORD[16+r13]
    944 
    945         mov     rdx,rax
    946         imul    rax,QWORD[((-128))+rcx]
    947         add     r10,rax
    948         vmovdqu ymm0,YMMWORD[((-8+32-128))+rcx]
    949         mov     rax,rdx
    950         imul    rax,QWORD[((8-128))+rcx]
    951         add     r11,rax
    952         vmovdqu ymm12,YMMWORD[((-8+64-128))+rcx]
    953         shr     r10,29
    954         imul    rdx,QWORD[((16-128))+rcx]
    955         add     r12,rdx
    956         add     r11,r10
    957 
    958         vpmuludq        ymm0,ymm0,ymm11
    959         vmovq   rbx,xmm10
    960         vmovdqu ymm13,YMMWORD[((-8+96-128))+rcx]
    961         vpaddq  ymm1,ymm1,ymm0
    962         vpmuludq        ymm12,ymm12,ymm11
    963         vmovdqu ymm0,YMMWORD[((-8+128-128))+rcx]
    964         vpaddq  ymm2,ymm2,ymm12
    965         vpmuludq        ymm13,ymm13,ymm11
    966         vmovdqu ymm12,YMMWORD[((-8+160-128))+rcx]
    967         vpaddq  ymm3,ymm3,ymm13
    968         vpmuludq        ymm0,ymm0,ymm11
    969         vmovdqu ymm13,YMMWORD[((-8+192-128))+rcx]
    970         vpaddq  ymm4,ymm4,ymm0
    971         vpmuludq        ymm12,ymm12,ymm11
    972         vmovdqu ymm0,YMMWORD[((-8+224-128))+rcx]
    973         vpaddq  ymm5,ymm5,ymm12
    974         vpmuludq        ymm13,ymm13,ymm11
    975         vmovdqu ymm12,YMMWORD[((-8+256-128))+rcx]
    976         vpaddq  ymm6,ymm6,ymm13
    977         vpmuludq        ymm0,ymm0,ymm11
    978         vmovdqu ymm13,YMMWORD[((-8+288-128))+rcx]
    979         vpaddq  ymm7,ymm7,ymm0
    980         vpmuludq        ymm12,ymm12,ymm11
    981         vpaddq  ymm8,ymm8,ymm12
    982         vpmuludq        ymm13,ymm13,ymm11
    983         vpaddq  ymm9,ymm9,ymm13
    984 
    985         vmovdqu ymm0,YMMWORD[((-16+32-128))+rsi]
    986         mov     rax,rbx
    987         imul    rax,QWORD[((-128))+rsi]
    988         add     rax,r11
    989 
    990         vmovdqu ymm12,YMMWORD[((-16+64-128))+rsi]
    991         mov     r11,rax
    992         imul    eax,r8d
    993         and     eax,0x1fffffff
    994 
    995         imul    rbx,QWORD[((8-128))+rsi]
    996         add     r12,rbx
    997         vpmuludq        ymm0,ymm0,ymm10
    998         vmovd   xmm11,eax
    999         vmovdqu ymm13,YMMWORD[((-16+96-128))+rsi]
    1000         vpaddq  ymm1,ymm1,ymm0
    1001         vpmuludq        ymm12,ymm12,ymm10
    1002         vpbroadcastq    ymm11,xmm11
    1003         vmovdqu ymm0,YMMWORD[((-16+128-128))+rsi]
    1004         vpaddq  ymm2,ymm2,ymm12
    1005         vpmuludq        ymm13,ymm13,ymm10
    1006         vmovdqu ymm12,YMMWORD[((-16+160-128))+rsi]
    1007         vpaddq  ymm3,ymm3,ymm13
    1008         vpmuludq        ymm0,ymm0,ymm10
    1009         vmovdqu ymm13,YMMWORD[((-16+192-128))+rsi]
    1010         vpaddq  ymm4,ymm4,ymm0
    1011         vpmuludq        ymm12,ymm12,ymm10
    1012         vmovdqu ymm0,YMMWORD[((-16+224-128))+rsi]
    1013         vpaddq  ymm5,ymm5,ymm12
    1014         vpmuludq        ymm13,ymm13,ymm10
    1015         vmovdqu ymm12,YMMWORD[((-16+256-128))+rsi]
    1016         vpaddq  ymm6,ymm6,ymm13
    1017         vpmuludq        ymm0,ymm0,ymm10
    1018         vmovdqu ymm13,YMMWORD[((-16+288-128))+rsi]
    1019         vpaddq  ymm7,ymm7,ymm0
    1020         vpmuludq        ymm12,ymm12,ymm10
    1021         vpaddq  ymm8,ymm8,ymm12
    1022         vpmuludq        ymm13,ymm13,ymm10
    1023         vpbroadcastq    ymm10,QWORD[24+r13]
    1024         vpaddq  ymm9,ymm9,ymm13
    1025 
    1026         vmovdqu ymm0,YMMWORD[((-16+32-128))+rcx]
    1027         mov     rdx,rax
    1028         imul    rax,QWORD[((-128))+rcx]
    1029         add     r11,rax
    1030         vmovdqu ymm12,YMMWORD[((-16+64-128))+rcx]
    1031         imul    rdx,QWORD[((8-128))+rcx]
    1032         add     r12,rdx
    1033         shr     r11,29
    1034 
    1035         vpmuludq        ymm0,ymm0,ymm11
    1036         vmovq   rbx,xmm10
    1037         vmovdqu ymm13,YMMWORD[((-16+96-128))+rcx]
    1038         vpaddq  ymm1,ymm1,ymm0
    1039         vpmuludq        ymm12,ymm12,ymm11
    1040         vmovdqu ymm0,YMMWORD[((-16+128-128))+rcx]
    1041         vpaddq  ymm2,ymm2,ymm12
    1042         vpmuludq        ymm13,ymm13,ymm11
    1043         vmovdqu ymm12,YMMWORD[((-16+160-128))+rcx]
    1044         vpaddq  ymm3,ymm3,ymm13
    1045         vpmuludq        ymm0,ymm0,ymm11
    1046         vmovdqu ymm13,YMMWORD[((-16+192-128))+rcx]
    1047         vpaddq  ymm4,ymm4,ymm0
    1048         vpmuludq        ymm12,ymm12,ymm11
    1049         vmovdqu ymm0,YMMWORD[((-16+224-128))+rcx]
    1050         vpaddq  ymm5,ymm5,ymm12
    1051         vpmuludq        ymm13,ymm13,ymm11
    1052         vmovdqu ymm12,YMMWORD[((-16+256-128))+rcx]
    1053         vpaddq  ymm6,ymm6,ymm13
    1054         vpmuludq        ymm0,ymm0,ymm11
    1055         vmovdqu ymm13,YMMWORD[((-16+288-128))+rcx]
    1056         vpaddq  ymm7,ymm7,ymm0
    1057         vpmuludq        ymm12,ymm12,ymm11
    1058         vmovdqu ymm0,YMMWORD[((-24+32-128))+rsi]
    1059         vpaddq  ymm8,ymm8,ymm12
    1060         vpmuludq        ymm13,ymm13,ymm11
    1061         vmovdqu ymm12,YMMWORD[((-24+64-128))+rsi]
    1062         vpaddq  ymm9,ymm9,ymm13
    1063 
    1064         add     r12,r11
    1065         imul    rbx,QWORD[((-128))+rsi]
    1066         add     r12,rbx
    1067 
    1068         mov     rax,r12
    1069         imul    eax,r8d
    1070         and     eax,0x1fffffff
    1071 
    1072         vpmuludq        ymm0,ymm0,ymm10
    1073         vmovd   xmm11,eax
    1074         vmovdqu ymm13,YMMWORD[((-24+96-128))+rsi]
    1075         vpaddq  ymm1,ymm1,ymm0
    1076         vpmuludq        ymm12,ymm12,ymm10
    1077         vpbroadcastq    ymm11,xmm11
    1078         vmovdqu ymm0,YMMWORD[((-24+128-128))+rsi]
    1079         vpaddq  ymm2,ymm2,ymm12
    1080         vpmuludq        ymm13,ymm13,ymm10
    1081         vmovdqu ymm12,YMMWORD[((-24+160-128))+rsi]
    1082         vpaddq  ymm3,ymm3,ymm13
    1083         vpmuludq        ymm0,ymm0,ymm10
    1084         vmovdqu ymm13,YMMWORD[((-24+192-128))+rsi]
    1085         vpaddq  ymm4,ymm4,ymm0
    1086         vpmuludq        ymm12,ymm12,ymm10
    1087         vmovdqu ymm0,YMMWORD[((-24+224-128))+rsi]
    1088         vpaddq  ymm5,ymm5,ymm12
    1089         vpmuludq        ymm13,ymm13,ymm10
    1090         vmovdqu ymm12,YMMWORD[((-24+256-128))+rsi]
    1091         vpaddq  ymm6,ymm6,ymm13
    1092         vpmuludq        ymm0,ymm0,ymm10
    1093         vmovdqu ymm13,YMMWORD[((-24+288-128))+rsi]
    1094         vpaddq  ymm7,ymm7,ymm0
    1095         vpmuludq        ymm12,ymm12,ymm10
    1096         vpaddq  ymm8,ymm8,ymm12
    1097         vpmuludq        ymm13,ymm13,ymm10
    1098         vpbroadcastq    ymm10,QWORD[32+r13]
    1099         vpaddq  ymm9,ymm9,ymm13
    1100         add     r13,32
    1101 
    1102         vmovdqu ymm0,YMMWORD[((-24+32-128))+rcx]
    1103         imul    rax,QWORD[((-128))+rcx]
    1104         add     r12,rax
    1105         shr     r12,29
    1106 
    1107         vmovdqu ymm12,YMMWORD[((-24+64-128))+rcx]
    1108         vpmuludq        ymm0,ymm0,ymm11
    1109         vmovq   rbx,xmm10
    1110         vmovdqu ymm13,YMMWORD[((-24+96-128))+rcx]
    1111         vpaddq  ymm0,ymm1,ymm0
    1112         vpmuludq        ymm12,ymm12,ymm11
    1113         vmovdqu YMMWORD[rsp],ymm0
    1114         vpaddq  ymm1,ymm2,ymm12
    1115         vmovdqu ymm0,YMMWORD[((-24+128-128))+rcx]
    1116         vpmuludq        ymm13,ymm13,ymm11
    1117         vmovdqu ymm12,YMMWORD[((-24+160-128))+rcx]
    1118         vpaddq  ymm2,ymm3,ymm13
    1119         vpmuludq        ymm0,ymm0,ymm11
    1120         vmovdqu ymm13,YMMWORD[((-24+192-128))+rcx]
    1121         vpaddq  ymm3,ymm4,ymm0
    1122         vpmuludq        ymm12,ymm12,ymm11
    1123         vmovdqu ymm0,YMMWORD[((-24+224-128))+rcx]
    1124         vpaddq  ymm4,ymm5,ymm12
    1125         vpmuludq        ymm13,ymm13,ymm11
    1126         vmovdqu ymm12,YMMWORD[((-24+256-128))+rcx]
    1127         vpaddq  ymm5,ymm6,ymm13
    1128         vpmuludq        ymm0,ymm0,ymm11
    1129         vmovdqu ymm13,YMMWORD[((-24+288-128))+rcx]
    1130         mov     r9,r12
    1131         vpaddq  ymm6,ymm7,ymm0
    1132         vpmuludq        ymm12,ymm12,ymm11
    1133         add     r9,QWORD[rsp]
    1134         vpaddq  ymm7,ymm8,ymm12
    1135         vpmuludq        ymm13,ymm13,ymm11
    1136         vmovq   xmm12,r12
    1137         vpaddq  ymm8,ymm9,ymm13
    1138 
    1139         dec     r14d
    1140         jnz     NEAR $L$oop_mul_1024
    1141         vpaddq  ymm0,ymm12,YMMWORD[rsp]
    1142 
    1143         vpsrlq  ymm12,ymm0,29
    1144         vpand   ymm0,ymm0,ymm15
    1145         vpsrlq  ymm13,ymm1,29
    1146         vpand   ymm1,ymm1,ymm15
    1147         vpsrlq  ymm10,ymm2,29
    1148         vpermq  ymm12,ymm12,0x93
    1149         vpand   ymm2,ymm2,ymm15
    1150         vpsrlq  ymm11,ymm3,29
    1151         vpermq  ymm13,ymm13,0x93
    1152         vpand   ymm3,ymm3,ymm15
    1153 
    1154         vpblendd        ymm9,ymm12,ymm14,3
    1155         vpermq  ymm10,ymm10,0x93
    1156         vpblendd        ymm12,ymm13,ymm12,3
    1157         vpermq  ymm11,ymm11,0x93
    1158         vpaddq  ymm0,ymm0,ymm9
    1159         vpblendd        ymm13,ymm10,ymm13,3
    1160         vpaddq  ymm1,ymm1,ymm12
    1161         vpblendd        ymm10,ymm11,ymm10,3
    1162         vpaddq  ymm2,ymm2,ymm13
    1163         vpblendd        ymm11,ymm14,ymm11,3
    1164         vpaddq  ymm3,ymm3,ymm10
    1165         vpaddq  ymm4,ymm4,ymm11
    1166 
    1167         vpsrlq  ymm12,ymm0,29
    1168         vpand   ymm0,ymm0,ymm15
    1169         vpsrlq  ymm13,ymm1,29
    1170         vpand   ymm1,ymm1,ymm15
    1171         vpsrlq  ymm10,ymm2,29
    1172         vpermq  ymm12,ymm12,0x93
    1173         vpand   ymm2,ymm2,ymm15
    1174         vpsrlq  ymm11,ymm3,29
    1175         vpermq  ymm13,ymm13,0x93
    1176         vpand   ymm3,ymm3,ymm15
    1177         vpermq  ymm10,ymm10,0x93
    1178 
    1179         vpblendd        ymm9,ymm12,ymm14,3
    1180         vpermq  ymm11,ymm11,0x93
    1181         vpblendd        ymm12,ymm13,ymm12,3
    1182         vpaddq  ymm0,ymm0,ymm9
    1183         vpblendd        ymm13,ymm10,ymm13,3
    1184         vpaddq  ymm1,ymm1,ymm12
    1185         vpblendd        ymm10,ymm11,ymm10,3
    1186         vpaddq  ymm2,ymm2,ymm13
    1187         vpblendd        ymm11,ymm14,ymm11,3
    1188         vpaddq  ymm3,ymm3,ymm10
    1189         vpaddq  ymm4,ymm4,ymm11
    1190 
    1191         vmovdqu YMMWORD[(0-128)+rdi],ymm0
    1192         vmovdqu YMMWORD[(32-128)+rdi],ymm1
    1193         vmovdqu YMMWORD[(64-128)+rdi],ymm2
    1194         vmovdqu YMMWORD[(96-128)+rdi],ymm3
    1195         vpsrlq  ymm12,ymm4,29
    1196         vpand   ymm4,ymm4,ymm15
    1197         vpsrlq  ymm13,ymm5,29
    1198         vpand   ymm5,ymm5,ymm15
    1199         vpsrlq  ymm10,ymm6,29
    1200         vpermq  ymm12,ymm12,0x93
    1201         vpand   ymm6,ymm6,ymm15
    1202         vpsrlq  ymm11,ymm7,29
    1203         vpermq  ymm13,ymm13,0x93
    1204         vpand   ymm7,ymm7,ymm15
    1205         vpsrlq  ymm0,ymm8,29
    1206         vpermq  ymm10,ymm10,0x93
    1207         vpand   ymm8,ymm8,ymm15
    1208         vpermq  ymm11,ymm11,0x93
    1209 
    1210         vpblendd        ymm9,ymm12,ymm14,3
    1211         vpermq  ymm0,ymm0,0x93
    1212         vpblendd        ymm12,ymm13,ymm12,3
    1213         vpaddq  ymm4,ymm4,ymm9
    1214         vpblendd        ymm13,ymm10,ymm13,3
    1215         vpaddq  ymm5,ymm5,ymm12
    1216         vpblendd        ymm10,ymm11,ymm10,3
    1217         vpaddq  ymm6,ymm6,ymm13
    1218         vpblendd        ymm11,ymm0,ymm11,3
    1219         vpaddq  ymm7,ymm7,ymm10
    1220         vpaddq  ymm8,ymm8,ymm11
    1221 
    1222         vpsrlq  ymm12,ymm4,29
    1223         vpand   ymm4,ymm4,ymm15
    1224         vpsrlq  ymm13,ymm5,29
    1225         vpand   ymm5,ymm5,ymm15
    1226         vpsrlq  ymm10,ymm6,29
    1227         vpermq  ymm12,ymm12,0x93
    1228         vpand   ymm6,ymm6,ymm15
    1229         vpsrlq  ymm11,ymm7,29
    1230         vpermq  ymm13,ymm13,0x93
    1231         vpand   ymm7,ymm7,ymm15
    1232         vpsrlq  ymm0,ymm8,29
    1233         vpermq  ymm10,ymm10,0x93
    1234         vpand   ymm8,ymm8,ymm15
    1235         vpermq  ymm11,ymm11,0x93
    1236 
    1237         vpblendd        ymm9,ymm12,ymm14,3
    1238         vpermq  ymm0,ymm0,0x93
    1239         vpblendd        ymm12,ymm13,ymm12,3
    1240         vpaddq  ymm4,ymm4,ymm9
    1241         vpblendd        ymm13,ymm10,ymm13,3
    1242         vpaddq  ymm5,ymm5,ymm12
    1243         vpblendd        ymm10,ymm11,ymm10,3
    1244         vpaddq  ymm6,ymm6,ymm13
    1245         vpblendd        ymm11,ymm0,ymm11,3
    1246         vpaddq  ymm7,ymm7,ymm10
    1247         vpaddq  ymm8,ymm8,ymm11
    1248 
    1249         vmovdqu YMMWORD[(128-128)+rdi],ymm4
    1250         vmovdqu YMMWORD[(160-128)+rdi],ymm5
    1251         vmovdqu YMMWORD[(192-128)+rdi],ymm6
    1252         vmovdqu YMMWORD[(224-128)+rdi],ymm7
    1253         vmovdqu YMMWORD[(256-128)+rdi],ymm8
    1254         vzeroupper
    1255 
    1256         mov     rax,rbp
    1257 
    1258 $L$mul_1024_in_tail:
    1259         movaps  xmm6,XMMWORD[((-216))+rax]
    1260         movaps  xmm7,XMMWORD[((-200))+rax]
    1261         movaps  xmm8,XMMWORD[((-184))+rax]
    1262         movaps  xmm9,XMMWORD[((-168))+rax]
    1263         movaps  xmm10,XMMWORD[((-152))+rax]
    1264         movaps  xmm11,XMMWORD[((-136))+rax]
    1265         movaps  xmm12,XMMWORD[((-120))+rax]
    1266         movaps  xmm13,XMMWORD[((-104))+rax]
    1267         movaps  xmm14,XMMWORD[((-88))+rax]
    1268         movaps  xmm15,XMMWORD[((-72))+rax]
    1269         mov     r15,QWORD[((-48))+rax]
    1270 
    1271         mov     r14,QWORD[((-40))+rax]
    1272 
    1273         mov     r13,QWORD[((-32))+rax]
    1274 
    1275         mov     r12,QWORD[((-24))+rax]
    1276 
    1277         mov     rbp,QWORD[((-16))+rax]
    1278 
    1279         mov     rbx,QWORD[((-8))+rax]
    1280 
    1281         lea     rsp,[rax]
    1282 
    1283 $L$mul_1024_epilogue:
    1284         mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
    1285         mov     rsi,QWORD[16+rsp]
    1286         DB      0F3h,0C3h               ;repret
    1287 
    1288 $L$SEH_end_rsaz_1024_mul_avx2:
    1289 global  rsaz_1024_red2norm_avx2
    1290 
    1291 ALIGN   32
    1292 rsaz_1024_red2norm_avx2:
    1293 
    1294         sub     rdx,-128
    1295         xor     rax,rax
    1296         mov     r8,QWORD[((-128))+rdx]
    1297         mov     r9,QWORD[((-120))+rdx]
    1298         mov     r10,QWORD[((-112))+rdx]
    1299         shl     r8,0
    1300         shl     r9,29
    1301         mov     r11,r10
    1302         shl     r10,58
    1303         shr     r11,6
    1304         add     rax,r8
    1305         add     rax,r9
    1306         add     rax,r10
    1307         adc     r11,0
    1308         mov     QWORD[rcx],rax
    1309         mov     rax,r11
    1310         mov     r8,QWORD[((-104))+rdx]
    1311         mov     r9,QWORD[((-96))+rdx]
    1312         shl     r8,23
    1313         mov     r10,r9
    1314         shl     r9,52
    1315         shr     r10,12
    1316         add     rax,r8
    1317         add     rax,r9
    1318         adc     r10,0
    1319         mov     QWORD[8+rcx],rax
    1320         mov     rax,r10
    1321         mov     r11,QWORD[((-88))+rdx]
    1322         mov     r8,QWORD[((-80))+rdx]
    1323         shl     r11,17
    1324         mov     r9,r8
    1325         shl     r8,46
    1326         shr     r9,18
    1327         add     rax,r11
    1328         add     rax,r8
    1329         adc     r9,0
    1330         mov     QWORD[16+rcx],rax
    1331         mov     rax,r9
    1332         mov     r10,QWORD[((-72))+rdx]
    1333         mov     r11,QWORD[((-64))+rdx]
    1334         shl     r10,11
    1335         mov     r8,r11
    1336         shl     r11,40
    1337         shr     r8,24
    1338         add     rax,r10
    1339         add     rax,r11
    1340         adc     r8,0
    1341         mov     QWORD[24+rcx],rax
    1342         mov     rax,r8
    1343         mov     r9,QWORD[((-56))+rdx]
    1344         mov     r10,QWORD[((-48))+rdx]
    1345         mov     r11,QWORD[((-40))+rdx]
    1346         shl     r9,5
    1347         shl     r10,34
    1348         mov     r8,r11
    1349         shl     r11,63
    1350         shr     r8,1
    1351         add     rax,r9
    1352         add     rax,r10
    1353         add     rax,r11
    1354         adc     r8,0
    1355         mov     QWORD[32+rcx],rax
    1356         mov     rax,r8
    1357         mov     r9,QWORD[((-32))+rdx]
    1358         mov     r10,QWORD[((-24))+rdx]
    1359         shl     r9,28
    1360         mov     r11,r10
    1361         shl     r10,57
    1362         shr     r11,7
    1363         add     rax,r9
    1364         add     rax,r10
    1365         adc     r11,0
    1366         mov     QWORD[40+rcx],rax
    1367         mov     rax,r11
    1368         mov     r8,QWORD[((-16))+rdx]
    1369         mov     r9,QWORD[((-8))+rdx]
    1370         shl     r8,22
    1371         mov     r10,r9
    1372         shl     r9,51
    1373         shr     r10,13
    1374         add     rax,r8
    1375         add     rax,r9
    1376         adc     r10,0
    1377         mov     QWORD[48+rcx],rax
    1378         mov     rax,r10
    1379         mov     r11,QWORD[rdx]
    1380         mov     r8,QWORD[8+rdx]
    1381         shl     r11,16
    1382         mov     r9,r8
    1383         shl     r8,45
    1384         shr     r9,19
    1385         add     rax,r11
    1386         add     rax,r8
    1387         adc     r9,0
    1388         mov     QWORD[56+rcx],rax
    1389         mov     rax,r9
    1390         mov     r10,QWORD[16+rdx]
    1391         mov     r11,QWORD[24+rdx]
    1392         shl     r10,10
    1393         mov     r8,r11
    1394         shl     r11,39
    1395         shr     r8,25
    1396         add     rax,r10
    1397         add     rax,r11
    1398         adc     r8,0
    1399         mov     QWORD[64+rcx],rax
    1400         mov     rax,r8
    1401         mov     r9,QWORD[32+rdx]
    1402         mov     r10,QWORD[40+rdx]
    1403         mov     r11,QWORD[48+rdx]
    1404         shl     r9,4
    1405         shl     r10,33
    1406         mov     r8,r11
    1407         shl     r11,62
    1408         shr     r8,2
    1409         add     rax,r9
    1410         add     rax,r10
    1411         add     rax,r11
    1412         adc     r8,0
    1413         mov     QWORD[72+rcx],rax
    1414         mov     rax,r8
    1415         mov     r9,QWORD[56+rdx]
    1416         mov     r10,QWORD[64+rdx]
    1417         shl     r9,27
    1418         mov     r11,r10
    1419         shl     r10,56
    1420         shr     r11,8
    1421         add     rax,r9
    1422         add     rax,r10
    1423         adc     r11,0
    1424         mov     QWORD[80+rcx],rax
    1425         mov     rax,r11
    1426         mov     r8,QWORD[72+rdx]
    1427         mov     r9,QWORD[80+rdx]
    1428         shl     r8,21
    1429         mov     r10,r9
    1430         shl     r9,50
    1431         shr     r10,14
    1432         add     rax,r8
    1433         add     rax,r9
    1434         adc     r10,0
    1435         mov     QWORD[88+rcx],rax
    1436         mov     rax,r10
    1437         mov     r11,QWORD[88+rdx]
    1438         mov     r8,QWORD[96+rdx]
    1439         shl     r11,15
    1440         mov     r9,r8
    1441         shl     r8,44
    1442         shr     r9,20
    1443         add     rax,r11
    1444         add     rax,r8
    1445         adc     r9,0
    1446         mov     QWORD[96+rcx],rax
    1447         mov     rax,r9
    1448         mov     r10,QWORD[104+rdx]
    1449         mov     r11,QWORD[112+rdx]
    1450         shl     r10,9
    1451         mov     r8,r11
    1452         shl     r11,38
    1453         shr     r8,26
    1454         add     rax,r10
    1455         add     rax,r11
    1456         adc     r8,0
    1457         mov     QWORD[104+rcx],rax
    1458         mov     rax,r8
    1459         mov     r9,QWORD[120+rdx]
    1460         mov     r10,QWORD[128+rdx]
    1461         mov     r11,QWORD[136+rdx]
    1462         shl     r9,3
    1463         shl     r10,32
    1464         mov     r8,r11
    1465         shl     r11,61
    1466         shr     r8,3
    1467         add     rax,r9
    1468         add     rax,r10
    1469         add     rax,r11
    1470         adc     r8,0
    1471         mov     QWORD[112+rcx],rax
    1472         mov     rax,r8
    1473         mov     r9,QWORD[144+rdx]
    1474         mov     r10,QWORD[152+rdx]
    1475         shl     r9,26
    1476         mov     r11,r10
    1477         shl     r10,55
    1478         shr     r11,9
    1479         add     rax,r9
    1480         add     rax,r10
    1481         adc     r11,0
    1482         mov     QWORD[120+rcx],rax
    1483         mov     rax,r11
     10rsaz_avx2_eligible:
     11        xor     eax,eax
    148412        DB      0F3h,0C3h               ;repret
    148513
    148614
     15global  rsaz_1024_sqr_avx2
     16global  rsaz_1024_mul_avx2
     17global  rsaz_1024_norm2red_avx2
     18global  rsaz_1024_red2norm_avx2
     19global  rsaz_1024_scatter5_avx2
     20global  rsaz_1024_gather5_avx2
    148721
    1488 global  rsaz_1024_norm2red_avx2
    1489 
    1490 ALIGN   32
     22rsaz_1024_sqr_avx2:
     23rsaz_1024_mul_avx2:
    149124rsaz_1024_norm2red_avx2:
    1492 
    1493         sub     rcx,-128
    1494         mov     r8,QWORD[rdx]
    1495         mov     eax,0x1fffffff
    1496         mov     r9,QWORD[8+rdx]
    1497         mov     r11,r8
    1498         shr     r11,0
    1499         and     r11,rax
    1500         mov     QWORD[((-128))+rcx],r11
    1501         mov     r10,r8
    1502         shr     r10,29
    1503         and     r10,rax
    1504         mov     QWORD[((-120))+rcx],r10
    1505         shrd    r8,r9,58
    1506         and     r8,rax
    1507         mov     QWORD[((-112))+rcx],r8
    1508         mov     r10,QWORD[16+rdx]
    1509         mov     r8,r9
    1510         shr     r8,23
    1511         and     r8,rax
    1512         mov     QWORD[((-104))+rcx],r8
    1513         shrd    r9,r10,52
    1514         and     r9,rax
    1515         mov     QWORD[((-96))+rcx],r9
    1516         mov     r11,QWORD[24+rdx]
    1517         mov     r9,r10
    1518         shr     r9,17
    1519         and     r9,rax
    1520         mov     QWORD[((-88))+rcx],r9
    1521         shrd    r10,r11,46
    1522         and     r10,rax
    1523         mov     QWORD[((-80))+rcx],r10
    1524         mov     r8,QWORD[32+rdx]
    1525         mov     r10,r11
    1526         shr     r10,11
    1527         and     r10,rax
    1528         mov     QWORD[((-72))+rcx],r10
    1529         shrd    r11,r8,40
    1530         and     r11,rax
    1531         mov     QWORD[((-64))+rcx],r11
    1532         mov     r9,QWORD[40+rdx]
    1533         mov     r11,r8
    1534         shr     r11,5
    1535         and     r11,rax
    1536         mov     QWORD[((-56))+rcx],r11
    1537         mov     r10,r8
    1538         shr     r10,34
    1539         and     r10,rax
    1540         mov     QWORD[((-48))+rcx],r10
    1541         shrd    r8,r9,63
    1542         and     r8,rax
    1543         mov     QWORD[((-40))+rcx],r8
    1544         mov     r10,QWORD[48+rdx]
    1545         mov     r8,r9
    1546         shr     r8,28
    1547         and     r8,rax
    1548         mov     QWORD[((-32))+rcx],r8
    1549         shrd    r9,r10,57
    1550         and     r9,rax
    1551         mov     QWORD[((-24))+rcx],r9
    1552         mov     r11,QWORD[56+rdx]
    1553         mov     r9,r10
    1554         shr     r9,22
    1555         and     r9,rax
    1556         mov     QWORD[((-16))+rcx],r9
    1557         shrd    r10,r11,51
    1558         and     r10,rax
    1559         mov     QWORD[((-8))+rcx],r10
    1560         mov     r8,QWORD[64+rdx]
    1561         mov     r10,r11
    1562         shr     r10,16
    1563         and     r10,rax
    1564         mov     QWORD[rcx],r10
    1565         shrd    r11,r8,45
    1566         and     r11,rax
    1567         mov     QWORD[8+rcx],r11
    1568         mov     r9,QWORD[72+rdx]
    1569         mov     r11,r8
    1570         shr     r11,10
    1571         and     r11,rax
    1572         mov     QWORD[16+rcx],r11
    1573         shrd    r8,r9,39
    1574         and     r8,rax
    1575         mov     QWORD[24+rcx],r8
    1576         mov     r10,QWORD[80+rdx]
    1577         mov     r8,r9
    1578         shr     r8,4
    1579         and     r8,rax
    1580         mov     QWORD[32+rcx],r8
    1581         mov     r11,r9
    1582         shr     r11,33
    1583         and     r11,rax
    1584         mov     QWORD[40+rcx],r11
    1585         shrd    r9,r10,62
    1586         and     r9,rax
    1587         mov     QWORD[48+rcx],r9
    1588         mov     r11,QWORD[88+rdx]
    1589         mov     r9,r10
    1590         shr     r9,27
    1591         and     r9,rax
    1592         mov     QWORD[56+rcx],r9
    1593         shrd    r10,r11,56
    1594         and     r10,rax
    1595         mov     QWORD[64+rcx],r10
    1596         mov     r8,QWORD[96+rdx]
    1597         mov     r10,r11
    1598         shr     r10,21
    1599         and     r10,rax
    1600         mov     QWORD[72+rcx],r10
    1601         shrd    r11,r8,50
    1602         and     r11,rax
    1603         mov     QWORD[80+rcx],r11
    1604         mov     r9,QWORD[104+rdx]
    1605         mov     r11,r8
    1606         shr     r11,15
    1607         and     r11,rax
    1608         mov     QWORD[88+rcx],r11
    1609         shrd    r8,r9,44
    1610         and     r8,rax
    1611         mov     QWORD[96+rcx],r8
    1612         mov     r10,QWORD[112+rdx]
    1613         mov     r8,r9
    1614         shr     r8,9
    1615         and     r8,rax
    1616         mov     QWORD[104+rcx],r8
    1617         shrd    r9,r10,38
    1618         and     r9,rax
    1619         mov     QWORD[112+rcx],r9
    1620         mov     r11,QWORD[120+rdx]
    1621         mov     r9,r10
    1622         shr     r9,3
    1623         and     r9,rax
    1624         mov     QWORD[120+rcx],r9
    1625         mov     r8,r10
    1626         shr     r8,32
    1627         and     r8,rax
    1628         mov     QWORD[128+rcx],r8
    1629         shrd    r10,r11,61
    1630         and     r10,rax
    1631         mov     QWORD[136+rcx],r10
    1632         xor     r8,r8
    1633         mov     r10,r11
    1634         shr     r10,26
    1635         and     r10,rax
    1636         mov     QWORD[144+rcx],r10
    1637         shrd    r11,r8,55
    1638         and     r11,rax
    1639         mov     QWORD[152+rcx],r11
    1640         mov     QWORD[160+rcx],r8
    1641         mov     QWORD[168+rcx],r8
    1642         mov     QWORD[176+rcx],r8
    1643         mov     QWORD[184+rcx],r8
     25rsaz_1024_red2norm_avx2:
     26rsaz_1024_scatter5_avx2:
     27rsaz_1024_gather5_avx2:
     28DB      0x0f,0x0b
    164429        DB      0F3h,0C3h               ;repret
    164530
    1646 
    1647 global  rsaz_1024_scatter5_avx2
    1648 
    1649 ALIGN   32
    1650 rsaz_1024_scatter5_avx2:
    1651 
    1652         vzeroupper
    1653         vmovdqu ymm5,YMMWORD[$L$scatter_permd]
    1654         shl     r8d,4
    1655         lea     rcx,[r8*1+rcx]
    1656         mov     eax,9
    1657         jmp     NEAR $L$oop_scatter_1024
    1658 
    1659 ALIGN   32
    1660 $L$oop_scatter_1024:
    1661         vmovdqu ymm0,YMMWORD[rdx]
    1662         lea     rdx,[32+rdx]
    1663         vpermd  ymm0,ymm5,ymm0
    1664         vmovdqu XMMWORD[rcx],xmm0
    1665         lea     rcx,[512+rcx]
    1666         dec     eax
    1667         jnz     NEAR $L$oop_scatter_1024
    1668 
    1669         vzeroupper
    1670         DB      0F3h,0C3h               ;repret
    1671 
    1672 
    1673 
    1674 global  rsaz_1024_gather5_avx2
    1675 
    1676 ALIGN   32
    1677 rsaz_1024_gather5_avx2:
    1678 
    1679         vzeroupper
    1680         mov     r11,rsp
    1681 
    1682         lea     rax,[((-136))+rsp]
    1683 $L$SEH_begin_rsaz_1024_gather5:
    1684 
    1685 DB      0x48,0x8d,0x60,0xe0
    1686 DB      0xc5,0xf8,0x29,0x70,0xe0
    1687 DB      0xc5,0xf8,0x29,0x78,0xf0
    1688 DB      0xc5,0x78,0x29,0x40,0x00
    1689 DB      0xc5,0x78,0x29,0x48,0x10
    1690 DB      0xc5,0x78,0x29,0x50,0x20
    1691 DB      0xc5,0x78,0x29,0x58,0x30
    1692 DB      0xc5,0x78,0x29,0x60,0x40
    1693 DB      0xc5,0x78,0x29,0x68,0x50
    1694 DB      0xc5,0x78,0x29,0x70,0x60
    1695 DB      0xc5,0x78,0x29,0x78,0x70
    1696         lea     rsp,[((-256))+rsp]
    1697         and     rsp,-32
    1698         lea     r10,[$L$inc]
    1699         lea     rax,[((-128))+rsp]
    1700 
    1701         vmovd   xmm4,r8d
    1702         vmovdqa ymm0,YMMWORD[r10]
    1703         vmovdqa ymm1,YMMWORD[32+r10]
    1704         vmovdqa ymm5,YMMWORD[64+r10]
    1705         vpbroadcastd    ymm4,xmm4
    1706 
    1707         vpaddd  ymm2,ymm0,ymm5
    1708         vpcmpeqd        ymm0,ymm0,ymm4
    1709         vpaddd  ymm3,ymm1,ymm5
    1710         vpcmpeqd        ymm1,ymm1,ymm4
    1711         vmovdqa YMMWORD[(0+128)+rax],ymm0
    1712         vpaddd  ymm0,ymm2,ymm5
    1713         vpcmpeqd        ymm2,ymm2,ymm4
    1714         vmovdqa YMMWORD[(32+128)+rax],ymm1
    1715         vpaddd  ymm1,ymm3,ymm5
    1716         vpcmpeqd        ymm3,ymm3,ymm4
    1717         vmovdqa YMMWORD[(64+128)+rax],ymm2
    1718         vpaddd  ymm2,ymm0,ymm5
    1719         vpcmpeqd        ymm0,ymm0,ymm4
    1720         vmovdqa YMMWORD[(96+128)+rax],ymm3
    1721         vpaddd  ymm3,ymm1,ymm5
    1722         vpcmpeqd        ymm1,ymm1,ymm4
    1723         vmovdqa YMMWORD[(128+128)+rax],ymm0
    1724         vpaddd  ymm8,ymm2,ymm5
    1725         vpcmpeqd        ymm2,ymm2,ymm4
    1726         vmovdqa YMMWORD[(160+128)+rax],ymm1
    1727         vpaddd  ymm9,ymm3,ymm5
    1728         vpcmpeqd        ymm3,ymm3,ymm4
    1729         vmovdqa YMMWORD[(192+128)+rax],ymm2
    1730         vpaddd  ymm10,ymm8,ymm5
    1731         vpcmpeqd        ymm8,ymm8,ymm4
    1732         vmovdqa YMMWORD[(224+128)+rax],ymm3
    1733         vpaddd  ymm11,ymm9,ymm5
    1734         vpcmpeqd        ymm9,ymm9,ymm4
    1735         vpaddd  ymm12,ymm10,ymm5
    1736         vpcmpeqd        ymm10,ymm10,ymm4
    1737         vpaddd  ymm13,ymm11,ymm5
    1738         vpcmpeqd        ymm11,ymm11,ymm4
    1739         vpaddd  ymm14,ymm12,ymm5
    1740         vpcmpeqd        ymm12,ymm12,ymm4
    1741         vpaddd  ymm15,ymm13,ymm5
    1742         vpcmpeqd        ymm13,ymm13,ymm4
    1743         vpcmpeqd        ymm14,ymm14,ymm4
    1744         vpcmpeqd        ymm15,ymm15,ymm4
    1745 
    1746         vmovdqa ymm7,YMMWORD[((-32))+r10]
    1747         lea     rdx,[128+rdx]
    1748         mov     r8d,9
    1749 
    1750 $L$oop_gather_1024:
    1751         vmovdqa ymm0,YMMWORD[((0-128))+rdx]
    1752         vmovdqa ymm1,YMMWORD[((32-128))+rdx]
    1753         vmovdqa ymm2,YMMWORD[((64-128))+rdx]
    1754         vmovdqa ymm3,YMMWORD[((96-128))+rdx]
    1755         vpand   ymm0,ymm0,YMMWORD[((0+128))+rax]
    1756         vpand   ymm1,ymm1,YMMWORD[((32+128))+rax]
    1757         vpand   ymm2,ymm2,YMMWORD[((64+128))+rax]
    1758         vpor    ymm4,ymm1,ymm0
    1759         vpand   ymm3,ymm3,YMMWORD[((96+128))+rax]
    1760         vmovdqa ymm0,YMMWORD[((128-128))+rdx]
    1761         vmovdqa ymm1,YMMWORD[((160-128))+rdx]
    1762         vpor    ymm5,ymm3,ymm2
    1763         vmovdqa ymm2,YMMWORD[((192-128))+rdx]
    1764         vmovdqa ymm3,YMMWORD[((224-128))+rdx]
    1765         vpand   ymm0,ymm0,YMMWORD[((128+128))+rax]
    1766         vpand   ymm1,ymm1,YMMWORD[((160+128))+rax]
    1767         vpand   ymm2,ymm2,YMMWORD[((192+128))+rax]
    1768         vpor    ymm4,ymm4,ymm0
    1769         vpand   ymm3,ymm3,YMMWORD[((224+128))+rax]
    1770         vpand   ymm0,ymm8,YMMWORD[((256-128))+rdx]
    1771         vpor    ymm5,ymm5,ymm1
    1772         vpand   ymm1,ymm9,YMMWORD[((288-128))+rdx]
    1773         vpor    ymm4,ymm4,ymm2
    1774         vpand   ymm2,ymm10,YMMWORD[((320-128))+rdx]
    1775         vpor    ymm5,ymm5,ymm3
    1776         vpand   ymm3,ymm11,YMMWORD[((352-128))+rdx]
    1777         vpor    ymm4,ymm4,ymm0
    1778         vpand   ymm0,ymm12,YMMWORD[((384-128))+rdx]
    1779         vpor    ymm5,ymm5,ymm1
    1780         vpand   ymm1,ymm13,YMMWORD[((416-128))+rdx]
    1781         vpor    ymm4,ymm4,ymm2
    1782         vpand   ymm2,ymm14,YMMWORD[((448-128))+rdx]
    1783         vpor    ymm5,ymm5,ymm3
    1784         vpand   ymm3,ymm15,YMMWORD[((480-128))+rdx]
    1785         lea     rdx,[512+rdx]
    1786         vpor    ymm4,ymm4,ymm0
    1787         vpor    ymm5,ymm5,ymm1
    1788         vpor    ymm4,ymm4,ymm2
    1789         vpor    ymm5,ymm5,ymm3
    1790 
    1791         vpor    ymm4,ymm4,ymm5
    1792         vextracti128    xmm5,ymm4,1
    1793         vpor    xmm5,xmm5,xmm4
    1794         vpermd  ymm5,ymm7,ymm5
    1795         vmovdqu YMMWORD[rcx],ymm5
    1796         lea     rcx,[32+rcx]
    1797         dec     r8d
    1798         jnz     NEAR $L$oop_gather_1024
    1799 
    1800         vpxor   ymm0,ymm0,ymm0
    1801         vmovdqu YMMWORD[rcx],ymm0
    1802         vzeroupper
    1803         movaps  xmm6,XMMWORD[((-168))+r11]
    1804         movaps  xmm7,XMMWORD[((-152))+r11]
    1805         movaps  xmm8,XMMWORD[((-136))+r11]
    1806         movaps  xmm9,XMMWORD[((-120))+r11]
    1807         movaps  xmm10,XMMWORD[((-104))+r11]
    1808         movaps  xmm11,XMMWORD[((-88))+r11]
    1809         movaps  xmm12,XMMWORD[((-72))+r11]
    1810         movaps  xmm13,XMMWORD[((-56))+r11]
    1811         movaps  xmm14,XMMWORD[((-40))+r11]
    1812         movaps  xmm15,XMMWORD[((-24))+r11]
    1813         lea     rsp,[r11]
    1814 
    1815         DB      0F3h,0C3h               ;repret
    1816 
    1817 $L$SEH_end_rsaz_1024_gather5:
    1818 
    1819 EXTERN  OPENSSL_ia32cap_P
    1820 global  rsaz_avx2_eligible
    1821 
    1822 ALIGN   32
    1823 rsaz_avx2_eligible:
    1824         mov     eax,DWORD[((OPENSSL_ia32cap_P+8))]
    1825         mov     ecx,524544
    1826         mov     edx,0
    1827         and     ecx,eax
    1828         cmp     ecx,524544
    1829         cmove   eax,edx
    1830         and     eax,32
    1831         shr     eax,5
    1832         DB      0F3h,0C3h               ;repret
    1833 
    1834 
    1835 ALIGN   64
    1836 $L$and_mask:
    1837         DQ      0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff
    1838 $L$scatter_permd:
    1839         DD      0,2,4,6,7,7,7,7
    1840 $L$gather_permd:
    1841         DD      0,7,1,7,2,7,3,7
    1842 $L$inc:
    1843         DD      0,0,0,0,1,1,1,1
    1844         DD      2,2,2,2,3,3,3,3
    1845         DD      4,4,4,4,4,4,4,4
    1846 ALIGN   64
    1847 EXTERN  __imp_RtlVirtualUnwind
    1848 
    1849 ALIGN   16
    1850 rsaz_se_handler:
    1851         push    rsi
    1852         push    rdi
    1853         push    rbx
    1854         push    rbp
    1855         push    r12
    1856         push    r13
    1857         push    r14
    1858         push    r15
    1859         pushfq
    1860         sub     rsp,64
    1861 
    1862         mov     rax,QWORD[120+r8]
    1863         mov     rbx,QWORD[248+r8]
    1864 
    1865         mov     rsi,QWORD[8+r9]
    1866         mov     r11,QWORD[56+r9]
    1867 
    1868         mov     r10d,DWORD[r11]
    1869         lea     r10,[r10*1+rsi]
    1870         cmp     rbx,r10
    1871         jb      NEAR $L$common_seh_tail
    1872 
    1873         mov     r10d,DWORD[4+r11]
    1874         lea     r10,[r10*1+rsi]
    1875         cmp     rbx,r10
    1876         jae     NEAR $L$common_seh_tail
    1877 
    1878         mov     rbp,QWORD[160+r8]
    1879 
    1880         mov     r10d,DWORD[8+r11]
    1881         lea     r10,[r10*1+rsi]
    1882         cmp     rbx,r10
    1883         cmovc   rax,rbp
    1884 
    1885         mov     r15,QWORD[((-48))+rax]
    1886         mov     r14,QWORD[((-40))+rax]
    1887         mov     r13,QWORD[((-32))+rax]
    1888         mov     r12,QWORD[((-24))+rax]
    1889         mov     rbp,QWORD[((-16))+rax]
    1890         mov     rbx,QWORD[((-8))+rax]
    1891         mov     QWORD[240+r8],r15
    1892         mov     QWORD[232+r8],r14
    1893         mov     QWORD[224+r8],r13
    1894         mov     QWORD[216+r8],r12
    1895         mov     QWORD[160+r8],rbp
    1896         mov     QWORD[144+r8],rbx
    1897 
    1898         lea     rsi,[((-216))+rax]
    1899         lea     rdi,[512+r8]
    1900         mov     ecx,20
    1901         DD      0xa548f3fc
    1902 
    1903 $L$common_seh_tail:
    1904         mov     rdi,QWORD[8+rax]
    1905         mov     rsi,QWORD[16+rax]
    1906         mov     QWORD[152+r8],rax
    1907         mov     QWORD[168+r8],rsi
    1908         mov     QWORD[176+r8],rdi
    1909 
    1910         mov     rdi,QWORD[40+r9]
    1911         mov     rsi,r8
    1912         mov     ecx,154
    1913         DD      0xa548f3fc
    1914 
    1915         mov     rsi,r9
    1916         xor     rcx,rcx
    1917         mov     rdx,QWORD[8+rsi]
    1918         mov     r8,QWORD[rsi]
    1919         mov     r9,QWORD[16+rsi]
    1920         mov     r10,QWORD[40+rsi]
    1921         lea     r11,[56+rsi]
    1922         lea     r12,[24+rsi]
    1923         mov     QWORD[32+rsp],r10
    1924         mov     QWORD[40+rsp],r11
    1925         mov     QWORD[48+rsp],r12
    1926         mov     QWORD[56+rsp],rcx
    1927         call    QWORD[__imp_RtlVirtualUnwind]
    1928 
    1929         mov     eax,1
    1930         add     rsp,64
    1931         popfq
    1932         pop     r15
    1933         pop     r14
    1934         pop     r13
    1935         pop     r12
    1936         pop     rbp
    1937         pop     rbx
    1938         pop     rdi
    1939         pop     rsi
    1940         DB      0F3h,0C3h               ;repret
    1941 
    1942 
    1943 section .pdata rdata align=4
    1944 ALIGN   4
    1945         DD      $L$SEH_begin_rsaz_1024_sqr_avx2 wrt ..imagebase
    1946         DD      $L$SEH_end_rsaz_1024_sqr_avx2 wrt ..imagebase
    1947         DD      $L$SEH_info_rsaz_1024_sqr_avx2 wrt ..imagebase
    1948 
    1949         DD      $L$SEH_begin_rsaz_1024_mul_avx2 wrt ..imagebase
    1950         DD      $L$SEH_end_rsaz_1024_mul_avx2 wrt ..imagebase
    1951         DD      $L$SEH_info_rsaz_1024_mul_avx2 wrt ..imagebase
    1952 
    1953         DD      $L$SEH_begin_rsaz_1024_gather5 wrt ..imagebase
    1954         DD      $L$SEH_end_rsaz_1024_gather5 wrt ..imagebase
    1955         DD      $L$SEH_info_rsaz_1024_gather5 wrt ..imagebase
    1956 section .xdata rdata align=8
    1957 ALIGN   8
    1958 $L$SEH_info_rsaz_1024_sqr_avx2:
    1959 DB      9,0,0,0
    1960         DD      rsaz_se_handler wrt ..imagebase
    1961         DD      $L$sqr_1024_body wrt ..imagebase,$L$sqr_1024_epilogue wrt ..imagebase,$L$sqr_1024_in_tail wrt ..imagebase
    1962         DD      0
    1963 $L$SEH_info_rsaz_1024_mul_avx2:
    1964 DB      9,0,0,0
    1965         DD      rsaz_se_handler wrt ..imagebase
    1966         DD      $L$mul_1024_body wrt ..imagebase,$L$mul_1024_epilogue wrt ..imagebase,$L$mul_1024_in_tail wrt ..imagebase
    1967         DD      0
    1968 $L$SEH_info_rsaz_1024_gather5:
    1969 DB      0x01,0x36,0x17,0x0b
    1970 DB      0x36,0xf8,0x09,0x00
    1971 DB      0x31,0xe8,0x08,0x00
    1972 DB      0x2c,0xd8,0x07,0x00
    1973 DB      0x27,0xc8,0x06,0x00
    1974 DB      0x22,0xb8,0x05,0x00
    1975 DB      0x1d,0xa8,0x04,0x00
    1976 DB      0x18,0x98,0x03,0x00
    1977 DB      0x13,0x88,0x02,0x00
    1978 DB      0x0e,0x78,0x01,0x00
    1979 DB      0x09,0x68,0x00,0x00
    1980 DB      0x04,0x01,0x15,0x00
    1981 DB      0x00,0xb3,0x00,0x00
Note: See TracChangeset for help on using the changeset viewer.

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