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