Based on Nekogram. Key additions: - Rebrand to FoxiGram (app name, APK name, applicationId com.foxigram.app) - Embedded Xray (VLESS+Reality) proxy client via JNI libxray.so - Bundled hidden one-tap proxies (LTE + WiFi), read-only in UI - Auto-restore proxy on restart, rebind to active network (LTE/WiFi) - Server credentials externalized to git-ignored XrayServers.java (+ template) - libxray Go source included; compiled .so, keystore, google-services.json ignored
1530 lines
33 KiB
NASM
1530 lines
33 KiB
NASM
; This file is generated from a similarly-named Perl script in the BoringSSL
|
|
; source tree. Do not edit by hand.
|
|
|
|
%ifidn __OUTPUT_FORMAT__, win64
|
|
default rel
|
|
%define XMMWORD
|
|
%define YMMWORD
|
|
%define ZMMWORD
|
|
%define _CET_ENDBR
|
|
|
|
%ifdef BORINGSSL_PREFIX
|
|
%include "boringssl_prefix_symbols_nasm.inc"
|
|
%endif
|
|
section .rdata rdata align=8
|
|
ALIGN 64
|
|
|
|
|
|
$L$bswap_mask:
|
|
DQ 0x08090a0b0c0d0e0f,0x0001020304050607
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$L$gfpoly:
|
|
DQ 1,0xc200000000000000
|
|
|
|
|
|
$L$gfpoly_and_internal_carrybit:
|
|
DQ 1,0xc200000000000001
|
|
|
|
|
|
$L$ctr_pattern:
|
|
DQ 0,0
|
|
DQ 1,0
|
|
DQ 2,0
|
|
DQ 3,0
|
|
|
|
|
|
$L$inc_4blocks:
|
|
DQ 4,0
|
|
|
|
section .text code align=64
|
|
|
|
global gcm_init_vpclmulqdq_avx512
|
|
|
|
ALIGN 32
|
|
gcm_init_vpclmulqdq_avx512:
|
|
|
|
|
|
_CET_ENDBR
|
|
|
|
lea r8,[((256-64))+rcx]
|
|
|
|
|
|
|
|
vpshufd xmm3,XMMWORD[rdx],0x4e
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vpshufd xmm0,xmm3,0xd3
|
|
vpsrad xmm0,xmm0,31
|
|
vpaddq xmm3,xmm3,xmm3
|
|
|
|
vpternlogd xmm3,xmm0,XMMWORD[$L$gfpoly_and_internal_carrybit],0x78
|
|
|
|
|
|
vbroadcasti32x4 zmm5,ZMMWORD[$L$gfpoly]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vpclmulqdq xmm0,xmm3,xmm3,0x00
|
|
vpclmulqdq xmm1,xmm3,xmm3,0x01
|
|
vpclmulqdq xmm2,xmm3,xmm3,0x10
|
|
vpxord xmm1,xmm1,xmm2
|
|
vpclmulqdq xmm2,xmm5,xmm0,0x01
|
|
vpshufd xmm0,xmm0,0x4e
|
|
vpternlogd xmm1,xmm0,xmm2,0x96
|
|
vpclmulqdq xmm4,xmm3,xmm3,0x11
|
|
vpclmulqdq xmm0,xmm5,xmm1,0x01
|
|
vpshufd xmm1,xmm1,0x4e
|
|
vpternlogd xmm4,xmm1,xmm0,0x96
|
|
|
|
|
|
|
|
vinserti128 ymm3,ymm4,xmm3,1
|
|
vinserti128 ymm4,ymm4,xmm4,1
|
|
|
|
|
|
vpclmulqdq ymm0,ymm3,ymm4,0x00
|
|
vpclmulqdq ymm1,ymm3,ymm4,0x01
|
|
vpclmulqdq ymm2,ymm3,ymm4,0x10
|
|
vpxord ymm1,ymm1,ymm2
|
|
vpclmulqdq ymm2,ymm5,ymm0,0x01
|
|
vpshufd ymm0,ymm0,0x4e
|
|
vpternlogd ymm1,ymm0,ymm2,0x96
|
|
vpclmulqdq ymm4,ymm3,ymm4,0x11
|
|
vpclmulqdq ymm0,ymm5,ymm1,0x01
|
|
vpshufd ymm1,ymm1,0x4e
|
|
vpternlogd ymm4,ymm1,ymm0,0x96
|
|
|
|
vinserti64x4 zmm3,zmm4,ymm3,1
|
|
vshufi64x2 zmm4,zmm4,zmm4,0
|
|
|
|
|
|
vmovdqu8 ZMMWORD[r8],zmm3
|
|
|
|
|
|
|
|
|
|
mov eax,3
|
|
$L$precompute_next:
|
|
sub r8,64
|
|
vpclmulqdq zmm0,zmm3,zmm4,0x00
|
|
vpclmulqdq zmm1,zmm3,zmm4,0x01
|
|
vpclmulqdq zmm2,zmm3,zmm4,0x10
|
|
vpxord zmm1,zmm1,zmm2
|
|
vpclmulqdq zmm2,zmm5,zmm0,0x01
|
|
vpshufd zmm0,zmm0,0x4e
|
|
vpternlogd zmm1,zmm0,zmm2,0x96
|
|
vpclmulqdq zmm3,zmm3,zmm4,0x11
|
|
vpclmulqdq zmm0,zmm5,zmm1,0x01
|
|
vpshufd zmm1,zmm1,0x4e
|
|
vpternlogd zmm3,zmm1,zmm0,0x96
|
|
|
|
vmovdqu8 ZMMWORD[r8],zmm3
|
|
dec eax
|
|
jnz NEAR $L$precompute_next
|
|
|
|
vzeroupper
|
|
ret
|
|
|
|
|
|
|
|
global gcm_gmult_vpclmulqdq_avx512
|
|
|
|
ALIGN 32
|
|
gcm_gmult_vpclmulqdq_avx512:
|
|
|
|
$L$SEH_begin_gcm_gmult_vpclmulqdq_avx512_1:
|
|
_CET_ENDBR
|
|
sub rsp,24
|
|
$L$SEH_prologue_gcm_gmult_vpclmulqdq_avx512_2:
|
|
vmovdqa XMMWORD[rsp],xmm6
|
|
$L$SEH_prologue_gcm_gmult_vpclmulqdq_avx512_3:
|
|
|
|
$L$SEH_endprologue_gcm_gmult_vpclmulqdq_avx512_4:
|
|
|
|
vmovdqu xmm0,XMMWORD[rcx]
|
|
vmovdqu xmm1,XMMWORD[$L$bswap_mask]
|
|
vmovdqu xmm2,XMMWORD[((256-16))+rdx]
|
|
vmovdqu xmm3,XMMWORD[$L$gfpoly]
|
|
vpshufb xmm0,xmm0,xmm1
|
|
|
|
vpclmulqdq xmm4,xmm0,xmm2,0x00
|
|
vpclmulqdq xmm5,xmm0,xmm2,0x01
|
|
vpclmulqdq xmm6,xmm0,xmm2,0x10
|
|
vpxord xmm5,xmm5,xmm6
|
|
vpclmulqdq xmm6,xmm3,xmm4,0x01
|
|
vpshufd xmm4,xmm4,0x4e
|
|
vpternlogd xmm5,xmm4,xmm6,0x96
|
|
vpclmulqdq xmm0,xmm0,xmm2,0x11
|
|
vpclmulqdq xmm4,xmm3,xmm5,0x01
|
|
vpshufd xmm5,xmm5,0x4e
|
|
vpternlogd xmm0,xmm5,xmm4,0x96
|
|
|
|
|
|
vpshufb xmm0,xmm0,xmm1
|
|
vmovdqu XMMWORD[rcx],xmm0
|
|
|
|
|
|
vmovdqa xmm6,XMMWORD[rsp]
|
|
add rsp,24
|
|
ret
|
|
$L$SEH_end_gcm_gmult_vpclmulqdq_avx512_5:
|
|
|
|
|
|
global gcm_ghash_vpclmulqdq_avx512
|
|
|
|
ALIGN 32
|
|
gcm_ghash_vpclmulqdq_avx512:
|
|
|
|
$L$SEH_begin_gcm_ghash_vpclmulqdq_avx512_1:
|
|
_CET_ENDBR
|
|
sub rsp,136
|
|
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_2:
|
|
vmovdqa XMMWORD[rsp],xmm6
|
|
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_3:
|
|
vmovdqa XMMWORD[16+rsp],xmm7
|
|
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_4:
|
|
vmovdqa XMMWORD[32+rsp],xmm8
|
|
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_5:
|
|
vmovdqa XMMWORD[48+rsp],xmm9
|
|
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_6:
|
|
vmovdqa XMMWORD[64+rsp],xmm10
|
|
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_7:
|
|
vmovdqa XMMWORD[80+rsp],xmm11
|
|
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_8:
|
|
vmovdqa XMMWORD[96+rsp],xmm12
|
|
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_9:
|
|
vmovdqa XMMWORD[112+rsp],xmm13
|
|
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_10:
|
|
|
|
$L$SEH_endprologue_gcm_ghash_vpclmulqdq_avx512_11:
|
|
|
|
|
|
|
|
|
|
vmovdqu xmm4,XMMWORD[$L$bswap_mask]
|
|
vmovdqu xmm10,XMMWORD[$L$gfpoly]
|
|
|
|
|
|
vmovdqu xmm5,XMMWORD[rcx]
|
|
vpshufb xmm5,xmm5,xmm4
|
|
|
|
|
|
cmp r9,64
|
|
jb NEAR $L$aad_blockbyblock
|
|
|
|
|
|
|
|
vshufi64x2 zmm4,zmm4,zmm4,0
|
|
vshufi64x2 zmm10,zmm10,zmm10,0
|
|
|
|
|
|
vmovdqu8 zmm9,ZMMWORD[((256-64))+rdx]
|
|
|
|
cmp r9,256
|
|
jb NEAR $L$aad_loop_1x
|
|
|
|
|
|
vmovdqu8 zmm6,ZMMWORD[((256-256))+rdx]
|
|
vmovdqu8 zmm7,ZMMWORD[((256-192))+rdx]
|
|
vmovdqu8 zmm8,ZMMWORD[((256-128))+rdx]
|
|
|
|
|
|
$L$aad_loop_4x:
|
|
vmovdqu8 zmm0,ZMMWORD[r8]
|
|
vmovdqu8 zmm1,ZMMWORD[64+r8]
|
|
vmovdqu8 zmm2,ZMMWORD[128+r8]
|
|
vmovdqu8 zmm3,ZMMWORD[192+r8]
|
|
vpshufb zmm0,zmm0,zmm4
|
|
vpxord zmm0,zmm0,zmm5
|
|
vpshufb zmm1,zmm1,zmm4
|
|
vpshufb zmm2,zmm2,zmm4
|
|
vpshufb zmm3,zmm3,zmm4
|
|
vpclmulqdq zmm5,zmm0,zmm6,0x00
|
|
vpclmulqdq zmm11,zmm1,zmm7,0x00
|
|
vpclmulqdq zmm12,zmm2,zmm8,0x00
|
|
vpxord zmm5,zmm5,zmm11
|
|
vpclmulqdq zmm13,zmm3,zmm9,0x00
|
|
vpternlogd zmm5,zmm12,zmm13,0x96
|
|
vpclmulqdq zmm11,zmm0,zmm6,0x01
|
|
vpclmulqdq zmm12,zmm1,zmm7,0x01
|
|
vpclmulqdq zmm13,zmm2,zmm8,0x01
|
|
vpternlogd zmm11,zmm12,zmm13,0x96
|
|
vpclmulqdq zmm12,zmm3,zmm9,0x01
|
|
vpclmulqdq zmm13,zmm0,zmm6,0x10
|
|
vpternlogd zmm11,zmm12,zmm13,0x96
|
|
vpclmulqdq zmm12,zmm1,zmm7,0x10
|
|
vpclmulqdq zmm13,zmm2,zmm8,0x10
|
|
vpternlogd zmm11,zmm12,zmm13,0x96
|
|
vpclmulqdq zmm13,zmm10,zmm5,0x01
|
|
vpclmulqdq zmm12,zmm3,zmm9,0x10
|
|
vpxord zmm11,zmm11,zmm12
|
|
vpshufd zmm5,zmm5,0x4e
|
|
vpclmulqdq zmm0,zmm0,zmm6,0x11
|
|
vpclmulqdq zmm1,zmm1,zmm7,0x11
|
|
vpclmulqdq zmm2,zmm2,zmm8,0x11
|
|
vpternlogd zmm11,zmm5,zmm13,0x96
|
|
vpclmulqdq zmm3,zmm3,zmm9,0x11
|
|
vpternlogd zmm0,zmm1,zmm2,0x96
|
|
vpclmulqdq zmm12,zmm10,zmm11,0x01
|
|
vpxord zmm5,zmm0,zmm3
|
|
vpshufd zmm11,zmm11,0x4e
|
|
vpternlogd zmm5,zmm11,zmm12,0x96
|
|
vextracti32x4 xmm0,zmm5,1
|
|
vextracti32x4 xmm1,zmm5,2
|
|
vextracti32x4 xmm2,zmm5,3
|
|
vpxord xmm5,xmm5,xmm0
|
|
vpternlogd xmm5,xmm2,xmm1,0x96
|
|
|
|
add r8,256
|
|
sub r9,256
|
|
cmp r9,256
|
|
jae NEAR $L$aad_loop_4x
|
|
|
|
|
|
cmp r9,64
|
|
jb NEAR $L$aad_large_done
|
|
$L$aad_loop_1x:
|
|
vmovdqu8 zmm0,ZMMWORD[r8]
|
|
vpshufb zmm0,zmm0,zmm4
|
|
vpxord zmm5,zmm5,zmm0
|
|
vpclmulqdq zmm0,zmm5,zmm9,0x00
|
|
vpclmulqdq zmm1,zmm5,zmm9,0x01
|
|
vpclmulqdq zmm2,zmm5,zmm9,0x10
|
|
vpxord zmm1,zmm1,zmm2
|
|
vpclmulqdq zmm2,zmm10,zmm0,0x01
|
|
vpshufd zmm0,zmm0,0x4e
|
|
vpternlogd zmm1,zmm0,zmm2,0x96
|
|
vpclmulqdq zmm5,zmm5,zmm9,0x11
|
|
vpclmulqdq zmm0,zmm10,zmm1,0x01
|
|
vpshufd zmm1,zmm1,0x4e
|
|
vpternlogd zmm5,zmm1,zmm0,0x96
|
|
|
|
vextracti32x4 xmm0,zmm5,1
|
|
vextracti32x4 xmm1,zmm5,2
|
|
vextracti32x4 xmm2,zmm5,3
|
|
vpxord xmm5,xmm5,xmm0
|
|
vpternlogd xmm5,xmm2,xmm1,0x96
|
|
|
|
add r8,64
|
|
sub r9,64
|
|
cmp r9,64
|
|
jae NEAR $L$aad_loop_1x
|
|
|
|
$L$aad_large_done:
|
|
|
|
|
|
$L$aad_blockbyblock:
|
|
test r9,r9
|
|
jz NEAR $L$aad_done
|
|
vmovdqu xmm9,XMMWORD[((256-16))+rdx]
|
|
$L$aad_loop_blockbyblock:
|
|
vmovdqu xmm0,XMMWORD[r8]
|
|
vpshufb xmm0,xmm0,xmm4
|
|
vpxor xmm5,xmm5,xmm0
|
|
vpclmulqdq xmm0,xmm5,xmm9,0x00
|
|
vpclmulqdq xmm1,xmm5,xmm9,0x01
|
|
vpclmulqdq xmm2,xmm5,xmm9,0x10
|
|
vpxord xmm1,xmm1,xmm2
|
|
vpclmulqdq xmm2,xmm10,xmm0,0x01
|
|
vpshufd xmm0,xmm0,0x4e
|
|
vpternlogd xmm1,xmm0,xmm2,0x96
|
|
vpclmulqdq xmm5,xmm5,xmm9,0x11
|
|
vpclmulqdq xmm0,xmm10,xmm1,0x01
|
|
vpshufd xmm1,xmm1,0x4e
|
|
vpternlogd xmm5,xmm1,xmm0,0x96
|
|
|
|
add r8,16
|
|
sub r9,16
|
|
jnz NEAR $L$aad_loop_blockbyblock
|
|
|
|
$L$aad_done:
|
|
|
|
vpshufb xmm5,xmm5,xmm4
|
|
vmovdqu XMMWORD[rcx],xmm5
|
|
|
|
vzeroupper
|
|
vmovdqa xmm6,XMMWORD[rsp]
|
|
vmovdqa xmm7,XMMWORD[16+rsp]
|
|
vmovdqa xmm8,XMMWORD[32+rsp]
|
|
vmovdqa xmm9,XMMWORD[48+rsp]
|
|
vmovdqa xmm10,XMMWORD[64+rsp]
|
|
vmovdqa xmm11,XMMWORD[80+rsp]
|
|
vmovdqa xmm12,XMMWORD[96+rsp]
|
|
vmovdqa xmm13,XMMWORD[112+rsp]
|
|
add rsp,136
|
|
ret
|
|
$L$SEH_end_gcm_ghash_vpclmulqdq_avx512_12:
|
|
|
|
|
|
global aes_gcm_enc_update_vaes_avx512
|
|
|
|
ALIGN 32
|
|
aes_gcm_enc_update_vaes_avx512:
|
|
|
|
$L$SEH_begin_aes_gcm_enc_update_vaes_avx512_1:
|
|
_CET_ENDBR
|
|
push rsi
|
|
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_2:
|
|
push rdi
|
|
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_3:
|
|
push r12
|
|
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_4:
|
|
|
|
mov rsi,QWORD[64+rsp]
|
|
mov rdi,QWORD[72+rsp]
|
|
mov r12,QWORD[80+rsp]
|
|
sub rsp,160
|
|
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_5:
|
|
vmovdqa XMMWORD[rsp],xmm6
|
|
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_6:
|
|
vmovdqa XMMWORD[16+rsp],xmm7
|
|
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_7:
|
|
vmovdqa XMMWORD[32+rsp],xmm8
|
|
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_8:
|
|
vmovdqa XMMWORD[48+rsp],xmm9
|
|
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_9:
|
|
vmovdqa XMMWORD[64+rsp],xmm10
|
|
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_10:
|
|
vmovdqa XMMWORD[80+rsp],xmm11
|
|
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_11:
|
|
vmovdqa XMMWORD[96+rsp],xmm12
|
|
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_12:
|
|
vmovdqa XMMWORD[112+rsp],xmm13
|
|
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_13:
|
|
vmovdqa XMMWORD[128+rsp],xmm14
|
|
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_14:
|
|
vmovdqa XMMWORD[144+rsp],xmm15
|
|
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_15:
|
|
|
|
$L$SEH_endprologue_aes_gcm_enc_update_vaes_avx512_16:
|
|
%ifdef BORINGSSL_DISPATCH_TEST
|
|
EXTERN BORINGSSL_function_hit
|
|
mov BYTE[((BORINGSSL_function_hit+7))],1
|
|
%endif
|
|
|
|
vbroadcasti32x4 zmm8,ZMMWORD[$L$bswap_mask]
|
|
vbroadcasti32x4 zmm31,ZMMWORD[$L$gfpoly]
|
|
|
|
|
|
|
|
vmovdqu xmm10,XMMWORD[r12]
|
|
vpshufb xmm10,xmm10,xmm8
|
|
vbroadcasti32x4 zmm12,ZMMWORD[rsi]
|
|
vpshufb zmm12,zmm12,zmm8
|
|
|
|
|
|
|
|
mov r10d,DWORD[240+r9]
|
|
lea r10d,[((-20))+r10*4]
|
|
|
|
|
|
|
|
|
|
lea r11,[96+r10*4+r9]
|
|
vbroadcasti32x4 zmm13,ZMMWORD[r9]
|
|
vbroadcasti32x4 zmm14,ZMMWORD[r11]
|
|
|
|
|
|
vpaddd zmm12,zmm12,ZMMWORD[$L$ctr_pattern]
|
|
|
|
|
|
vbroadcasti32x4 zmm11,ZMMWORD[$L$inc_4blocks]
|
|
|
|
|
|
|
|
cmp r8,256
|
|
jb NEAR $L$crypt_loop_4x_done__func1
|
|
|
|
|
|
vmovdqu8 zmm27,ZMMWORD[((256-256))+rdi]
|
|
vmovdqu8 zmm28,ZMMWORD[((256-192))+rdi]
|
|
vmovdqu8 zmm29,ZMMWORD[((256-128))+rdi]
|
|
vmovdqu8 zmm30,ZMMWORD[((256-64))+rdi]
|
|
|
|
|
|
|
|
|
|
vpshufb zmm0,zmm12,zmm8
|
|
vpaddd zmm12,zmm12,zmm11
|
|
vpshufb zmm1,zmm12,zmm8
|
|
vpaddd zmm12,zmm12,zmm11
|
|
vpshufb zmm2,zmm12,zmm8
|
|
vpaddd zmm12,zmm12,zmm11
|
|
vpshufb zmm3,zmm12,zmm8
|
|
vpaddd zmm12,zmm12,zmm11
|
|
|
|
|
|
vpxord zmm0,zmm0,zmm13
|
|
vpxord zmm1,zmm1,zmm13
|
|
vpxord zmm2,zmm2,zmm13
|
|
vpxord zmm3,zmm3,zmm13
|
|
|
|
lea rax,[16+r9]
|
|
$L$vaesenc_loop_first_4_vecs__func1:
|
|
vbroadcasti32x4 zmm9,ZMMWORD[rax]
|
|
vaesenc zmm0,zmm0,zmm9
|
|
vaesenc zmm1,zmm1,zmm9
|
|
vaesenc zmm2,zmm2,zmm9
|
|
vaesenc zmm3,zmm3,zmm9
|
|
|
|
add rax,16
|
|
cmp r11,rax
|
|
jne NEAR $L$vaesenc_loop_first_4_vecs__func1
|
|
vpxord zmm4,zmm14,ZMMWORD[rcx]
|
|
vpxord zmm5,zmm14,ZMMWORD[64+rcx]
|
|
vpxord zmm6,zmm14,ZMMWORD[128+rcx]
|
|
vpxord zmm7,zmm14,ZMMWORD[192+rcx]
|
|
vaesenclast zmm4,zmm0,zmm4
|
|
vaesenclast zmm5,zmm1,zmm5
|
|
vaesenclast zmm6,zmm2,zmm6
|
|
vaesenclast zmm7,zmm3,zmm7
|
|
vmovdqu8 ZMMWORD[rdx],zmm4
|
|
vmovdqu8 ZMMWORD[64+rdx],zmm5
|
|
vmovdqu8 ZMMWORD[128+rdx],zmm6
|
|
vmovdqu8 ZMMWORD[192+rdx],zmm7
|
|
|
|
add rcx,256
|
|
add rdx,256
|
|
sub r8,256
|
|
cmp r8,256
|
|
jb NEAR $L$ghash_last_ciphertext_4x__func1
|
|
|
|
vbroadcasti32x4 zmm15,ZMMWORD[((-144))+r11]
|
|
vbroadcasti32x4 zmm16,ZMMWORD[((-128))+r11]
|
|
vbroadcasti32x4 zmm17,ZMMWORD[((-112))+r11]
|
|
vbroadcasti32x4 zmm18,ZMMWORD[((-96))+r11]
|
|
vbroadcasti32x4 zmm19,ZMMWORD[((-80))+r11]
|
|
vbroadcasti32x4 zmm20,ZMMWORD[((-64))+r11]
|
|
vbroadcasti32x4 zmm21,ZMMWORD[((-48))+r11]
|
|
vbroadcasti32x4 zmm22,ZMMWORD[((-32))+r11]
|
|
vbroadcasti32x4 zmm23,ZMMWORD[((-16))+r11]
|
|
|
|
$L$crypt_loop_4x__func1:
|
|
|
|
|
|
|
|
vpshufb zmm0,zmm12,zmm8
|
|
vpaddd zmm12,zmm12,zmm11
|
|
vpshufb zmm1,zmm12,zmm8
|
|
vpaddd zmm12,zmm12,zmm11
|
|
vpshufb zmm2,zmm12,zmm8
|
|
vpaddd zmm12,zmm12,zmm11
|
|
vpshufb zmm3,zmm12,zmm8
|
|
vpaddd zmm12,zmm12,zmm11
|
|
|
|
|
|
vpxord zmm0,zmm0,zmm13
|
|
vpxord zmm1,zmm1,zmm13
|
|
vpxord zmm2,zmm2,zmm13
|
|
vpxord zmm3,zmm3,zmm13
|
|
|
|
cmp r10d,24
|
|
jl NEAR $L$aes128__func1
|
|
je NEAR $L$aes192__func1
|
|
|
|
vbroadcasti32x4 zmm9,ZMMWORD[((-208))+r11]
|
|
vaesenc zmm0,zmm0,zmm9
|
|
vaesenc zmm1,zmm1,zmm9
|
|
vaesenc zmm2,zmm2,zmm9
|
|
vaesenc zmm3,zmm3,zmm9
|
|
|
|
vbroadcasti32x4 zmm9,ZMMWORD[((-192))+r11]
|
|
vaesenc zmm0,zmm0,zmm9
|
|
vaesenc zmm1,zmm1,zmm9
|
|
vaesenc zmm2,zmm2,zmm9
|
|
vaesenc zmm3,zmm3,zmm9
|
|
|
|
$L$aes192__func1:
|
|
vbroadcasti32x4 zmm9,ZMMWORD[((-176))+r11]
|
|
vaesenc zmm0,zmm0,zmm9
|
|
vaesenc zmm1,zmm1,zmm9
|
|
vaesenc zmm2,zmm2,zmm9
|
|
vaesenc zmm3,zmm3,zmm9
|
|
|
|
vbroadcasti32x4 zmm9,ZMMWORD[((-160))+r11]
|
|
vaesenc zmm0,zmm0,zmm9
|
|
vaesenc zmm1,zmm1,zmm9
|
|
vaesenc zmm2,zmm2,zmm9
|
|
vaesenc zmm3,zmm3,zmm9
|
|
|
|
$L$aes128__func1:
|
|
|
|
|
|
|
|
|
|
prefetcht0 [((512+0))+rcx]
|
|
prefetcht0 [((512+64))+rcx]
|
|
prefetcht0 [((512+128))+rcx]
|
|
prefetcht0 [((512+192))+rcx]
|
|
|
|
|
|
|
|
|
|
vpshufb zmm4,zmm4,zmm8
|
|
vpxord zmm4,zmm4,zmm10
|
|
vpshufb zmm5,zmm5,zmm8
|
|
vpshufb zmm6,zmm6,zmm8
|
|
|
|
vaesenc zmm0,zmm0,zmm15
|
|
vaesenc zmm1,zmm1,zmm15
|
|
vaesenc zmm2,zmm2,zmm15
|
|
vaesenc zmm3,zmm3,zmm15
|
|
|
|
vpshufb zmm7,zmm7,zmm8
|
|
vpclmulqdq zmm10,zmm4,zmm27,0x00
|
|
vpclmulqdq zmm24,zmm5,zmm28,0x00
|
|
vpclmulqdq zmm25,zmm6,zmm29,0x00
|
|
|
|
vaesenc zmm0,zmm0,zmm16
|
|
vaesenc zmm1,zmm1,zmm16
|
|
vaesenc zmm2,zmm2,zmm16
|
|
vaesenc zmm3,zmm3,zmm16
|
|
|
|
vpxord zmm10,zmm10,zmm24
|
|
vpclmulqdq zmm26,zmm7,zmm30,0x00
|
|
vpternlogd zmm10,zmm25,zmm26,0x96
|
|
vpclmulqdq zmm24,zmm4,zmm27,0x01
|
|
|
|
vaesenc zmm0,zmm0,zmm17
|
|
vaesenc zmm1,zmm1,zmm17
|
|
vaesenc zmm2,zmm2,zmm17
|
|
vaesenc zmm3,zmm3,zmm17
|
|
|
|
vpclmulqdq zmm25,zmm5,zmm28,0x01
|
|
vpclmulqdq zmm26,zmm6,zmm29,0x01
|
|
vpternlogd zmm24,zmm25,zmm26,0x96
|
|
vpclmulqdq zmm25,zmm7,zmm30,0x01
|
|
|
|
vaesenc zmm0,zmm0,zmm18
|
|
vaesenc zmm1,zmm1,zmm18
|
|
vaesenc zmm2,zmm2,zmm18
|
|
vaesenc zmm3,zmm3,zmm18
|
|
|
|
vpclmulqdq zmm26,zmm4,zmm27,0x10
|
|
vpternlogd zmm24,zmm25,zmm26,0x96
|
|
vpclmulqdq zmm25,zmm5,zmm28,0x10
|
|
vpclmulqdq zmm26,zmm6,zmm29,0x10
|
|
|
|
vaesenc zmm0,zmm0,zmm19
|
|
vaesenc zmm1,zmm1,zmm19
|
|
vaesenc zmm2,zmm2,zmm19
|
|
vaesenc zmm3,zmm3,zmm19
|
|
|
|
vpternlogd zmm24,zmm25,zmm26,0x96
|
|
vpclmulqdq zmm26,zmm31,zmm10,0x01
|
|
vpclmulqdq zmm25,zmm7,zmm30,0x10
|
|
vpxord zmm24,zmm24,zmm25
|
|
|
|
vaesenc zmm0,zmm0,zmm20
|
|
vaesenc zmm1,zmm1,zmm20
|
|
vaesenc zmm2,zmm2,zmm20
|
|
vaesenc zmm3,zmm3,zmm20
|
|
|
|
vpshufd zmm10,zmm10,0x4e
|
|
vpclmulqdq zmm4,zmm4,zmm27,0x11
|
|
vpclmulqdq zmm5,zmm5,zmm28,0x11
|
|
vpclmulqdq zmm6,zmm6,zmm29,0x11
|
|
|
|
vaesenc zmm0,zmm0,zmm21
|
|
vaesenc zmm1,zmm1,zmm21
|
|
vaesenc zmm2,zmm2,zmm21
|
|
vaesenc zmm3,zmm3,zmm21
|
|
|
|
vpternlogd zmm24,zmm10,zmm26,0x96
|
|
vpclmulqdq zmm7,zmm7,zmm30,0x11
|
|
vpternlogd zmm4,zmm5,zmm6,0x96
|
|
vpclmulqdq zmm25,zmm31,zmm24,0x01
|
|
|
|
vaesenc zmm0,zmm0,zmm22
|
|
vaesenc zmm1,zmm1,zmm22
|
|
vaesenc zmm2,zmm2,zmm22
|
|
vaesenc zmm3,zmm3,zmm22
|
|
|
|
vpxord zmm10,zmm4,zmm7
|
|
vpshufd zmm24,zmm24,0x4e
|
|
vpternlogd zmm10,zmm24,zmm25,0x96
|
|
|
|
vaesenc zmm0,zmm0,zmm23
|
|
vaesenc zmm1,zmm1,zmm23
|
|
vaesenc zmm2,zmm2,zmm23
|
|
vaesenc zmm3,zmm3,zmm23
|
|
|
|
|
|
vextracti32x4 xmm4,zmm10,1
|
|
vextracti32x4 xmm5,zmm10,2
|
|
vextracti32x4 xmm6,zmm10,3
|
|
vpxord xmm10,xmm10,xmm4
|
|
vpternlogd xmm10,xmm6,xmm5,0x96
|
|
|
|
vpxord zmm4,zmm14,ZMMWORD[rcx]
|
|
vpxord zmm5,zmm14,ZMMWORD[64+rcx]
|
|
vpxord zmm6,zmm14,ZMMWORD[128+rcx]
|
|
vpxord zmm7,zmm14,ZMMWORD[192+rcx]
|
|
vaesenclast zmm4,zmm0,zmm4
|
|
vaesenclast zmm5,zmm1,zmm5
|
|
vaesenclast zmm6,zmm2,zmm6
|
|
vaesenclast zmm7,zmm3,zmm7
|
|
vmovdqu8 ZMMWORD[rdx],zmm4
|
|
vmovdqu8 ZMMWORD[64+rdx],zmm5
|
|
vmovdqu8 ZMMWORD[128+rdx],zmm6
|
|
vmovdqu8 ZMMWORD[192+rdx],zmm7
|
|
|
|
add rcx,256
|
|
add rdx,256
|
|
sub r8,256
|
|
cmp r8,256
|
|
jae NEAR $L$crypt_loop_4x__func1
|
|
$L$ghash_last_ciphertext_4x__func1:
|
|
vpshufb zmm4,zmm4,zmm8
|
|
vpxord zmm4,zmm4,zmm10
|
|
vpshufb zmm5,zmm5,zmm8
|
|
vpshufb zmm6,zmm6,zmm8
|
|
vpshufb zmm7,zmm7,zmm8
|
|
vpclmulqdq zmm10,zmm4,zmm27,0x00
|
|
vpclmulqdq zmm24,zmm5,zmm28,0x00
|
|
vpclmulqdq zmm25,zmm6,zmm29,0x00
|
|
vpxord zmm10,zmm10,zmm24
|
|
vpclmulqdq zmm26,zmm7,zmm30,0x00
|
|
vpternlogd zmm10,zmm25,zmm26,0x96
|
|
vpclmulqdq zmm24,zmm4,zmm27,0x01
|
|
vpclmulqdq zmm25,zmm5,zmm28,0x01
|
|
vpclmulqdq zmm26,zmm6,zmm29,0x01
|
|
vpternlogd zmm24,zmm25,zmm26,0x96
|
|
vpclmulqdq zmm25,zmm7,zmm30,0x01
|
|
vpclmulqdq zmm26,zmm4,zmm27,0x10
|
|
vpternlogd zmm24,zmm25,zmm26,0x96
|
|
vpclmulqdq zmm25,zmm5,zmm28,0x10
|
|
vpclmulqdq zmm26,zmm6,zmm29,0x10
|
|
vpternlogd zmm24,zmm25,zmm26,0x96
|
|
vpclmulqdq zmm26,zmm31,zmm10,0x01
|
|
vpclmulqdq zmm25,zmm7,zmm30,0x10
|
|
vpxord zmm24,zmm24,zmm25
|
|
vpshufd zmm10,zmm10,0x4e
|
|
vpclmulqdq zmm4,zmm4,zmm27,0x11
|
|
vpclmulqdq zmm5,zmm5,zmm28,0x11
|
|
vpclmulqdq zmm6,zmm6,zmm29,0x11
|
|
vpternlogd zmm24,zmm10,zmm26,0x96
|
|
vpclmulqdq zmm7,zmm7,zmm30,0x11
|
|
vpternlogd zmm4,zmm5,zmm6,0x96
|
|
vpclmulqdq zmm25,zmm31,zmm24,0x01
|
|
vpxord zmm10,zmm4,zmm7
|
|
vpshufd zmm24,zmm24,0x4e
|
|
vpternlogd zmm10,zmm24,zmm25,0x96
|
|
vextracti32x4 xmm4,zmm10,1
|
|
vextracti32x4 xmm5,zmm10,2
|
|
vextracti32x4 xmm6,zmm10,3
|
|
vpxord xmm10,xmm10,xmm4
|
|
vpternlogd xmm10,xmm6,xmm5,0x96
|
|
|
|
$L$crypt_loop_4x_done__func1:
|
|
|
|
test r8,r8
|
|
jz NEAR $L$done__func1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mov rax,r8
|
|
neg rax
|
|
and rax,-16
|
|
lea rsi,[256+rax*1+rdi]
|
|
vpxor xmm4,xmm4,xmm4
|
|
vpxor xmm5,xmm5,xmm5
|
|
vpxor xmm6,xmm6,xmm6
|
|
|
|
cmp r8,64
|
|
jb NEAR $L$partial_vec__func1
|
|
|
|
$L$crypt_loop_1x__func1:
|
|
|
|
|
|
|
|
vpshufb zmm0,zmm12,zmm8
|
|
vpaddd zmm12,zmm12,zmm11
|
|
vpxord zmm0,zmm0,zmm13
|
|
lea rax,[16+r9]
|
|
$L$vaesenc_loop_tail_full_vec__func1:
|
|
vbroadcasti32x4 zmm9,ZMMWORD[rax]
|
|
vaesenc zmm0,zmm0,zmm9
|
|
add rax,16
|
|
cmp r11,rax
|
|
jne NEAR $L$vaesenc_loop_tail_full_vec__func1
|
|
vaesenclast zmm0,zmm0,zmm14
|
|
|
|
|
|
vmovdqu8 zmm1,ZMMWORD[rcx]
|
|
vpxord zmm0,zmm0,zmm1
|
|
vmovdqu8 ZMMWORD[rdx],zmm0
|
|
|
|
|
|
vmovdqu8 zmm30,ZMMWORD[rsi]
|
|
vpshufb zmm0,zmm0,zmm8
|
|
vpxord zmm0,zmm0,zmm10
|
|
vpclmulqdq zmm7,zmm0,zmm30,0x00
|
|
vpclmulqdq zmm1,zmm0,zmm30,0x01
|
|
vpclmulqdq zmm2,zmm0,zmm30,0x10
|
|
vpclmulqdq zmm3,zmm0,zmm30,0x11
|
|
vpxord zmm4,zmm4,zmm7
|
|
vpternlogd zmm5,zmm1,zmm2,0x96
|
|
vpxord zmm6,zmm6,zmm3
|
|
|
|
vpxor xmm10,xmm10,xmm10
|
|
|
|
add rsi,64
|
|
add rcx,64
|
|
add rdx,64
|
|
sub r8,64
|
|
cmp r8,64
|
|
jae NEAR $L$crypt_loop_1x__func1
|
|
|
|
test r8,r8
|
|
jz NEAR $L$reduce__func1
|
|
|
|
$L$partial_vec__func1:
|
|
|
|
|
|
|
|
|
|
mov rax,-1
|
|
bzhi rax,rax,r8
|
|
kmovq k1,rax
|
|
add r8,15
|
|
and r8,-16
|
|
mov rax,-1
|
|
bzhi rax,rax,r8
|
|
kmovq k2,rax
|
|
|
|
|
|
|
|
vpshufb zmm0,zmm12,zmm8
|
|
vpxord zmm0,zmm0,zmm13
|
|
lea rax,[16+r9]
|
|
$L$vaesenc_loop_tail_partialvec__func1:
|
|
vbroadcasti32x4 zmm9,ZMMWORD[rax]
|
|
vaesenc zmm0,zmm0,zmm9
|
|
add rax,16
|
|
cmp r11,rax
|
|
jne NEAR $L$vaesenc_loop_tail_partialvec__func1
|
|
vaesenclast zmm0,zmm0,zmm14
|
|
|
|
|
|
vmovdqu8 zmm1{k1}{z},[rcx]
|
|
vpxord zmm0,zmm0,zmm1
|
|
vmovdqu8 ZMMWORD[rdx]{k1},zmm0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vmovdqu8 zmm30{k2}{z},[rsi]
|
|
vmovdqu8 zmm1{k1}{z},zmm0
|
|
vpshufb zmm0,zmm1,zmm8
|
|
vpxord zmm0,zmm0,zmm10
|
|
vpclmulqdq zmm7,zmm0,zmm30,0x00
|
|
vpclmulqdq zmm1,zmm0,zmm30,0x01
|
|
vpclmulqdq zmm2,zmm0,zmm30,0x10
|
|
vpclmulqdq zmm3,zmm0,zmm30,0x11
|
|
vpxord zmm4,zmm4,zmm7
|
|
vpternlogd zmm5,zmm1,zmm2,0x96
|
|
vpxord zmm6,zmm6,zmm3
|
|
|
|
|
|
$L$reduce__func1:
|
|
|
|
vpclmulqdq zmm0,zmm31,zmm4,0x01
|
|
vpshufd zmm4,zmm4,0x4e
|
|
vpternlogd zmm5,zmm4,zmm0,0x96
|
|
vpclmulqdq zmm0,zmm31,zmm5,0x01
|
|
vpshufd zmm5,zmm5,0x4e
|
|
vpternlogd zmm6,zmm5,zmm0,0x96
|
|
|
|
vextracti32x4 xmm0,zmm6,1
|
|
vextracti32x4 xmm1,zmm6,2
|
|
vextracti32x4 xmm2,zmm6,3
|
|
vpxord xmm10,xmm6,xmm0
|
|
vpternlogd xmm10,xmm2,xmm1,0x96
|
|
|
|
|
|
$L$done__func1:
|
|
|
|
vpshufb xmm10,xmm10,xmm8
|
|
vmovdqu XMMWORD[r12],xmm10
|
|
|
|
vzeroupper
|
|
vmovdqa xmm6,XMMWORD[rsp]
|
|
vmovdqa xmm7,XMMWORD[16+rsp]
|
|
vmovdqa xmm8,XMMWORD[32+rsp]
|
|
vmovdqa xmm9,XMMWORD[48+rsp]
|
|
vmovdqa xmm10,XMMWORD[64+rsp]
|
|
vmovdqa xmm11,XMMWORD[80+rsp]
|
|
vmovdqa xmm12,XMMWORD[96+rsp]
|
|
vmovdqa xmm13,XMMWORD[112+rsp]
|
|
vmovdqa xmm14,XMMWORD[128+rsp]
|
|
vmovdqa xmm15,XMMWORD[144+rsp]
|
|
add rsp,160
|
|
pop r12
|
|
pop rdi
|
|
pop rsi
|
|
ret
|
|
$L$SEH_end_aes_gcm_enc_update_vaes_avx512_17:
|
|
|
|
|
|
global aes_gcm_dec_update_vaes_avx512
|
|
|
|
ALIGN 32
|
|
aes_gcm_dec_update_vaes_avx512:
|
|
|
|
$L$SEH_begin_aes_gcm_dec_update_vaes_avx512_1:
|
|
_CET_ENDBR
|
|
push rsi
|
|
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_2:
|
|
push rdi
|
|
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_3:
|
|
push r12
|
|
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_4:
|
|
|
|
mov rsi,QWORD[64+rsp]
|
|
mov rdi,QWORD[72+rsp]
|
|
mov r12,QWORD[80+rsp]
|
|
sub rsp,160
|
|
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_5:
|
|
vmovdqa XMMWORD[rsp],xmm6
|
|
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_6:
|
|
vmovdqa XMMWORD[16+rsp],xmm7
|
|
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_7:
|
|
vmovdqa XMMWORD[32+rsp],xmm8
|
|
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_8:
|
|
vmovdqa XMMWORD[48+rsp],xmm9
|
|
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_9:
|
|
vmovdqa XMMWORD[64+rsp],xmm10
|
|
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_10:
|
|
vmovdqa XMMWORD[80+rsp],xmm11
|
|
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_11:
|
|
vmovdqa XMMWORD[96+rsp],xmm12
|
|
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_12:
|
|
vmovdqa XMMWORD[112+rsp],xmm13
|
|
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_13:
|
|
vmovdqa XMMWORD[128+rsp],xmm14
|
|
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_14:
|
|
vmovdqa XMMWORD[144+rsp],xmm15
|
|
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_15:
|
|
|
|
$L$SEH_endprologue_aes_gcm_dec_update_vaes_avx512_16:
|
|
|
|
vbroadcasti32x4 zmm8,ZMMWORD[$L$bswap_mask]
|
|
vbroadcasti32x4 zmm31,ZMMWORD[$L$gfpoly]
|
|
|
|
|
|
|
|
vmovdqu xmm10,XMMWORD[r12]
|
|
vpshufb xmm10,xmm10,xmm8
|
|
vbroadcasti32x4 zmm12,ZMMWORD[rsi]
|
|
vpshufb zmm12,zmm12,zmm8
|
|
|
|
|
|
|
|
mov r10d,DWORD[240+r9]
|
|
lea r10d,[((-20))+r10*4]
|
|
|
|
|
|
|
|
|
|
lea r11,[96+r10*4+r9]
|
|
vbroadcasti32x4 zmm13,ZMMWORD[r9]
|
|
vbroadcasti32x4 zmm14,ZMMWORD[r11]
|
|
|
|
|
|
vpaddd zmm12,zmm12,ZMMWORD[$L$ctr_pattern]
|
|
|
|
|
|
vbroadcasti32x4 zmm11,ZMMWORD[$L$inc_4blocks]
|
|
|
|
|
|
|
|
cmp r8,256
|
|
jb NEAR $L$crypt_loop_4x_done__func2
|
|
|
|
|
|
vmovdqu8 zmm27,ZMMWORD[((256-256))+rdi]
|
|
vmovdqu8 zmm28,ZMMWORD[((256-192))+rdi]
|
|
vmovdqu8 zmm29,ZMMWORD[((256-128))+rdi]
|
|
vmovdqu8 zmm30,ZMMWORD[((256-64))+rdi]
|
|
|
|
vbroadcasti32x4 zmm15,ZMMWORD[((-144))+r11]
|
|
vbroadcasti32x4 zmm16,ZMMWORD[((-128))+r11]
|
|
vbroadcasti32x4 zmm17,ZMMWORD[((-112))+r11]
|
|
vbroadcasti32x4 zmm18,ZMMWORD[((-96))+r11]
|
|
vbroadcasti32x4 zmm19,ZMMWORD[((-80))+r11]
|
|
vbroadcasti32x4 zmm20,ZMMWORD[((-64))+r11]
|
|
vbroadcasti32x4 zmm21,ZMMWORD[((-48))+r11]
|
|
vbroadcasti32x4 zmm22,ZMMWORD[((-32))+r11]
|
|
vbroadcasti32x4 zmm23,ZMMWORD[((-16))+r11]
|
|
|
|
$L$crypt_loop_4x__func2:
|
|
vmovdqu8 zmm4,ZMMWORD[rcx]
|
|
vmovdqu8 zmm5,ZMMWORD[64+rcx]
|
|
vmovdqu8 zmm6,ZMMWORD[128+rcx]
|
|
vmovdqu8 zmm7,ZMMWORD[192+rcx]
|
|
|
|
|
|
|
|
vpshufb zmm0,zmm12,zmm8
|
|
vpaddd zmm12,zmm12,zmm11
|
|
vpshufb zmm1,zmm12,zmm8
|
|
vpaddd zmm12,zmm12,zmm11
|
|
vpshufb zmm2,zmm12,zmm8
|
|
vpaddd zmm12,zmm12,zmm11
|
|
vpshufb zmm3,zmm12,zmm8
|
|
vpaddd zmm12,zmm12,zmm11
|
|
|
|
|
|
vpxord zmm0,zmm0,zmm13
|
|
vpxord zmm1,zmm1,zmm13
|
|
vpxord zmm2,zmm2,zmm13
|
|
vpxord zmm3,zmm3,zmm13
|
|
|
|
cmp r10d,24
|
|
jl NEAR $L$aes128__func2
|
|
je NEAR $L$aes192__func2
|
|
|
|
vbroadcasti32x4 zmm9,ZMMWORD[((-208))+r11]
|
|
vaesenc zmm0,zmm0,zmm9
|
|
vaesenc zmm1,zmm1,zmm9
|
|
vaesenc zmm2,zmm2,zmm9
|
|
vaesenc zmm3,zmm3,zmm9
|
|
|
|
vbroadcasti32x4 zmm9,ZMMWORD[((-192))+r11]
|
|
vaesenc zmm0,zmm0,zmm9
|
|
vaesenc zmm1,zmm1,zmm9
|
|
vaesenc zmm2,zmm2,zmm9
|
|
vaesenc zmm3,zmm3,zmm9
|
|
|
|
$L$aes192__func2:
|
|
vbroadcasti32x4 zmm9,ZMMWORD[((-176))+r11]
|
|
vaesenc zmm0,zmm0,zmm9
|
|
vaesenc zmm1,zmm1,zmm9
|
|
vaesenc zmm2,zmm2,zmm9
|
|
vaesenc zmm3,zmm3,zmm9
|
|
|
|
vbroadcasti32x4 zmm9,ZMMWORD[((-160))+r11]
|
|
vaesenc zmm0,zmm0,zmm9
|
|
vaesenc zmm1,zmm1,zmm9
|
|
vaesenc zmm2,zmm2,zmm9
|
|
vaesenc zmm3,zmm3,zmm9
|
|
|
|
$L$aes128__func2:
|
|
|
|
|
|
|
|
|
|
prefetcht0 [((512+0))+rcx]
|
|
prefetcht0 [((512+64))+rcx]
|
|
prefetcht0 [((512+128))+rcx]
|
|
prefetcht0 [((512+192))+rcx]
|
|
|
|
|
|
|
|
|
|
vpshufb zmm4,zmm4,zmm8
|
|
vpxord zmm4,zmm4,zmm10
|
|
vpshufb zmm5,zmm5,zmm8
|
|
vpshufb zmm6,zmm6,zmm8
|
|
|
|
vaesenc zmm0,zmm0,zmm15
|
|
vaesenc zmm1,zmm1,zmm15
|
|
vaesenc zmm2,zmm2,zmm15
|
|
vaesenc zmm3,zmm3,zmm15
|
|
|
|
vpshufb zmm7,zmm7,zmm8
|
|
vpclmulqdq zmm10,zmm4,zmm27,0x00
|
|
vpclmulqdq zmm24,zmm5,zmm28,0x00
|
|
vpclmulqdq zmm25,zmm6,zmm29,0x00
|
|
|
|
vaesenc zmm0,zmm0,zmm16
|
|
vaesenc zmm1,zmm1,zmm16
|
|
vaesenc zmm2,zmm2,zmm16
|
|
vaesenc zmm3,zmm3,zmm16
|
|
|
|
vpxord zmm10,zmm10,zmm24
|
|
vpclmulqdq zmm26,zmm7,zmm30,0x00
|
|
vpternlogd zmm10,zmm25,zmm26,0x96
|
|
vpclmulqdq zmm24,zmm4,zmm27,0x01
|
|
|
|
vaesenc zmm0,zmm0,zmm17
|
|
vaesenc zmm1,zmm1,zmm17
|
|
vaesenc zmm2,zmm2,zmm17
|
|
vaesenc zmm3,zmm3,zmm17
|
|
|
|
vpclmulqdq zmm25,zmm5,zmm28,0x01
|
|
vpclmulqdq zmm26,zmm6,zmm29,0x01
|
|
vpternlogd zmm24,zmm25,zmm26,0x96
|
|
vpclmulqdq zmm25,zmm7,zmm30,0x01
|
|
|
|
vaesenc zmm0,zmm0,zmm18
|
|
vaesenc zmm1,zmm1,zmm18
|
|
vaesenc zmm2,zmm2,zmm18
|
|
vaesenc zmm3,zmm3,zmm18
|
|
|
|
vpclmulqdq zmm26,zmm4,zmm27,0x10
|
|
vpternlogd zmm24,zmm25,zmm26,0x96
|
|
vpclmulqdq zmm25,zmm5,zmm28,0x10
|
|
vpclmulqdq zmm26,zmm6,zmm29,0x10
|
|
|
|
vaesenc zmm0,zmm0,zmm19
|
|
vaesenc zmm1,zmm1,zmm19
|
|
vaesenc zmm2,zmm2,zmm19
|
|
vaesenc zmm3,zmm3,zmm19
|
|
|
|
vpternlogd zmm24,zmm25,zmm26,0x96
|
|
vpclmulqdq zmm26,zmm31,zmm10,0x01
|
|
vpclmulqdq zmm25,zmm7,zmm30,0x10
|
|
vpxord zmm24,zmm24,zmm25
|
|
|
|
vaesenc zmm0,zmm0,zmm20
|
|
vaesenc zmm1,zmm1,zmm20
|
|
vaesenc zmm2,zmm2,zmm20
|
|
vaesenc zmm3,zmm3,zmm20
|
|
|
|
vpshufd zmm10,zmm10,0x4e
|
|
vpclmulqdq zmm4,zmm4,zmm27,0x11
|
|
vpclmulqdq zmm5,zmm5,zmm28,0x11
|
|
vpclmulqdq zmm6,zmm6,zmm29,0x11
|
|
|
|
vaesenc zmm0,zmm0,zmm21
|
|
vaesenc zmm1,zmm1,zmm21
|
|
vaesenc zmm2,zmm2,zmm21
|
|
vaesenc zmm3,zmm3,zmm21
|
|
|
|
vpternlogd zmm24,zmm10,zmm26,0x96
|
|
vpclmulqdq zmm7,zmm7,zmm30,0x11
|
|
vpternlogd zmm4,zmm5,zmm6,0x96
|
|
vpclmulqdq zmm25,zmm31,zmm24,0x01
|
|
|
|
vaesenc zmm0,zmm0,zmm22
|
|
vaesenc zmm1,zmm1,zmm22
|
|
vaesenc zmm2,zmm2,zmm22
|
|
vaesenc zmm3,zmm3,zmm22
|
|
|
|
vpxord zmm10,zmm4,zmm7
|
|
vpshufd zmm24,zmm24,0x4e
|
|
vpternlogd zmm10,zmm24,zmm25,0x96
|
|
|
|
vaesenc zmm0,zmm0,zmm23
|
|
vaesenc zmm1,zmm1,zmm23
|
|
vaesenc zmm2,zmm2,zmm23
|
|
vaesenc zmm3,zmm3,zmm23
|
|
|
|
|
|
vextracti32x4 xmm4,zmm10,1
|
|
vextracti32x4 xmm5,zmm10,2
|
|
vextracti32x4 xmm6,zmm10,3
|
|
vpxord xmm10,xmm10,xmm4
|
|
vpternlogd xmm10,xmm6,xmm5,0x96
|
|
|
|
vpxord zmm4,zmm14,ZMMWORD[rcx]
|
|
vpxord zmm5,zmm14,ZMMWORD[64+rcx]
|
|
vpxord zmm6,zmm14,ZMMWORD[128+rcx]
|
|
vpxord zmm7,zmm14,ZMMWORD[192+rcx]
|
|
vaesenclast zmm4,zmm0,zmm4
|
|
vaesenclast zmm5,zmm1,zmm5
|
|
vaesenclast zmm6,zmm2,zmm6
|
|
vaesenclast zmm7,zmm3,zmm7
|
|
vmovdqu8 ZMMWORD[rdx],zmm4
|
|
vmovdqu8 ZMMWORD[64+rdx],zmm5
|
|
vmovdqu8 ZMMWORD[128+rdx],zmm6
|
|
vmovdqu8 ZMMWORD[192+rdx],zmm7
|
|
|
|
add rcx,256
|
|
add rdx,256
|
|
sub r8,256
|
|
cmp r8,256
|
|
jae NEAR $L$crypt_loop_4x__func2
|
|
$L$crypt_loop_4x_done__func2:
|
|
|
|
test r8,r8
|
|
jz NEAR $L$done__func2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mov rax,r8
|
|
neg rax
|
|
and rax,-16
|
|
lea rsi,[256+rax*1+rdi]
|
|
vpxor xmm4,xmm4,xmm4
|
|
vpxor xmm5,xmm5,xmm5
|
|
vpxor xmm6,xmm6,xmm6
|
|
|
|
cmp r8,64
|
|
jb NEAR $L$partial_vec__func2
|
|
|
|
$L$crypt_loop_1x__func2:
|
|
|
|
|
|
|
|
vpshufb zmm0,zmm12,zmm8
|
|
vpaddd zmm12,zmm12,zmm11
|
|
vpxord zmm0,zmm0,zmm13
|
|
lea rax,[16+r9]
|
|
$L$vaesenc_loop_tail_full_vec__func2:
|
|
vbroadcasti32x4 zmm9,ZMMWORD[rax]
|
|
vaesenc zmm0,zmm0,zmm9
|
|
add rax,16
|
|
cmp r11,rax
|
|
jne NEAR $L$vaesenc_loop_tail_full_vec__func2
|
|
vaesenclast zmm0,zmm0,zmm14
|
|
|
|
|
|
vmovdqu8 zmm1,ZMMWORD[rcx]
|
|
vpxord zmm0,zmm0,zmm1
|
|
vmovdqu8 ZMMWORD[rdx],zmm0
|
|
|
|
|
|
vmovdqu8 zmm30,ZMMWORD[rsi]
|
|
vpshufb zmm0,zmm1,zmm8
|
|
vpxord zmm0,zmm0,zmm10
|
|
vpclmulqdq zmm7,zmm0,zmm30,0x00
|
|
vpclmulqdq zmm1,zmm0,zmm30,0x01
|
|
vpclmulqdq zmm2,zmm0,zmm30,0x10
|
|
vpclmulqdq zmm3,zmm0,zmm30,0x11
|
|
vpxord zmm4,zmm4,zmm7
|
|
vpternlogd zmm5,zmm1,zmm2,0x96
|
|
vpxord zmm6,zmm6,zmm3
|
|
|
|
vpxor xmm10,xmm10,xmm10
|
|
|
|
add rsi,64
|
|
add rcx,64
|
|
add rdx,64
|
|
sub r8,64
|
|
cmp r8,64
|
|
jae NEAR $L$crypt_loop_1x__func2
|
|
|
|
test r8,r8
|
|
jz NEAR $L$reduce__func2
|
|
|
|
$L$partial_vec__func2:
|
|
|
|
|
|
|
|
|
|
mov rax,-1
|
|
bzhi rax,rax,r8
|
|
kmovq k1,rax
|
|
add r8,15
|
|
and r8,-16
|
|
mov rax,-1
|
|
bzhi rax,rax,r8
|
|
kmovq k2,rax
|
|
|
|
|
|
|
|
vpshufb zmm0,zmm12,zmm8
|
|
vpxord zmm0,zmm0,zmm13
|
|
lea rax,[16+r9]
|
|
$L$vaesenc_loop_tail_partialvec__func2:
|
|
vbroadcasti32x4 zmm9,ZMMWORD[rax]
|
|
vaesenc zmm0,zmm0,zmm9
|
|
add rax,16
|
|
cmp r11,rax
|
|
jne NEAR $L$vaesenc_loop_tail_partialvec__func2
|
|
vaesenclast zmm0,zmm0,zmm14
|
|
|
|
|
|
vmovdqu8 zmm1{k1}{z},[rcx]
|
|
vpxord zmm0,zmm0,zmm1
|
|
vmovdqu8 ZMMWORD[rdx]{k1},zmm0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vmovdqu8 zmm30{k2}{z},[rsi]
|
|
|
|
vpshufb zmm0,zmm1,zmm8
|
|
vpxord zmm0,zmm0,zmm10
|
|
vpclmulqdq zmm7,zmm0,zmm30,0x00
|
|
vpclmulqdq zmm1,zmm0,zmm30,0x01
|
|
vpclmulqdq zmm2,zmm0,zmm30,0x10
|
|
vpclmulqdq zmm3,zmm0,zmm30,0x11
|
|
vpxord zmm4,zmm4,zmm7
|
|
vpternlogd zmm5,zmm1,zmm2,0x96
|
|
vpxord zmm6,zmm6,zmm3
|
|
|
|
|
|
$L$reduce__func2:
|
|
|
|
vpclmulqdq zmm0,zmm31,zmm4,0x01
|
|
vpshufd zmm4,zmm4,0x4e
|
|
vpternlogd zmm5,zmm4,zmm0,0x96
|
|
vpclmulqdq zmm0,zmm31,zmm5,0x01
|
|
vpshufd zmm5,zmm5,0x4e
|
|
vpternlogd zmm6,zmm5,zmm0,0x96
|
|
|
|
vextracti32x4 xmm0,zmm6,1
|
|
vextracti32x4 xmm1,zmm6,2
|
|
vextracti32x4 xmm2,zmm6,3
|
|
vpxord xmm10,xmm6,xmm0
|
|
vpternlogd xmm10,xmm2,xmm1,0x96
|
|
|
|
|
|
$L$done__func2:
|
|
|
|
vpshufb xmm10,xmm10,xmm8
|
|
vmovdqu XMMWORD[r12],xmm10
|
|
|
|
vzeroupper
|
|
vmovdqa xmm6,XMMWORD[rsp]
|
|
vmovdqa xmm7,XMMWORD[16+rsp]
|
|
vmovdqa xmm8,XMMWORD[32+rsp]
|
|
vmovdqa xmm9,XMMWORD[48+rsp]
|
|
vmovdqa xmm10,XMMWORD[64+rsp]
|
|
vmovdqa xmm11,XMMWORD[80+rsp]
|
|
vmovdqa xmm12,XMMWORD[96+rsp]
|
|
vmovdqa xmm13,XMMWORD[112+rsp]
|
|
vmovdqa xmm14,XMMWORD[128+rsp]
|
|
vmovdqa xmm15,XMMWORD[144+rsp]
|
|
add rsp,160
|
|
pop r12
|
|
pop rdi
|
|
pop rsi
|
|
ret
|
|
$L$SEH_end_aes_gcm_dec_update_vaes_avx512_17:
|
|
|
|
|
|
section .pdata rdata align=4
|
|
ALIGN 4
|
|
DD $L$SEH_begin_gcm_gmult_vpclmulqdq_avx512_1 wrt ..imagebase
|
|
DD $L$SEH_end_gcm_gmult_vpclmulqdq_avx512_5 wrt ..imagebase
|
|
DD $L$SEH_info_gcm_gmult_vpclmulqdq_avx512_0 wrt ..imagebase
|
|
|
|
DD $L$SEH_begin_gcm_ghash_vpclmulqdq_avx512_1 wrt ..imagebase
|
|
DD $L$SEH_end_gcm_ghash_vpclmulqdq_avx512_12 wrt ..imagebase
|
|
DD $L$SEH_info_gcm_ghash_vpclmulqdq_avx512_0 wrt ..imagebase
|
|
|
|
DD $L$SEH_begin_aes_gcm_enc_update_vaes_avx512_1 wrt ..imagebase
|
|
DD $L$SEH_end_aes_gcm_enc_update_vaes_avx512_17 wrt ..imagebase
|
|
DD $L$SEH_info_aes_gcm_enc_update_vaes_avx512_0 wrt ..imagebase
|
|
|
|
DD $L$SEH_begin_aes_gcm_dec_update_vaes_avx512_1 wrt ..imagebase
|
|
DD $L$SEH_end_aes_gcm_dec_update_vaes_avx512_17 wrt ..imagebase
|
|
DD $L$SEH_info_aes_gcm_dec_update_vaes_avx512_0 wrt ..imagebase
|
|
|
|
|
|
section .xdata rdata align=8
|
|
ALIGN 4
|
|
$L$SEH_info_gcm_gmult_vpclmulqdq_avx512_0:
|
|
DB 1
|
|
DB $L$SEH_endprologue_gcm_gmult_vpclmulqdq_avx512_4-$L$SEH_begin_gcm_gmult_vpclmulqdq_avx512_1
|
|
DB 3
|
|
DB 0
|
|
DB $L$SEH_prologue_gcm_gmult_vpclmulqdq_avx512_3-$L$SEH_begin_gcm_gmult_vpclmulqdq_avx512_1
|
|
DB 104
|
|
DW 0
|
|
DB $L$SEH_prologue_gcm_gmult_vpclmulqdq_avx512_2-$L$SEH_begin_gcm_gmult_vpclmulqdq_avx512_1
|
|
DB 34
|
|
|
|
DW 0
|
|
$L$SEH_info_gcm_ghash_vpclmulqdq_avx512_0:
|
|
DB 1
|
|
DB $L$SEH_endprologue_gcm_ghash_vpclmulqdq_avx512_11-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx512_1
|
|
DB 18
|
|
DB 0
|
|
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_10-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx512_1
|
|
DB 216
|
|
DW 7
|
|
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_9-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx512_1
|
|
DB 200
|
|
DW 6
|
|
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_8-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx512_1
|
|
DB 184
|
|
DW 5
|
|
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_7-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx512_1
|
|
DB 168
|
|
DW 4
|
|
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_6-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx512_1
|
|
DB 152
|
|
DW 3
|
|
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_5-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx512_1
|
|
DB 136
|
|
DW 2
|
|
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_4-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx512_1
|
|
DB 120
|
|
DW 1
|
|
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_3-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx512_1
|
|
DB 104
|
|
DW 0
|
|
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx512_2-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx512_1
|
|
DB 1
|
|
DW 17
|
|
|
|
$L$SEH_info_aes_gcm_enc_update_vaes_avx512_0:
|
|
DB 1
|
|
DB $L$SEH_endprologue_aes_gcm_enc_update_vaes_avx512_16-$L$SEH_begin_aes_gcm_enc_update_vaes_avx512_1
|
|
DB 25
|
|
DB 0
|
|
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_15-$L$SEH_begin_aes_gcm_enc_update_vaes_avx512_1
|
|
DB 248
|
|
DW 9
|
|
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_14-$L$SEH_begin_aes_gcm_enc_update_vaes_avx512_1
|
|
DB 232
|
|
DW 8
|
|
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_13-$L$SEH_begin_aes_gcm_enc_update_vaes_avx512_1
|
|
DB 216
|
|
DW 7
|
|
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_12-$L$SEH_begin_aes_gcm_enc_update_vaes_avx512_1
|
|
DB 200
|
|
DW 6
|
|
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_11-$L$SEH_begin_aes_gcm_enc_update_vaes_avx512_1
|
|
DB 184
|
|
DW 5
|
|
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_10-$L$SEH_begin_aes_gcm_enc_update_vaes_avx512_1
|
|
DB 168
|
|
DW 4
|
|
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_9-$L$SEH_begin_aes_gcm_enc_update_vaes_avx512_1
|
|
DB 152
|
|
DW 3
|
|
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_8-$L$SEH_begin_aes_gcm_enc_update_vaes_avx512_1
|
|
DB 136
|
|
DW 2
|
|
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_7-$L$SEH_begin_aes_gcm_enc_update_vaes_avx512_1
|
|
DB 120
|
|
DW 1
|
|
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_6-$L$SEH_begin_aes_gcm_enc_update_vaes_avx512_1
|
|
DB 104
|
|
DW 0
|
|
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_5-$L$SEH_begin_aes_gcm_enc_update_vaes_avx512_1
|
|
DB 1
|
|
DW 20
|
|
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_4-$L$SEH_begin_aes_gcm_enc_update_vaes_avx512_1
|
|
DB 192
|
|
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_3-$L$SEH_begin_aes_gcm_enc_update_vaes_avx512_1
|
|
DB 112
|
|
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx512_2-$L$SEH_begin_aes_gcm_enc_update_vaes_avx512_1
|
|
DB 96
|
|
|
|
DW 0
|
|
$L$SEH_info_aes_gcm_dec_update_vaes_avx512_0:
|
|
DB 1
|
|
DB $L$SEH_endprologue_aes_gcm_dec_update_vaes_avx512_16-$L$SEH_begin_aes_gcm_dec_update_vaes_avx512_1
|
|
DB 25
|
|
DB 0
|
|
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_15-$L$SEH_begin_aes_gcm_dec_update_vaes_avx512_1
|
|
DB 248
|
|
DW 9
|
|
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_14-$L$SEH_begin_aes_gcm_dec_update_vaes_avx512_1
|
|
DB 232
|
|
DW 8
|
|
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_13-$L$SEH_begin_aes_gcm_dec_update_vaes_avx512_1
|
|
DB 216
|
|
DW 7
|
|
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_12-$L$SEH_begin_aes_gcm_dec_update_vaes_avx512_1
|
|
DB 200
|
|
DW 6
|
|
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_11-$L$SEH_begin_aes_gcm_dec_update_vaes_avx512_1
|
|
DB 184
|
|
DW 5
|
|
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_10-$L$SEH_begin_aes_gcm_dec_update_vaes_avx512_1
|
|
DB 168
|
|
DW 4
|
|
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_9-$L$SEH_begin_aes_gcm_dec_update_vaes_avx512_1
|
|
DB 152
|
|
DW 3
|
|
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_8-$L$SEH_begin_aes_gcm_dec_update_vaes_avx512_1
|
|
DB 136
|
|
DW 2
|
|
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_7-$L$SEH_begin_aes_gcm_dec_update_vaes_avx512_1
|
|
DB 120
|
|
DW 1
|
|
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_6-$L$SEH_begin_aes_gcm_dec_update_vaes_avx512_1
|
|
DB 104
|
|
DW 0
|
|
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_5-$L$SEH_begin_aes_gcm_dec_update_vaes_avx512_1
|
|
DB 1
|
|
DW 20
|
|
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_4-$L$SEH_begin_aes_gcm_dec_update_vaes_avx512_1
|
|
DB 192
|
|
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_3-$L$SEH_begin_aes_gcm_dec_update_vaes_avx512_1
|
|
DB 112
|
|
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx512_2-$L$SEH_begin_aes_gcm_dec_update_vaes_avx512_1
|
|
DB 96
|
|
|
|
DW 0
|
|
%else
|
|
; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738
|
|
ret
|
|
%endif
|