chore: checkpoint before Python removal

This commit is contained in:
2026-03-26 22:33:59 +00:00
parent 683cec9307
commit e568ddf82a
29972 changed files with 11269302 additions and 2 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,980 @@
; This file is generated from a similarly-named Perl script in the BoringSSL
; source tree. Do not edit by hand.
%include "openssl/boringssl_prefix_symbols_nasm.inc"
%ifidn __OUTPUT_FORMAT__, win32
%ifidn __OUTPUT_FORMAT__,obj
section code use32 class=code align=64
%elifidn __OUTPUT_FORMAT__,win32
$@feat.00 equ 1
section .text code align=64
%else
section .text code
%endif
;extern _OPENSSL_ia32cap_P
global _bn_mul_add_words
align 16
_bn_mul_add_words:
L$_bn_mul_add_words_begin:
lea eax,[_OPENSSL_ia32cap_P]
bt DWORD [eax],26
jnc NEAR L$000maw_non_sse2
mov eax,DWORD [4+esp]
mov edx,DWORD [8+esp]
mov ecx,DWORD [12+esp]
movd mm0,DWORD [16+esp]
pxor mm1,mm1
jmp NEAR L$001maw_sse2_entry
align 16
L$002maw_sse2_unrolled:
movd mm3,DWORD [eax]
paddq mm1,mm3
movd mm2,DWORD [edx]
pmuludq mm2,mm0
movd mm4,DWORD [4+edx]
pmuludq mm4,mm0
movd mm6,DWORD [8+edx]
pmuludq mm6,mm0
movd mm7,DWORD [12+edx]
pmuludq mm7,mm0
paddq mm1,mm2
movd mm3,DWORD [4+eax]
paddq mm3,mm4
movd mm5,DWORD [8+eax]
paddq mm5,mm6
movd mm4,DWORD [12+eax]
paddq mm7,mm4
movd DWORD [eax],mm1
movd mm2,DWORD [16+edx]
pmuludq mm2,mm0
psrlq mm1,32
movd mm4,DWORD [20+edx]
pmuludq mm4,mm0
paddq mm1,mm3
movd mm6,DWORD [24+edx]
pmuludq mm6,mm0
movd DWORD [4+eax],mm1
psrlq mm1,32
movd mm3,DWORD [28+edx]
add edx,32
pmuludq mm3,mm0
paddq mm1,mm5
movd mm5,DWORD [16+eax]
paddq mm2,mm5
movd DWORD [8+eax],mm1
psrlq mm1,32
paddq mm1,mm7
movd mm5,DWORD [20+eax]
paddq mm4,mm5
movd DWORD [12+eax],mm1
psrlq mm1,32
paddq mm1,mm2
movd mm5,DWORD [24+eax]
paddq mm6,mm5
movd DWORD [16+eax],mm1
psrlq mm1,32
paddq mm1,mm4
movd mm5,DWORD [28+eax]
paddq mm3,mm5
movd DWORD [20+eax],mm1
psrlq mm1,32
paddq mm1,mm6
movd DWORD [24+eax],mm1
psrlq mm1,32
paddq mm1,mm3
movd DWORD [28+eax],mm1
lea eax,[32+eax]
psrlq mm1,32
sub ecx,8
jz NEAR L$003maw_sse2_exit
L$001maw_sse2_entry:
test ecx,4294967288
jnz NEAR L$002maw_sse2_unrolled
align 4
L$004maw_sse2_loop:
movd mm2,DWORD [edx]
movd mm3,DWORD [eax]
pmuludq mm2,mm0
lea edx,[4+edx]
paddq mm1,mm3
paddq mm1,mm2
movd DWORD [eax],mm1
sub ecx,1
psrlq mm1,32
lea eax,[4+eax]
jnz NEAR L$004maw_sse2_loop
L$003maw_sse2_exit:
movd eax,mm1
emms
ret
align 16
L$000maw_non_sse2:
push ebp
push ebx
push esi
push edi
;
xor esi,esi
mov edi,DWORD [20+esp]
mov ecx,DWORD [28+esp]
mov ebx,DWORD [24+esp]
and ecx,4294967288
mov ebp,DWORD [32+esp]
push ecx
jz NEAR L$005maw_finish
align 16
L$006maw_loop:
; Round 0
mov eax,DWORD [ebx]
mul ebp
add eax,esi
adc edx,0
add eax,DWORD [edi]
adc edx,0
mov DWORD [edi],eax
mov esi,edx
; Round 4
mov eax,DWORD [4+ebx]
mul ebp
add eax,esi
adc edx,0
add eax,DWORD [4+edi]
adc edx,0
mov DWORD [4+edi],eax
mov esi,edx
; Round 8
mov eax,DWORD [8+ebx]
mul ebp
add eax,esi
adc edx,0
add eax,DWORD [8+edi]
adc edx,0
mov DWORD [8+edi],eax
mov esi,edx
; Round 12
mov eax,DWORD [12+ebx]
mul ebp
add eax,esi
adc edx,0
add eax,DWORD [12+edi]
adc edx,0
mov DWORD [12+edi],eax
mov esi,edx
; Round 16
mov eax,DWORD [16+ebx]
mul ebp
add eax,esi
adc edx,0
add eax,DWORD [16+edi]
adc edx,0
mov DWORD [16+edi],eax
mov esi,edx
; Round 20
mov eax,DWORD [20+ebx]
mul ebp
add eax,esi
adc edx,0
add eax,DWORD [20+edi]
adc edx,0
mov DWORD [20+edi],eax
mov esi,edx
; Round 24
mov eax,DWORD [24+ebx]
mul ebp
add eax,esi
adc edx,0
add eax,DWORD [24+edi]
adc edx,0
mov DWORD [24+edi],eax
mov esi,edx
; Round 28
mov eax,DWORD [28+ebx]
mul ebp
add eax,esi
adc edx,0
add eax,DWORD [28+edi]
adc edx,0
mov DWORD [28+edi],eax
mov esi,edx
;
sub ecx,8
lea ebx,[32+ebx]
lea edi,[32+edi]
jnz NEAR L$006maw_loop
L$005maw_finish:
mov ecx,DWORD [32+esp]
and ecx,7
jnz NEAR L$007maw_finish2
jmp NEAR L$008maw_end
L$007maw_finish2:
; Tail Round 0
mov eax,DWORD [ebx]
mul ebp
add eax,esi
adc edx,0
add eax,DWORD [edi]
adc edx,0
dec ecx
mov DWORD [edi],eax
mov esi,edx
jz NEAR L$008maw_end
; Tail Round 1
mov eax,DWORD [4+ebx]
mul ebp
add eax,esi
adc edx,0
add eax,DWORD [4+edi]
adc edx,0
dec ecx
mov DWORD [4+edi],eax
mov esi,edx
jz NEAR L$008maw_end
; Tail Round 2
mov eax,DWORD [8+ebx]
mul ebp
add eax,esi
adc edx,0
add eax,DWORD [8+edi]
adc edx,0
dec ecx
mov DWORD [8+edi],eax
mov esi,edx
jz NEAR L$008maw_end
; Tail Round 3
mov eax,DWORD [12+ebx]
mul ebp
add eax,esi
adc edx,0
add eax,DWORD [12+edi]
adc edx,0
dec ecx
mov DWORD [12+edi],eax
mov esi,edx
jz NEAR L$008maw_end
; Tail Round 4
mov eax,DWORD [16+ebx]
mul ebp
add eax,esi
adc edx,0
add eax,DWORD [16+edi]
adc edx,0
dec ecx
mov DWORD [16+edi],eax
mov esi,edx
jz NEAR L$008maw_end
; Tail Round 5
mov eax,DWORD [20+ebx]
mul ebp
add eax,esi
adc edx,0
add eax,DWORD [20+edi]
adc edx,0
dec ecx
mov DWORD [20+edi],eax
mov esi,edx
jz NEAR L$008maw_end
; Tail Round 6
mov eax,DWORD [24+ebx]
mul ebp
add eax,esi
adc edx,0
add eax,DWORD [24+edi]
adc edx,0
mov DWORD [24+edi],eax
mov esi,edx
L$008maw_end:
mov eax,esi
pop ecx
pop edi
pop esi
pop ebx
pop ebp
ret
global _bn_mul_words
align 16
_bn_mul_words:
L$_bn_mul_words_begin:
lea eax,[_OPENSSL_ia32cap_P]
bt DWORD [eax],26
jnc NEAR L$009mw_non_sse2
mov eax,DWORD [4+esp]
mov edx,DWORD [8+esp]
mov ecx,DWORD [12+esp]
movd mm0,DWORD [16+esp]
pxor mm1,mm1
align 16
L$010mw_sse2_loop:
movd mm2,DWORD [edx]
pmuludq mm2,mm0
lea edx,[4+edx]
paddq mm1,mm2
movd DWORD [eax],mm1
sub ecx,1
psrlq mm1,32
lea eax,[4+eax]
jnz NEAR L$010mw_sse2_loop
movd eax,mm1
emms
ret
align 16
L$009mw_non_sse2:
push ebp
push ebx
push esi
push edi
;
xor esi,esi
mov edi,DWORD [20+esp]
mov ebx,DWORD [24+esp]
mov ebp,DWORD [28+esp]
mov ecx,DWORD [32+esp]
and ebp,4294967288
jz NEAR L$011mw_finish
L$012mw_loop:
; Round 0
mov eax,DWORD [ebx]
mul ecx
add eax,esi
adc edx,0
mov DWORD [edi],eax
mov esi,edx
; Round 4
mov eax,DWORD [4+ebx]
mul ecx
add eax,esi
adc edx,0
mov DWORD [4+edi],eax
mov esi,edx
; Round 8
mov eax,DWORD [8+ebx]
mul ecx
add eax,esi
adc edx,0
mov DWORD [8+edi],eax
mov esi,edx
; Round 12
mov eax,DWORD [12+ebx]
mul ecx
add eax,esi
adc edx,0
mov DWORD [12+edi],eax
mov esi,edx
; Round 16
mov eax,DWORD [16+ebx]
mul ecx
add eax,esi
adc edx,0
mov DWORD [16+edi],eax
mov esi,edx
; Round 20
mov eax,DWORD [20+ebx]
mul ecx
add eax,esi
adc edx,0
mov DWORD [20+edi],eax
mov esi,edx
; Round 24
mov eax,DWORD [24+ebx]
mul ecx
add eax,esi
adc edx,0
mov DWORD [24+edi],eax
mov esi,edx
; Round 28
mov eax,DWORD [28+ebx]
mul ecx
add eax,esi
adc edx,0
mov DWORD [28+edi],eax
mov esi,edx
;
add ebx,32
add edi,32
sub ebp,8
jz NEAR L$011mw_finish
jmp NEAR L$012mw_loop
L$011mw_finish:
mov ebp,DWORD [28+esp]
and ebp,7
jnz NEAR L$013mw_finish2
jmp NEAR L$014mw_end
L$013mw_finish2:
; Tail Round 0
mov eax,DWORD [ebx]
mul ecx
add eax,esi
adc edx,0
mov DWORD [edi],eax
mov esi,edx
dec ebp
jz NEAR L$014mw_end
; Tail Round 1
mov eax,DWORD [4+ebx]
mul ecx
add eax,esi
adc edx,0
mov DWORD [4+edi],eax
mov esi,edx
dec ebp
jz NEAR L$014mw_end
; Tail Round 2
mov eax,DWORD [8+ebx]
mul ecx
add eax,esi
adc edx,0
mov DWORD [8+edi],eax
mov esi,edx
dec ebp
jz NEAR L$014mw_end
; Tail Round 3
mov eax,DWORD [12+ebx]
mul ecx
add eax,esi
adc edx,0
mov DWORD [12+edi],eax
mov esi,edx
dec ebp
jz NEAR L$014mw_end
; Tail Round 4
mov eax,DWORD [16+ebx]
mul ecx
add eax,esi
adc edx,0
mov DWORD [16+edi],eax
mov esi,edx
dec ebp
jz NEAR L$014mw_end
; Tail Round 5
mov eax,DWORD [20+ebx]
mul ecx
add eax,esi
adc edx,0
mov DWORD [20+edi],eax
mov esi,edx
dec ebp
jz NEAR L$014mw_end
; Tail Round 6
mov eax,DWORD [24+ebx]
mul ecx
add eax,esi
adc edx,0
mov DWORD [24+edi],eax
mov esi,edx
L$014mw_end:
mov eax,esi
pop edi
pop esi
pop ebx
pop ebp
ret
global _bn_sqr_words
align 16
_bn_sqr_words:
L$_bn_sqr_words_begin:
lea eax,[_OPENSSL_ia32cap_P]
bt DWORD [eax],26
jnc NEAR L$015sqr_non_sse2
mov eax,DWORD [4+esp]
mov edx,DWORD [8+esp]
mov ecx,DWORD [12+esp]
align 16
L$016sqr_sse2_loop:
movd mm0,DWORD [edx]
pmuludq mm0,mm0
lea edx,[4+edx]
movq [eax],mm0
sub ecx,1
lea eax,[8+eax]
jnz NEAR L$016sqr_sse2_loop
emms
ret
align 16
L$015sqr_non_sse2:
push ebp
push ebx
push esi
push edi
;
mov esi,DWORD [20+esp]
mov edi,DWORD [24+esp]
mov ebx,DWORD [28+esp]
and ebx,4294967288
jz NEAR L$017sw_finish
L$018sw_loop:
; Round 0
mov eax,DWORD [edi]
mul eax
mov DWORD [esi],eax
mov DWORD [4+esi],edx
; Round 4
mov eax,DWORD [4+edi]
mul eax
mov DWORD [8+esi],eax
mov DWORD [12+esi],edx
; Round 8
mov eax,DWORD [8+edi]
mul eax
mov DWORD [16+esi],eax
mov DWORD [20+esi],edx
; Round 12
mov eax,DWORD [12+edi]
mul eax
mov DWORD [24+esi],eax
mov DWORD [28+esi],edx
; Round 16
mov eax,DWORD [16+edi]
mul eax
mov DWORD [32+esi],eax
mov DWORD [36+esi],edx
; Round 20
mov eax,DWORD [20+edi]
mul eax
mov DWORD [40+esi],eax
mov DWORD [44+esi],edx
; Round 24
mov eax,DWORD [24+edi]
mul eax
mov DWORD [48+esi],eax
mov DWORD [52+esi],edx
; Round 28
mov eax,DWORD [28+edi]
mul eax
mov DWORD [56+esi],eax
mov DWORD [60+esi],edx
;
add edi,32
add esi,64
sub ebx,8
jnz NEAR L$018sw_loop
L$017sw_finish:
mov ebx,DWORD [28+esp]
and ebx,7
jz NEAR L$019sw_end
; Tail Round 0
mov eax,DWORD [edi]
mul eax
mov DWORD [esi],eax
dec ebx
mov DWORD [4+esi],edx
jz NEAR L$019sw_end
; Tail Round 1
mov eax,DWORD [4+edi]
mul eax
mov DWORD [8+esi],eax
dec ebx
mov DWORD [12+esi],edx
jz NEAR L$019sw_end
; Tail Round 2
mov eax,DWORD [8+edi]
mul eax
mov DWORD [16+esi],eax
dec ebx
mov DWORD [20+esi],edx
jz NEAR L$019sw_end
; Tail Round 3
mov eax,DWORD [12+edi]
mul eax
mov DWORD [24+esi],eax
dec ebx
mov DWORD [28+esi],edx
jz NEAR L$019sw_end
; Tail Round 4
mov eax,DWORD [16+edi]
mul eax
mov DWORD [32+esi],eax
dec ebx
mov DWORD [36+esi],edx
jz NEAR L$019sw_end
; Tail Round 5
mov eax,DWORD [20+edi]
mul eax
mov DWORD [40+esi],eax
dec ebx
mov DWORD [44+esi],edx
jz NEAR L$019sw_end
; Tail Round 6
mov eax,DWORD [24+edi]
mul eax
mov DWORD [48+esi],eax
mov DWORD [52+esi],edx
L$019sw_end:
pop edi
pop esi
pop ebx
pop ebp
ret
global _bn_div_words
align 16
_bn_div_words:
L$_bn_div_words_begin:
mov edx,DWORD [4+esp]
mov eax,DWORD [8+esp]
mov ecx,DWORD [12+esp]
div ecx
ret
global _bn_add_words
align 16
_bn_add_words:
L$_bn_add_words_begin:
push ebp
push ebx
push esi
push edi
;
mov ebx,DWORD [20+esp]
mov esi,DWORD [24+esp]
mov edi,DWORD [28+esp]
mov ebp,DWORD [32+esp]
xor eax,eax
and ebp,4294967288
jz NEAR L$020aw_finish
L$021aw_loop:
; Round 0
mov ecx,DWORD [esi]
mov edx,DWORD [edi]
add ecx,eax
mov eax,0
adc eax,eax
add ecx,edx
adc eax,0
mov DWORD [ebx],ecx
; Round 1
mov ecx,DWORD [4+esi]
mov edx,DWORD [4+edi]
add ecx,eax
mov eax,0
adc eax,eax
add ecx,edx
adc eax,0
mov DWORD [4+ebx],ecx
; Round 2
mov ecx,DWORD [8+esi]
mov edx,DWORD [8+edi]
add ecx,eax
mov eax,0
adc eax,eax
add ecx,edx
adc eax,0
mov DWORD [8+ebx],ecx
; Round 3
mov ecx,DWORD [12+esi]
mov edx,DWORD [12+edi]
add ecx,eax
mov eax,0
adc eax,eax
add ecx,edx
adc eax,0
mov DWORD [12+ebx],ecx
; Round 4
mov ecx,DWORD [16+esi]
mov edx,DWORD [16+edi]
add ecx,eax
mov eax,0
adc eax,eax
add ecx,edx
adc eax,0
mov DWORD [16+ebx],ecx
; Round 5
mov ecx,DWORD [20+esi]
mov edx,DWORD [20+edi]
add ecx,eax
mov eax,0
adc eax,eax
add ecx,edx
adc eax,0
mov DWORD [20+ebx],ecx
; Round 6
mov ecx,DWORD [24+esi]
mov edx,DWORD [24+edi]
add ecx,eax
mov eax,0
adc eax,eax
add ecx,edx
adc eax,0
mov DWORD [24+ebx],ecx
; Round 7
mov ecx,DWORD [28+esi]
mov edx,DWORD [28+edi]
add ecx,eax
mov eax,0
adc eax,eax
add ecx,edx
adc eax,0
mov DWORD [28+ebx],ecx
;
add esi,32
add edi,32
add ebx,32
sub ebp,8
jnz NEAR L$021aw_loop
L$020aw_finish:
mov ebp,DWORD [32+esp]
and ebp,7
jz NEAR L$022aw_end
; Tail Round 0
mov ecx,DWORD [esi]
mov edx,DWORD [edi]
add ecx,eax
mov eax,0
adc eax,eax
add ecx,edx
adc eax,0
dec ebp
mov DWORD [ebx],ecx
jz NEAR L$022aw_end
; Tail Round 1
mov ecx,DWORD [4+esi]
mov edx,DWORD [4+edi]
add ecx,eax
mov eax,0
adc eax,eax
add ecx,edx
adc eax,0
dec ebp
mov DWORD [4+ebx],ecx
jz NEAR L$022aw_end
; Tail Round 2
mov ecx,DWORD [8+esi]
mov edx,DWORD [8+edi]
add ecx,eax
mov eax,0
adc eax,eax
add ecx,edx
adc eax,0
dec ebp
mov DWORD [8+ebx],ecx
jz NEAR L$022aw_end
; Tail Round 3
mov ecx,DWORD [12+esi]
mov edx,DWORD [12+edi]
add ecx,eax
mov eax,0
adc eax,eax
add ecx,edx
adc eax,0
dec ebp
mov DWORD [12+ebx],ecx
jz NEAR L$022aw_end
; Tail Round 4
mov ecx,DWORD [16+esi]
mov edx,DWORD [16+edi]
add ecx,eax
mov eax,0
adc eax,eax
add ecx,edx
adc eax,0
dec ebp
mov DWORD [16+ebx],ecx
jz NEAR L$022aw_end
; Tail Round 5
mov ecx,DWORD [20+esi]
mov edx,DWORD [20+edi]
add ecx,eax
mov eax,0
adc eax,eax
add ecx,edx
adc eax,0
dec ebp
mov DWORD [20+ebx],ecx
jz NEAR L$022aw_end
; Tail Round 6
mov ecx,DWORD [24+esi]
mov edx,DWORD [24+edi]
add ecx,eax
mov eax,0
adc eax,eax
add ecx,edx
adc eax,0
mov DWORD [24+ebx],ecx
L$022aw_end:
pop edi
pop esi
pop ebx
pop ebp
ret
global _bn_sub_words
align 16
_bn_sub_words:
L$_bn_sub_words_begin:
push ebp
push ebx
push esi
push edi
;
mov ebx,DWORD [20+esp]
mov esi,DWORD [24+esp]
mov edi,DWORD [28+esp]
mov ebp,DWORD [32+esp]
xor eax,eax
and ebp,4294967288
jz NEAR L$023aw_finish
L$024aw_loop:
; Round 0
mov ecx,DWORD [esi]
mov edx,DWORD [edi]
sub ecx,eax
mov eax,0
adc eax,eax
sub ecx,edx
adc eax,0
mov DWORD [ebx],ecx
; Round 1
mov ecx,DWORD [4+esi]
mov edx,DWORD [4+edi]
sub ecx,eax
mov eax,0
adc eax,eax
sub ecx,edx
adc eax,0
mov DWORD [4+ebx],ecx
; Round 2
mov ecx,DWORD [8+esi]
mov edx,DWORD [8+edi]
sub ecx,eax
mov eax,0
adc eax,eax
sub ecx,edx
adc eax,0
mov DWORD [8+ebx],ecx
; Round 3
mov ecx,DWORD [12+esi]
mov edx,DWORD [12+edi]
sub ecx,eax
mov eax,0
adc eax,eax
sub ecx,edx
adc eax,0
mov DWORD [12+ebx],ecx
; Round 4
mov ecx,DWORD [16+esi]
mov edx,DWORD [16+edi]
sub ecx,eax
mov eax,0
adc eax,eax
sub ecx,edx
adc eax,0
mov DWORD [16+ebx],ecx
; Round 5
mov ecx,DWORD [20+esi]
mov edx,DWORD [20+edi]
sub ecx,eax
mov eax,0
adc eax,eax
sub ecx,edx
adc eax,0
mov DWORD [20+ebx],ecx
; Round 6
mov ecx,DWORD [24+esi]
mov edx,DWORD [24+edi]
sub ecx,eax
mov eax,0
adc eax,eax
sub ecx,edx
adc eax,0
mov DWORD [24+ebx],ecx
; Round 7
mov ecx,DWORD [28+esi]
mov edx,DWORD [28+edi]
sub ecx,eax
mov eax,0
adc eax,eax
sub ecx,edx
adc eax,0
mov DWORD [28+ebx],ecx
;
add esi,32
add edi,32
add ebx,32
sub ebp,8
jnz NEAR L$024aw_loop
L$023aw_finish:
mov ebp,DWORD [32+esp]
and ebp,7
jz NEAR L$025aw_end
; Tail Round 0
mov ecx,DWORD [esi]
mov edx,DWORD [edi]
sub ecx,eax
mov eax,0
adc eax,eax
sub ecx,edx
adc eax,0
dec ebp
mov DWORD [ebx],ecx
jz NEAR L$025aw_end
; Tail Round 1
mov ecx,DWORD [4+esi]
mov edx,DWORD [4+edi]
sub ecx,eax
mov eax,0
adc eax,eax
sub ecx,edx
adc eax,0
dec ebp
mov DWORD [4+ebx],ecx
jz NEAR L$025aw_end
; Tail Round 2
mov ecx,DWORD [8+esi]
mov edx,DWORD [8+edi]
sub ecx,eax
mov eax,0
adc eax,eax
sub ecx,edx
adc eax,0
dec ebp
mov DWORD [8+ebx],ecx
jz NEAR L$025aw_end
; Tail Round 3
mov ecx,DWORD [12+esi]
mov edx,DWORD [12+edi]
sub ecx,eax
mov eax,0
adc eax,eax
sub ecx,edx
adc eax,0
dec ebp
mov DWORD [12+ebx],ecx
jz NEAR L$025aw_end
; Tail Round 4
mov ecx,DWORD [16+esi]
mov edx,DWORD [16+edi]
sub ecx,eax
mov eax,0
adc eax,eax
sub ecx,edx
adc eax,0
dec ebp
mov DWORD [16+ebx],ecx
jz NEAR L$025aw_end
; Tail Round 5
mov ecx,DWORD [20+esi]
mov edx,DWORD [20+edi]
sub ecx,eax
mov eax,0
adc eax,eax
sub ecx,edx
adc eax,0
dec ebp
mov DWORD [20+ebx],ecx
jz NEAR L$025aw_end
; Tail Round 6
mov ecx,DWORD [24+esi]
mov edx,DWORD [24+edi]
sub ecx,eax
mov eax,0
adc eax,eax
sub ecx,edx
adc eax,0
mov DWORD [24+ebx],ecx
L$025aw_end:
pop edi
pop esi
pop ebx
pop ebp
ret
segment .bss
common _OPENSSL_ia32cap_P 16
%else
; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738
ret
%endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,295 @@
; This file is generated from a similarly-named Perl script in the BoringSSL
; source tree. Do not edit by hand.
%include "openssl/boringssl_prefix_symbols_nasm.inc"
%ifidn __OUTPUT_FORMAT__, win32
%ifidn __OUTPUT_FORMAT__,obj
section code use32 class=code align=64
%elifidn __OUTPUT_FORMAT__,win32
$@feat.00 equ 1
section .text code align=64
%else
section .text code
%endif
global _gcm_gmult_ssse3
align 16
_gcm_gmult_ssse3:
L$_gcm_gmult_ssse3_begin:
push ebp
push ebx
push esi
push edi
mov edi,DWORD [20+esp]
mov esi,DWORD [24+esp]
movdqu xmm0,[edi]
call L$000pic_point
L$000pic_point:
pop eax
movdqa xmm7,[(L$reverse_bytes-L$000pic_point)+eax]
movdqa xmm2,[(L$low4_mask-L$000pic_point)+eax]
db 102,15,56,0,199
movdqa xmm1,xmm2
pandn xmm1,xmm0
psrld xmm1,4
pand xmm0,xmm2
pxor xmm2,xmm2
pxor xmm3,xmm3
mov eax,5
L$001loop_row_1:
movdqa xmm4,[esi]
lea esi,[16+esi]
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 eax,1
jnz NEAR L$001loop_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 eax,5
L$002loop_row_2:
movdqa xmm4,[esi]
lea esi,[16+esi]
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 eax,1
jnz NEAR L$002loop_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 eax,6
L$003loop_row_3:
movdqa xmm4,[esi]
lea esi,[16+esi]
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 eax,1
jnz NEAR L$003loop_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,15,56,0,215
movdqu [edi],xmm2
pxor xmm0,xmm0
pxor xmm1,xmm1
pxor xmm2,xmm2
pxor xmm3,xmm3
pxor xmm4,xmm4
pxor xmm5,xmm5
pxor xmm6,xmm6
pop edi
pop esi
pop ebx
pop ebp
ret
global _gcm_ghash_ssse3
align 16
_gcm_ghash_ssse3:
L$_gcm_ghash_ssse3_begin:
push ebp
push ebx
push esi
push edi
mov edi,DWORD [20+esp]
mov esi,DWORD [24+esp]
mov edx,DWORD [28+esp]
mov ecx,DWORD [32+esp]
movdqu xmm0,[edi]
call L$004pic_point
L$004pic_point:
pop ebx
movdqa xmm7,[(L$reverse_bytes-L$004pic_point)+ebx]
and ecx,-16
db 102,15,56,0,199
pxor xmm3,xmm3
L$005loop_ghash:
movdqa xmm2,[(L$low4_mask-L$004pic_point)+ebx]
movdqu xmm1,[edx]
db 102,15,56,0,207
pxor xmm0,xmm1
movdqa xmm1,xmm2
pandn xmm1,xmm0
psrld xmm1,4
pand xmm0,xmm2
pxor xmm2,xmm2
mov eax,5
L$006loop_row_4:
movdqa xmm4,[esi]
lea esi,[16+esi]
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 eax,1
jnz NEAR L$006loop_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 eax,5
L$007loop_row_5:
movdqa xmm4,[esi]
lea esi,[16+esi]
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 eax,1
jnz NEAR L$007loop_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 eax,6
L$008loop_row_6:
movdqa xmm4,[esi]
lea esi,[16+esi]
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 eax,1
jnz NEAR L$008loop_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 esi,[esi-256]
lea edx,[16+edx]
sub ecx,16
jnz NEAR L$005loop_ghash
db 102,15,56,0,199
movdqu [edi],xmm0
pxor xmm0,xmm0
pxor xmm1,xmm1
pxor xmm2,xmm2
pxor xmm3,xmm3
pxor xmm4,xmm4
pxor xmm5,xmm5
pxor xmm6,xmm6
pop edi
pop esi
pop ebx
pop ebp
ret
align 16
L$reverse_bytes:
db 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
align 16
L$low4_mask:
dd 252645135,252645135,252645135,252645135
%else
; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738
ret
%endif

