; This file is generated from a similarly-named Perl script in the BoringSSL ; source tree. Do not edit by hand. default rel %define XMMWORD %define YMMWORD %define ZMMWORD %ifdef BORINGSSL_PREFIX %include "boringssl_prefix_symbols_nasm.inc" %endif section .text code align=64 global gcm_gmult_ssse3 ALIGN 16 gcm_gmult_ssse3: $L$gmult_seh_begin: sub rsp,40 $L$gmult_seh_allocstack: movdqa XMMWORD[rsp],xmm6 $L$gmult_seh_save_xmm6: movdqa XMMWORD[16+rsp],xmm10 $L$gmult_seh_save_xmm10: $L$gmult_seh_prolog_end: movdqu xmm0,XMMWORD[rcx] movdqa xmm10,XMMWORD[$L$reverse_bytes] movdqa xmm2,XMMWORD[$L$low4_mask] DB 102,65,15,56,0,194 movdqa xmm1,xmm2 pandn xmm1,xmm0 psrld xmm1,4 pand xmm0,xmm2 pxor xmm2,xmm2 pxor xmm3,xmm3 mov rax,5 $L$oop_row_1: movdqa xmm4,XMMWORD[rdx] lea rdx,[16+rdx] movdqa xmm6,xmm2 DB 102,15,58,15,243,1 movdqa xmm3,xmm6 psrldq xmm2,1 movdqa xmm5,xmm4 DB 102,15,56,0,224 DB 102,15,56,0,233 pxor xmm2,xmm5 movdqa xmm5,xmm4 psllq xmm5,60 movdqa xmm6,xmm5 pslldq xmm6,8 pxor xmm3,xmm6 psrldq xmm5,8 pxor xmm2,xmm5 psrlq xmm4,4 pxor xmm2,xmm4 sub rax,1 jnz NEAR $L$oop_row_1 pxor xmm2,xmm3 psrlq xmm3,1 pxor xmm2,xmm3 psrlq xmm3,1 pxor xmm2,xmm3 psrlq xmm3,5 pxor xmm2,xmm3 pxor xmm3,xmm3 mov rax,5 $L$oop_row_2: movdqa xmm4,XMMWORD[rdx] lea rdx,[16+rdx] movdqa xmm6,xmm2 DB 102,15,58,15,243,1 movdqa xmm3,xmm6 psrldq xmm2,1 movdqa xmm5,xmm4 DB 102,15,56,0,224 DB 102,15,56,0,233 pxor xmm2,xmm5 movdqa xmm5,xmm4 psllq xmm5,60 movdqa xmm6,xmm5 pslldq xmm6,8 pxor xmm3,xmm6 psrldq xmm5,8 pxor xmm2,xmm5 psrlq xmm4,4 pxor xmm2,xmm4 sub rax,1 jnz NEAR $L$oop_row_2 pxor xmm2,xmm3 psrlq xmm3,1 pxor xmm2,xmm3 psrlq xmm3,1 pxor xmm2,xmm3 psrlq xmm3,5 pxor xmm2,xmm3 pxor xmm3,xmm3 mov rax,6 $L$oop_row_3: movdqa xmm4,XMMWORD[rdx] lea rdx,[16+rdx] movdqa xmm6,xmm2 DB 102,15,58,15,243,1 movdqa xmm3,xmm6 psrldq xmm2,1 movdqa xmm5,xmm4 DB 102,15,56,0,224 DB 102,15,56,0,233 pxor xmm2,xmm5 movdqa xmm5,xmm4 psllq xmm5,60 movdqa xmm6,xmm5 pslldq xmm6,8 pxor xmm3,xmm6 psrldq xmm5,8 pxor xmm2,xmm5 psrlq xmm4,4 pxor xmm2,xmm4 sub rax,1 jnz NEAR $L$oop_row_3 pxor xmm2,xmm3 psrlq xmm3,1 pxor xmm2,xmm3 psrlq xmm3,1 pxor xmm2,xmm3 psrlq xmm3,5 pxor xmm2,xmm3 pxor xmm3,xmm3 DB 102,65,15,56,0,210 movdqu XMMWORD[rcx],xmm2 pxor xmm0,xmm0 pxor xmm1,xmm1 pxor xmm2,xmm2 pxor xmm3,xmm3 pxor xmm4,xmm4 pxor xmm5,xmm5 pxor xmm6,xmm6 movdqa xmm6,XMMWORD[rsp] movdqa xmm10,XMMWORD[16+rsp] add rsp,40 DB 0F3h,0C3h ;repret $L$gmult_seh_end: global gcm_ghash_ssse3 ALIGN 16 gcm_ghash_ssse3: $L$ghash_seh_begin: sub rsp,56 $L$ghash_seh_allocstack: movdqa XMMWORD[rsp],xmm6 $L$ghash_seh_save_xmm6: movdqa XMMWORD[16+rsp],xmm10 $L$ghash_seh_save_xmm10: movdqa XMMWORD[32+rsp],xmm11 $L$ghash_seh_save_xmm11: $L$ghash_seh_prolog_end: movdqu xmm0,XMMWORD[rcx] movdqa xmm10,XMMWORD[$L$reverse_bytes] movdqa xmm11,XMMWORD[$L$low4_mask] and r9,-16 DB 102,65,15,56,0,194 pxor xmm3,xmm3 $L$oop_ghash: movdqu xmm1,XMMWORD[r8] DB 102,65,15,56,0,202 pxor xmm0,xmm1 movdqa xmm1,xmm11 pandn xmm1,xmm0 psrld xmm1,4 pand xmm0,xmm11 pxor xmm2,xmm2 mov rax,5 $L$oop_row_4: movdqa xmm4,XMMWORD[rdx] lea rdx,[16+rdx] movdqa xmm6,xmm2 DB 102,15,58,15,243,1 movdqa xmm3,xmm6 psrldq xmm2,1 movdqa xmm5,xmm4 DB 102,15,56,0,224 DB 102,15,56,0,233 pxor xmm2,xmm5 movdqa xmm5,xmm4 psllq xmm5,60 movdqa xmm6,xmm5 pslldq xmm6,8 pxor xmm3,xmm6 psrldq xmm5,8 pxor xmm2,xmm5 psrlq xmm4,4 pxor xmm2,xmm4 sub rax,1 jnz NEAR $L$oop_row_4 pxor xmm2,xmm3 psrlq xmm3,1 pxor xmm2,xmm3 psrlq xmm3,1 pxor xmm2,xmm3 psrlq xmm3,5 pxor xmm2,xmm3 pxor xmm3,xmm3 mov rax,5 $L$oop_row_5: movdqa xmm4,XMMWORD[rdx] lea rdx,[16+rdx] movdqa xmm6,xmm2 DB 102,15,58,15,243,1 movdqa xmm3,xmm6 psrldq xmm2,1 movdqa xmm5,xmm4 DB 102,15,56,0,224 DB 102,15,56,0,233 pxor xmm2,xmm5 movdqa xmm5,xmm4 psllq xmm5,60 movdqa xmm6,xmm5 pslldq xmm6,8 pxor xmm3,xmm6 psrldq xmm5,8 pxor xmm2,xmm5 psrlq xmm4,4 pxor xmm2,xmm4 sub rax,1 jnz NEAR $L$oop_row_5 pxor xmm2,xmm3 psrlq xmm3,1 pxor xmm2,xmm3 psrlq xmm3,1 pxor xmm2,xmm3 psrlq xmm3,5 pxor xmm2,xmm3 pxor xmm3,xmm3 mov rax,6 $L$oop_row_6: movdqa xmm4,XMMWORD[rdx] lea rdx,[16+rdx] movdqa xmm6,xmm2 DB 102,15,58,15,243,1 movdqa xmm3,xmm6 psrldq xmm2,1 movdqa xmm5,xmm4 DB 102,15,56,0,224 DB 102,15,56,0,233 pxor xmm2,xmm5 movdqa xmm5,xmm4 psllq xmm5,60 movdqa xmm6,xmm5 pslldq xmm6,8 pxor xmm3,xmm6 psrldq xmm5,8 pxor xmm2,xmm5 psrlq xmm4,4 pxor xmm2,xmm4 sub rax,1 jnz NEAR $L$oop_row_6 pxor xmm2,xmm3 psrlq xmm3,1 pxor xmm2,xmm3 psrlq xmm3,1 pxor xmm2,xmm3 psrlq xmm3,5 pxor xmm2,xmm3 pxor xmm3,xmm3 movdqa xmm0,xmm2 lea rdx,[((-256))+rdx] lea r8,[16+r8] sub r9,16 jnz NEAR $L$oop_ghash DB 102,65,15,56,0,194 movdqu XMMWORD[rcx],xmm0 pxor xmm0,xmm0 pxor xmm1,xmm1 pxor xmm2,xmm2 pxor xmm3,xmm3 pxor xmm4,xmm4 pxor xmm5,xmm5 pxor xmm6,xmm6 movdqa xmm6,XMMWORD[rsp] movdqa xmm10,XMMWORD[16+rsp] movdqa xmm11,XMMWORD[32+rsp] add rsp,56 DB 0F3h,0C3h ;repret $L$ghash_seh_end: ALIGN 16 $L$reverse_bytes: DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 $L$low4_mask: DQ 0x0f0f0f0f0f0f0f0f,0x0f0f0f0f0f0f0f0f section .pdata rdata align=4 ALIGN 4 DD $L$gmult_seh_begin wrt ..imagebase DD $L$gmult_seh_end wrt ..imagebase DD $L$gmult_seh_info wrt ..imagebase DD $L$ghash_seh_begin wrt ..imagebase DD $L$ghash_seh_end wrt ..imagebase DD $L$ghash_seh_info wrt ..imagebase section .xdata rdata align=8 ALIGN 8 $L$gmult_seh_info: DB 1 DB $L$gmult_seh_prolog_end-$L$gmult_seh_begin DB 5 DB 0 DB $L$gmult_seh_save_xmm10-$L$gmult_seh_begin DB 168 DW 1 DB $L$gmult_seh_save_xmm6-$L$gmult_seh_begin DB 104 DW 0 DB $L$gmult_seh_allocstack-$L$gmult_seh_begin DB 66 ALIGN 8 $L$ghash_seh_info: DB 1 DB $L$ghash_seh_prolog_end-$L$ghash_seh_begin DB 7 DB 0 DB $L$ghash_seh_save_xmm11-$L$ghash_seh_begin DB 184 DW 2 DB $L$ghash_seh_save_xmm10-$L$ghash_seh_begin DB 168 DW 1 DB $L$ghash_seh_save_xmm6-$L$ghash_seh_begin DB 104 DW 0 DB $L$ghash_seh_allocstack-$L$ghash_seh_begin DB 98