; WARNING: do not edit! ; Generated from openssl/crypto/sha/asm/sha512-586.pl ; ; Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. ; ; Licensed under the OpenSSL license (the "License"). You may not use ; this file except in compliance with the License. You can obtain a copy ; in the file LICENSE in the source distribution or at ; https://www.openssl.org/source/license.html %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 _sha512_block_data_order align 16 _sha512_block_data_order: L$_sha512_block_data_order_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 ebx,esp call L$000pic_point L$000pic_point: pop ebp lea ebp,[(L$001K512-L$000pic_point)+ebp] sub esp,16 and esp,-64 shl eax,7 add eax,edi mov DWORD [esp],esi mov DWORD [4+esp],edi mov DWORD [8+esp],eax mov DWORD [12+esp],ebx align 16 L$002loop_x86: mov eax,DWORD [edi] mov ebx,DWORD [4+edi] mov ecx,DWORD [8+edi] mov edx,DWORD [12+edi] bswap eax bswap ebx bswap ecx bswap edx push eax push ebx push ecx push edx mov eax,DWORD [16+edi] mov ebx,DWORD [20+edi] mov ecx,DWORD [24+edi] mov edx,DWORD [28+edi] bswap eax bswap ebx bswap ecx bswap edx push eax push ebx push ecx push edx mov eax,DWORD [32+edi] mov ebx,DWORD [36+edi] mov ecx,DWORD [40+edi] mov edx,DWORD [44+edi] bswap eax bswap ebx bswap ecx bswap edx push eax push ebx push ecx push edx mov eax,DWORD [48+edi] mov ebx,DWORD [52+edi] mov ecx,DWORD [56+edi] mov edx,DWORD [60+edi] bswap eax bswap ebx bswap ecx bswap edx push eax push ebx push ecx push edx mov eax,DWORD [64+edi] mov ebx,DWORD [68+edi] mov ecx,DWORD [72+edi] mov edx,DWORD [76+edi] bswap eax bswap ebx bswap ecx bswap edx push eax push ebx push ecx push edx mov eax,DWORD [80+edi] mov ebx,DWORD [84+edi] mov ecx,DWORD [88+edi] mov edx,DWORD [92+edi] bswap eax bswap ebx bswap ecx bswap edx push eax push ebx push ecx push edx mov eax,DWORD [96+edi] mov ebx,DWORD [100+edi] mov ecx,DWORD [104+edi] mov edx,DWORD [108+edi] bswap eax bswap ebx bswap ecx bswap edx push eax push ebx push ecx push edx mov eax,DWORD [112+edi] mov ebx,DWORD [116+edi] mov ecx,DWORD [120+edi] mov edx,DWORD [124+edi] bswap eax bswap ebx bswap ecx bswap edx push eax push ebx push ecx push edx add edi,128 sub esp,72 mov DWORD [204+esp],edi lea edi,[8+esp] mov ecx,16 dd 2784229001 align 16 L$00300_15_x86: mov ecx,DWORD [40+esp] mov edx,DWORD [44+esp] mov esi,ecx shr ecx,9 mov edi,edx shr edx,9 mov ebx,ecx shl esi,14 mov eax,edx shl edi,14 xor ebx,esi shr ecx,5 xor eax,edi shr edx,5 xor eax,ecx shl esi,4 xor ebx,edx shl edi,4 xor ebx,esi shr ecx,4 xor eax,edi shr edx,4 xor eax,ecx shl esi,5 xor ebx,edx shl edi,5 xor eax,esi xor ebx,edi mov ecx,DWORD [48+esp] mov edx,DWORD [52+esp] mov esi,DWORD [56+esp] mov edi,DWORD [60+esp] add eax,DWORD [64+esp] adc ebx,DWORD [68+esp] xor ecx,esi xor edx,edi and ecx,DWORD [40+esp] and edx,DWORD [44+esp] add eax,DWORD [192+esp] adc ebx,DWORD [196+esp] xor ecx,esi xor edx,edi mov esi,DWORD [ebp] mov edi,DWORD [4+ebp] add eax,ecx adc ebx,edx mov ecx,DWORD [32+esp] mov edx,DWORD [36+esp] add eax,esi adc ebx,edi mov DWORD [esp],eax mov DWORD [4+esp],ebx add eax,ecx adc ebx,edx mov ecx,DWORD [8+esp] mov edx,DWORD [12+esp] mov DWORD [32+esp],eax mov DWORD [36+esp],ebx mov esi,ecx shr ecx,2 mov edi,edx shr edx,2 mov ebx,ecx shl esi,4 mov eax,edx shl edi,4 xor ebx,esi shr ecx,5 xor eax,edi shr edx,5 xor ebx,ecx shl esi,21 xor eax,edx shl edi,21 xor eax,esi shr ecx,21 xor ebx,edi shr edx,21 xor eax,ecx shl esi,5 xor ebx,edx shl edi,5 xor eax,esi xor ebx,edi mov ecx,DWORD [8+esp] mov edx,DWORD [12+esp] mov esi,DWORD [16+esp] mov edi,DWORD [20+esp] add eax,DWORD [esp] adc ebx,DWORD [4+esp] or ecx,esi or edx,edi and ecx,DWORD [24+esp] and edx,DWORD [28+esp] and esi,DWORD [8+esp] and edi,DWORD [12+esp] or ecx,esi or edx,edi add eax,ecx adc ebx,edx mov DWORD [esp],eax mov DWORD [4+esp],ebx mov dl,BYTE [ebp] sub esp,8 lea ebp,[8+ebp] cmp dl,148 jne NEAR L$00300_15_x86 align 16 L$00416_79_x86: mov ecx,DWORD [312+esp] mov edx,DWORD [316+esp] mov esi,ecx shr ecx,1 mov edi,edx shr edx,1 mov eax,ecx shl esi,24 mov ebx,edx shl edi,24 xor ebx,esi shr ecx,6 xor eax,edi shr edx,6 xor eax,ecx shl esi,7 xor ebx,edx shl edi,1 xor ebx,esi shr ecx,1 xor eax,edi shr edx,1 xor eax,ecx shl edi,6 xor ebx,edx xor eax,edi mov DWORD [esp],eax mov DWORD [4+esp],ebx mov ecx,DWORD [208+esp] mov edx,DWORD [212+esp] mov esi,ecx shr ecx,6 mov edi,edx shr edx,6 mov eax,ecx shl esi,3 mov ebx,edx shl edi,3 xor eax,esi shr ecx,13 xor ebx,edi shr edx,13 xor eax,ecx shl esi,10 xor ebx,edx shl edi,10 xor ebx,esi shr ecx,10 xor eax,edi shr edx,10 xor ebx,ecx shl edi,13 xor eax,edx xor eax,edi mov ecx,DWORD [320+esp] mov edx,DWORD [324+esp] add eax,DWORD [esp] adc ebx,DWORD [4+esp] mov esi,DWORD [248+esp] mov edi,DWORD [252+esp] add eax,ecx adc ebx,edx add eax,esi adc ebx,edi mov DWORD [192+esp],eax mov DWORD [196+esp],ebx mov ecx,DWORD [40+esp] mov edx,DWORD [44+esp] mov esi,ecx shr ecx,9 mov edi,edx shr edx,9 mov ebx,ecx shl esi,14 mov eax,edx shl edi,14 xor ebx,esi shr ecx,5 xor eax,edi shr edx,5 xor eax,ecx shl esi,4 xor ebx,edx shl edi,4 xor ebx,esi shr ecx,4 xor eax,edi shr edx,4 xor eax,ecx shl esi,5 xor ebx,edx shl edi,5 xor eax,esi xor ebx,edi mov ecx,DWORD [48+esp] mov edx,DWORD [52+esp] mov esi,DWORD [56+esp] mov edi,DWORD [60+esp] add eax,DWORD [64+esp] adc ebx,DWORD [68+esp] xor ecx,esi xor edx,edi and ecx,DWORD [40+esp] and edx,DWORD [44+esp] add eax,DWORD [192+esp] adc ebx,DWORD [196+esp] xor ecx,esi xor edx,edi mov esi,DWORD [ebp] mov edi,DWORD [4+ebp] add eax,ecx adc ebx,edx mov ecx,DWORD [32+esp] mov edx,DWORD [36+esp] add eax,esi adc ebx,edi mov DWORD [esp],eax mov DWORD [4+esp],ebx add eax,ecx adc ebx,edx mov ecx,DWORD [8+esp] mov edx,DWORD [12+esp] mov DWORD [32+esp],eax mov DWORD [36+esp],ebx mov esi,ecx shr ecx,2 mov edi,edx shr edx,2 mov ebx,ecx shl esi,4 mov eax,edx shl edi,4 xor ebx,esi shr ecx,5 xor eax,edi shr edx,5 xor ebx,ecx shl esi,21 xor eax,edx shl edi,21 xor eax,esi shr ecx,21 xor ebx,edi shr edx,21 xor eax,ecx shl esi,5 xor ebx,edx shl edi,5 xor eax,esi xor ebx,edi mov ecx,DWORD [8+esp] mov edx,DWORD [12+esp] mov esi,DWORD [16+esp] mov edi,DWORD [20+esp] add eax,DWORD [esp] adc ebx,DWORD [4+esp] or ecx,esi or edx,edi and ecx,DWORD [24+esp] and edx,DWORD [28+esp] and esi,DWORD [8+esp] and edi,DWORD [12+esp] or ecx,esi or edx,edi add eax,ecx adc ebx,edx mov DWORD [esp],eax mov DWORD [4+esp],ebx mov dl,BYTE [ebp] sub esp,8 lea ebp,[8+ebp] cmp dl,23 jne NEAR L$00416_79_x86 mov esi,DWORD [840+esp] mov edi,DWORD [844+esp] mov eax,DWORD [esi] mov ebx,DWORD [4+esi] mov ecx,DWORD [8+esi] mov edx,DWORD [12+esi] add eax,DWORD [8+esp] adc ebx,DWORD [12+esp] mov DWORD [esi],eax mov DWORD [4+esi],ebx add ecx,DWORD [16+esp] adc edx,DWORD [20+esp] mov DWORD [8+esi],ecx mov DWORD [12+esi],edx mov eax,DWORD [16+esi] mov ebx,DWORD [20+esi] mov ecx,DWORD [24+esi] mov edx,DWORD [28+esi] add eax,DWORD [24+esp] adc ebx,DWORD [28+esp] mov DWORD [16+esi],eax mov DWORD [20+esi],ebx add ecx,DWORD [32+esp] adc edx,DWORD [36+esp] mov DWORD [24+esi],ecx mov DWORD [28+esi],edx mov eax,DWORD [32+esi] mov ebx,DWORD [36+esi] mov ecx,DWORD [40+esi] mov edx,DWORD [44+esi] add eax,DWORD [40+esp] adc ebx,DWORD [44+esp] mov DWORD [32+esi],eax mov DWORD [36+esi],ebx add ecx,DWORD [48+esp] adc edx,DWORD [52+esp] mov DWORD [40+esi],ecx mov DWORD [44+esi],edx mov eax,DWORD [48+esi] mov ebx,DWORD [52+esi] mov ecx,DWORD [56+esi] mov edx,DWORD [60+esi] add eax,DWORD [56+esp] adc ebx,DWORD [60+esp] mov DWORD [48+esi],eax mov DWORD [52+esi],ebx add ecx,DWORD [64+esp] adc edx,DWORD [68+esp] mov DWORD [56+esi],ecx mov DWORD [60+esi],edx add esp,840 sub ebp,640 cmp edi,DWORD [8+esp] jb NEAR L$002loop_x86 mov esp,DWORD [12+esp] pop edi pop esi pop ebx pop ebp ret align 64 L$001K512: dd 3609767458,1116352408 dd 602891725,1899447441 dd 3964484399,3049323471 dd 2173295548,3921009573 dd 4081628472,961987163 dd 3053834265,1508970993 dd 2937671579,2453635748 dd 3664609560,2870763221 dd 2734883394,3624381080 dd 1164996542,310598401 dd 1323610764,607225278 dd 3590304994,1426881987 dd 4068182383,1925078388 dd 991336113,2162078206 dd 633803317,2614888103 dd 3479774868,3248222580 dd 2666613458,3835390401 dd 944711139,4022224774 dd 2341262773,264347078 dd 2007800933,604807628 dd 1495990901,770255983 dd 1856431235,1249150122 dd 3175218132,1555081692 dd 2198950837,1996064986 dd 3999719339,2554220882 dd 766784016,2821834349 dd 2566594879,2952996808 dd 3203337956,3210313671 dd 1034457026,3336571891 dd 2466948901,3584528711 dd 3758326383,113926993 dd 168717936,338241895 dd 1188179964,666307205 dd 1546045734,773529912 dd 1522805485,1294757372 dd 2643833823,1396182291 dd 2343527390,1695183700 dd 1014477480,1986661051 dd 1206759142,2177026350 dd 344077627,2456956037 dd 1290863460,2730485921 dd 3158454273,2820302411 dd 3505952657,3259730800 dd 106217008,3345764771 dd 3606008344,3516065817 dd 1432725776,3600352804 dd 1467031594,4094571909 dd 851169720,275423344 dd 3100823752,430227734 dd 1363258195,506948616 dd 3750685593,659060556 dd 3785050280,883997877 dd 3318307427,958139571 dd 3812723403,1322822218 dd 2003034995,1537002063 dd 3602036899,1747873779 dd 1575990012,1955562222 dd 1125592928,2024104815 dd 2716904306,2227730452 dd 442776044,2361852424 dd 593698344,2428436474 dd 3733110249,2756734187 dd 2999351573,3204031479 dd 3815920427,3329325298 dd 3928383900,3391569614 dd 566280711,3515267271 dd 3454069534,3940187606 dd 4000239992,4118630271 dd 1914138554,116418474 dd 2731055270,174292421 dd 3203993006,289380356 dd 320620315,460393269 dd 587496836,685471733 dd 1086792851,852142971 dd 365543100,1017036298 dd 2618297676,1126000580 dd 3409855158,1288033470 dd 4234509866,1501505948 dd 987167468,1607167915 dd 1246189591,1816402316 dd 67438087,66051 dd 202182159,134810123 db 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97 db 110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32 db 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 db 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 db 62,0