123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426 |
- OPTION DOTNAME
- .text$ SEGMENT ALIGN(256) 'CODE'
- ALIGN 16
- _mul_1x1 PROC PRIVATE
- sub rsp,128+8
- mov r9,-1
- lea rsi,QWORD PTR[rax*1+rax]
- shr r9,3
- lea rdi,QWORD PTR[rax*4]
- and r9,rax
- lea r12,QWORD PTR[rax*8]
- sar rax,63
- lea r10,QWORD PTR[r9*1+r9]
- sar rsi,63
- lea r11,QWORD PTR[r9*4]
- and rax,rbp
- sar rdi,63
- mov rdx,rax
- shl rax,63
- and rsi,rbp
- shr rdx,1
- mov rcx,rsi
- shl rsi,62
- and rdi,rbp
- shr rcx,2
- xor rax,rsi
- mov rbx,rdi
- shl rdi,61
- xor rdx,rcx
- shr rbx,3
- xor rax,rdi
- xor rdx,rbx
- mov r13,r9
- mov QWORD PTR[rsp],0
- xor r13,r10
- mov QWORD PTR[8+rsp],r9
- mov r14,r11
- mov QWORD PTR[16+rsp],r10
- xor r14,r12
- mov QWORD PTR[24+rsp],r13
- xor r9,r11
- mov QWORD PTR[32+rsp],r11
- xor r10,r11
- mov QWORD PTR[40+rsp],r9
- xor r13,r11
- mov QWORD PTR[48+rsp],r10
- xor r9,r14
- mov QWORD PTR[56+rsp],r13
- xor r10,r14
- mov QWORD PTR[64+rsp],r12
- xor r13,r14
- mov QWORD PTR[72+rsp],r9
- xor r9,r11
- mov QWORD PTR[80+rsp],r10
- xor r10,r11
- mov QWORD PTR[88+rsp],r13
- xor r13,r11
- mov QWORD PTR[96+rsp],r14
- mov rsi,r8
- mov QWORD PTR[104+rsp],r9
- and rsi,rbp
- mov QWORD PTR[112+rsp],r10
- shr rbp,4
- mov QWORD PTR[120+rsp],r13
- mov rdi,r8
- and rdi,rbp
- shr rbp,4
- movq xmm0,QWORD PTR[rsi*8+rsp]
- mov rsi,r8
- and rsi,rbp
- shr rbp,4
- mov rcx,QWORD PTR[rdi*8+rsp]
- mov rdi,r8
- mov rbx,rcx
- shl rcx,4
- and rdi,rbp
- movq xmm1,QWORD PTR[rsi*8+rsp]
- shr rbx,60
- xor rax,rcx
- pslldq xmm1,1
- mov rsi,r8
- shr rbp,4
- xor rdx,rbx
- and rsi,rbp
- shr rbp,4
- pxor xmm0,xmm1
- mov rcx,QWORD PTR[rdi*8+rsp]
- mov rdi,r8
- mov rbx,rcx
- shl rcx,12
- and rdi,rbp
- movq xmm1,QWORD PTR[rsi*8+rsp]
- shr rbx,52
- xor rax,rcx
- pslldq xmm1,2
- mov rsi,r8
- shr rbp,4
- xor rdx,rbx
- and rsi,rbp
- shr rbp,4
- pxor xmm0,xmm1
- mov rcx,QWORD PTR[rdi*8+rsp]
- mov rdi,r8
- mov rbx,rcx
- shl rcx,20
- and rdi,rbp
- movq xmm1,QWORD PTR[rsi*8+rsp]
- shr rbx,44
- xor rax,rcx
- pslldq xmm1,3
- mov rsi,r8
- shr rbp,4
- xor rdx,rbx
- and rsi,rbp
- shr rbp,4
- pxor xmm0,xmm1
- mov rcx,QWORD PTR[rdi*8+rsp]
- mov rdi,r8
- mov rbx,rcx
- shl rcx,28
- and rdi,rbp
- movq xmm1,QWORD PTR[rsi*8+rsp]
- shr rbx,36
- xor rax,rcx
- pslldq xmm1,4
- mov rsi,r8
- shr rbp,4
- xor rdx,rbx
- and rsi,rbp
- shr rbp,4
- pxor xmm0,xmm1
- mov rcx,QWORD PTR[rdi*8+rsp]
- mov rdi,r8
- mov rbx,rcx
- shl rcx,36
- and rdi,rbp
- movq xmm1,QWORD PTR[rsi*8+rsp]
- shr rbx,28
- xor rax,rcx
- pslldq xmm1,5
- mov rsi,r8
- shr rbp,4
- xor rdx,rbx
- and rsi,rbp
- shr rbp,4
- pxor xmm0,xmm1
- mov rcx,QWORD PTR[rdi*8+rsp]
- mov rdi,r8
- mov rbx,rcx
- shl rcx,44
- and rdi,rbp
- movq xmm1,QWORD PTR[rsi*8+rsp]
- shr rbx,20
- xor rax,rcx
- pslldq xmm1,6
- mov rsi,r8
- shr rbp,4
- xor rdx,rbx
- and rsi,rbp
- shr rbp,4
- pxor xmm0,xmm1
- mov rcx,QWORD PTR[rdi*8+rsp]
- mov rdi,r8
- mov rbx,rcx
- shl rcx,52
- and rdi,rbp
- movq xmm1,QWORD PTR[rsi*8+rsp]
- shr rbx,12
- xor rax,rcx
- pslldq xmm1,7
- mov rsi,r8
- shr rbp,4
- xor rdx,rbx
- and rsi,rbp
- shr rbp,4
- pxor xmm0,xmm1
- mov rcx,QWORD PTR[rdi*8+rsp]
- mov rbx,rcx
- shl rcx,60
- DB 102,72,15,126,198
- shr rbx,4
- xor rax,rcx
- psrldq xmm0,8
- xor rdx,rbx
- DB 102,72,15,126,199
- xor rax,rsi
- xor rdx,rdi
- add rsp,128+8
- DB 0F3h,0C3h ;repret
- $L$end_mul_1x1::
- _mul_1x1 ENDP
- EXTERN OPENSSL_ia32cap_P:NEAR
- PUBLIC bn_GF2m_mul_2x2
- ALIGN 16
- bn_GF2m_mul_2x2 PROC PUBLIC
- mov rax,rsp
- mov r10,QWORD PTR[OPENSSL_ia32cap_P]
- bt r10,33
- jnc $L$vanilla_mul_2x2
- DB 102,72,15,110,194
- DB 102,73,15,110,201
- DB 102,73,15,110,208
- movq xmm3,QWORD PTR[40+rsp]
- movdqa xmm4,xmm0
- movdqa xmm5,xmm1
- DB 102,15,58,68,193,0
- pxor xmm4,xmm2
- pxor xmm5,xmm3
- DB 102,15,58,68,211,0
- DB 102,15,58,68,229,0
- xorps xmm4,xmm0
- xorps xmm4,xmm2
- movdqa xmm5,xmm4
- pslldq xmm4,8
- psrldq xmm5,8
- pxor xmm2,xmm4
- pxor xmm0,xmm5
- movdqu XMMWORD PTR[rcx],xmm2
- movdqu XMMWORD PTR[16+rcx],xmm0
- DB 0F3h,0C3h ;repret
- ALIGN 16
- $L$vanilla_mul_2x2::
- lea rsp,QWORD PTR[((-136))+rsp]
- mov r10,QWORD PTR[176+rsp]
- mov QWORD PTR[120+rsp],rdi
- mov QWORD PTR[128+rsp],rsi
- mov QWORD PTR[80+rsp],r14
- mov QWORD PTR[88+rsp],r13
- mov QWORD PTR[96+rsp],r12
- mov QWORD PTR[104+rsp],rbp
- mov QWORD PTR[112+rsp],rbx
- $L$body_mul_2x2::
- mov QWORD PTR[32+rsp],rcx
- mov QWORD PTR[40+rsp],rdx
- mov QWORD PTR[48+rsp],r8
- mov QWORD PTR[56+rsp],r9
- mov QWORD PTR[64+rsp],r10
- mov r8,0fh
- mov rax,rdx
- mov rbp,r9
- call _mul_1x1
- mov QWORD PTR[16+rsp],rax
- mov QWORD PTR[24+rsp],rdx
- mov rax,QWORD PTR[48+rsp]
- mov rbp,QWORD PTR[64+rsp]
- call _mul_1x1
- mov QWORD PTR[rsp],rax
- mov QWORD PTR[8+rsp],rdx
- mov rax,QWORD PTR[40+rsp]
- mov rbp,QWORD PTR[56+rsp]
- xor rax,QWORD PTR[48+rsp]
- xor rbp,QWORD PTR[64+rsp]
- call _mul_1x1
- mov rbx,QWORD PTR[rsp]
- mov rcx,QWORD PTR[8+rsp]
- mov rdi,QWORD PTR[16+rsp]
- mov rsi,QWORD PTR[24+rsp]
- mov rbp,QWORD PTR[32+rsp]
- xor rax,rdx
- xor rdx,rcx
- xor rax,rbx
- mov QWORD PTR[rbp],rbx
- xor rdx,rdi
- mov QWORD PTR[24+rbp],rsi
- xor rax,rsi
- xor rdx,rsi
- xor rax,rdx
- mov QWORD PTR[16+rbp],rdx
- mov QWORD PTR[8+rbp],rax
- mov r14,QWORD PTR[80+rsp]
- mov r13,QWORD PTR[88+rsp]
- mov r12,QWORD PTR[96+rsp]
- mov rbp,QWORD PTR[104+rsp]
- mov rbx,QWORD PTR[112+rsp]
- mov rdi,QWORD PTR[120+rsp]
- mov rsi,QWORD PTR[128+rsp]
- lea rsp,QWORD PTR[136+rsp]
- $L$epilogue_mul_2x2::
- DB 0F3h,0C3h ;repret
- $L$end_mul_2x2::
- bn_GF2m_mul_2x2 ENDP
- DB 71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105
- DB 99,97,116,105,111,110,32,102,111,114,32,120,56,54,95,54
- DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
- DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
- DB 111,114,103,62,0
- ALIGN 16
- EXTERN __imp_RtlVirtualUnwind:NEAR
- ALIGN 16
- se_handler PROC PRIVATE
- push rsi
- push rdi
- push rbx
- push rbp
- push r12
- push r13
- push r14
- push r15
- pushfq
- sub rsp,64
- mov rax,QWORD PTR[120+r8]
- mov rbx,QWORD PTR[248+r8]
- lea r10,QWORD PTR[$L$body_mul_2x2]
- cmp rbx,r10
- jb $L$in_prologue
- mov rax,QWORD PTR[152+r8]
- lea r10,QWORD PTR[$L$epilogue_mul_2x2]
- cmp rbx,r10
- jae $L$in_prologue
- mov r14,QWORD PTR[80+rax]
- mov r13,QWORD PTR[88+rax]
- mov r12,QWORD PTR[96+rax]
- mov rbp,QWORD PTR[104+rax]
- mov rbx,QWORD PTR[112+rax]
- mov rdi,QWORD PTR[120+rax]
- mov rsi,QWORD PTR[128+rax]
- mov QWORD PTR[144+r8],rbx
- mov QWORD PTR[160+r8],rbp
- mov QWORD PTR[168+r8],rsi
- mov QWORD PTR[176+r8],rdi
- mov QWORD PTR[216+r8],r12
- mov QWORD PTR[224+r8],r13
- mov QWORD PTR[232+r8],r14
- lea rax,QWORD PTR[136+rax]
- $L$in_prologue::
- mov QWORD PTR[152+r8],rax
- mov rdi,QWORD PTR[40+r9]
- mov rsi,r8
- mov ecx,154
- DD 0a548f3fch
- mov rsi,r9
- xor rcx,rcx
- mov rdx,QWORD PTR[8+rsi]
- mov r8,QWORD PTR[rsi]
- mov r9,QWORD PTR[16+rsi]
- mov r10,QWORD PTR[40+rsi]
- lea r11,QWORD PTR[56+rsi]
- lea r12,QWORD PTR[24+rsi]
- mov QWORD PTR[32+rsp],r10
- mov QWORD PTR[40+rsp],r11
- mov QWORD PTR[48+rsp],r12
- mov QWORD PTR[56+rsp],rcx
- call QWORD PTR[__imp_RtlVirtualUnwind]
- mov eax,1
- add rsp,64
- popfq
- pop r15
- pop r14
- pop r13
- pop r12
- pop rbp
- pop rbx
- pop rdi
- pop rsi
- DB 0F3h,0C3h ;repret
- se_handler ENDP
- .text$ ENDS
- .pdata SEGMENT READONLY ALIGN(4)
- ALIGN 4
- DD imagerel _mul_1x1
- DD imagerel $L$end_mul_1x1
- DD imagerel $L$SEH_info_1x1
- DD imagerel $L$vanilla_mul_2x2
- DD imagerel $L$end_mul_2x2
- DD imagerel $L$SEH_info_2x2
- .pdata ENDS
- .xdata SEGMENT READONLY ALIGN(8)
- ALIGN 8
- $L$SEH_info_1x1::
- DB 001h,007h,002h,000h
- DB 007h,001h,011h,000h
- $L$SEH_info_2x2::
- DB 9,0,0,0
- DD imagerel se_handler
- .xdata ENDS
- END
|