View File

@@ -0,0 +1,328 @@
; This file is generated from a similarly-named Perl script in the BoringSSL
; source tree. Do not edit by hand.
%include "openssl/boringssl_prefix_symbols_nasm.inc"
%ifidn __OUTPUT_FORMAT__, win32
%ifidn __OUTPUT_FORMAT__,obj
section code use32 class=code align=64
%elifidn __OUTPUT_FORMAT__,win32
$@feat.00 equ 1
section .text code align=64
%else
section .text code
%endif
global _gcm_init_clmul
align 16
_gcm_init_clmul:
L$_gcm_init_clmul_begin:
mov edx,DWORD [4+esp]
mov eax,DWORD [8+esp]
call L$000pic
L$000pic:
pop ecx
lea ecx,[(L$bswap-L$000pic)+ecx]
movdqu xmm2,[eax]
pshufd xmm2,xmm2,78
pshufd xmm4,xmm2,255
movdqa xmm3,xmm2
psllq xmm2,1
pxor xmm5,xmm5
psrlq xmm3,63
pcmpgtd xmm5,xmm4
pslldq xmm3,8
por xmm2,xmm3
pand xmm5,[16+ecx]
pxor xmm2,xmm5
movdqa xmm0,xmm2
movdqa xmm1,xmm0
pshufd xmm3,xmm0,78
pshufd xmm4,xmm2,78
pxor xmm3,xmm0
pxor xmm4,xmm2
db 102,15,58,68,194,0
db 102,15,58,68,202,17
db 102,15,58,68,220,0
xorps xmm3,xmm0
xorps xmm3,xmm1
movdqa xmm4,xmm3
psrldq xmm3,8
pslldq xmm4,8
pxor xmm1,xmm3
pxor xmm0,xmm4
movdqa xmm4,xmm0
movdqa xmm3,xmm0
psllq xmm0,5
pxor xmm3,xmm0
psllq xmm0,1
pxor xmm0,xmm3
psllq xmm0,57
movdqa xmm3,xmm0
pslldq xmm0,8
psrldq xmm3,8
pxor xmm0,xmm4
pxor xmm1,xmm3
movdqa xmm4,xmm0
psrlq xmm0,1
pxor xmm1,xmm4
pxor xmm4,xmm0
psrlq xmm0,5
pxor xmm0,xmm4
psrlq xmm0,1
pxor xmm0,xmm1
pshufd xmm3,xmm2,78
pshufd xmm4,xmm0,78
pxor xmm3,xmm2
movdqu [edx],xmm2
pxor xmm4,xmm0
movdqu [16+edx],xmm0
db 102,15,58,15,227,8
movdqu [32+edx],xmm4
ret
global _gcm_gmult_clmul
align 16
_gcm_gmult_clmul:
L$_gcm_gmult_clmul_begin:
mov eax,DWORD [4+esp]
mov edx,DWORD [8+esp]
call L$001pic
L$001pic:
pop ecx
lea ecx,[(L$bswap-L$001pic)+ecx]
movdqu xmm0,[eax]
movdqa xmm5,[ecx]
movups xmm2,[edx]
db 102,15,56,0,197
movups xmm4,[32+edx]
movdqa xmm1,xmm0
pshufd xmm3,xmm0,78
pxor xmm3,xmm0
db 102,15,58,68,194,0
db 102,15,58,68,202,17
db 102,15,58,68,220,0
xorps xmm3,xmm0
xorps xmm3,xmm1
movdqa xmm4,xmm3
psrldq xmm3,8
pslldq xmm4,8
pxor xmm1,xmm3
pxor xmm0,xmm4
movdqa xmm4,xmm0
movdqa xmm3,xmm0
psllq xmm0,5
pxor xmm3,xmm0
psllq xmm0,1
pxor xmm0,xmm3
psllq xmm0,57
movdqa xmm3,xmm0
pslldq xmm0,8
psrldq xmm3,8
pxor xmm0,xmm4
pxor xmm1,xmm3
movdqa xmm4,xmm0
psrlq xmm0,1
pxor xmm1,xmm4
pxor xmm4,xmm0
psrlq xmm0,5
pxor xmm0,xmm4
psrlq xmm0,1
pxor xmm0,xmm1
db 102,15,56,0,197
movdqu [eax],xmm0
ret
global _gcm_ghash_clmul
align 16
_gcm_ghash_clmul:
L$_gcm_ghash_clmul_begin:
push ebp
push ebx
push esi
push edi
mov eax,DWORD [20+esp]
mov edx,DWORD [24+esp]
mov esi,DWORD [28+esp]
mov ebx,DWORD [32+esp]
call L$002pic
L$002pic:
pop ecx
lea ecx,[(L$bswap-L$002pic)+ecx]
movdqu xmm0,[eax]
movdqa xmm5,[ecx]
movdqu xmm2,[edx]
db 102,15,56,0,197
sub ebx,16
jz NEAR L$003odd_tail
movdqu xmm3,[esi]
movdqu xmm6,[16+esi]
db 102,15,56,0,221
db 102,15,56,0,245
movdqu xmm5,[32+edx]
pxor xmm0,xmm3
pshufd xmm3,xmm6,78
movdqa xmm7,xmm6
pxor xmm3,xmm6
lea esi,[32+esi]
db 102,15,58,68,242,0
db 102,15,58,68,250,17
db 102,15,58,68,221,0
movups xmm2,[16+edx]
nop
sub ebx,32
jbe NEAR L$004even_tail
jmp NEAR L$005mod_loop
align 32
L$005mod_loop:
pshufd xmm4,xmm0,78
movdqa xmm1,xmm0
pxor xmm4,xmm0
nop
db 102,15,58,68,194,0
db 102,15,58,68,202,17
db 102,15,58,68,229,16
movups xmm2,[edx]
xorps xmm0,xmm6
movdqa xmm5,[ecx]
xorps xmm1,xmm7
movdqu xmm7,[esi]
pxor xmm3,xmm0
movdqu xmm6,[16+esi]
pxor xmm3,xmm1
db 102,15,56,0,253
pxor xmm4,xmm3
movdqa xmm3,xmm4
psrldq xmm4,8
pslldq xmm3,8
pxor xmm1,xmm4
pxor xmm0,xmm3
db 102,15,56,0,245
pxor xmm1,xmm7
movdqa xmm7,xmm6
movdqa xmm4,xmm0
movdqa xmm3,xmm0
psllq xmm0,5
pxor xmm3,xmm0
psllq xmm0,1
pxor xmm0,xmm3
db 102,15,58,68,242,0
movups xmm5,[32+edx]
psllq xmm0,57
movdqa xmm3,xmm0
pslldq xmm0,8
psrldq xmm3,8
pxor xmm0,xmm4
pxor xmm1,xmm3
pshufd xmm3,xmm7,78
movdqa xmm4,xmm0
psrlq xmm0,1
pxor xmm3,xmm7
pxor xmm1,xmm4
db 102,15,58,68,250,17
movups xmm2,[16+edx]
pxor xmm4,xmm0
psrlq xmm0,5
pxor xmm0,xmm4
psrlq xmm0,1
pxor xmm0,xmm1
db 102,15,58,68,221,0
lea esi,[32+esi]
sub ebx,32
ja NEAR L$005mod_loop
L$004even_tail:
pshufd xmm4,xmm0,78
movdqa xmm1,xmm0
pxor xmm4,xmm0
db 102,15,58,68,194,0
db 102,15,58,68,202,17
db 102,15,58,68,229,16
movdqa xmm5,[ecx]
xorps xmm0,xmm6
xorps xmm1,xmm7
pxor xmm3,xmm0
pxor xmm3,xmm1
pxor xmm4,xmm3
movdqa xmm3,xmm4
psrldq xmm4,8
pslldq xmm3,8
pxor xmm1,xmm4
pxor xmm0,xmm3
movdqa xmm4,xmm0
movdqa xmm3,xmm0
psllq xmm0,5
pxor xmm3,xmm0
psllq xmm0,1
pxor xmm0,xmm3
psllq xmm0,57
movdqa xmm3,xmm0
pslldq xmm0,8
psrldq xmm3,8
pxor xmm0,xmm4
pxor xmm1,xmm3
movdqa xmm4,xmm0
psrlq xmm0,1
pxor xmm1,xmm4
pxor xmm4,xmm0
psrlq xmm0,5
pxor xmm0,xmm4
psrlq xmm0,1
pxor xmm0,xmm1
test ebx,ebx
jnz NEAR L$006done
movups xmm2,[edx]
L$003odd_tail:
movdqu xmm3,[esi]
db 102,15,56,0,221
pxor xmm0,xmm3
movdqa xmm1,xmm0
pshufd xmm3,xmm0,78
pshufd xmm4,xmm2,78
pxor xmm3,xmm0
pxor xmm4,xmm2
db 102,15,58,68,194,0
db 102,15,58,68,202,17
db 102,15,58,68,220,0
xorps xmm3,xmm0
xorps xmm3,xmm1
movdqa xmm4,xmm3
psrldq xmm3,8
pslldq xmm4,8
pxor xmm1,xmm3
pxor xmm0,xmm4
movdqa xmm4,xmm0
movdqa xmm3,xmm0
psllq xmm0,5
pxor xmm3,xmm0
psllq xmm0,1
pxor xmm0,xmm3
psllq xmm0,57
movdqa xmm3,xmm0
pslldq xmm0,8
psrldq xmm3,8
pxor xmm0,xmm4
pxor xmm1,xmm3
movdqa xmm4,xmm0
psrlq xmm0,1
pxor xmm1,xmm4
pxor xmm4,xmm0
psrlq xmm0,5
pxor xmm0,xmm4
psrlq xmm0,1
pxor xmm0,xmm1
L$006done:
db 102,15,56,0,197
movdqu [eax],xmm0
pop edi
pop esi
pop ebx
pop ebp
ret
align 64
L$bswap:
db 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194
db 71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67
db 82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112
db 112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62
db 0
%else
; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738
ret
%endif

