blob: 733ae721722de5649da311233891684bb4aa99ee [file] [log] [blame] [edit]
; 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
$L$inc_2blocks:
DQ 2,0
DQ 3,0
$L$inc_4blocks:
DQ 4,0
section .text code align=64
global gcm_gmult_vpclmulqdq_avx10
ALIGN 32
gcm_gmult_vpclmulqdq_avx10:
$L$SEH_begin_gcm_gmult_vpclmulqdq_avx10_1:
_CET_ENDBR
sub rsp,24
$L$SEH_prologue_gcm_gmult_vpclmulqdq_avx10_2:
movdqa XMMWORD[rsp],xmm6
$L$SEH_prologue_gcm_gmult_vpclmulqdq_avx10_3:
$L$SEH_endprologue_gcm_gmult_vpclmulqdq_avx10_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
movdqa xmm6,XMMWORD[rsp]
add rsp,24
ret
$L$SEH_end_gcm_gmult_vpclmulqdq_avx10_5:
global gcm_init_vpclmulqdq_avx10_512
ALIGN 32
gcm_init_vpclmulqdq_avx10_512:
_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__func1:
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__func1
vzeroupper
ret
global gcm_ghash_vpclmulqdq_avx10_512
ALIGN 32
gcm_ghash_vpclmulqdq_avx10_512:
$L$SEH_begin_gcm_ghash_vpclmulqdq_avx10_512_1:
_CET_ENDBR
sub rsp,136
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_2:
movdqa XMMWORD[rsp],xmm6
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_3:
movdqa XMMWORD[16+rsp],xmm7
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_4:
movdqa XMMWORD[32+rsp],xmm8
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_5:
movdqa XMMWORD[48+rsp],xmm9
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_6:
movdqa XMMWORD[64+rsp],xmm10
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_7:
movdqa XMMWORD[80+rsp],xmm11
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_8:
movdqa XMMWORD[96+rsp],xmm12
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_9:
movdqa XMMWORD[112+rsp],xmm13
$L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_10:
$L$SEH_endprologue_gcm_ghash_vpclmulqdq_avx10_512_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__func1
vshufi64x2 zmm4,zmm4,zmm4,0
vshufi64x2 zmm10,zmm10,zmm10,0
vmovdqu8 zmm9,ZMMWORD[((256-64))+rdx]
cmp r9,4*64-1
jbe NEAR $L$aad_loop_1x__func1
vmovdqu8 zmm6,ZMMWORD[((256-256))+rdx]
vmovdqu8 zmm7,ZMMWORD[((256-192))+rdx]
vmovdqu8 zmm8,ZMMWORD[((256-128))+rdx]
$L$aad_loop_4x__func1:
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
sub r8,-4*64
add r9,-4*64
cmp r9,4*64-1
ja NEAR $L$aad_loop_4x__func1
cmp r9,64
jb NEAR $L$aad_large_done__func1
$L$aad_loop_1x__func1:
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__func1
$L$aad_large_done__func1:
vzeroupper
$L$aad_blockbyblock__func1:
test r9,r9
jz NEAR $L$aad_done__func1
vmovdqu xmm9,XMMWORD[((256-16))+rdx]
$L$aad_loop_blockbyblock__func1:
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__func1
$L$aad_done__func1:
vpshufb xmm5,xmm5,xmm4
vmovdqu XMMWORD[rcx],xmm5
movdqa xmm6,XMMWORD[rsp]
movdqa xmm7,XMMWORD[16+rsp]
movdqa xmm8,XMMWORD[32+rsp]
movdqa xmm9,XMMWORD[48+rsp]
movdqa xmm10,XMMWORD[64+rsp]
movdqa xmm11,XMMWORD[80+rsp]
movdqa xmm12,XMMWORD[96+rsp]
movdqa xmm13,XMMWORD[112+rsp]
add rsp,136
ret
$L$SEH_end_gcm_ghash_vpclmulqdq_avx10_512_12:
global aes_gcm_enc_update_vaes_avx10_512
ALIGN 32
aes_gcm_enc_update_vaes_avx10_512:
$L$SEH_begin_aes_gcm_enc_update_vaes_avx10_512_1:
_CET_ENDBR
push rsi
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_2:
push rdi
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_3:
push r12
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_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_avx10_512_5:
movdqa XMMWORD[rsp],xmm6
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_6:
movdqa XMMWORD[16+rsp],xmm7
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_7:
movdqa XMMWORD[32+rsp],xmm8
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_8:
movdqa XMMWORD[48+rsp],xmm9
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_9:
movdqa XMMWORD[64+rsp],xmm10
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_10:
movdqa XMMWORD[80+rsp],xmm11
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_11:
movdqa XMMWORD[96+rsp],xmm12
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_12:
movdqa XMMWORD[112+rsp],xmm13
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_13:
movdqa XMMWORD[128+rsp],xmm14
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_14:
movdqa XMMWORD[144+rsp],xmm15
$L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_15:
$L$SEH_endprologue_aes_gcm_enc_update_vaes_avx10_512_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,4*64-1
jbe 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
sub rcx,-4*64
sub rdx,-4*64
add r8,-4*64
cmp r8,4*64-1
jbe 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
sub rcx,-4*64
sub rdx,-4*64
add r8,-4*64
cmp r8,4*64-1
ja 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
movdqa xmm6,XMMWORD[rsp]
movdqa xmm7,XMMWORD[16+rsp]
movdqa xmm8,XMMWORD[32+rsp]
movdqa xmm9,XMMWORD[48+rsp]
movdqa xmm10,XMMWORD[64+rsp]
movdqa xmm11,XMMWORD[80+rsp]
movdqa xmm12,XMMWORD[96+rsp]
movdqa xmm13,XMMWORD[112+rsp]
movdqa xmm14,XMMWORD[128+rsp]
movdqa xmm15,XMMWORD[144+rsp]
add rsp,160
pop r12
pop rdi
pop rsi
ret
$L$SEH_end_aes_gcm_enc_update_vaes_avx10_512_17:
global aes_gcm_dec_update_vaes_avx10_512
ALIGN 32
aes_gcm_dec_update_vaes_avx10_512:
$L$SEH_begin_aes_gcm_dec_update_vaes_avx10_512_1:
_CET_ENDBR
push rsi
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_2:
push rdi
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_3:
push r12
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_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_avx10_512_5:
movdqa XMMWORD[rsp],xmm6
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_6:
movdqa XMMWORD[16+rsp],xmm7
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_7:
movdqa XMMWORD[32+rsp],xmm8
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_8:
movdqa XMMWORD[48+rsp],xmm9
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_9:
movdqa XMMWORD[64+rsp],xmm10
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_10:
movdqa XMMWORD[80+rsp],xmm11
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_11:
movdqa XMMWORD[96+rsp],xmm12
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_12:
movdqa XMMWORD[112+rsp],xmm13
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_13:
movdqa XMMWORD[128+rsp],xmm14
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_14:
movdqa XMMWORD[144+rsp],xmm15
$L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_15:
$L$SEH_endprologue_aes_gcm_dec_update_vaes_avx10_512_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,4*64-1
jbe 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
sub rcx,-4*64
sub rdx,-4*64
add r8,-4*64
cmp r8,4*64-1
ja 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
movdqa xmm6,XMMWORD[rsp]
movdqa xmm7,XMMWORD[16+rsp]
movdqa xmm8,XMMWORD[32+rsp]
movdqa xmm9,XMMWORD[48+rsp]
movdqa xmm10,XMMWORD[64+rsp]
movdqa xmm11,XMMWORD[80+rsp]
movdqa xmm12,XMMWORD[96+rsp]
movdqa xmm13,XMMWORD[112+rsp]
movdqa xmm14,XMMWORD[128+rsp]
movdqa xmm15,XMMWORD[144+rsp]
add rsp,160
pop r12
pop rdi
pop rsi
ret
$L$SEH_end_aes_gcm_dec_update_vaes_avx10_512_17:
section .pdata rdata align=4
ALIGN 4
DD $L$SEH_begin_gcm_gmult_vpclmulqdq_avx10_1 wrt ..imagebase
DD $L$SEH_end_gcm_gmult_vpclmulqdq_avx10_5 wrt ..imagebase
DD $L$SEH_info_gcm_gmult_vpclmulqdq_avx10_0 wrt ..imagebase
DD $L$SEH_begin_gcm_ghash_vpclmulqdq_avx10_512_1 wrt ..imagebase
DD $L$SEH_end_gcm_ghash_vpclmulqdq_avx10_512_12 wrt ..imagebase
DD $L$SEH_info_gcm_ghash_vpclmulqdq_avx10_512_0 wrt ..imagebase
DD $L$SEH_begin_aes_gcm_enc_update_vaes_avx10_512_1 wrt ..imagebase
DD $L$SEH_end_aes_gcm_enc_update_vaes_avx10_512_17 wrt ..imagebase
DD $L$SEH_info_aes_gcm_enc_update_vaes_avx10_512_0 wrt ..imagebase
DD $L$SEH_begin_aes_gcm_dec_update_vaes_avx10_512_1 wrt ..imagebase
DD $L$SEH_end_aes_gcm_dec_update_vaes_avx10_512_17 wrt ..imagebase
DD $L$SEH_info_aes_gcm_dec_update_vaes_avx10_512_0 wrt ..imagebase
section .xdata rdata align=8
ALIGN 4
$L$SEH_info_gcm_gmult_vpclmulqdq_avx10_0:
DB 1
DB $L$SEH_endprologue_gcm_gmult_vpclmulqdq_avx10_4-$L$SEH_begin_gcm_gmult_vpclmulqdq_avx10_1
DB 3
DB 0
DB $L$SEH_prologue_gcm_gmult_vpclmulqdq_avx10_3-$L$SEH_begin_gcm_gmult_vpclmulqdq_avx10_1
DB 104
DW 0
DB $L$SEH_prologue_gcm_gmult_vpclmulqdq_avx10_2-$L$SEH_begin_gcm_gmult_vpclmulqdq_avx10_1
DB 34
DW 0
$L$SEH_info_gcm_ghash_vpclmulqdq_avx10_512_0:
DB 1
DB $L$SEH_endprologue_gcm_ghash_vpclmulqdq_avx10_512_11-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx10_512_1
DB 18
DB 0
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_10-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx10_512_1
DB 216
DW 7
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_9-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx10_512_1
DB 200
DW 6
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_8-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx10_512_1
DB 184
DW 5
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_7-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx10_512_1
DB 168
DW 4
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_6-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx10_512_1
DB 152
DW 3
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_5-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx10_512_1
DB 136
DW 2
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_4-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx10_512_1
DB 120
DW 1
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_3-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx10_512_1
DB 104
DW 0
DB $L$SEH_prologue_gcm_ghash_vpclmulqdq_avx10_512_2-$L$SEH_begin_gcm_ghash_vpclmulqdq_avx10_512_1
DB 1
DW 17
$L$SEH_info_aes_gcm_enc_update_vaes_avx10_512_0:
DB 1
DB $L$SEH_endprologue_aes_gcm_enc_update_vaes_avx10_512_16-$L$SEH_begin_aes_gcm_enc_update_vaes_avx10_512_1
DB 25
DB 0
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_15-$L$SEH_begin_aes_gcm_enc_update_vaes_avx10_512_1
DB 248
DW 9
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_14-$L$SEH_begin_aes_gcm_enc_update_vaes_avx10_512_1
DB 232
DW 8
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_13-$L$SEH_begin_aes_gcm_enc_update_vaes_avx10_512_1
DB 216
DW 7
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_12-$L$SEH_begin_aes_gcm_enc_update_vaes_avx10_512_1
DB 200
DW 6
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_11-$L$SEH_begin_aes_gcm_enc_update_vaes_avx10_512_1
DB 184
DW 5
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_10-$L$SEH_begin_aes_gcm_enc_update_vaes_avx10_512_1
DB 168
DW 4
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_9-$L$SEH_begin_aes_gcm_enc_update_vaes_avx10_512_1
DB 152
DW 3
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_8-$L$SEH_begin_aes_gcm_enc_update_vaes_avx10_512_1
DB 136
DW 2
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_7-$L$SEH_begin_aes_gcm_enc_update_vaes_avx10_512_1
DB 120
DW 1
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_6-$L$SEH_begin_aes_gcm_enc_update_vaes_avx10_512_1
DB 104
DW 0
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_5-$L$SEH_begin_aes_gcm_enc_update_vaes_avx10_512_1
DB 1
DW 20
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_4-$L$SEH_begin_aes_gcm_enc_update_vaes_avx10_512_1
DB 192
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_3-$L$SEH_begin_aes_gcm_enc_update_vaes_avx10_512_1
DB 112
DB $L$SEH_prologue_aes_gcm_enc_update_vaes_avx10_512_2-$L$SEH_begin_aes_gcm_enc_update_vaes_avx10_512_1
DB 96
DW 0
$L$SEH_info_aes_gcm_dec_update_vaes_avx10_512_0:
DB 1
DB $L$SEH_endprologue_aes_gcm_dec_update_vaes_avx10_512_16-$L$SEH_begin_aes_gcm_dec_update_vaes_avx10_512_1
DB 25
DB 0
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_15-$L$SEH_begin_aes_gcm_dec_update_vaes_avx10_512_1
DB 248
DW 9
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_14-$L$SEH_begin_aes_gcm_dec_update_vaes_avx10_512_1
DB 232
DW 8
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_13-$L$SEH_begin_aes_gcm_dec_update_vaes_avx10_512_1
DB 216
DW 7
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_12-$L$SEH_begin_aes_gcm_dec_update_vaes_avx10_512_1
DB 200
DW 6
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_11-$L$SEH_begin_aes_gcm_dec_update_vaes_avx10_512_1
DB 184
DW 5
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_10-$L$SEH_begin_aes_gcm_dec_update_vaes_avx10_512_1
DB 168
DW 4
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_9-$L$SEH_begin_aes_gcm_dec_update_vaes_avx10_512_1
DB 152
DW 3
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_8-$L$SEH_begin_aes_gcm_dec_update_vaes_avx10_512_1
DB 136
DW 2
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_7-$L$SEH_begin_aes_gcm_dec_update_vaes_avx10_512_1
DB 120
DW 1
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_6-$L$SEH_begin_aes_gcm_dec_update_vaes_avx10_512_1
DB 104
DW 0
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_5-$L$SEH_begin_aes_gcm_dec_update_vaes_avx10_512_1
DB 1
DW 20
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_4-$L$SEH_begin_aes_gcm_dec_update_vaes_avx10_512_1
DB 192
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_3-$L$SEH_begin_aes_gcm_dec_update_vaes_avx10_512_1
DB 112
DB $L$SEH_prologue_aes_gcm_dec_update_vaes_avx10_512_2-$L$SEH_begin_aes_gcm_dec_update_vaes_avx10_512_1
DB 96
DW 0
%else
; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738
ret
%endif