View File

@@ -0,0 +1,692 @@
; This file is generated from a similarly-named Perl script in the BoringSSL
; source tree. Do not edit by hand.
%include "openssl/boringssl_prefix_symbols_nasm.inc"
%ifidn __OUTPUT_FORMAT__, win32
%ifidn __OUTPUT_FORMAT__,obj
section code use32 class=code align=64
%elifidn __OUTPUT_FORMAT__,win32
$@feat.00 equ 1
section .text code align=64
%else
section .text code
%endif
global _md5_block_asm_data_order
align 16
_md5_block_asm_data_order:
L$_md5_block_asm_data_order_begin:
push esi
push edi
mov edi,DWORD [12+esp]
mov esi,DWORD [16+esp]
mov ecx,DWORD [20+esp]
push ebp
shl ecx,6
push ebx
add ecx,esi
sub ecx,64
mov eax,DWORD [edi]
push ecx
mov ebx,DWORD [4+edi]
mov ecx,DWORD [8+edi]
mov edx,DWORD [12+edi]
L$000start:
;
; R0 section
mov edi,ecx
mov ebp,DWORD [esi]
; R0 0
xor edi,edx
and edi,ebx
lea eax,[3614090360+ebp*1+eax]
xor edi,edx
add eax,edi
mov edi,ebx
rol eax,7
mov ebp,DWORD [4+esi]
add eax,ebx
; R0 1
xor edi,ecx
and edi,eax
lea edx,[3905402710+ebp*1+edx]
xor edi,ecx
add edx,edi
mov edi,eax
rol edx,12
mov ebp,DWORD [8+esi]
add edx,eax
; R0 2
xor edi,ebx
and edi,edx
lea ecx,[606105819+ebp*1+ecx]
xor edi,ebx
add ecx,edi
mov edi,edx
rol ecx,17
mov ebp,DWORD [12+esi]
add ecx,edx
; R0 3
xor edi,eax
and edi,ecx
lea ebx,[3250441966+ebp*1+ebx]
xor edi,eax
add ebx,edi
mov edi,ecx
rol ebx,22
mov ebp,DWORD [16+esi]
add ebx,ecx
; R0 4
xor edi,edx
and edi,ebx
lea eax,[4118548399+ebp*1+eax]
xor edi,edx
add eax,edi
mov edi,ebx
rol eax,7
mov ebp,DWORD [20+esi]
add eax,ebx
; R0 5
xor edi,ecx
and edi,eax
lea edx,[1200080426+ebp*1+edx]
xor edi,ecx
add edx,edi
mov edi,eax
rol edx,12
mov ebp,DWORD [24+esi]
add edx,eax
; R0 6
xor edi,ebx
and edi,edx
lea ecx,[2821735955+ebp*1+ecx]
xor edi,ebx
add ecx,edi
mov edi,edx
rol ecx,17
mov ebp,DWORD [28+esi]
add ecx,edx
; R0 7
xor edi,eax
and edi,ecx
lea ebx,[4249261313+ebp*1+ebx]
xor edi,eax
add ebx,edi
mov edi,ecx
rol ebx,22
mov ebp,DWORD [32+esi]
add ebx,ecx
; R0 8
xor edi,edx
and edi,ebx
lea eax,[1770035416+ebp*1+eax]
xor edi,edx
add eax,edi
mov edi,ebx
rol eax,7
mov ebp,DWORD [36+esi]
add eax,ebx
; R0 9
xor edi,ecx
and edi,eax
lea edx,[2336552879+ebp*1+edx]
xor edi,ecx
add edx,edi
mov edi,eax
rol edx,12
mov ebp,DWORD [40+esi]
add edx,eax
; R0 10
xor edi,ebx
and edi,edx
lea ecx,[4294925233+ebp*1+ecx]
xor edi,ebx
add ecx,edi
mov edi,edx
rol ecx,17
mov ebp,DWORD [44+esi]
add ecx,edx
; R0 11
xor edi,eax
and edi,ecx
lea ebx,[2304563134+ebp*1+ebx]
xor edi,eax
add ebx,edi
mov edi,ecx
rol ebx,22
mov ebp,DWORD [48+esi]
add ebx,ecx
; R0 12
xor edi,edx
and edi,ebx
lea eax,[1804603682+ebp*1+eax]
xor edi,edx
add eax,edi
mov edi,ebx
rol eax,7
mov ebp,DWORD [52+esi]
add eax,ebx
; R0 13
xor edi,ecx
and edi,eax
lea edx,[4254626195+ebp*1+edx]
xor edi,ecx
add edx,edi
mov edi,eax
rol edx,12
mov ebp,DWORD [56+esi]
add edx,eax
; R0 14
xor edi,ebx
and edi,edx
lea ecx,[2792965006+ebp*1+ecx]
xor edi,ebx
add ecx,edi
mov edi,edx
rol ecx,17
mov ebp,DWORD [60+esi]
add ecx,edx
; R0 15
xor edi,eax
and edi,ecx
lea ebx,[1236535329+ebp*1+ebx]
xor edi,eax
add ebx,edi
mov edi,ecx
rol ebx,22
mov ebp,DWORD [4+esi]
add ebx,ecx
;
; R1 section
; R1 16
lea eax,[4129170786+ebp*1+eax]
xor edi,ebx
and edi,edx
mov ebp,DWORD [24+esi]
xor edi,ecx
add eax,edi
mov edi,ebx
rol eax,5
add eax,ebx
; R1 17
lea edx,[3225465664+ebp*1+edx]
xor edi,eax
and edi,ecx
mov ebp,DWORD [44+esi]
xor edi,ebx
add edx,edi
mov edi,eax
rol edx,9
add edx,eax
; R1 18
lea ecx,[643717713+ebp*1+ecx]
xor edi,edx
and edi,ebx
mov ebp,DWORD [esi]
xor edi,eax
add ecx,edi
mov edi,edx
rol ecx,14
add ecx,edx
; R1 19
lea ebx,[3921069994+ebp*1+ebx]
xor edi,ecx
and edi,eax
mov ebp,DWORD [20+esi]
xor edi,edx
add ebx,edi
mov edi,ecx
rol ebx,20
add ebx,ecx
; R1 20
lea eax,[3593408605+ebp*1+eax]
xor edi,ebx
and edi,edx
mov ebp,DWORD [40+esi]
xor edi,ecx
add eax,edi
mov edi,ebx
rol eax,5
add eax,ebx
; R1 21
lea edx,[38016083+ebp*1+edx]
xor edi,eax
and edi,ecx
mov ebp,DWORD [60+esi]
xor edi,ebx
add edx,edi
mov edi,eax
rol edx,9
add edx,eax
; R1 22
lea ecx,[3634488961+ebp*1+ecx]
xor edi,edx
and edi,ebx
mov ebp,DWORD [16+esi]
xor edi,eax
add ecx,edi
mov edi,edx
rol ecx,14
add ecx,edx
; R1 23
lea ebx,[3889429448+ebp*1+ebx]
xor edi,ecx
and edi,eax
mov ebp,DWORD [36+esi]
xor edi,edx
add ebx,edi
mov edi,ecx
rol ebx,20
add ebx,ecx
; R1 24
lea eax,[568446438+ebp*1+eax]
xor edi,ebx
and edi,edx
mov ebp,DWORD [56+esi]
xor edi,ecx
add eax,edi
mov edi,ebx
rol eax,5
add eax,ebx
; R1 25
lea edx,[3275163606+ebp*1+edx]
xor edi,eax
and edi,ecx
mov ebp,DWORD [12+esi]
xor edi,ebx
add edx,edi
mov edi,eax
rol edx,9
add edx,eax
; R1 26
lea ecx,[4107603335+ebp*1+ecx]
xor edi,edx
and edi,ebx
mov ebp,DWORD [32+esi]
xor edi,eax
add ecx,edi
mov edi,edx
rol ecx,14
add ecx,edx
; R1 27
lea ebx,[1163531501+ebp*1+ebx]
xor edi,ecx
and edi,eax
mov ebp,DWORD [52+esi]
xor edi,edx
add ebx,edi
mov edi,ecx
rol ebx,20
add ebx,ecx
; R1 28
lea eax,[2850285829+ebp*1+eax]
xor edi,ebx
and edi,edx
mov ebp,DWORD [8+esi]
xor edi,ecx
add eax,edi
mov edi,ebx
rol eax,5
add eax,ebx
; R1 29
lea edx,[4243563512+ebp*1+edx]
xor edi,eax
and edi,ecx
mov ebp,DWORD [28+esi]
xor edi,ebx
add edx,edi
mov edi,eax
rol edx,9
add edx,eax
; R1 30
lea ecx,[1735328473+ebp*1+ecx]
xor edi,edx
and edi,ebx
mov ebp,DWORD [48+esi]
xor edi,eax
add ecx,edi
mov edi,edx
rol ecx,14
add ecx,edx
; R1 31
lea ebx,[2368359562+ebp*1+ebx]
xor edi,ecx
and edi,eax
mov ebp,DWORD [20+esi]
xor edi,edx
add ebx,edi
mov edi,ecx
rol ebx,20
add ebx,ecx
;
; R2 section
; R2 32
xor edi,edx
xor edi,ebx
lea eax,[4294588738+ebp*1+eax]
add eax,edi
rol eax,4
mov ebp,DWORD [32+esi]
mov edi,ebx
; R2 33
lea edx,[2272392833+ebp*1+edx]
add eax,ebx
xor edi,ecx
xor edi,eax
mov ebp,DWORD [44+esi]
add edx,edi
mov edi,eax
rol edx,11
add edx,eax
; R2 34
xor edi,ebx
xor edi,edx
lea ecx,[1839030562+ebp*1+ecx]
add ecx,edi
rol ecx,16
mov ebp,DWORD [56+esi]
mov edi,edx
; R2 35
lea ebx,[4259657740+ebp*1+ebx]
add ecx,edx
xor edi,eax
xor edi,ecx
mov ebp,DWORD [4+esi]
add ebx,edi
mov edi,ecx
rol ebx,23
add ebx,ecx
; R2 36
xor edi,edx
xor edi,ebx
lea eax,[2763975236+ebp*1+eax]
add eax,edi
rol eax,4
mov ebp,DWORD [16+esi]
mov edi,ebx
; R2 37
lea edx,[1272893353+ebp*1+edx]
add eax,ebx
xor edi,ecx
xor edi,eax
mov ebp,DWORD [28+esi]
add edx,edi
mov edi,eax
rol edx,11
add edx,eax
; R2 38
xor edi,ebx
xor edi,edx
lea ecx,[4139469664+ebp*1+ecx]
add ecx,edi
rol ecx,16
mov ebp,DWORD [40+esi]
mov edi,edx
; R2 39
lea ebx,[3200236656+ebp*1+ebx]
add ecx,edx
xor edi,eax
xor edi,ecx
mov ebp,DWORD [52+esi]
add ebx,edi
mov edi,ecx
rol ebx,23
add ebx,ecx
; R2 40
xor edi,edx
xor edi,ebx
lea eax,[681279174+ebp*1+eax]
add eax,edi
rol eax,4
mov ebp,DWORD [esi]
mov edi,ebx
; R2 41
lea edx,[3936430074+ebp*1+edx]
add eax,ebx
xor edi,ecx
xor edi,eax
mov ebp,DWORD [12+esi]
add edx,edi
mov edi,eax
rol edx,11
add edx,eax
; R2 42
xor edi,ebx
xor edi,edx
lea ecx,[3572445317+ebp*1+ecx]
add ecx,edi
rol ecx,16
mov ebp,DWORD [24+esi]
mov edi,edx
; R2 43
lea ebx,[76029189+ebp*1+ebx]
add ecx,edx
xor edi,eax
xor edi,ecx
mov ebp,DWORD [36+esi]
add ebx,edi
mov edi,ecx
rol ebx,23
add ebx,ecx
; R2 44
xor edi,edx
xor edi,ebx
lea eax,[3654602809+ebp*1+eax]
add eax,edi
rol eax,4
mov ebp,DWORD [48+esi]
mov edi,ebx
; R2 45
lea edx,[3873151461+ebp*1+edx]
add eax,ebx
xor edi,ecx
xor edi,eax
mov ebp,DWORD [60+esi]
add edx,edi
mov edi,eax
rol edx,11
add edx,eax
; R2 46
xor edi,ebx
xor edi,edx
lea ecx,[530742520+ebp*1+ecx]
add ecx,edi
rol ecx,16
mov ebp,DWORD [8+esi]
mov edi,edx
; R2 47
lea ebx,[3299628645+ebp*1+ebx]
add ecx,edx
xor edi,eax
xor edi,ecx
mov ebp,DWORD [esi]
add ebx,edi
mov edi,-1
rol ebx,23
add ebx,ecx
;
; R3 section
; R3 48
xor edi,edx
or edi,ebx
lea eax,[4096336452+ebp*1+eax]
xor edi,ecx
mov ebp,DWORD [28+esi]
add eax,edi
mov edi,-1
rol eax,6
xor edi,ecx
add eax,ebx
; R3 49
or edi,eax
lea edx,[1126891415+ebp*1+edx]
xor edi,ebx
mov ebp,DWORD [56+esi]
add edx,edi
mov edi,-1
rol edx,10
xor edi,ebx
add edx,eax
; R3 50
or edi,edx
lea ecx,[2878612391+ebp*1+ecx]
xor edi,eax
mov ebp,DWORD [20+esi]
add ecx,edi
mov edi,-1
rol ecx,15
xor edi,eax
add ecx,edx
; R3 51
or edi,ecx
lea ebx,[4237533241+ebp*1+ebx]
xor edi,edx
mov ebp,DWORD [48+esi]
add ebx,edi
mov edi,-1
rol ebx,21
xor edi,edx
add ebx,ecx
; R3 52
or edi,ebx
lea eax,[1700485571+ebp*1+eax]
xor edi,ecx
mov ebp,DWORD [12+esi]
add eax,edi
mov edi,-1
rol eax,6
xor edi,ecx
add eax,ebx
; R3 53
or edi,eax
lea edx,[2399980690+ebp*1+edx]
xor edi,ebx
mov ebp,DWORD [40+esi]
add edx,edi
mov edi,-1
rol edx,10
xor edi,ebx
add edx,eax
; R3 54
or edi,edx
lea ecx,[4293915773+ebp*1+ecx]
xor edi,eax
mov ebp,DWORD [4+esi]
add ecx,edi
mov edi,-1
rol ecx,15
xor edi,eax
add ecx,edx
; R3 55
or edi,ecx
lea ebx,[2240044497+ebp*1+ebx]
xor edi,edx
mov ebp,DWORD [32+esi]
add ebx,edi
mov edi,-1
rol ebx,21
xor edi,edx
add ebx,ecx
; R3 56
or edi,ebx
lea eax,[1873313359+ebp*1+eax]
xor edi,ecx
mov ebp,DWORD [60+esi]
add eax,edi
mov edi,-1
rol eax,6
xor edi,ecx
add eax,ebx
; R3 57
or edi,eax
lea edx,[4264355552+ebp*1+edx]
xor edi,ebx
mov ebp,DWORD [24+esi]
add edx,edi
mov edi,-1
rol edx,10
xor edi,ebx
add edx,eax
; R3 58
or edi,edx
lea ecx,[2734768916+ebp*1+ecx]
xor edi,eax
mov ebp,DWORD [52+esi]
add ecx,edi
mov edi,-1
rol ecx,15
xor edi,eax
add ecx,edx
; R3 59
or edi,ecx
lea ebx,[1309151649+ebp*1+ebx]
xor edi,edx
mov ebp,DWORD [16+esi]
add ebx,edi
mov edi,-1
rol ebx,21
xor edi,edx
add ebx,ecx
; R3 60
or edi,ebx
lea eax,[4149444226+ebp*1+eax]
xor edi,ecx
mov ebp,DWORD [44+esi]
add eax,edi
mov edi,-1
rol eax,6
xor edi,ecx
add eax,ebx
; R3 61
or edi,eax
lea edx,[3174756917+ebp*1+edx]
xor edi,ebx
mov ebp,DWORD [8+esi]
add edx,edi
mov edi,-1
rol edx,10
xor edi,ebx
add edx,eax
; R3 62
or edi,edx
lea ecx,[718787259+ebp*1+ecx]
xor edi,eax
mov ebp,DWORD [36+esi]
add ecx,edi
mov edi,-1
rol ecx,15
xor edi,eax
add ecx,edx
; R3 63
or edi,ecx
lea ebx,[3951481745+ebp*1+ebx]
xor edi,edx
mov ebp,DWORD [24+esp]
add ebx,edi
add esi,64
rol ebx,21
mov edi,DWORD [ebp]
add ebx,ecx
add eax,edi
mov edi,DWORD [4+ebp]
add ebx,edi
mov edi,DWORD [8+ebp]
add ecx,edi
mov edi,DWORD [12+ebp]
add edx,edi
mov DWORD [ebp],eax
mov DWORD [4+ebp],ebx
mov edi,DWORD [esp]
mov DWORD [8+ebp],ecx
mov DWORD [12+ebp],edx
cmp edi,esi
jae NEAR L$000start
pop eax
pop ebx
pop ebp
pop edi
pop esi
ret
%else
; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738
ret
%endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,677 @@
; This file is generated from a similarly-named Perl script in the BoringSSL
; source tree. Do not edit by hand.
%include "openssl/boringssl_prefix_symbols_nasm.inc"
%ifidn __OUTPUT_FORMAT__, win32
%ifidn __OUTPUT_FORMAT__,obj
section code use32 class=code align=64
%elifidn __OUTPUT_FORMAT__,win32
$@feat.00 equ 1
section .text code align=64
%else
section .text code
%endif
%ifdef BORINGSSL_DISPATCH_TEST
extern _BORINGSSL_function_hit
%endif
align 64
L$_vpaes_consts:
dd 218628480,235210255,168496130,67568393
dd 252381056,17041926,33884169,51187212
dd 252645135,252645135,252645135,252645135
dd 1512730624,3266504856,1377990664,3401244816
dd 830229760,1275146365,2969422977,3447763452
dd 3411033600,2979783055,338359620,2782886510
dd 4209124096,907596821,221174255,1006095553
dd 191964160,3799684038,3164090317,1589111125
dd 182528256,1777043520,2877432650,3265356744
dd 1874708224,3503451415,3305285752,363511674
dd 1606117888,3487855781,1093350906,2384367825
dd 197121,67569157,134941193,202313229
dd 67569157,134941193,202313229,197121
dd 134941193,202313229,197121,67569157
dd 202313229,197121,67569157,134941193
dd 33619971,100992007,168364043,235736079
dd 235736079,33619971,100992007,168364043
dd 168364043,235736079,33619971,100992007
dd 100992007,168364043,235736079,33619971
dd 50462976,117835012,185207048,252579084
dd 252314880,51251460,117574920,184942860
dd 184682752,252054788,50987272,118359308
dd 118099200,185467140,251790600,50727180
dd 2946363062,528716217,1300004225,1881839624
dd 1532713819,1532713819,1532713819,1532713819
dd 3602276352,4288629033,3737020424,4153884961
dd 1354558464,32357713,2958822624,3775749553
dd 1201988352,132424512,1572796698,503232858
dd 2213177600,1597421020,4103937655,675398315
dd 2749646592,4273543773,1511898873,121693092
dd 3040248576,1103263732,2871565598,1608280554
dd 2236667136,2588920351,482954393,64377734
dd 3069987328,291237287,2117370568,3650299247
dd 533321216,3573750986,2572112006,1401264716
dd 1339849704,2721158661,548607111,3445553514
dd 2128193280,3054596040,2183486460,1257083700
dd 655635200,1165381986,3923443150,2344132524
dd 190078720,256924420,290342170,357187870
dd 1610966272,2263057382,4103205268,309794674
dd 2592527872,2233205587,1335446729,3402964816
dd 3973531904,3225098121,3002836325,1918774430
dd 3870401024,2102906079,2284471353,4117666579
dd 617007872,1021508343,366931923,691083277
dd 2528395776,3491914898,2968704004,1613121270
dd 3445188352,3247741094,844474987,4093578302
dd 651481088,1190302358,1689581232,574775300
dd 4289380608,206939853,2555985458,2489840491
dd 2130264064,327674451,3566485037,3349835193
dd 2470714624,316102159,3636825756,3393945945
db 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
db 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83
db 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117
db 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105
db 118,101,114,115,105,116,121,41,0
align 64
align 16
__vpaes_preheat:
add ebp,DWORD [esp]
movdqa xmm7,[ebp-48]
movdqa xmm6,[ebp-16]
ret
align 16
__vpaes_encrypt_core:
mov ecx,16
mov eax,DWORD [240+edx]
movdqa xmm1,xmm6
movdqa xmm2,[ebp]
pandn xmm1,xmm0
pand xmm0,xmm6
movdqu xmm5,[edx]
db 102,15,56,0,208
movdqa xmm0,[16+ebp]
pxor xmm2,xmm5
psrld xmm1,4
add edx,16
db 102,15,56,0,193
lea ebx,[192+ebp]
pxor xmm0,xmm2
jmp NEAR L$000enc_entry
align 16
L$001enc_loop:
movdqa xmm4,[32+ebp]
movdqa xmm0,[48+ebp]
db 102,15,56,0,226
db 102,15,56,0,195
pxor xmm4,xmm5
movdqa xmm5,[64+ebp]
pxor xmm0,xmm4
movdqa xmm1,[ecx*1+ebx-64]
db 102,15,56,0,234
movdqa xmm2,[80+ebp]
movdqa xmm4,[ecx*1+ebx]
db 102,15,56,0,211
movdqa xmm3,xmm0
pxor xmm2,xmm5
db 102,15,56,0,193
add edx,16
pxor xmm0,xmm2
db 102,15,56,0,220
add ecx,16
pxor xmm3,xmm0
db 102,15,56,0,193
and ecx,48
sub eax,1
pxor xmm0,xmm3
L$000enc_entry:
movdqa xmm1,xmm6
movdqa xmm5,[ebp-32]
pandn xmm1,xmm0
psrld xmm1,4
pand xmm0,xmm6
db 102,15,56,0,232
movdqa xmm3,xmm7
pxor xmm0,xmm1
db 102,15,56,0,217
movdqa xmm4,xmm7
pxor xmm3,xmm5
db 102,15,56,0,224
movdqa xmm2,xmm7
pxor xmm4,xmm5
db 102,15,56,0,211
movdqa xmm3,xmm7
pxor xmm2,xmm0
db 102,15,56,0,220
movdqu xmm5,[edx]
pxor xmm3,xmm1
jnz NEAR L$001enc_loop
movdqa xmm4,[96+ebp]
movdqa xmm0,[112+ebp]
db 102,15,56,0,226
pxor xmm4,xmm5
db 102,15,56,0,195
movdqa xmm1,[64+ecx*1+ebx]
pxor xmm0,xmm4
db 102,15,56,0,193
ret
align 16
__vpaes_decrypt_core:
lea ebx,[608+ebp]
mov eax,DWORD [240+edx]
movdqa xmm1,xmm6
movdqa xmm2,[ebx-64]
pandn xmm1,xmm0
mov ecx,eax
psrld xmm1,4
movdqu xmm5,[edx]
shl ecx,4
pand xmm0,xmm6
db 102,15,56,0,208
movdqa xmm0,[ebx-48]
xor ecx,48
db 102,15,56,0,193
and ecx,48
pxor xmm2,xmm5
movdqa xmm5,[176+ebp]
pxor xmm0,xmm2
add edx,16
lea ecx,[ecx*1+ebx-352]
jmp NEAR L$002dec_entry
align 16
L$003dec_loop:
movdqa xmm4,[ebx-32]
movdqa xmm1,[ebx-16]
db 102,15,56,0,226
db 102,15,56,0,203
pxor xmm0,xmm4
movdqa xmm4,[ebx]
pxor xmm0,xmm1
movdqa xmm1,[16+ebx]
db 102,15,56,0,226
db 102,15,56,0,197
db 102,15,56,0,203
pxor xmm0,xmm4
movdqa xmm4,[32+ebx]
pxor xmm0,xmm1
movdqa xmm1,[48+ebx]
db 102,15,56,0,226
db 102,15,56,0,197
db 102,15,56,0,203
pxor xmm0,xmm4
movdqa xmm4,[64+ebx]
pxor xmm0,xmm1
movdqa xmm1,[80+ebx]
db 102,15,56,0,226
db 102,15,56,0,197
db 102,15,56,0,203
pxor xmm0,xmm4
add edx,16
db 102,15,58,15,237,12
pxor xmm0,xmm1
sub eax,1
L$002dec_entry:
movdqa xmm1,xmm6
movdqa xmm2,[ebp-32]
pandn xmm1,xmm0
pand xmm0,xmm6
psrld xmm1,4
db 102,15,56,0,208
movdqa xmm3,xmm7
pxor xmm0,xmm1
db 102,15,56,0,217
movdqa xmm4,xmm7
pxor xmm3,xmm2
db 102,15,56,0,224
pxor xmm4,xmm2
movdqa xmm2,xmm7
db 102,15,56,0,211
movdqa xmm3,xmm7
pxor xmm2,xmm0
db 102,15,56,0,220
movdqu xmm0,[edx]
pxor xmm3,xmm1
jnz NEAR L$003dec_loop
movdqa xmm4,[96+ebx]
db 102,15,56,0,226
pxor xmm4,xmm0
movdqa xmm0,[112+ebx]
movdqa xmm2,[ecx]
db 102,15,56,0,195
pxor xmm0,xmm4
db 102,15,56,0,194
ret
align 16
__vpaes_schedule_core:
add ebp,DWORD [esp]
movdqu xmm0,[esi]
movdqa xmm2,[320+ebp]
movdqa xmm3,xmm0
lea ebx,[ebp]
movdqa [4+esp],xmm2
call __vpaes_schedule_transform
movdqa xmm7,xmm0
test edi,edi
jnz NEAR L$004schedule_am_decrypting
movdqu [edx],xmm0
jmp NEAR L$005schedule_go
L$004schedule_am_decrypting:
movdqa xmm1,[256+ecx*1+ebp]
db 102,15,56,0,217
movdqu [edx],xmm3
xor ecx,48
L$005schedule_go:
cmp eax,192
ja NEAR L$006schedule_256
je NEAR L$007schedule_192
L$008schedule_128:
mov eax,10
L$009loop_schedule_128:
call __vpaes_schedule_round
dec eax
jz NEAR L$010schedule_mangle_last
call __vpaes_schedule_mangle
jmp NEAR L$009loop_schedule_128
align 16
L$007schedule_192:
movdqu xmm0,[8+esi]
call __vpaes_schedule_transform
movdqa xmm6,xmm0
pxor xmm4,xmm4
movhlps xmm6,xmm4
mov eax,4
L$011loop_schedule_192:
call __vpaes_schedule_round
db 102,15,58,15,198,8
call __vpaes_schedule_mangle
call __vpaes_schedule_192_smear
call __vpaes_schedule_mangle
call __vpaes_schedule_round
dec eax
jz NEAR L$010schedule_mangle_last
call __vpaes_schedule_mangle
call __vpaes_schedule_192_smear
jmp NEAR L$011loop_schedule_192
align 16
L$006schedule_256:
movdqu xmm0,[16+esi]
call __vpaes_schedule_transform
mov eax,7
L$012loop_schedule_256:
call __vpaes_schedule_mangle
movdqa xmm6,xmm0
call __vpaes_schedule_round
dec eax
jz NEAR L$010schedule_mangle_last
call __vpaes_schedule_mangle
pshufd xmm0,xmm0,255
movdqa [20+esp],xmm7
movdqa xmm7,xmm6
call L$_vpaes_schedule_low_round
movdqa xmm7,[20+esp]
jmp NEAR L$012loop_schedule_256
align 16
L$010schedule_mangle_last:
lea ebx,[384+ebp]
test edi,edi
jnz NEAR L$013schedule_mangle_last_dec
movdqa xmm1,[256+ecx*1+ebp]
db 102,15,56,0,193
lea ebx,[352+ebp]
add edx,32
L$013schedule_mangle_last_dec:
add edx,-16
pxor xmm0,[336+ebp]
call __vpaes_schedule_transform
movdqu [edx],xmm0
pxor xmm0,xmm0
pxor xmm1,xmm1
pxor xmm2,xmm2
pxor xmm3,xmm3
pxor xmm4,xmm4
pxor xmm5,xmm5
pxor xmm6,xmm6
pxor xmm7,xmm7
ret
align 16
__vpaes_schedule_192_smear:
pshufd xmm1,xmm6,128
pshufd xmm0,xmm7,254
pxor xmm6,xmm1
pxor xmm1,xmm1
pxor xmm6,xmm0
movdqa xmm0,xmm6
movhlps xmm6,xmm1
ret
align 16
__vpaes_schedule_round:
movdqa xmm2,[8+esp]
pxor xmm1,xmm1
db 102,15,58,15,202,15
db 102,15,58,15,210,15
pxor xmm7,xmm1
pshufd xmm0,xmm0,255
db 102,15,58,15,192,1
movdqa [8+esp],xmm2
L$_vpaes_schedule_low_round:
movdqa xmm1,xmm7
pslldq xmm7,4
pxor xmm7,xmm1
movdqa xmm1,xmm7
pslldq xmm7,8
pxor xmm7,xmm1
pxor xmm7,[336+ebp]
movdqa xmm4,[ebp-16]
movdqa xmm5,[ebp-48]
movdqa xmm1,xmm4
pandn xmm1,xmm0
psrld xmm1,4
pand xmm0,xmm4
movdqa xmm2,[ebp-32]
db 102,15,56,0,208
pxor xmm0,xmm1
movdqa xmm3,xmm5
db 102,15,56,0,217
pxor xmm3,xmm2
movdqa xmm4,xmm5
db 102,15,56,0,224
pxor xmm4,xmm2
movdqa xmm2,xmm5
db 102,15,56,0,211
pxor xmm2,xmm0
movdqa xmm3,xmm5
db 102,15,56,0,220
pxor xmm3,xmm1
movdqa xmm4,[32+ebp]
db 102,15,56,0,226
movdqa xmm0,[48+ebp]
db 102,15,56,0,195
pxor xmm0,xmm4
pxor xmm0,xmm7
movdqa xmm7,xmm0
ret
align 16
__vpaes_schedule_transform:
movdqa xmm2,[ebp-16]
movdqa xmm1,xmm2
pandn xmm1,xmm0
psrld xmm1,4
pand xmm0,xmm2
movdqa xmm2,[ebx]
db 102,15,56,0,208
movdqa xmm0,[16+ebx]
db 102,15,56,0,193
pxor xmm0,xmm2
ret
align 16
__vpaes_schedule_mangle:
movdqa xmm4,xmm0
movdqa xmm5,[128+ebp]
test edi,edi
jnz NEAR L$014schedule_mangle_dec
add edx,16
pxor xmm4,[336+ebp]
db 102,15,56,0,229
movdqa xmm3,xmm4
db 102,15,56,0,229
pxor xmm3,xmm4
db 102,15,56,0,229
pxor xmm3,xmm4
jmp NEAR L$015schedule_mangle_both
align 16
L$014schedule_mangle_dec:
movdqa xmm2,[ebp-16]
lea esi,[416+ebp]
movdqa xmm1,xmm2
pandn xmm1,xmm4
psrld xmm1,4
pand xmm4,xmm2
movdqa xmm2,[esi]
db 102,15,56,0,212
movdqa xmm3,[16+esi]
db 102,15,56,0,217
pxor xmm3,xmm2
db 102,15,56,0,221
movdqa xmm2,[32+esi]
db 102,15,56,0,212
pxor xmm2,xmm3
movdqa xmm3,[48+esi]
db 102,15,56,0,217
pxor xmm3,xmm2
db 102,15,56,0,221
movdqa xmm2,[64+esi]
db 102,15,56,0,212
pxor xmm2,xmm3
movdqa xmm3,[80+esi]
db 102,15,56,0,217
pxor xmm3,xmm2
db 102,15,56,0,221
movdqa xmm2,[96+esi]
db 102,15,56,0,212
pxor xmm2,xmm3
movdqa xmm3,[112+esi]
db 102,15,56,0,217
pxor xmm3,xmm2
add edx,-16
L$015schedule_mangle_both:
movdqa xmm1,[256+ecx*1+ebp]
db 102,15,56,0,217
add ecx,-16
and ecx,48
movdqu [edx],xmm3
ret
global _vpaes_set_encrypt_key
align 16
_vpaes_set_encrypt_key:
L$_vpaes_set_encrypt_key_begin:
push ebp
push ebx
push esi
push edi
%ifdef BORINGSSL_DISPATCH_TEST
push ebx
push edx
call L$016pic
L$016pic:
pop ebx
lea ebx,[(_BORINGSSL_function_hit+5-L$016pic)+ebx]
mov edx,1
mov BYTE [ebx],dl
pop edx
pop ebx
%endif
mov esi,DWORD [20+esp]
lea ebx,[esp-56]
mov eax,DWORD [24+esp]
and ebx,-16
mov edx,DWORD [28+esp]
xchg ebx,esp
mov DWORD [48+esp],ebx
mov ebx,eax
shr ebx,5
add ebx,5
mov DWORD [240+edx],ebx
mov ecx,48
mov edi,0
lea ebp,[(L$_vpaes_consts+0x30-L$017pic_point)]
call __vpaes_schedule_core
L$017pic_point:
mov esp,DWORD [48+esp]
xor eax,eax
pop edi
pop esi
pop ebx
pop ebp
ret
global _vpaes_set_decrypt_key
align 16
_vpaes_set_decrypt_key:
L$_vpaes_set_decrypt_key_begin:
push ebp
push ebx
push esi
push edi
mov esi,DWORD [20+esp]
lea ebx,[esp-56]
mov eax,DWORD [24+esp]
and ebx,-16
mov edx,DWORD [28+esp]
xchg ebx,esp
mov DWORD [48+esp],ebx
mov ebx,eax
shr ebx,5
add ebx,5
mov DWORD [240+edx],ebx
shl ebx,4
lea edx,[16+ebx*1+edx]
mov edi,1
mov ecx,eax
shr ecx,1
and ecx,32
xor ecx,32
lea ebp,[(L$_vpaes_consts+0x30-L$018pic_point)]
call __vpaes_schedule_core
L$018pic_point:
mov esp,DWORD [48+esp]
xor eax,eax
pop edi
pop esi
pop ebx
pop ebp
ret
global _vpaes_encrypt
align 16
_vpaes_encrypt:
L$_vpaes_encrypt_begin:
push ebp
push ebx
push esi
push edi
%ifdef BORINGSSL_DISPATCH_TEST
push ebx
push edx
call L$019pic
L$019pic:
pop ebx
lea ebx,[(_BORINGSSL_function_hit+4-L$019pic)+ebx]
mov edx,1
mov BYTE [ebx],dl
pop edx
pop ebx
%endif
lea ebp,[(L$_vpaes_consts+0x30-L$020pic_point)]
call __vpaes_preheat
L$020pic_point:
mov esi,DWORD [20+esp]
lea ebx,[esp-56]
mov edi,DWORD [24+esp]
and ebx,-16
mov edx,DWORD [28+esp]
xchg ebx,esp
mov DWORD [48+esp],ebx
movdqu xmm0,[esi]
call __vpaes_encrypt_core
movdqu [edi],xmm0
mov esp,DWORD [48+esp]
pop edi
pop esi
pop ebx
pop ebp
ret
global _vpaes_decrypt
align 16
_vpaes_decrypt:
L$_vpaes_decrypt_begin:
push ebp
push ebx
push esi
push edi
lea ebp,[(L$_vpaes_consts+0x30-L$021pic_point)]
call __vpaes_preheat
L$021pic_point:
mov esi,DWORD [20+esp]
lea ebx,[esp-56]
mov edi,DWORD [24+esp]
and ebx,-16
mov edx,DWORD [28+esp]
xchg ebx,esp
mov DWORD [48+esp],ebx
movdqu xmm0,[esi]
call __vpaes_decrypt_core
movdqu [edi],xmm0
mov esp,DWORD [48+esp]
pop edi
pop esi
pop ebx
pop ebp
ret
global _vpaes_cbc_encrypt
align 16
_vpaes_cbc_encrypt:
L$_vpaes_cbc_encrypt_begin:
push ebp
push ebx
push esi
push edi
mov esi,DWORD [20+esp]
mov edi,DWORD [24+esp]
mov eax,DWORD [28+esp]
mov edx,DWORD [32+esp]
sub eax,16
jc NEAR L$022cbc_abort
lea ebx,[esp-56]
mov ebp,DWORD [36+esp]
and ebx,-16
mov ecx,DWORD [40+esp]
xchg ebx,esp
movdqu xmm1,[ebp]
sub edi,esi
mov DWORD [48+esp],ebx
mov DWORD [esp],edi
mov DWORD [4+esp],edx
mov DWORD [8+esp],ebp
mov edi,eax
lea ebp,[(L$_vpaes_consts+0x30-L$023pic_point)]
call __vpaes_preheat
L$023pic_point:
cmp ecx,0
je NEAR L$024cbc_dec_loop
jmp NEAR L$025cbc_enc_loop
align 16
L$025cbc_enc_loop:
movdqu xmm0,[esi]
pxor xmm0,xmm1
call __vpaes_encrypt_core
mov ebx,DWORD [esp]
mov edx,DWORD [4+esp]
movdqa xmm1,xmm0
movdqu [esi*1+ebx],xmm0
lea esi,[16+esi]
sub edi,16
jnc NEAR L$025cbc_enc_loop
jmp NEAR L$026cbc_done
align 16
L$024cbc_dec_loop:
movdqu xmm0,[esi]
movdqa [16+esp],xmm1
movdqa [32+esp],xmm0
call __vpaes_decrypt_core
mov ebx,DWORD [esp]
mov edx,DWORD [4+esp]
pxor xmm0,[16+esp]
movdqa xmm1,[32+esp]
movdqu [esi*1+ebx],xmm0
lea esi,[16+esi]
sub edi,16
jnc NEAR L$024cbc_dec_loop
L$026cbc_done:
mov ebx,DWORD [8+esp]
mov esp,DWORD [48+esp]
movdqu [ebx],xmm1
L$022cbc_abort:
pop edi
pop esi
pop ebx
pop ebp
ret
%else
; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738
ret
%endif

View File

@@ -0,0 +1,488 @@
; This file is generated from a similarly-named Perl script in the BoringSSL
; source tree. Do not edit by hand.
%include "openssl/boringssl_prefix_symbols_nasm.inc"
%ifidn __OUTPUT_FORMAT__, win32
%ifidn __OUTPUT_FORMAT__,obj
section code use32 class=code align=64
%elifidn __OUTPUT_FORMAT__,win32
$@feat.00 equ 1
section .text code align=64
%else
section .text code
%endif
;extern _OPENSSL_ia32cap_P
global _bn_mul_mont
align 16
_bn_mul_mont:
L$_bn_mul_mont_begin:
push ebp
push ebx
push esi
push edi
xor eax,eax
mov edi,DWORD [40+esp]
cmp edi,4
jl NEAR L$000just_leave
lea esi,[20+esp]
lea edx,[24+esp]
add edi,2
neg edi
lea ebp,[edi*4+esp-32]
neg edi
mov eax,ebp
sub eax,edx
and eax,2047
sub ebp,eax
xor edx,ebp
and edx,2048
xor edx,2048
sub ebp,edx
and ebp,-64
mov eax,esp
sub eax,ebp
and eax,-4096
mov edx,esp
lea esp,[eax*1+ebp]
mov eax,DWORD [esp]
cmp esp,ebp
ja NEAR L$001page_walk
jmp NEAR L$002page_walk_done
align 16
L$001page_walk:
lea esp,[esp-4096]
mov eax,DWORD [esp]
cmp esp,ebp
ja NEAR L$001page_walk
L$002page_walk_done:
mov eax,DWORD [esi]
mov ebx,DWORD [4+esi]
mov ecx,DWORD [8+esi]
mov ebp,DWORD [12+esi]
mov esi,DWORD [16+esi]
mov esi,DWORD [esi]
mov DWORD [4+esp],eax
mov DWORD [8+esp],ebx
mov DWORD [12+esp],ecx
mov DWORD [16+esp],ebp
mov DWORD [20+esp],esi
lea ebx,[edi-3]
mov DWORD [24+esp],edx
lea eax,[_OPENSSL_ia32cap_P]
bt DWORD [eax],26
jnc NEAR L$003non_sse2
mov eax,-1
movd mm7,eax
mov esi,DWORD [8+esp]
mov edi,DWORD [12+esp]
mov ebp,DWORD [16+esp]
xor edx,edx
xor ecx,ecx
movd mm4,DWORD [edi]
movd mm5,DWORD [esi]
movd mm3,DWORD [ebp]
pmuludq mm5,mm4
movq mm2,mm5
movq mm0,mm5
pand mm0,mm7
pmuludq mm5,[20+esp]
pmuludq mm3,mm5
paddq mm3,mm0
movd mm1,DWORD [4+ebp]
movd mm0,DWORD [4+esi]
psrlq mm2,32
psrlq mm3,32
inc ecx
align 16
L$0041st:
pmuludq mm0,mm4
pmuludq mm1,mm5
paddq mm2,mm0
paddq mm3,mm1
movq mm0,mm2
pand mm0,mm7
movd mm1,DWORD [4+ecx*4+ebp]
paddq mm3,mm0
movd mm0,DWORD [4+ecx*4+esi]
psrlq mm2,32
movd DWORD [28+ecx*4+esp],mm3
psrlq mm3,32
lea ecx,[1+ecx]
cmp ecx,ebx
jl NEAR L$0041st
pmuludq mm0,mm4
pmuludq mm1,mm5
paddq mm2,mm0
paddq mm3,mm1
movq mm0,mm2
pand mm0,mm7
paddq mm3,mm0
movd DWORD [28+ecx*4+esp],mm3
psrlq mm2,32
psrlq mm3,32
paddq mm3,mm2
movq [32+ebx*4+esp],mm3
inc edx
L$005outer:
xor ecx,ecx
movd mm4,DWORD [edx*4+edi]
movd mm5,DWORD [esi]
movd mm6,DWORD [32+esp]
movd mm3,DWORD [ebp]
pmuludq mm5,mm4
paddq mm5,mm6
movq mm0,mm5
movq mm2,mm5
pand mm0,mm7
pmuludq mm5,[20+esp]
pmuludq mm3,mm5
paddq mm3,mm0
movd mm6,DWORD [36+esp]
movd mm1,DWORD [4+ebp]
movd mm0,DWORD [4+esi]
psrlq mm2,32
psrlq mm3,32
paddq mm2,mm6
inc ecx
dec ebx
L$006inner:
pmuludq mm0,mm4
pmuludq mm1,mm5
paddq mm2,mm0
paddq mm3,mm1
movq mm0,mm2
movd mm6,DWORD [36+ecx*4+esp]
pand mm0,mm7
movd mm1,DWORD [4+ecx*4+ebp]
paddq mm3,mm0
movd mm0,DWORD [4+ecx*4+esi]
psrlq mm2,32
movd DWORD [28+ecx*4+esp],mm3
psrlq mm3,32
paddq mm2,mm6
dec ebx
lea ecx,[1+ecx]
jnz NEAR L$006inner
mov ebx,ecx
pmuludq mm0,mm4
pmuludq mm1,mm5
paddq mm2,mm0
paddq mm3,mm1
movq mm0,mm2
pand mm0,mm7
paddq mm3,mm0
movd DWORD [28+ecx*4+esp],mm3
psrlq mm2,32
psrlq mm3,32
movd mm6,DWORD [36+ebx*4+esp]
paddq mm3,mm2
paddq mm3,mm6
movq [32+ebx*4+esp],mm3
lea edx,[1+edx]
cmp edx,ebx
jle NEAR L$005outer
emms
jmp NEAR L$007common_tail
align 16
L$003non_sse2:
mov esi,DWORD [8+esp]
lea ebp,[1+ebx]
mov edi,DWORD [12+esp]
xor ecx,ecx
mov edx,esi
and ebp,1
sub edx,edi
lea eax,[4+ebx*4+edi]
or ebp,edx
mov edi,DWORD [edi]
jz NEAR L$008bn_sqr_mont
mov DWORD [28+esp],eax
mov eax,DWORD [esi]
xor edx,edx
align 16
L$009mull:
mov ebp,edx
mul edi
add ebp,eax
lea ecx,[1+ecx]
adc edx,0
mov eax,DWORD [ecx*4+esi]
cmp ecx,ebx
mov DWORD [28+ecx*4+esp],ebp
jl NEAR L$009mull
mov ebp,edx
mul edi
mov edi,DWORD [20+esp]
add eax,ebp
mov esi,DWORD [16+esp]
adc edx,0
imul edi,DWORD [32+esp]
mov DWORD [32+ebx*4+esp],eax
xor ecx,ecx
mov DWORD [36+ebx*4+esp],edx
mov DWORD [40+ebx*4+esp],ecx
mov eax,DWORD [esi]
mul edi
add eax,DWORD [32+esp]
mov eax,DWORD [4+esi]
adc edx,0
inc ecx
jmp NEAR L$0102ndmadd
align 16
L$0111stmadd:
mov ebp,edx
mul edi
add ebp,DWORD [32+ecx*4+esp]
lea ecx,[1+ecx]
adc edx,0
add ebp,eax
mov eax,DWORD [ecx*4+esi]
adc edx,0
cmp ecx,ebx
mov DWORD [28+ecx*4+esp],ebp
jl NEAR L$0111stmadd
mov ebp,edx
mul edi
add eax,DWORD [32+ebx*4+esp]
mov edi,DWORD [20+esp]
adc edx,0
mov esi,DWORD [16+esp]
add ebp,eax
adc edx,0
imul edi,DWORD [32+esp]
xor ecx,ecx
add edx,DWORD [36+ebx*4+esp]
mov DWORD [32+ebx*4+esp],ebp
adc ecx,0
mov eax,DWORD [esi]
mov DWORD [36+ebx*4+esp],edx
mov DWORD [40+ebx*4+esp],ecx
mul edi
add eax,DWORD [32+esp]
mov eax,DWORD [4+esi]
adc edx,0
mov ecx,1
align 16
L$0102ndmadd:
mov ebp,edx
mul edi
add ebp,DWORD [32+ecx*4+esp]
lea ecx,[1+ecx]
adc edx,0
add ebp,eax
mov eax,DWORD [ecx*4+esi]
adc edx,0
cmp ecx,ebx
mov DWORD [24+ecx*4+esp],ebp
jl NEAR L$0102ndmadd
mov ebp,edx
mul edi
add ebp,DWORD [32+ebx*4+esp]
adc edx,0
add ebp,eax
adc edx,0
mov DWORD [28+ebx*4+esp],ebp
xor eax,eax
mov ecx,DWORD [12+esp]
add edx,DWORD [36+ebx*4+esp]
adc eax,DWORD [40+ebx*4+esp]
lea ecx,[4+ecx]
mov DWORD [32+ebx*4+esp],edx
cmp ecx,DWORD [28+esp]
mov DWORD [36+ebx*4+esp],eax
je NEAR L$007common_tail
mov edi,DWORD [ecx]
mov esi,DWORD [8+esp]
mov DWORD [12+esp],ecx
xor ecx,ecx
xor edx,edx
mov eax,DWORD [esi]
jmp NEAR L$0111stmadd
align 16
L$008bn_sqr_mont:
mov DWORD [esp],ebx
mov DWORD [12+esp],ecx
mov eax,edi
mul edi
mov DWORD [32+esp],eax
mov ebx,edx
shr edx,1
and ebx,1
inc ecx
align 16
L$012sqr:
mov eax,DWORD [ecx*4+esi]
mov ebp,edx
mul edi
add eax,ebp
lea ecx,[1+ecx]
adc edx,0
lea ebp,[eax*2+ebx]
shr eax,31
cmp ecx,DWORD [esp]
mov ebx,eax
mov DWORD [28+ecx*4+esp],ebp
jl NEAR L$012sqr
mov eax,DWORD [ecx*4+esi]
mov ebp,edx
mul edi
add eax,ebp
mov edi,DWORD [20+esp]
adc edx,0
mov esi,DWORD [16+esp]
lea ebp,[eax*2+ebx]
imul edi,DWORD [32+esp]
shr eax,31
mov DWORD [32+ecx*4+esp],ebp
lea ebp,[edx*2+eax]
mov eax,DWORD [esi]
shr edx,31
mov DWORD [36+ecx*4+esp],ebp
mov DWORD [40+ecx*4+esp],edx
mul edi
add eax,DWORD [32+esp]
mov ebx,ecx
adc edx,0
mov eax,DWORD [4+esi]
mov ecx,1
align 16
L$0133rdmadd:
mov ebp,edx
mul edi
add ebp,DWORD [32+ecx*4+esp]
adc edx,0
add ebp,eax
mov eax,DWORD [4+ecx*4+esi]
adc edx,0
mov DWORD [28+ecx*4+esp],ebp
mov ebp,edx
mul edi
add ebp,DWORD [36+ecx*4+esp]
lea ecx,[2+ecx]
adc edx,0
add ebp,eax
mov eax,DWORD [ecx*4+esi]
adc edx,0
cmp ecx,ebx
mov DWORD [24+ecx*4+esp],ebp
jl NEAR L$0133rdmadd
mov ebp,edx
mul edi
add ebp,DWORD [32+ebx*4+esp]
adc edx,0
add ebp,eax
adc edx,0
mov DWORD [28+ebx*4+esp],ebp
mov ecx,DWORD [12+esp]
xor eax,eax
mov esi,DWORD [8+esp]
add edx,DWORD [36+ebx*4+esp]
adc eax,DWORD [40+ebx*4+esp]
mov DWORD [32+ebx*4+esp],edx
cmp ecx,ebx
mov DWORD [36+ebx*4+esp],eax
je NEAR L$007common_tail
mov edi,DWORD [4+ecx*4+esi]
lea ecx,[1+ecx]
mov eax,edi
mov DWORD [12+esp],ecx
mul edi
add eax,DWORD [32+ecx*4+esp]
adc edx,0
mov DWORD [32+ecx*4+esp],eax
xor ebp,ebp
cmp ecx,ebx
lea ecx,[1+ecx]
je NEAR L$014sqrlast
mov ebx,edx
shr edx,1
and ebx,1
align 16
L$015sqradd:
mov eax,DWORD [ecx*4+esi]
mov ebp,edx
mul edi
add eax,ebp
lea ebp,[eax*1+eax]
adc edx,0
shr eax,31
add ebp,DWORD [32+ecx*4+esp]
lea ecx,[1+ecx]
adc eax,0
add ebp,ebx
adc eax,0
cmp ecx,DWORD [esp]
mov DWORD [28+ecx*4+esp],ebp
mov ebx,eax
jle NEAR L$015sqradd
mov ebp,edx
add edx,edx
shr ebp,31
add edx,ebx
adc ebp,0
L$014sqrlast:
mov edi,DWORD [20+esp]
mov esi,DWORD [16+esp]
imul edi,DWORD [32+esp]
add edx,DWORD [32+ecx*4+esp]
mov eax,DWORD [esi]
adc ebp,0
mov DWORD [32+ecx*4+esp],edx
mov DWORD [36+ecx*4+esp],ebp
mul edi
add eax,DWORD [32+esp]
lea ebx,[ecx-1]
adc edx,0
mov ecx,1
mov eax,DWORD [4+esi]
jmp NEAR L$0133rdmadd
align 16
L$007common_tail:
mov ebp,DWORD [16+esp]
mov edi,DWORD [4+esp]
lea esi,[32+esp]
mov eax,DWORD [esi]
mov ecx,ebx
xor edx,edx
align 16
L$016sub:
sbb eax,DWORD [edx*4+ebp]
mov DWORD [edx*4+edi],eax
dec ecx
mov eax,DWORD [4+edx*4+esi]
lea edx,[1+edx]
jge NEAR L$016sub
sbb eax,0
mov edx,-1
xor edx,eax
jmp NEAR L$017copy
align 16
L$017copy:
mov esi,DWORD [32+ebx*4+esp]
mov ebp,DWORD [ebx*4+edi]
mov DWORD [32+ebx*4+esp],ecx
and esi,eax
and ebp,edx
or ebp,esi
mov DWORD [ebx*4+edi],ebp
dec ebx
jge NEAR L$017copy
mov esp,DWORD [24+esp]
mov eax,1
L$000just_leave:
pop edi
pop esi
pop ebx
pop ebp
ret
db 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105
db 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56
db 54,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
segment .bss
common _OPENSSL_ia32cap_P 16
%else
; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738
ret
%endif