Changeset 95221 in vbox for trunk/src/libs/openssl-3.0.3/crypto/genasm-nasm/sha512-x86_64.S
- Timestamp:
- Jun 8, 2022 8:35:57 AM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/libs/openssl-3.0.3/crypto/genasm-nasm/sha512-x86_64.S
r94083 r95221 21 21 22 22 23 lea r11,[OPENSSL_ia32cap_P]24 mov r9d,DWORD[r11]25 mov r10d,DWORD[4+r11]26 mov r11d,DWORD[8+r11]27 test r10d,204828 jnz NEAR $L$xop_shortcut29 and r11d,29630 cmp r11d,29631 je NEAR $L$avx2_shortcut32 and r9d,107374182433 and r10d,26843596834 or r10d,r9d35 cmp r10d,134217779236 je NEAR $L$avx_shortcut37 23 mov rax,rsp 38 24 … … 1834 1820 DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 1835 1821 DB 111,114,103,62,0 1836 1837 ALIGN 641838 sha512_block_data_order_xop:1839 mov QWORD[8+rsp],rdi ;WIN64 prologue1840 mov QWORD[16+rsp],rsi1841 mov rax,rsp1842 $L$SEH_begin_sha512_block_data_order_xop:1843 mov rdi,rcx1844 mov rsi,rdx1845 mov rdx,r81846 1847 1848 1849 $L$xop_shortcut:1850 mov rax,rsp1851 1852 push rbx1853 1854 push rbp1855 1856 push r121857 1858 push r131859 1860 push r141861 1862 push r151863 1864 shl rdx,41865 sub rsp,2561866 lea rdx,[rdx*8+rsi]1867 and rsp,-641868 mov QWORD[((128+0))+rsp],rdi1869 mov QWORD[((128+8))+rsp],rsi1870 mov QWORD[((128+16))+rsp],rdx1871 mov QWORD[152+rsp],rax1872 1873 movaps XMMWORD[(128+32)+rsp],xmm61874 movaps XMMWORD[(128+48)+rsp],xmm71875 movaps XMMWORD[(128+64)+rsp],xmm81876 movaps XMMWORD[(128+80)+rsp],xmm91877 movaps XMMWORD[(128+96)+rsp],xmm101878 movaps XMMWORD[(128+112)+rsp],xmm111879 $L$prologue_xop:1880 1881 vzeroupper1882 mov rax,QWORD[rdi]1883 mov rbx,QWORD[8+rdi]1884 mov rcx,QWORD[16+rdi]1885 mov rdx,QWORD[24+rdi]1886 mov r8,QWORD[32+rdi]1887 mov r9,QWORD[40+rdi]1888 mov r10,QWORD[48+rdi]1889 mov r11,QWORD[56+rdi]1890 jmp NEAR $L$loop_xop1891 ALIGN 161892 $L$loop_xop:1893 vmovdqa xmm11,XMMWORD[((K512+1280))]1894 vmovdqu xmm0,XMMWORD[rsi]1895 lea rbp,[((K512+128))]1896 vmovdqu xmm1,XMMWORD[16+rsi]1897 vmovdqu xmm2,XMMWORD[32+rsi]1898 vpshufb xmm0,xmm0,xmm111899 vmovdqu xmm3,XMMWORD[48+rsi]1900 vpshufb xmm1,xmm1,xmm111901 vmovdqu xmm4,XMMWORD[64+rsi]1902 vpshufb xmm2,xmm2,xmm111903 vmovdqu xmm5,XMMWORD[80+rsi]1904 vpshufb xmm3,xmm3,xmm111905 vmovdqu xmm6,XMMWORD[96+rsi]1906 vpshufb xmm4,xmm4,xmm111907 vmovdqu xmm7,XMMWORD[112+rsi]1908 vpshufb xmm5,xmm5,xmm111909 vpaddq xmm8,xmm0,XMMWORD[((-128))+rbp]1910 vpshufb xmm6,xmm6,xmm111911 vpaddq xmm9,xmm1,XMMWORD[((-96))+rbp]1912 vpshufb xmm7,xmm7,xmm111913 vpaddq xmm10,xmm2,XMMWORD[((-64))+rbp]1914 vpaddq xmm11,xmm3,XMMWORD[((-32))+rbp]1915 vmovdqa XMMWORD[rsp],xmm81916 vpaddq xmm8,xmm4,XMMWORD[rbp]1917 vmovdqa XMMWORD[16+rsp],xmm91918 vpaddq xmm9,xmm5,XMMWORD[32+rbp]1919 vmovdqa XMMWORD[32+rsp],xmm101920 vpaddq xmm10,xmm6,XMMWORD[64+rbp]1921 vmovdqa XMMWORD[48+rsp],xmm111922 vpaddq xmm11,xmm7,XMMWORD[96+rbp]1923 vmovdqa XMMWORD[64+rsp],xmm81924 mov r14,rax1925 vmovdqa XMMWORD[80+rsp],xmm91926 mov rdi,rbx1927 vmovdqa XMMWORD[96+rsp],xmm101928 xor rdi,rcx1929 vmovdqa XMMWORD[112+rsp],xmm111930 mov r13,r81931 jmp NEAR $L$xop_00_471932 1933 ALIGN 161934 $L$xop_00_47:1935 add rbp,2561936 vpalignr xmm8,xmm1,xmm0,81937 ror r13,231938 mov rax,r141939 vpalignr xmm11,xmm5,xmm4,81940 mov r12,r91941 ror r14,51942 DB 143,72,120,195,200,561943 xor r13,r81944 xor r12,r101945 vpsrlq xmm8,xmm8,71946 ror r13,41947 xor r14,rax1948 vpaddq xmm0,xmm0,xmm111949 and r12,r81950 xor r13,r81951 add r11,QWORD[rsp]1952 mov r15,rax1953 DB 143,72,120,195,209,71954 xor r12,r101955 ror r14,61956 vpxor xmm8,xmm8,xmm91957 xor r15,rbx1958 add r11,r121959 ror r13,141960 and rdi,r151961 DB 143,104,120,195,223,31962 xor r14,rax1963 add r11,r131964 vpxor xmm8,xmm8,xmm101965 xor rdi,rbx1966 ror r14,281967 vpsrlq xmm10,xmm7,61968 add rdx,r111969 add r11,rdi1970 vpaddq xmm0,xmm0,xmm81971 mov r13,rdx1972 add r14,r111973 DB 143,72,120,195,203,421974 ror r13,231975 mov r11,r141976 vpxor xmm11,xmm11,xmm101977 mov r12,r81978 ror r14,51979 xor r13,rdx1980 xor r12,r91981 vpxor xmm11,xmm11,xmm91982 ror r13,41983 xor r14,r111984 and r12,rdx1985 xor r13,rdx1986 vpaddq xmm0,xmm0,xmm111987 add r10,QWORD[8+rsp]1988 mov rdi,r111989 xor r12,r91990 ror r14,61991 vpaddq xmm10,xmm0,XMMWORD[((-128))+rbp]1992 xor rdi,rax1993 add r10,r121994 ror r13,141995 and r15,rdi1996 xor r14,r111997 add r10,r131998 xor r15,rax1999 ror r14,282000 add rcx,r102001 add r10,r152002 mov r13,rcx2003 add r14,r102004 vmovdqa XMMWORD[rsp],xmm102005 vpalignr xmm8,xmm2,xmm1,82006 ror r13,232007 mov r10,r142008 vpalignr xmm11,xmm6,xmm5,82009 mov r12,rdx2010 ror r14,52011 DB 143,72,120,195,200,562012 xor r13,rcx2013 xor r12,r82014 vpsrlq xmm8,xmm8,72015 ror r13,42016 xor r14,r102017 vpaddq xmm1,xmm1,xmm112018 and r12,rcx2019 xor r13,rcx2020 add r9,QWORD[16+rsp]2021 mov r15,r102022 DB 143,72,120,195,209,72023 xor r12,r82024 ror r14,62025 vpxor xmm8,xmm8,xmm92026 xor r15,r112027 add r9,r122028 ror r13,142029 and rdi,r152030 DB 143,104,120,195,216,32031 xor r14,r102032 add r9,r132033 vpxor xmm8,xmm8,xmm102034 xor rdi,r112035 ror r14,282036 vpsrlq xmm10,xmm0,62037 add rbx,r92038 add r9,rdi2039 vpaddq xmm1,xmm1,xmm82040 mov r13,rbx2041 add r14,r92042 DB 143,72,120,195,203,422043 ror r13,232044 mov r9,r142045 vpxor xmm11,xmm11,xmm102046 mov r12,rcx2047 ror r14,52048 xor r13,rbx2049 xor r12,rdx2050 vpxor xmm11,xmm11,xmm92051 ror r13,42052 xor r14,r92053 and r12,rbx2054 xor r13,rbx2055 vpaddq xmm1,xmm1,xmm112056 add r8,QWORD[24+rsp]2057 mov rdi,r92058 xor r12,rdx2059 ror r14,62060 vpaddq xmm10,xmm1,XMMWORD[((-96))+rbp]2061 xor rdi,r102062 add r8,r122063 ror r13,142064 and r15,rdi2065 xor r14,r92066 add r8,r132067 xor r15,r102068 ror r14,282069 add rax,r82070 add r8,r152071 mov r13,rax2072 add r14,r82073 vmovdqa XMMWORD[16+rsp],xmm102074 vpalignr xmm8,xmm3,xmm2,82075 ror r13,232076 mov r8,r142077 vpalignr xmm11,xmm7,xmm6,82078 mov r12,rbx2079 ror r14,52080 DB 143,72,120,195,200,562081 xor r13,rax2082 xor r12,rcx2083 vpsrlq xmm8,xmm8,72084 ror r13,42085 xor r14,r82086 vpaddq xmm2,xmm2,xmm112087 and r12,rax2088 xor r13,rax2089 add rdx,QWORD[32+rsp]2090 mov r15,r82091 DB 143,72,120,195,209,72092 xor r12,rcx2093 ror r14,62094 vpxor xmm8,xmm8,xmm92095 xor r15,r92096 add rdx,r122097 ror r13,142098 and rdi,r152099 DB 143,104,120,195,217,32100 xor r14,r82101 add rdx,r132102 vpxor xmm8,xmm8,xmm102103 xor rdi,r92104 ror r14,282105 vpsrlq xmm10,xmm1,62106 add r11,rdx2107 add rdx,rdi2108 vpaddq xmm2,xmm2,xmm82109 mov r13,r112110 add r14,rdx2111 DB 143,72,120,195,203,422112 ror r13,232113 mov rdx,r142114 vpxor xmm11,xmm11,xmm102115 mov r12,rax2116 ror r14,52117 xor r13,r112118 xor r12,rbx2119 vpxor xmm11,xmm11,xmm92120 ror r13,42121 xor r14,rdx2122 and r12,r112123 xor r13,r112124 vpaddq xmm2,xmm2,xmm112125 add rcx,QWORD[40+rsp]2126 mov rdi,rdx2127 xor r12,rbx2128 ror r14,62129 vpaddq xmm10,xmm2,XMMWORD[((-64))+rbp]2130 xor rdi,r82131 add rcx,r122132 ror r13,142133 and r15,rdi2134 xor r14,rdx2135 add rcx,r132136 xor r15,r82137 ror r14,282138 add r10,rcx2139 add rcx,r152140 mov r13,r102141 add r14,rcx2142 vmovdqa XMMWORD[32+rsp],xmm102143 vpalignr xmm8,xmm4,xmm3,82144 ror r13,232145 mov rcx,r142146 vpalignr xmm11,xmm0,xmm7,82147 mov r12,r112148 ror r14,52149 DB 143,72,120,195,200,562150 xor r13,r102151 xor r12,rax2152 vpsrlq xmm8,xmm8,72153 ror r13,42154 xor r14,rcx2155 vpaddq xmm3,xmm3,xmm112156 and r12,r102157 xor r13,r102158 add rbx,QWORD[48+rsp]2159 mov r15,rcx2160 DB 143,72,120,195,209,72161 xor r12,rax2162 ror r14,62163 vpxor xmm8,xmm8,xmm92164 xor r15,rdx2165 add rbx,r122166 ror r13,142167 and rdi,r152168 DB 143,104,120,195,218,32169 xor r14,rcx2170 add rbx,r132171 vpxor xmm8,xmm8,xmm102172 xor rdi,rdx2173 ror r14,282174 vpsrlq xmm10,xmm2,62175 add r9,rbx2176 add rbx,rdi2177 vpaddq xmm3,xmm3,xmm82178 mov r13,r92179 add r14,rbx2180 DB 143,72,120,195,203,422181 ror r13,232182 mov rbx,r142183 vpxor xmm11,xmm11,xmm102184 mov r12,r102185 ror r14,52186 xor r13,r92187 xor r12,r112188 vpxor xmm11,xmm11,xmm92189 ror r13,42190 xor r14,rbx2191 and r12,r92192 xor r13,r92193 vpaddq xmm3,xmm3,xmm112194 add rax,QWORD[56+rsp]2195 mov rdi,rbx2196 xor r12,r112197 ror r14,62198 vpaddq xmm10,xmm3,XMMWORD[((-32))+rbp]2199 xor rdi,rcx2200 add rax,r122201 ror r13,142202 and r15,rdi2203 xor r14,rbx2204 add rax,r132205 xor r15,rcx2206 ror r14,282207 add r8,rax2208 add rax,r152209 mov r13,r82210 add r14,rax2211 vmovdqa XMMWORD[48+rsp],xmm102212 vpalignr xmm8,xmm5,xmm4,82213 ror r13,232214 mov rax,r142215 vpalignr xmm11,xmm1,xmm0,82216 mov r12,r92217 ror r14,52218 DB 143,72,120,195,200,562219 xor r13,r82220 xor r12,r102221 vpsrlq xmm8,xmm8,72222 ror r13,42223 xor r14,rax2224 vpaddq xmm4,xmm4,xmm112225 and r12,r82226 xor r13,r82227 add r11,QWORD[64+rsp]2228 mov r15,rax2229 DB 143,72,120,195,209,72230 xor r12,r102231 ror r14,62232 vpxor xmm8,xmm8,xmm92233 xor r15,rbx2234 add r11,r122235 ror r13,142236 and rdi,r152237 DB 143,104,120,195,219,32238 xor r14,rax2239 add r11,r132240 vpxor xmm8,xmm8,xmm102241 xor rdi,rbx2242 ror r14,282243 vpsrlq xmm10,xmm3,62244 add rdx,r112245 add r11,rdi2246 vpaddq xmm4,xmm4,xmm82247 mov r13,rdx2248 add r14,r112249 DB 143,72,120,195,203,422250 ror r13,232251 mov r11,r142252 vpxor xmm11,xmm11,xmm102253 mov r12,r82254 ror r14,52255 xor r13,rdx2256 xor r12,r92257 vpxor xmm11,xmm11,xmm92258 ror r13,42259 xor r14,r112260 and r12,rdx2261 xor r13,rdx2262 vpaddq xmm4,xmm4,xmm112263 add r10,QWORD[72+rsp]2264 mov rdi,r112265 xor r12,r92266 ror r14,62267 vpaddq xmm10,xmm4,XMMWORD[rbp]2268 xor rdi,rax2269 add r10,r122270 ror r13,142271 and r15,rdi2272 xor r14,r112273 add r10,r132274 xor r15,rax2275 ror r14,282276 add rcx,r102277 add r10,r152278 mov r13,rcx2279 add r14,r102280 vmovdqa XMMWORD[64+rsp],xmm102281 vpalignr xmm8,xmm6,xmm5,82282 ror r13,232283 mov r10,r142284 vpalignr xmm11,xmm2,xmm1,82285 mov r12,rdx2286 ror r14,52287 DB 143,72,120,195,200,562288 xor r13,rcx2289 xor r12,r82290 vpsrlq xmm8,xmm8,72291 ror r13,42292 xor r14,r102293 vpaddq xmm5,xmm5,xmm112294 and r12,rcx2295 xor r13,rcx2296 add r9,QWORD[80+rsp]2297 mov r15,r102298 DB 143,72,120,195,209,72299 xor r12,r82300 ror r14,62301 vpxor xmm8,xmm8,xmm92302 xor r15,r112303 add r9,r122304 ror r13,142305 and rdi,r152306 DB 143,104,120,195,220,32307 xor r14,r102308 add r9,r132309 vpxor xmm8,xmm8,xmm102310 xor rdi,r112311 ror r14,282312 vpsrlq xmm10,xmm4,62313 add rbx,r92314 add r9,rdi2315 vpaddq xmm5,xmm5,xmm82316 mov r13,rbx2317 add r14,r92318 DB 143,72,120,195,203,422319 ror r13,232320 mov r9,r142321 vpxor xmm11,xmm11,xmm102322 mov r12,rcx2323 ror r14,52324 xor r13,rbx2325 xor r12,rdx2326 vpxor xmm11,xmm11,xmm92327 ror r13,42328 xor r14,r92329 and r12,rbx2330 xor r13,rbx2331 vpaddq xmm5,xmm5,xmm112332 add r8,QWORD[88+rsp]2333 mov rdi,r92334 xor r12,rdx2335 ror r14,62336 vpaddq xmm10,xmm5,XMMWORD[32+rbp]2337 xor rdi,r102338 add r8,r122339 ror r13,142340 and r15,rdi2341 xor r14,r92342 add r8,r132343 xor r15,r102344 ror r14,282345 add rax,r82346 add r8,r152347 mov r13,rax2348 add r14,r82349 vmovdqa XMMWORD[80+rsp],xmm102350 vpalignr xmm8,xmm7,xmm6,82351 ror r13,232352 mov r8,r142353 vpalignr xmm11,xmm3,xmm2,82354 mov r12,rbx2355 ror r14,52356 DB 143,72,120,195,200,562357 xor r13,rax2358 xor r12,rcx2359 vpsrlq xmm8,xmm8,72360 ror r13,42361 xor r14,r82362 vpaddq xmm6,xmm6,xmm112363 and r12,rax2364 xor r13,rax2365 add rdx,QWORD[96+rsp]2366 mov r15,r82367 DB 143,72,120,195,209,72368 xor r12,rcx2369 ror r14,62370 vpxor xmm8,xmm8,xmm92371 xor r15,r92372 add rdx,r122373 ror r13,142374 and rdi,r152375 DB 143,104,120,195,221,32376 xor r14,r82377 add rdx,r132378 vpxor xmm8,xmm8,xmm102379 xor rdi,r92380 ror r14,282381 vpsrlq xmm10,xmm5,62382 add r11,rdx2383 add rdx,rdi2384 vpaddq xmm6,xmm6,xmm82385 mov r13,r112386 add r14,rdx2387 DB 143,72,120,195,203,422388 ror r13,232389 mov rdx,r142390 vpxor xmm11,xmm11,xmm102391 mov r12,rax2392 ror r14,52393 xor r13,r112394 xor r12,rbx2395 vpxor xmm11,xmm11,xmm92396 ror r13,42397 xor r14,rdx2398 and r12,r112399 xor r13,r112400 vpaddq xmm6,xmm6,xmm112401 add rcx,QWORD[104+rsp]2402 mov rdi,rdx2403 xor r12,rbx2404 ror r14,62405 vpaddq xmm10,xmm6,XMMWORD[64+rbp]2406 xor rdi,r82407 add rcx,r122408 ror r13,142409 and r15,rdi2410 xor r14,rdx2411 add rcx,r132412 xor r15,r82413 ror r14,282414 add r10,rcx2415 add rcx,r152416 mov r13,r102417 add r14,rcx2418 vmovdqa XMMWORD[96+rsp],xmm102419 vpalignr xmm8,xmm0,xmm7,82420 ror r13,232421 mov rcx,r142422 vpalignr xmm11,xmm4,xmm3,82423 mov r12,r112424 ror r14,52425 DB 143,72,120,195,200,562426 xor r13,r102427 xor r12,rax2428 vpsrlq xmm8,xmm8,72429 ror r13,42430 xor r14,rcx2431 vpaddq xmm7,xmm7,xmm112432 and r12,r102433 xor r13,r102434 add rbx,QWORD[112+rsp]2435 mov r15,rcx2436 DB 143,72,120,195,209,72437 xor r12,rax2438 ror r14,62439 vpxor xmm8,xmm8,xmm92440 xor r15,rdx2441 add rbx,r122442 ror r13,142443 and rdi,r152444 DB 143,104,120,195,222,32445 xor r14,rcx2446 add rbx,r132447 vpxor xmm8,xmm8,xmm102448 xor rdi,rdx2449 ror r14,282450 vpsrlq xmm10,xmm6,62451 add r9,rbx2452 add rbx,rdi2453 vpaddq xmm7,xmm7,xmm82454 mov r13,r92455 add r14,rbx2456 DB 143,72,120,195,203,422457 ror r13,232458 mov rbx,r142459 vpxor xmm11,xmm11,xmm102460 mov r12,r102461 ror r14,52462 xor r13,r92463 xor r12,r112464 vpxor xmm11,xmm11,xmm92465 ror r13,42466 xor r14,rbx2467 and r12,r92468 xor r13,r92469 vpaddq xmm7,xmm7,xmm112470 add rax,QWORD[120+rsp]2471 mov rdi,rbx2472 xor r12,r112473 ror r14,62474 vpaddq xmm10,xmm7,XMMWORD[96+rbp]2475 xor rdi,rcx2476 add rax,r122477 ror r13,142478 and r15,rdi2479 xor r14,rbx2480 add rax,r132481 xor r15,rcx2482 ror r14,282483 add r8,rax2484 add rax,r152485 mov r13,r82486 add r14,rax2487 vmovdqa XMMWORD[112+rsp],xmm102488 cmp BYTE[135+rbp],02489 jne NEAR $L$xop_00_472490 ror r13,232491 mov rax,r142492 mov r12,r92493 ror r14,52494 xor r13,r82495 xor r12,r102496 ror r13,42497 xor r14,rax2498 and r12,r82499 xor r13,r82500 add r11,QWORD[rsp]2501 mov r15,rax2502 xor r12,r102503 ror r14,62504 xor r15,rbx2505 add r11,r122506 ror r13,142507 and rdi,r152508 xor r14,rax2509 add r11,r132510 xor rdi,rbx2511 ror r14,282512 add rdx,r112513 add r11,rdi2514 mov r13,rdx2515 add r14,r112516 ror r13,232517 mov r11,r142518 mov r12,r82519 ror r14,52520 xor r13,rdx2521 xor r12,r92522 ror r13,42523 xor r14,r112524 and r12,rdx2525 xor r13,rdx2526 add r10,QWORD[8+rsp]2527 mov rdi,r112528 xor r12,r92529 ror r14,62530 xor rdi,rax2531 add r10,r122532 ror r13,142533 and r15,rdi2534 xor r14,r112535 add r10,r132536 xor r15,rax2537 ror r14,282538 add rcx,r102539 add r10,r152540 mov r13,rcx2541 add r14,r102542 ror r13,232543 mov r10,r142544 mov r12,rdx2545 ror r14,52546 xor r13,rcx2547 xor r12,r82548 ror r13,42549 xor r14,r102550 and r12,rcx2551 xor r13,rcx2552 add r9,QWORD[16+rsp]2553 mov r15,r102554 xor r12,r82555 ror r14,62556 xor r15,r112557 add r9,r122558 ror r13,142559 and rdi,r152560 xor r14,r102561 add r9,r132562 xor rdi,r112563 ror r14,282564 add rbx,r92565 add r9,rdi2566 mov r13,rbx2567 add r14,r92568 ror r13,232569 mov r9,r142570 mov r12,rcx2571 ror r14,52572 xor r13,rbx2573 xor r12,rdx2574 ror r13,42575 xor r14,r92576 and r12,rbx2577 xor r13,rbx2578 add r8,QWORD[24+rsp]2579 mov rdi,r92580 xor r12,rdx2581 ror r14,62582 xor rdi,r102583 add r8,r122584 ror r13,142585 and r15,rdi2586 xor r14,r92587 add r8,r132588 xor r15,r102589 ror r14,282590 add rax,r82591 add r8,r152592 mov r13,rax2593 add r14,r82594 ror r13,232595 mov r8,r142596 mov r12,rbx2597 ror r14,52598 xor r13,rax2599 xor r12,rcx2600 ror r13,42601 xor r14,r82602 and r12,rax2603 xor r13,rax2604 add rdx,QWORD[32+rsp]2605 mov r15,r82606 xor r12,rcx2607 ror r14,62608 xor r15,r92609 add rdx,r122610 ror r13,142611 and rdi,r152612 xor r14,r82613 add rdx,r132614 xor rdi,r92615 ror r14,282616 add r11,rdx2617 add rdx,rdi2618 mov r13,r112619 add r14,rdx2620 ror r13,232621 mov rdx,r142622 mov r12,rax2623 ror r14,52624 xor r13,r112625 xor r12,rbx2626 ror r13,42627 xor r14,rdx2628 and r12,r112629 xor r13,r112630 add rcx,QWORD[40+rsp]2631 mov rdi,rdx2632 xor r12,rbx2633 ror r14,62634 xor rdi,r82635 add rcx,r122636 ror r13,142637 and r15,rdi2638 xor r14,rdx2639 add rcx,r132640 xor r15,r82641 ror r14,282642 add r10,rcx2643 add rcx,r152644 mov r13,r102645 add r14,rcx2646 ror r13,232647 mov rcx,r142648 mov r12,r112649 ror r14,52650 xor r13,r102651 xor r12,rax2652 ror r13,42653 xor r14,rcx2654 and r12,r102655 xor r13,r102656 add rbx,QWORD[48+rsp]2657 mov r15,rcx2658 xor r12,rax2659 ror r14,62660 xor r15,rdx2661 add rbx,r122662 ror r13,142663 and rdi,r152664 xor r14,rcx2665 add rbx,r132666 xor rdi,rdx2667 ror r14,282668 add r9,rbx2669 add rbx,rdi2670 mov r13,r92671 add r14,rbx2672 ror r13,232673 mov rbx,r142674 mov r12,r102675 ror r14,52676 xor r13,r92677 xor r12,r112678 ror r13,42679 xor r14,rbx2680 and r12,r92681 xor r13,r92682 add rax,QWORD[56+rsp]2683 mov rdi,rbx2684 xor r12,r112685 ror r14,62686 xor rdi,rcx2687 add rax,r122688 ror r13,142689 and r15,rdi2690 xor r14,rbx2691 add rax,r132692 xor r15,rcx2693 ror r14,282694 add r8,rax2695 add rax,r152696 mov r13,r82697 add r14,rax2698 ror r13,232699 mov rax,r142700 mov r12,r92701 ror r14,52702 xor r13,r82703 xor r12,r102704 ror r13,42705 xor r14,rax2706 and r12,r82707 xor r13,r82708 add r11,QWORD[64+rsp]2709 mov r15,rax2710 xor r12,r102711 ror r14,62712 xor r15,rbx2713 add r11,r122714 ror r13,142715 and rdi,r152716 xor r14,rax2717 add r11,r132718 xor rdi,rbx2719 ror r14,282720 add rdx,r112721 add r11,rdi2722 mov r13,rdx2723 add r14,r112724 ror r13,232725 mov r11,r142726 mov r12,r82727 ror r14,52728 xor r13,rdx2729 xor r12,r92730 ror r13,42731 xor r14,r112732 and r12,rdx2733 xor r13,rdx2734 add r10,QWORD[72+rsp]2735 mov rdi,r112736 xor r12,r92737 ror r14,62738 xor rdi,rax2739 add r10,r122740 ror r13,142741 and r15,rdi2742 xor r14,r112743 add r10,r132744 xor r15,rax2745 ror r14,282746 add rcx,r102747 add r10,r152748 mov r13,rcx2749 add r14,r102750 ror r13,232751 mov r10,r142752 mov r12,rdx2753 ror r14,52754 xor r13,rcx2755 xor r12,r82756 ror r13,42757 xor r14,r102758 and r12,rcx2759 xor r13,rcx2760 add r9,QWORD[80+rsp]2761 mov r15,r102762 xor r12,r82763 ror r14,62764 xor r15,r112765 add r9,r122766 ror r13,142767 and rdi,r152768 xor r14,r102769 add r9,r132770 xor rdi,r112771 ror r14,282772 add rbx,r92773 add r9,rdi2774 mov r13,rbx2775 add r14,r92776 ror r13,232777 mov r9,r142778 mov r12,rcx2779 ror r14,52780 xor r13,rbx2781 xor r12,rdx2782 ror r13,42783 xor r14,r92784 and r12,rbx2785 xor r13,rbx2786 add r8,QWORD[88+rsp]2787 mov rdi,r92788 xor r12,rdx2789 ror r14,62790 xor rdi,r102791 add r8,r122792 ror r13,142793 and r15,rdi2794 xor r14,r92795 add r8,r132796 xor r15,r102797 ror r14,282798 add rax,r82799 add r8,r152800 mov r13,rax2801 add r14,r82802 ror r13,232803 mov r8,r142804 mov r12,rbx2805 ror r14,52806 xor r13,rax2807 xor r12,rcx2808 ror r13,42809 xor r14,r82810 and r12,rax2811 xor r13,rax2812 add rdx,QWORD[96+rsp]2813 mov r15,r82814 xor r12,rcx2815 ror r14,62816 xor r15,r92817 add rdx,r122818 ror r13,142819 and rdi,r152820 xor r14,r82821 add rdx,r132822 xor rdi,r92823 ror r14,282824 add r11,rdx2825 add rdx,rdi2826 mov r13,r112827 add r14,rdx2828 ror r13,232829 mov rdx,r142830 mov r12,rax2831 ror r14,52832 xor r13,r112833 xor r12,rbx2834 ror r13,42835 xor r14,rdx2836 and r12,r112837 xor r13,r112838 add rcx,QWORD[104+rsp]2839 mov rdi,rdx2840 xor r12,rbx2841 ror r14,62842 xor rdi,r82843 add rcx,r122844 ror r13,142845 and r15,rdi2846 xor r14,rdx2847 add rcx,r132848 xor r15,r82849 ror r14,282850 add r10,rcx2851 add rcx,r152852 mov r13,r102853 add r14,rcx2854 ror r13,232855 mov rcx,r142856 mov r12,r112857 ror r14,52858 xor r13,r102859 xor r12,rax2860 ror r13,42861 xor r14,rcx2862 and r12,r102863 xor r13,r102864 add rbx,QWORD[112+rsp]2865 mov r15,rcx2866 xor r12,rax2867 ror r14,62868 xor r15,rdx2869 add rbx,r122870 ror r13,142871 and rdi,r152872 xor r14,rcx2873 add rbx,r132874 xor rdi,rdx2875 ror r14,282876 add r9,rbx2877 add rbx,rdi2878 mov r13,r92879 add r14,rbx2880 ror r13,232881 mov rbx,r142882 mov r12,r102883 ror r14,52884 xor r13,r92885 xor r12,r112886 ror r13,42887 xor r14,rbx2888 and r12,r92889 xor r13,r92890 add rax,QWORD[120+rsp]2891 mov rdi,rbx2892 xor r12,r112893 ror r14,62894 xor rdi,rcx2895 add rax,r122896 ror r13,142897 and r15,rdi2898 xor r14,rbx2899 add rax,r132900 xor r15,rcx2901 ror r14,282902 add r8,rax2903 add rax,r152904 mov r13,r82905 add r14,rax2906 mov rdi,QWORD[((128+0))+rsp]2907 mov rax,r142908 2909 add rax,QWORD[rdi]2910 lea rsi,[128+rsi]2911 add rbx,QWORD[8+rdi]2912 add rcx,QWORD[16+rdi]2913 add rdx,QWORD[24+rdi]2914 add r8,QWORD[32+rdi]2915 add r9,QWORD[40+rdi]2916 add r10,QWORD[48+rdi]2917 add r11,QWORD[56+rdi]2918 2919 cmp rsi,QWORD[((128+16))+rsp]2920 2921 mov QWORD[rdi],rax2922 mov QWORD[8+rdi],rbx2923 mov QWORD[16+rdi],rcx2924 mov QWORD[24+rdi],rdx2925 mov QWORD[32+rdi],r82926 mov QWORD[40+rdi],r92927 mov QWORD[48+rdi],r102928 mov QWORD[56+rdi],r112929 jb NEAR $L$loop_xop2930 2931 mov rsi,QWORD[152+rsp]2932 2933 vzeroupper2934 movaps xmm6,XMMWORD[((128+32))+rsp]2935 movaps xmm7,XMMWORD[((128+48))+rsp]2936 movaps xmm8,XMMWORD[((128+64))+rsp]2937 movaps xmm9,XMMWORD[((128+80))+rsp]2938 movaps xmm10,XMMWORD[((128+96))+rsp]2939 movaps xmm11,XMMWORD[((128+112))+rsp]2940 mov r15,QWORD[((-48))+rsi]2941 2942 mov r14,QWORD[((-40))+rsi]2943 2944 mov r13,QWORD[((-32))+rsi]2945 2946 mov r12,QWORD[((-24))+rsi]2947 2948 mov rbp,QWORD[((-16))+rsi]2949 2950 mov rbx,QWORD[((-8))+rsi]2951 2952 lea rsp,[rsi]2953 2954 $L$epilogue_xop:2955 mov rdi,QWORD[8+rsp] ;WIN64 epilogue2956 mov rsi,QWORD[16+rsp]2957 DB 0F3h,0C3h ;repret2958 2959 $L$SEH_end_sha512_block_data_order_xop:2960 2961 ALIGN 642962 sha512_block_data_order_avx:2963 mov QWORD[8+rsp],rdi ;WIN64 prologue2964 mov QWORD[16+rsp],rsi2965 mov rax,rsp2966 $L$SEH_begin_sha512_block_data_order_avx:2967 mov rdi,rcx2968 mov rsi,rdx2969 mov rdx,r82970 2971 2972 2973 $L$avx_shortcut:2974 mov rax,rsp2975 2976 push rbx2977 2978 push rbp2979 2980 push r122981 2982 push r132983 2984 push r142985 2986 push r152987 2988 shl rdx,42989 sub rsp,2562990 lea rdx,[rdx*8+rsi]2991 and rsp,-642992 mov QWORD[((128+0))+rsp],rdi2993 mov QWORD[((128+8))+rsp],rsi2994 mov QWORD[((128+16))+rsp],rdx2995 mov QWORD[152+rsp],rax2996 2997 movaps XMMWORD[(128+32)+rsp],xmm62998 movaps XMMWORD[(128+48)+rsp],xmm72999 movaps XMMWORD[(128+64)+rsp],xmm83000 movaps XMMWORD[(128+80)+rsp],xmm93001 movaps XMMWORD[(128+96)+rsp],xmm103002 movaps XMMWORD[(128+112)+rsp],xmm113003 $L$prologue_avx:3004 3005 vzeroupper3006 mov rax,QWORD[rdi]3007 mov rbx,QWORD[8+rdi]3008 mov rcx,QWORD[16+rdi]3009 mov rdx,QWORD[24+rdi]3010 mov r8,QWORD[32+rdi]3011 mov r9,QWORD[40+rdi]3012 mov r10,QWORD[48+rdi]3013 mov r11,QWORD[56+rdi]3014 jmp NEAR $L$loop_avx3015 ALIGN 163016 $L$loop_avx:3017 vmovdqa xmm11,XMMWORD[((K512+1280))]3018 vmovdqu xmm0,XMMWORD[rsi]3019 lea rbp,[((K512+128))]3020 vmovdqu xmm1,XMMWORD[16+rsi]3021 vmovdqu xmm2,XMMWORD[32+rsi]3022 vpshufb xmm0,xmm0,xmm113023 vmovdqu xmm3,XMMWORD[48+rsi]3024 vpshufb xmm1,xmm1,xmm113025 vmovdqu xmm4,XMMWORD[64+rsi]3026 vpshufb xmm2,xmm2,xmm113027 vmovdqu xmm5,XMMWORD[80+rsi]3028 vpshufb xmm3,xmm3,xmm113029 vmovdqu xmm6,XMMWORD[96+rsi]3030 vpshufb xmm4,xmm4,xmm113031 vmovdqu xmm7,XMMWORD[112+rsi]3032 vpshufb xmm5,xmm5,xmm113033 vpaddq xmm8,xmm0,XMMWORD[((-128))+rbp]3034 vpshufb xmm6,xmm6,xmm113035 vpaddq xmm9,xmm1,XMMWORD[((-96))+rbp]3036 vpshufb xmm7,xmm7,xmm113037 vpaddq xmm10,xmm2,XMMWORD[((-64))+rbp]3038 vpaddq xmm11,xmm3,XMMWORD[((-32))+rbp]3039 vmovdqa XMMWORD[rsp],xmm83040 vpaddq xmm8,xmm4,XMMWORD[rbp]3041 vmovdqa XMMWORD[16+rsp],xmm93042 vpaddq xmm9,xmm5,XMMWORD[32+rbp]3043 vmovdqa XMMWORD[32+rsp],xmm103044 vpaddq xmm10,xmm6,XMMWORD[64+rbp]3045 vmovdqa XMMWORD[48+rsp],xmm113046 vpaddq xmm11,xmm7,XMMWORD[96+rbp]3047 vmovdqa XMMWORD[64+rsp],xmm83048 mov r14,rax3049 vmovdqa XMMWORD[80+rsp],xmm93050 mov rdi,rbx3051 vmovdqa XMMWORD[96+rsp],xmm103052 xor rdi,rcx3053 vmovdqa XMMWORD[112+rsp],xmm113054 mov r13,r83055 jmp NEAR $L$avx_00_473056 3057 ALIGN 163058 $L$avx_00_47:3059 add rbp,2563060 vpalignr xmm8,xmm1,xmm0,83061 shrd r13,r13,233062 mov rax,r143063 vpalignr xmm11,xmm5,xmm4,83064 mov r12,r93065 shrd r14,r14,53066 vpsrlq xmm10,xmm8,13067 xor r13,r83068 xor r12,r103069 vpaddq xmm0,xmm0,xmm113070 shrd r13,r13,43071 xor r14,rax3072 vpsrlq xmm11,xmm8,73073 and r12,r83074 xor r13,r83075 vpsllq xmm9,xmm8,563076 add r11,QWORD[rsp]3077 mov r15,rax3078 vpxor xmm8,xmm11,xmm103079 xor r12,r103080 shrd r14,r14,63081 vpsrlq xmm10,xmm10,73082 xor r15,rbx3083 add r11,r123084 vpxor xmm8,xmm8,xmm93085 shrd r13,r13,143086 and rdi,r153087 vpsllq xmm9,xmm9,73088 xor r14,rax3089 add r11,r133090 vpxor xmm8,xmm8,xmm103091 xor rdi,rbx3092 shrd r14,r14,283093 vpsrlq xmm11,xmm7,63094 add rdx,r113095 add r11,rdi3096 vpxor xmm8,xmm8,xmm93097 mov r13,rdx3098 add r14,r113099 vpsllq xmm10,xmm7,33100 shrd r13,r13,233101 mov r11,r143102 vpaddq xmm0,xmm0,xmm83103 mov r12,r83104 shrd r14,r14,53105 vpsrlq xmm9,xmm7,193106 xor r13,rdx3107 xor r12,r93108 vpxor xmm11,xmm11,xmm103109 shrd r13,r13,43110 xor r14,r113111 vpsllq xmm10,xmm10,423112 and r12,rdx3113 xor r13,rdx3114 vpxor xmm11,xmm11,xmm93115 add r10,QWORD[8+rsp]3116 mov rdi,r113117 vpsrlq xmm9,xmm9,423118 xor r12,r93119 shrd r14,r14,63120 vpxor xmm11,xmm11,xmm103121 xor rdi,rax3122 add r10,r123123 vpxor xmm11,xmm11,xmm93124 shrd r13,r13,143125 and r15,rdi3126 vpaddq xmm0,xmm0,xmm113127 xor r14,r113128 add r10,r133129 vpaddq xmm10,xmm0,XMMWORD[((-128))+rbp]3130 xor r15,rax3131 shrd r14,r14,283132 add rcx,r103133 add r10,r153134 mov r13,rcx3135 add r14,r103136 vmovdqa XMMWORD[rsp],xmm103137 vpalignr xmm8,xmm2,xmm1,83138 shrd r13,r13,233139 mov r10,r143140 vpalignr xmm11,xmm6,xmm5,83141 mov r12,rdx3142 shrd r14,r14,53143 vpsrlq xmm10,xmm8,13144 xor r13,rcx3145 xor r12,r83146 vpaddq xmm1,xmm1,xmm113147 shrd r13,r13,43148 xor r14,r103149 vpsrlq xmm11,xmm8,73150 and r12,rcx3151 xor r13,rcx3152 vpsllq xmm9,xmm8,563153 add r9,QWORD[16+rsp]3154 mov r15,r103155 vpxor xmm8,xmm11,xmm103156 xor r12,r83157 shrd r14,r14,63158 vpsrlq xmm10,xmm10,73159 xor r15,r113160 add r9,r123161 vpxor xmm8,xmm8,xmm93162 shrd r13,r13,143163 and rdi,r153164 vpsllq xmm9,xmm9,73165 xor r14,r103166 add r9,r133167 vpxor xmm8,xmm8,xmm103168 xor rdi,r113169 shrd r14,r14,283170 vpsrlq xmm11,xmm0,63171 add rbx,r93172 add r9,rdi3173 vpxor xmm8,xmm8,xmm93174 mov r13,rbx3175 add r14,r93176 vpsllq xmm10,xmm0,33177 shrd r13,r13,233178 mov r9,r143179 vpaddq xmm1,xmm1,xmm83180 mov r12,rcx3181 shrd r14,r14,53182 vpsrlq xmm9,xmm0,193183 xor r13,rbx3184 xor r12,rdx3185 vpxor xmm11,xmm11,xmm103186 shrd r13,r13,43187 xor r14,r93188 vpsllq xmm10,xmm10,423189 and r12,rbx3190 xor r13,rbx3191 vpxor xmm11,xmm11,xmm93192 add r8,QWORD[24+rsp]3193 mov rdi,r93194 vpsrlq xmm9,xmm9,423195 xor r12,rdx3196 shrd r14,r14,63197 vpxor xmm11,xmm11,xmm103198 xor rdi,r103199 add r8,r123200 vpxor xmm11,xmm11,xmm93201 shrd r13,r13,143202 and r15,rdi3203 vpaddq xmm1,xmm1,xmm113204 xor r14,r93205 add r8,r133206 vpaddq xmm10,xmm1,XMMWORD[((-96))+rbp]3207 xor r15,r103208 shrd r14,r14,283209 add rax,r83210 add r8,r153211 mov r13,rax3212 add r14,r83213 vmovdqa XMMWORD[16+rsp],xmm103214 vpalignr xmm8,xmm3,xmm2,83215 shrd r13,r13,233216 mov r8,r143217 vpalignr xmm11,xmm7,xmm6,83218 mov r12,rbx3219 shrd r14,r14,53220 vpsrlq xmm10,xmm8,13221 xor r13,rax3222 xor r12,rcx3223 vpaddq xmm2,xmm2,xmm113224 shrd r13,r13,43225 xor r14,r83226 vpsrlq xmm11,xmm8,73227 and r12,rax3228 xor r13,rax3229 vpsllq xmm9,xmm8,563230 add rdx,QWORD[32+rsp]3231 mov r15,r83232 vpxor xmm8,xmm11,xmm103233 xor r12,rcx3234 shrd r14,r14,63235 vpsrlq xmm10,xmm10,73236 xor r15,r93237 add rdx,r123238 vpxor xmm8,xmm8,xmm93239 shrd r13,r13,143240 and rdi,r153241 vpsllq xmm9,xmm9,73242 xor r14,r83243 add rdx,r133244 vpxor xmm8,xmm8,xmm103245 xor rdi,r93246 shrd r14,r14,283247 vpsrlq xmm11,xmm1,63248 add r11,rdx3249 add rdx,rdi3250 vpxor xmm8,xmm8,xmm93251 mov r13,r113252 add r14,rdx3253 vpsllq xmm10,xmm1,33254 shrd r13,r13,233255 mov rdx,r143256 vpaddq xmm2,xmm2,xmm83257 mov r12,rax3258 shrd r14,r14,53259 vpsrlq xmm9,xmm1,193260 xor r13,r113261 xor r12,rbx3262 vpxor xmm11,xmm11,xmm103263 shrd r13,r13,43264 xor r14,rdx3265 vpsllq xmm10,xmm10,423266 and r12,r113267 xor r13,r113268 vpxor xmm11,xmm11,xmm93269 add rcx,QWORD[40+rsp]3270 mov rdi,rdx3271 vpsrlq xmm9,xmm9,423272 xor r12,rbx3273 shrd r14,r14,63274 vpxor xmm11,xmm11,xmm103275 xor rdi,r83276 add rcx,r123277 vpxor xmm11,xmm11,xmm93278 shrd r13,r13,143279 and r15,rdi3280 vpaddq xmm2,xmm2,xmm113281 xor r14,rdx3282 add rcx,r133283 vpaddq xmm10,xmm2,XMMWORD[((-64))+rbp]3284 xor r15,r83285 shrd r14,r14,283286 add r10,rcx3287 add rcx,r153288 mov r13,r103289 add r14,rcx3290 vmovdqa XMMWORD[32+rsp],xmm103291 vpalignr xmm8,xmm4,xmm3,83292 shrd r13,r13,233293 mov rcx,r143294 vpalignr xmm11,xmm0,xmm7,83295 mov r12,r113296 shrd r14,r14,53297 vpsrlq xmm10,xmm8,13298 xor r13,r103299 xor r12,rax3300 vpaddq xmm3,xmm3,xmm113301 shrd r13,r13,43302 xor r14,rcx3303 vpsrlq xmm11,xmm8,73304 and r12,r103305 xor r13,r103306 vpsllq xmm9,xmm8,563307 add rbx,QWORD[48+rsp]3308 mov r15,rcx3309 vpxor xmm8,xmm11,xmm103310 xor r12,rax3311 shrd r14,r14,63312 vpsrlq xmm10,xmm10,73313 xor r15,rdx3314 add rbx,r123315 vpxor xmm8,xmm8,xmm93316 shrd r13,r13,143317 and rdi,r153318 vpsllq xmm9,xmm9,73319 xor r14,rcx3320 add rbx,r133321 vpxor xmm8,xmm8,xmm103322 xor rdi,rdx3323 shrd r14,r14,283324 vpsrlq xmm11,xmm2,63325 add r9,rbx3326 add rbx,rdi3327 vpxor xmm8,xmm8,xmm93328 mov r13,r93329 add r14,rbx3330 vpsllq xmm10,xmm2,33331 shrd r13,r13,233332 mov rbx,r143333 vpaddq xmm3,xmm3,xmm83334 mov r12,r103335 shrd r14,r14,53336 vpsrlq xmm9,xmm2,193337 xor r13,r93338 xor r12,r113339 vpxor xmm11,xmm11,xmm103340 shrd r13,r13,43341 xor r14,rbx3342 vpsllq xmm10,xmm10,423343 and r12,r93344 xor r13,r93345 vpxor xmm11,xmm11,xmm93346 add rax,QWORD[56+rsp]3347 mov rdi,rbx3348 vpsrlq xmm9,xmm9,423349 xor r12,r113350 shrd r14,r14,63351 vpxor xmm11,xmm11,xmm103352 xor rdi,rcx3353 add rax,r123354 vpxor xmm11,xmm11,xmm93355 shrd r13,r13,143356 and r15,rdi3357 vpaddq xmm3,xmm3,xmm113358 xor r14,rbx3359 add rax,r133360 vpaddq xmm10,xmm3,XMMWORD[((-32))+rbp]3361 xor r15,rcx3362 shrd r14,r14,283363 add r8,rax3364 add rax,r153365 mov r13,r83366 add r14,rax3367 vmovdqa XMMWORD[48+rsp],xmm103368 vpalignr xmm8,xmm5,xmm4,83369 shrd r13,r13,233370 mov rax,r143371 vpalignr xmm11,xmm1,xmm0,83372 mov r12,r93373 shrd r14,r14,53374 vpsrlq xmm10,xmm8,13375 xor r13,r83376 xor r12,r103377 vpaddq xmm4,xmm4,xmm113378 shrd r13,r13,43379 xor r14,rax3380 vpsrlq xmm11,xmm8,73381 and r12,r83382 xor r13,r83383 vpsllq xmm9,xmm8,563384 add r11,QWORD[64+rsp]3385 mov r15,rax3386 vpxor xmm8,xmm11,xmm103387 xor r12,r103388 shrd r14,r14,63389 vpsrlq xmm10,xmm10,73390 xor r15,rbx3391 add r11,r123392 vpxor xmm8,xmm8,xmm93393 shrd r13,r13,143394 and rdi,r153395 vpsllq xmm9,xmm9,73396 xor r14,rax3397 add r11,r133398 vpxor xmm8,xmm8,xmm103399 xor rdi,rbx3400 shrd r14,r14,283401 vpsrlq xmm11,xmm3,63402 add rdx,r113403 add r11,rdi3404 vpxor xmm8,xmm8,xmm93405 mov r13,rdx3406 add r14,r113407 vpsllq xmm10,xmm3,33408 shrd r13,r13,233409 mov r11,r143410 vpaddq xmm4,xmm4,xmm83411 mov r12,r83412 shrd r14,r14,53413 vpsrlq xmm9,xmm3,193414 xor r13,rdx3415 xor r12,r93416 vpxor xmm11,xmm11,xmm103417 shrd r13,r13,43418 xor r14,r113419 vpsllq xmm10,xmm10,423420 and r12,rdx3421 xor r13,rdx3422 vpxor xmm11,xmm11,xmm93423 add r10,QWORD[72+rsp]3424 mov rdi,r113425 vpsrlq xmm9,xmm9,423426 xor r12,r93427 shrd r14,r14,63428 vpxor xmm11,xmm11,xmm103429 xor rdi,rax3430 add r10,r123431 vpxor xmm11,xmm11,xmm93432 shrd r13,r13,143433 and r15,rdi3434 vpaddq xmm4,xmm4,xmm113435 xor r14,r113436 add r10,r133437 vpaddq xmm10,xmm4,XMMWORD[rbp]3438 xor r15,rax3439 shrd r14,r14,283440 add rcx,r103441 add r10,r153442 mov r13,rcx3443 add r14,r103444 vmovdqa XMMWORD[64+rsp],xmm103445 vpalignr xmm8,xmm6,xmm5,83446 shrd r13,r13,233447 mov r10,r143448 vpalignr xmm11,xmm2,xmm1,83449 mov r12,rdx3450 shrd r14,r14,53451 vpsrlq xmm10,xmm8,13452 xor r13,rcx3453 xor r12,r83454 vpaddq xmm5,xmm5,xmm113455 shrd r13,r13,43456 xor r14,r103457 vpsrlq xmm11,xmm8,73458 and r12,rcx3459 xor r13,rcx3460 vpsllq xmm9,xmm8,563461 add r9,QWORD[80+rsp]3462 mov r15,r103463 vpxor xmm8,xmm11,xmm103464 xor r12,r83465 shrd r14,r14,63466 vpsrlq xmm10,xmm10,73467 xor r15,r113468 add r9,r123469 vpxor xmm8,xmm8,xmm93470 shrd r13,r13,143471 and rdi,r153472 vpsllq xmm9,xmm9,73473 xor r14,r103474 add r9,r133475 vpxor xmm8,xmm8,xmm103476 xor rdi,r113477 shrd r14,r14,283478 vpsrlq xmm11,xmm4,63479 add rbx,r93480 add r9,rdi3481 vpxor xmm8,xmm8,xmm93482 mov r13,rbx3483 add r14,r93484 vpsllq xmm10,xmm4,33485 shrd r13,r13,233486 mov r9,r143487 vpaddq xmm5,xmm5,xmm83488 mov r12,rcx3489 shrd r14,r14,53490 vpsrlq xmm9,xmm4,193491 xor r13,rbx3492 xor r12,rdx3493 vpxor xmm11,xmm11,xmm103494 shrd r13,r13,43495 xor r14,r93496 vpsllq xmm10,xmm10,423497 and r12,rbx3498 xor r13,rbx3499 vpxor xmm11,xmm11,xmm93500 add r8,QWORD[88+rsp]3501 mov rdi,r93502 vpsrlq xmm9,xmm9,423503 xor r12,rdx3504 shrd r14,r14,63505 vpxor xmm11,xmm11,xmm103506 xor rdi,r103507 add r8,r123508 vpxor xmm11,xmm11,xmm93509 shrd r13,r13,143510 and r15,rdi3511 vpaddq xmm5,xmm5,xmm113512 xor r14,r93513 add r8,r133514 vpaddq xmm10,xmm5,XMMWORD[32+rbp]3515 xor r15,r103516 shrd r14,r14,283517 add rax,r83518 add r8,r153519 mov r13,rax3520 add r14,r83521 vmovdqa XMMWORD[80+rsp],xmm103522 vpalignr xmm8,xmm7,xmm6,83523 shrd r13,r13,233524 mov r8,r143525 vpalignr xmm11,xmm3,xmm2,83526 mov r12,rbx3527 shrd r14,r14,53528 vpsrlq xmm10,xmm8,13529 xor r13,rax3530 xor r12,rcx3531 vpaddq xmm6,xmm6,xmm113532 shrd r13,r13,43533 xor r14,r83534 vpsrlq xmm11,xmm8,73535 and r12,rax3536 xor r13,rax3537 vpsllq xmm9,xmm8,563538 add rdx,QWORD[96+rsp]3539 mov r15,r83540 vpxor xmm8,xmm11,xmm103541 xor r12,rcx3542 shrd r14,r14,63543 vpsrlq xmm10,xmm10,73544 xor r15,r93545 add rdx,r123546 vpxor xmm8,xmm8,xmm93547 shrd r13,r13,143548 and rdi,r153549 vpsllq xmm9,xmm9,73550 xor r14,r83551 add rdx,r133552 vpxor xmm8,xmm8,xmm103553 xor rdi,r93554 shrd r14,r14,283555 vpsrlq xmm11,xmm5,63556 add r11,rdx3557 add rdx,rdi3558 vpxor xmm8,xmm8,xmm93559 mov r13,r113560 add r14,rdx3561 vpsllq xmm10,xmm5,33562 shrd r13,r13,233563 mov rdx,r143564 vpaddq xmm6,xmm6,xmm83565 mov r12,rax3566 shrd r14,r14,53567 vpsrlq xmm9,xmm5,193568 xor r13,r113569 xor r12,rbx3570 vpxor xmm11,xmm11,xmm103571 shrd r13,r13,43572 xor r14,rdx3573 vpsllq xmm10,xmm10,423574 and r12,r113575 xor r13,r113576 vpxor xmm11,xmm11,xmm93577 add rcx,QWORD[104+rsp]3578 mov rdi,rdx3579 vpsrlq xmm9,xmm9,423580 xor r12,rbx3581 shrd r14,r14,63582 vpxor xmm11,xmm11,xmm103583 xor rdi,r83584 add rcx,r123585 vpxor xmm11,xmm11,xmm93586 shrd r13,r13,143587 and r15,rdi3588 vpaddq xmm6,xmm6,xmm113589 xor r14,rdx3590 add rcx,r133591 vpaddq xmm10,xmm6,XMMWORD[64+rbp]3592 xor r15,r83593 shrd r14,r14,283594 add r10,rcx3595 add rcx,r153596 mov r13,r103597 add r14,rcx3598 vmovdqa XMMWORD[96+rsp],xmm103599 vpalignr xmm8,xmm0,xmm7,83600 shrd r13,r13,233601 mov rcx,r143602 vpalignr xmm11,xmm4,xmm3,83603 mov r12,r113604 shrd r14,r14,53605 vpsrlq xmm10,xmm8,13606 xor r13,r103607 xor r12,rax3608 vpaddq xmm7,xmm7,xmm113609 shrd r13,r13,43610 xor r14,rcx3611 vpsrlq xmm11,xmm8,73612 and r12,r103613 xor r13,r103614 vpsllq xmm9,xmm8,563615 add rbx,QWORD[112+rsp]3616 mov r15,rcx3617 vpxor xmm8,xmm11,xmm103618 xor r12,rax3619 shrd r14,r14,63620 vpsrlq xmm10,xmm10,73621 xor r15,rdx3622 add rbx,r123623 vpxor xmm8,xmm8,xmm93624 shrd r13,r13,143625 and rdi,r153626 vpsllq xmm9,xmm9,73627 xor r14,rcx3628 add rbx,r133629 vpxor xmm8,xmm8,xmm103630 xor rdi,rdx3631 shrd r14,r14,283632 vpsrlq xmm11,xmm6,63633 add r9,rbx3634 add rbx,rdi3635 vpxor xmm8,xmm8,xmm93636 mov r13,r93637 add r14,rbx3638 vpsllq xmm10,xmm6,33639 shrd r13,r13,233640 mov rbx,r143641 vpaddq xmm7,xmm7,xmm83642 mov r12,r103643 shrd r14,r14,53644 vpsrlq xmm9,xmm6,193645 xor r13,r93646 xor r12,r113647 vpxor xmm11,xmm11,xmm103648 shrd r13,r13,43649 xor r14,rbx3650 vpsllq xmm10,xmm10,423651 and r12,r93652 xor r13,r93653 vpxor xmm11,xmm11,xmm93654 add rax,QWORD[120+rsp]3655 mov rdi,rbx3656 vpsrlq xmm9,xmm9,423657 xor r12,r113658 shrd r14,r14,63659 vpxor xmm11,xmm11,xmm103660 xor rdi,rcx3661 add rax,r123662 vpxor xmm11,xmm11,xmm93663 shrd r13,r13,143664 and r15,rdi3665 vpaddq xmm7,xmm7,xmm113666 xor r14,rbx3667 add rax,r133668 vpaddq xmm10,xmm7,XMMWORD[96+rbp]3669 xor r15,rcx3670 shrd r14,r14,283671 add r8,rax3672 add rax,r153673 mov r13,r83674 add r14,rax3675 vmovdqa XMMWORD[112+rsp],xmm103676 cmp BYTE[135+rbp],03677 jne NEAR $L$avx_00_473678 shrd r13,r13,233679 mov rax,r143680 mov r12,r93681 shrd r14,r14,53682 xor r13,r83683 xor r12,r103684 shrd r13,r13,43685 xor r14,rax3686 and r12,r83687 xor r13,r83688 add r11,QWORD[rsp]3689 mov r15,rax3690 xor r12,r103691 shrd r14,r14,63692 xor r15,rbx3693 add r11,r123694 shrd r13,r13,143695 and rdi,r153696 xor r14,rax3697 add r11,r133698 xor rdi,rbx3699 shrd r14,r14,283700 add rdx,r113701 add r11,rdi3702 mov r13,rdx3703 add r14,r113704 shrd r13,r13,233705 mov r11,r143706 mov r12,r83707 shrd r14,r14,53708 xor r13,rdx3709 xor r12,r93710 shrd r13,r13,43711 xor r14,r113712 and r12,rdx3713 xor r13,rdx3714 add r10,QWORD[8+rsp]3715 mov rdi,r113716 xor r12,r93717 shrd r14,r14,63718 xor rdi,rax3719 add r10,r123720 shrd r13,r13,143721 and r15,rdi3722 xor r14,r113723 add r10,r133724 xor r15,rax3725 shrd r14,r14,283726 add rcx,r103727 add r10,r153728 mov r13,rcx3729 add r14,r103730 shrd r13,r13,233731 mov r10,r143732 mov r12,rdx3733 shrd r14,r14,53734 xor r13,rcx3735 xor r12,r83736 shrd r13,r13,43737 xor r14,r103738 and r12,rcx3739 xor r13,rcx3740 add r9,QWORD[16+rsp]3741 mov r15,r103742 xor r12,r83743 shrd r14,r14,63744 xor r15,r113745 add r9,r123746 shrd r13,r13,143747 and rdi,r153748 xor r14,r103749 add r9,r133750 xor rdi,r113751 shrd r14,r14,283752 add rbx,r93753 add r9,rdi3754 mov r13,rbx3755 add r14,r93756 shrd r13,r13,233757 mov r9,r143758 mov r12,rcx3759 shrd r14,r14,53760 xor r13,rbx3761 xor r12,rdx3762 shrd r13,r13,43763 xor r14,r93764 and r12,rbx3765 xor r13,rbx3766 add r8,QWORD[24+rsp]3767 mov rdi,r93768 xor r12,rdx3769 shrd r14,r14,63770 xor rdi,r103771 add r8,r123772 shrd r13,r13,143773 and r15,rdi3774 xor r14,r93775 add r8,r133776 xor r15,r103777 shrd r14,r14,283778 add rax,r83779 add r8,r153780 mov r13,rax3781 add r14,r83782 shrd r13,r13,233783 mov r8,r143784 mov r12,rbx3785 shrd r14,r14,53786 xor r13,rax3787 xor r12,rcx3788 shrd r13,r13,43789 xor r14,r83790 and r12,rax3791 xor r13,rax3792 add rdx,QWORD[32+rsp]3793 mov r15,r83794 xor r12,rcx3795 shrd r14,r14,63796 xor r15,r93797 add rdx,r123798 shrd r13,r13,143799 and rdi,r153800 xor r14,r83801 add rdx,r133802 xor rdi,r93803 shrd r14,r14,283804 add r11,rdx3805 add rdx,rdi3806 mov r13,r113807 add r14,rdx3808 shrd r13,r13,233809 mov rdx,r143810 mov r12,rax3811 shrd r14,r14,53812 xor r13,r113813 xor r12,rbx3814 shrd r13,r13,43815 xor r14,rdx3816 and r12,r113817 xor r13,r113818 add rcx,QWORD[40+rsp]3819 mov rdi,rdx3820 xor r12,rbx3821 shrd r14,r14,63822 xor rdi,r83823 add rcx,r123824 shrd r13,r13,143825 and r15,rdi3826 xor r14,rdx3827 add rcx,r133828 xor r15,r83829 shrd r14,r14,283830 add r10,rcx3831 add rcx,r153832 mov r13,r103833 add r14,rcx3834 shrd r13,r13,233835 mov rcx,r143836 mov r12,r113837 shrd r14,r14,53838 xor r13,r103839 xor r12,rax3840 shrd r13,r13,43841 xor r14,rcx3842 and r12,r103843 xor r13,r103844 add rbx,QWORD[48+rsp]3845 mov r15,rcx3846 xor r12,rax3847 shrd r14,r14,63848 xor r15,rdx3849 add rbx,r123850 shrd r13,r13,143851 and rdi,r153852 xor r14,rcx3853 add rbx,r133854 xor rdi,rdx3855 shrd r14,r14,283856 add r9,rbx3857 add rbx,rdi3858 mov r13,r93859 add r14,rbx3860 shrd r13,r13,233861 mov rbx,r143862 mov r12,r103863 shrd r14,r14,53864 xor r13,r93865 xor r12,r113866 shrd r13,r13,43867 xor r14,rbx3868 and r12,r93869 xor r13,r93870 add rax,QWORD[56+rsp]3871 mov rdi,rbx3872 xor r12,r113873 shrd r14,r14,63874 xor rdi,rcx3875 add rax,r123876 shrd r13,r13,143877 and r15,rdi3878 xor r14,rbx3879 add rax,r133880 xor r15,rcx3881 shrd r14,r14,283882 add r8,rax3883 add rax,r153884 mov r13,r83885 add r14,rax3886 shrd r13,r13,233887 mov rax,r143888 mov r12,r93889 shrd r14,r14,53890 xor r13,r83891 xor r12,r103892 shrd r13,r13,43893 xor r14,rax3894 and r12,r83895 xor r13,r83896 add r11,QWORD[64+rsp]3897 mov r15,rax3898 xor r12,r103899 shrd r14,r14,63900 xor r15,rbx3901 add r11,r123902 shrd r13,r13,143903 and rdi,r153904 xor r14,rax3905 add r11,r133906 xor rdi,rbx3907 shrd r14,r14,283908 add rdx,r113909 add r11,rdi3910 mov r13,rdx3911 add r14,r113912 shrd r13,r13,233913 mov r11,r143914 mov r12,r83915 shrd r14,r14,53916 xor r13,rdx3917 xor r12,r93918 shrd r13,r13,43919 xor r14,r113920 and r12,rdx3921 xor r13,rdx3922 add r10,QWORD[72+rsp]3923 mov rdi,r113924 xor r12,r93925 shrd r14,r14,63926 xor rdi,rax3927 add r10,r123928 shrd r13,r13,143929 and r15,rdi3930 xor r14,r113931 add r10,r133932 xor r15,rax3933 shrd r14,r14,283934 add rcx,r103935 add r10,r153936 mov r13,rcx3937 add r14,r103938 shrd r13,r13,233939 mov r10,r143940 mov r12,rdx3941 shrd r14,r14,53942 xor r13,rcx3943 xor r12,r83944 shrd r13,r13,43945 xor r14,r103946 and r12,rcx3947 xor r13,rcx3948 add r9,QWORD[80+rsp]3949 mov r15,r103950 xor r12,r83951 shrd r14,r14,63952 xor r15,r113953 add r9,r123954 shrd r13,r13,143955 and rdi,r153956 xor r14,r103957 add r9,r133958 xor rdi,r113959 shrd r14,r14,283960 add rbx,r93961 add r9,rdi3962 mov r13,rbx3963 add r14,r93964 shrd r13,r13,233965 mov r9,r143966 mov r12,rcx3967 shrd r14,r14,53968 xor r13,rbx3969 xor r12,rdx3970 shrd r13,r13,43971 xor r14,r93972 and r12,rbx3973 xor r13,rbx3974 add r8,QWORD[88+rsp]3975 mov rdi,r93976 xor r12,rdx3977 shrd r14,r14,63978 xor rdi,r103979 add r8,r123980 shrd r13,r13,143981 and r15,rdi3982 xor r14,r93983 add r8,r133984 xor r15,r103985 shrd r14,r14,283986 add rax,r83987 add r8,r153988 mov r13,rax3989 add r14,r83990 shrd r13,r13,233991 mov r8,r143992 mov r12,rbx3993 shrd r14,r14,53994 xor r13,rax3995 xor r12,rcx3996 shrd r13,r13,43997 xor r14,r83998 and r12,rax3999 xor r13,rax4000 add rdx,QWORD[96+rsp]4001 mov r15,r84002 xor r12,rcx4003 shrd r14,r14,64004 xor r15,r94005 add rdx,r124006 shrd r13,r13,144007 and rdi,r154008 xor r14,r84009 add rdx,r134010 xor rdi,r94011 shrd r14,r14,284012 add r11,rdx4013 add rdx,rdi4014 mov r13,r114015 add r14,rdx4016 shrd r13,r13,234017 mov rdx,r144018 mov r12,rax4019 shrd r14,r14,54020 xor r13,r114021 xor r12,rbx4022 shrd r13,r13,44023 xor r14,rdx4024 and r12,r114025 xor r13,r114026 add rcx,QWORD[104+rsp]4027 mov rdi,rdx4028 xor r12,rbx4029 shrd r14,r14,64030 xor rdi,r84031 add rcx,r124032 shrd r13,r13,144033 and r15,rdi4034 xor r14,rdx4035 add rcx,r134036 xor r15,r84037 shrd r14,r14,284038 add r10,rcx4039 add rcx,r154040 mov r13,r104041 add r14,rcx4042 shrd r13,r13,234043 mov rcx,r144044 mov r12,r114045 shrd r14,r14,54046 xor r13,r104047 xor r12,rax4048 shrd r13,r13,44049 xor r14,rcx4050 and r12,r104051 xor r13,r104052 add rbx,QWORD[112+rsp]4053 mov r15,rcx4054 xor r12,rax4055 shrd r14,r14,64056 xor r15,rdx4057 add rbx,r124058 shrd r13,r13,144059 and rdi,r154060 xor r14,rcx4061 add rbx,r134062 xor rdi,rdx4063 shrd r14,r14,284064 add r9,rbx4065 add rbx,rdi4066 mov r13,r94067 add r14,rbx4068 shrd r13,r13,234069 mov rbx,r144070 mov r12,r104071 shrd r14,r14,54072 xor r13,r94073 xor r12,r114074 shrd r13,r13,44075 xor r14,rbx4076 and r12,r94077 xor r13,r94078 add rax,QWORD[120+rsp]4079 mov rdi,rbx4080 xor r12,r114081 shrd r14,r14,64082 xor rdi,rcx4083 add rax,r124084 shrd r13,r13,144085 and r15,rdi4086 xor r14,rbx4087 add rax,r134088 xor r15,rcx4089 shrd r14,r14,284090 add r8,rax4091 add rax,r154092 mov r13,r84093 add r14,rax4094 mov rdi,QWORD[((128+0))+rsp]4095 mov rax,r144096 4097 add rax,QWORD[rdi]4098 lea rsi,[128+rsi]4099 add rbx,QWORD[8+rdi]4100 add rcx,QWORD[16+rdi]4101 add rdx,QWORD[24+rdi]4102 add r8,QWORD[32+rdi]4103 add r9,QWORD[40+rdi]4104 add r10,QWORD[48+rdi]4105 add r11,QWORD[56+rdi]4106 4107 cmp rsi,QWORD[((128+16))+rsp]4108 4109 mov QWORD[rdi],rax4110 mov QWORD[8+rdi],rbx4111 mov QWORD[16+rdi],rcx4112 mov QWORD[24+rdi],rdx4113 mov QWORD[32+rdi],r84114 mov QWORD[40+rdi],r94115 mov QWORD[48+rdi],r104116 mov QWORD[56+rdi],r114117 jb NEAR $L$loop_avx4118 4119 mov rsi,QWORD[152+rsp]4120 4121 vzeroupper4122 movaps xmm6,XMMWORD[((128+32))+rsp]4123 movaps xmm7,XMMWORD[((128+48))+rsp]4124 movaps xmm8,XMMWORD[((128+64))+rsp]4125 movaps xmm9,XMMWORD[((128+80))+rsp]4126 movaps xmm10,XMMWORD[((128+96))+rsp]4127 movaps xmm11,XMMWORD[((128+112))+rsp]4128 mov r15,QWORD[((-48))+rsi]4129 4130 mov r14,QWORD[((-40))+rsi]4131 4132 mov r13,QWORD[((-32))+rsi]4133 4134 mov r12,QWORD[((-24))+rsi]4135 4136 mov rbp,QWORD[((-16))+rsi]4137 4138 mov rbx,QWORD[((-8))+rsi]4139 4140 lea rsp,[rsi]4141 4142 $L$epilogue_avx:4143 mov rdi,QWORD[8+rsp] ;WIN64 epilogue4144 mov rsi,QWORD[16+rsp]4145 DB 0F3h,0C3h ;repret4146 4147 $L$SEH_end_sha512_block_data_order_avx:4148 4149 ALIGN 644150 sha512_block_data_order_avx2:4151 mov QWORD[8+rsp],rdi ;WIN64 prologue4152 mov QWORD[16+rsp],rsi4153 mov rax,rsp4154 $L$SEH_begin_sha512_block_data_order_avx2:4155 mov rdi,rcx4156 mov rsi,rdx4157 mov rdx,r84158 4159 4160 4161 $L$avx2_shortcut:4162 mov rax,rsp4163 4164 push rbx4165 4166 push rbp4167 4168 push r124169 4170 push r134171 4172 push r144173 4174 push r154175 4176 sub rsp,14084177 shl rdx,44178 and rsp,-256*84179 lea rdx,[rdx*8+rsi]4180 add rsp,11524181 mov QWORD[((128+0))+rsp],rdi4182 mov QWORD[((128+8))+rsp],rsi4183 mov QWORD[((128+16))+rsp],rdx4184 mov QWORD[152+rsp],rax4185 4186 movaps XMMWORD[(128+32)+rsp],xmm64187 movaps XMMWORD[(128+48)+rsp],xmm74188 movaps XMMWORD[(128+64)+rsp],xmm84189 movaps XMMWORD[(128+80)+rsp],xmm94190 movaps XMMWORD[(128+96)+rsp],xmm104191 movaps XMMWORD[(128+112)+rsp],xmm114192 $L$prologue_avx2:4193 4194 vzeroupper4195 sub rsi,-16*84196 mov rax,QWORD[rdi]4197 mov r12,rsi4198 mov rbx,QWORD[8+rdi]4199 cmp rsi,rdx4200 mov rcx,QWORD[16+rdi]4201 cmove r12,rsp4202 mov rdx,QWORD[24+rdi]4203 mov r8,QWORD[32+rdi]4204 mov r9,QWORD[40+rdi]4205 mov r10,QWORD[48+rdi]4206 mov r11,QWORD[56+rdi]4207 jmp NEAR $L$oop_avx24208 ALIGN 164209 $L$oop_avx2:4210 vmovdqu xmm0,XMMWORD[((-128))+rsi]4211 vmovdqu xmm1,XMMWORD[((-128+16))+rsi]4212 vmovdqu xmm2,XMMWORD[((-128+32))+rsi]4213 lea rbp,[((K512+128))]4214 vmovdqu xmm3,XMMWORD[((-128+48))+rsi]4215 vmovdqu xmm4,XMMWORD[((-128+64))+rsi]4216 vmovdqu xmm5,XMMWORD[((-128+80))+rsi]4217 vmovdqu xmm6,XMMWORD[((-128+96))+rsi]4218 vmovdqu xmm7,XMMWORD[((-128+112))+rsi]4219 4220 vmovdqa ymm10,YMMWORD[1152+rbp]4221 vinserti128 ymm0,ymm0,XMMWORD[r12],14222 vinserti128 ymm1,ymm1,XMMWORD[16+r12],14223 vpshufb ymm0,ymm0,ymm104224 vinserti128 ymm2,ymm2,XMMWORD[32+r12],14225 vpshufb ymm1,ymm1,ymm104226 vinserti128 ymm3,ymm3,XMMWORD[48+r12],14227 vpshufb ymm2,ymm2,ymm104228 vinserti128 ymm4,ymm4,XMMWORD[64+r12],14229 vpshufb ymm3,ymm3,ymm104230 vinserti128 ymm5,ymm5,XMMWORD[80+r12],14231 vpshufb ymm4,ymm4,ymm104232 vinserti128 ymm6,ymm6,XMMWORD[96+r12],14233 vpshufb ymm5,ymm5,ymm104234 vinserti128 ymm7,ymm7,XMMWORD[112+r12],14235 4236 vpaddq ymm8,ymm0,YMMWORD[((-128))+rbp]4237 vpshufb ymm6,ymm6,ymm104238 vpaddq ymm9,ymm1,YMMWORD[((-96))+rbp]4239 vpshufb ymm7,ymm7,ymm104240 vpaddq ymm10,ymm2,YMMWORD[((-64))+rbp]4241 vpaddq ymm11,ymm3,YMMWORD[((-32))+rbp]4242 vmovdqa YMMWORD[rsp],ymm84243 vpaddq ymm8,ymm4,YMMWORD[rbp]4244 vmovdqa YMMWORD[32+rsp],ymm94245 vpaddq ymm9,ymm5,YMMWORD[32+rbp]4246 vmovdqa YMMWORD[64+rsp],ymm104247 vpaddq ymm10,ymm6,YMMWORD[64+rbp]4248 vmovdqa YMMWORD[96+rsp],ymm114249 lea rsp,[((-128))+rsp]4250 vpaddq ymm11,ymm7,YMMWORD[96+rbp]4251 vmovdqa YMMWORD[rsp],ymm84252 xor r14,r144253 vmovdqa YMMWORD[32+rsp],ymm94254 mov rdi,rbx4255 vmovdqa YMMWORD[64+rsp],ymm104256 xor rdi,rcx4257 vmovdqa YMMWORD[96+rsp],ymm114258 mov r12,r94259 add rbp,16*2*84260 jmp NEAR $L$avx2_00_474261 4262 ALIGN 164263 $L$avx2_00_47:4264 lea rsp,[((-128))+rsp]4265 vpalignr ymm8,ymm1,ymm0,84266 add r11,QWORD[((0+256))+rsp]4267 and r12,r84268 rorx r13,r8,414269 vpalignr ymm11,ymm5,ymm4,84270 rorx r15,r8,184271 lea rax,[r14*1+rax]4272 lea r11,[r12*1+r11]4273 vpsrlq ymm10,ymm8,14274 andn r12,r8,r104275 xor r13,r154276 rorx r14,r8,144277 vpaddq ymm0,ymm0,ymm114278 vpsrlq ymm11,ymm8,74279 lea r11,[r12*1+r11]4280 xor r13,r144281 mov r15,rax4282 vpsllq ymm9,ymm8,564283 vpxor ymm8,ymm11,ymm104284 rorx r12,rax,394285 lea r11,[r13*1+r11]4286 xor r15,rbx4287 vpsrlq ymm10,ymm10,74288 vpxor ymm8,ymm8,ymm94289 rorx r14,rax,344290 rorx r13,rax,284291 lea rdx,[r11*1+rdx]4292 vpsllq ymm9,ymm9,74293 vpxor ymm8,ymm8,ymm104294 and rdi,r154295 xor r14,r124296 xor rdi,rbx4297 vpsrlq ymm11,ymm7,64298 vpxor ymm8,ymm8,ymm94299 xor r14,r134300 lea r11,[rdi*1+r11]4301 mov r12,r84302 vpsllq ymm10,ymm7,34303 vpaddq ymm0,ymm0,ymm84304 add r10,QWORD[((8+256))+rsp]4305 and r12,rdx4306 rorx r13,rdx,414307 vpsrlq ymm9,ymm7,194308 vpxor ymm11,ymm11,ymm104309 rorx rdi,rdx,184310 lea r11,[r14*1+r11]4311 lea r10,[r12*1+r10]4312 vpsllq ymm10,ymm10,424313 vpxor ymm11,ymm11,ymm94314 andn r12,rdx,r94315 xor r13,rdi4316 rorx r14,rdx,144317 vpsrlq ymm9,ymm9,424318 vpxor ymm11,ymm11,ymm104319 lea r10,[r12*1+r10]4320 xor r13,r144321 mov rdi,r114322 vpxor ymm11,ymm11,ymm94323 rorx r12,r11,394324 lea r10,[r13*1+r10]4325 xor rdi,rax4326 vpaddq ymm0,ymm0,ymm114327 rorx r14,r11,344328 rorx r13,r11,284329 lea rcx,[r10*1+rcx]4330 vpaddq ymm10,ymm0,YMMWORD[((-128))+rbp]4331 and r15,rdi4332 xor r14,r124333 xor r15,rax4334 xor r14,r134335 lea r10,[r15*1+r10]4336 mov r12,rdx4337 vmovdqa YMMWORD[rsp],ymm104338 vpalignr ymm8,ymm2,ymm1,84339 add r9,QWORD[((32+256))+rsp]4340 and r12,rcx4341 rorx r13,rcx,414342 vpalignr ymm11,ymm6,ymm5,84343 rorx r15,rcx,184344 lea r10,[r14*1+r10]4345 lea r9,[r12*1+r9]4346 vpsrlq ymm10,ymm8,14347 andn r12,rcx,r84348 xor r13,r154349 rorx r14,rcx,144350 vpaddq ymm1,ymm1,ymm114351 vpsrlq ymm11,ymm8,74352 lea r9,[r12*1+r9]4353 xor r13,r144354 mov r15,r104355 vpsllq ymm9,ymm8,564356 vpxor ymm8,ymm11,ymm104357 rorx r12,r10,394358 lea r9,[r13*1+r9]4359 xor r15,r114360 vpsrlq ymm10,ymm10,74361 vpxor ymm8,ymm8,ymm94362 rorx r14,r10,344363 rorx r13,r10,284364 lea rbx,[r9*1+rbx]4365 vpsllq ymm9,ymm9,74366 vpxor ymm8,ymm8,ymm104367 and rdi,r154368 xor r14,r124369 xor rdi,r114370 vpsrlq ymm11,ymm0,64371 vpxor ymm8,ymm8,ymm94372 xor r14,r134373 lea r9,[rdi*1+r9]4374 mov r12,rcx4375 vpsllq ymm10,ymm0,34376 vpaddq ymm1,ymm1,ymm84377 add r8,QWORD[((40+256))+rsp]4378 and r12,rbx4379 rorx r13,rbx,414380 vpsrlq ymm9,ymm0,194381 vpxor ymm11,ymm11,ymm104382 rorx rdi,rbx,184383 lea r9,[r14*1+r9]4384 lea r8,[r12*1+r8]4385 vpsllq ymm10,ymm10,424386 vpxor ymm11,ymm11,ymm94387 andn r12,rbx,rdx4388 xor r13,rdi4389 rorx r14,rbx,144390 vpsrlq ymm9,ymm9,424391 vpxor ymm11,ymm11,ymm104392 lea r8,[r12*1+r8]4393 xor r13,r144394 mov rdi,r94395 vpxor ymm11,ymm11,ymm94396 rorx r12,r9,394397 lea r8,[r13*1+r8]4398 xor rdi,r104399 vpaddq ymm1,ymm1,ymm114400 rorx r14,r9,344401 rorx r13,r9,284402 lea rax,[r8*1+rax]4403 vpaddq ymm10,ymm1,YMMWORD[((-96))+rbp]4404 and r15,rdi4405 xor r14,r124406 xor r15,r104407 xor r14,r134408 lea r8,[r15*1+r8]4409 mov r12,rbx4410 vmovdqa YMMWORD[32+rsp],ymm104411 vpalignr ymm8,ymm3,ymm2,84412 add rdx,QWORD[((64+256))+rsp]4413 and r12,rax4414 rorx r13,rax,414415 vpalignr ymm11,ymm7,ymm6,84416 rorx r15,rax,184417 lea r8,[r14*1+r8]4418 lea rdx,[r12*1+rdx]4419 vpsrlq ymm10,ymm8,14420 andn r12,rax,rcx4421 xor r13,r154422 rorx r14,rax,144423 vpaddq ymm2,ymm2,ymm114424 vpsrlq ymm11,ymm8,74425 lea rdx,[r12*1+rdx]4426 xor r13,r144427 mov r15,r84428 vpsllq ymm9,ymm8,564429 vpxor ymm8,ymm11,ymm104430 rorx r12,r8,394431 lea rdx,[r13*1+rdx]4432 xor r15,r94433 vpsrlq ymm10,ymm10,74434 vpxor ymm8,ymm8,ymm94435 rorx r14,r8,344436 rorx r13,r8,284437 lea r11,[rdx*1+r11]4438 vpsllq ymm9,ymm9,74439 vpxor ymm8,ymm8,ymm104440 and rdi,r154441 xor r14,r124442 xor rdi,r94443 vpsrlq ymm11,ymm1,64444 vpxor ymm8,ymm8,ymm94445 xor r14,r134446 lea rdx,[rdi*1+rdx]4447 mov r12,rax4448 vpsllq ymm10,ymm1,34449 vpaddq ymm2,ymm2,ymm84450 add rcx,QWORD[((72+256))+rsp]4451 and r12,r114452 rorx r13,r11,414453 vpsrlq ymm9,ymm1,194454 vpxor ymm11,ymm11,ymm104455 rorx rdi,r11,184456 lea rdx,[r14*1+rdx]4457 lea rcx,[r12*1+rcx]4458 vpsllq ymm10,ymm10,424459 vpxor ymm11,ymm11,ymm94460 andn r12,r11,rbx4461 xor r13,rdi4462 rorx r14,r11,144463 vpsrlq ymm9,ymm9,424464 vpxor ymm11,ymm11,ymm104465 lea rcx,[r12*1+rcx]4466 xor r13,r144467 mov rdi,rdx4468 vpxor ymm11,ymm11,ymm94469 rorx r12,rdx,394470 lea rcx,[r13*1+rcx]4471 xor rdi,r84472 vpaddq ymm2,ymm2,ymm114473 rorx r14,rdx,344474 rorx r13,rdx,284475 lea r10,[rcx*1+r10]4476 vpaddq ymm10,ymm2,YMMWORD[((-64))+rbp]4477 and r15,rdi4478 xor r14,r124479 xor r15,r84480 xor r14,r134481 lea rcx,[r15*1+rcx]4482 mov r12,r114483 vmovdqa YMMWORD[64+rsp],ymm104484 vpalignr ymm8,ymm4,ymm3,84485 add rbx,QWORD[((96+256))+rsp]4486 and r12,r104487 rorx r13,r10,414488 vpalignr ymm11,ymm0,ymm7,84489 rorx r15,r10,184490 lea rcx,[r14*1+rcx]4491 lea rbx,[r12*1+rbx]4492 vpsrlq ymm10,ymm8,14493 andn r12,r10,rax4494 xor r13,r154495 rorx r14,r10,144496 vpaddq ymm3,ymm3,ymm114497 vpsrlq ymm11,ymm8,74498 lea rbx,[r12*1+rbx]4499 xor r13,r144500 mov r15,rcx4501 vpsllq ymm9,ymm8,564502 vpxor ymm8,ymm11,ymm104503 rorx r12,rcx,394504 lea rbx,[r13*1+rbx]4505 xor r15,rdx4506 vpsrlq ymm10,ymm10,74507 vpxor ymm8,ymm8,ymm94508 rorx r14,rcx,344509 rorx r13,rcx,284510 lea r9,[rbx*1+r9]4511 vpsllq ymm9,ymm9,74512 vpxor ymm8,ymm8,ymm104513 and rdi,r154514 xor r14,r124515 xor rdi,rdx4516 vpsrlq ymm11,ymm2,64517 vpxor ymm8,ymm8,ymm94518 xor r14,r134519 lea rbx,[rdi*1+rbx]4520 mov r12,r104521 vpsllq ymm10,ymm2,34522 vpaddq ymm3,ymm3,ymm84523 add rax,QWORD[((104+256))+rsp]4524 and r12,r94525 rorx r13,r9,414526 vpsrlq ymm9,ymm2,194527 vpxor ymm11,ymm11,ymm104528 rorx rdi,r9,184529 lea rbx,[r14*1+rbx]4530 lea rax,[r12*1+rax]4531 vpsllq ymm10,ymm10,424532 vpxor ymm11,ymm11,ymm94533 andn r12,r9,r114534 xor r13,rdi4535 rorx r14,r9,144536 vpsrlq ymm9,ymm9,424537 vpxor ymm11,ymm11,ymm104538 lea rax,[r12*1+rax]4539 xor r13,r144540 mov rdi,rbx4541 vpxor ymm11,ymm11,ymm94542 rorx r12,rbx,394543 lea rax,[r13*1+rax]4544 xor rdi,rcx4545 vpaddq ymm3,ymm3,ymm114546 rorx r14,rbx,344547 rorx r13,rbx,284548 lea r8,[rax*1+r8]4549 vpaddq ymm10,ymm3,YMMWORD[((-32))+rbp]4550 and r15,rdi4551 xor r14,r124552 xor r15,rcx4553 xor r14,r134554 lea rax,[r15*1+rax]4555 mov r12,r94556 vmovdqa YMMWORD[96+rsp],ymm104557 lea rsp,[((-128))+rsp]4558 vpalignr ymm8,ymm5,ymm4,84559 add r11,QWORD[((0+256))+rsp]4560 and r12,r84561 rorx r13,r8,414562 vpalignr ymm11,ymm1,ymm0,84563 rorx r15,r8,184564 lea rax,[r14*1+rax]4565 lea r11,[r12*1+r11]4566 vpsrlq ymm10,ymm8,14567 andn r12,r8,r104568 xor r13,r154569 rorx r14,r8,144570 vpaddq ymm4,ymm4,ymm114571 vpsrlq ymm11,ymm8,74572 lea r11,[r12*1+r11]4573 xor r13,r144574 mov r15,rax4575 vpsllq ymm9,ymm8,564576 vpxor ymm8,ymm11,ymm104577 rorx r12,rax,394578 lea r11,[r13*1+r11]4579 xor r15,rbx4580 vpsrlq ymm10,ymm10,74581 vpxor ymm8,ymm8,ymm94582 rorx r14,rax,344583 rorx r13,rax,284584 lea rdx,[r11*1+rdx]4585 vpsllq ymm9,ymm9,74586 vpxor ymm8,ymm8,ymm104587 and rdi,r154588 xor r14,r124589 xor rdi,rbx4590 vpsrlq ymm11,ymm3,64591 vpxor ymm8,ymm8,ymm94592 xor r14,r134593 lea r11,[rdi*1+r11]4594 mov r12,r84595 vpsllq ymm10,ymm3,34596 vpaddq ymm4,ymm4,ymm84597 add r10,QWORD[((8+256))+rsp]4598 and r12,rdx4599 rorx r13,rdx,414600 vpsrlq ymm9,ymm3,194601 vpxor ymm11,ymm11,ymm104602 rorx rdi,rdx,184603 lea r11,[r14*1+r11]4604 lea r10,[r12*1+r10]4605 vpsllq ymm10,ymm10,424606 vpxor ymm11,ymm11,ymm94607 andn r12,rdx,r94608 xor r13,rdi4609 rorx r14,rdx,144610 vpsrlq ymm9,ymm9,424611 vpxor ymm11,ymm11,ymm104612 lea r10,[r12*1+r10]4613 xor r13,r144614 mov rdi,r114615 vpxor ymm11,ymm11,ymm94616 rorx r12,r11,394617 lea r10,[r13*1+r10]4618 xor rdi,rax4619 vpaddq ymm4,ymm4,ymm114620 rorx r14,r11,344621 rorx r13,r11,284622 lea rcx,[r10*1+rcx]4623 vpaddq ymm10,ymm4,YMMWORD[rbp]4624 and r15,rdi4625 xor r14,r124626 xor r15,rax4627 xor r14,r134628 lea r10,[r15*1+r10]4629 mov r12,rdx4630 vmovdqa YMMWORD[rsp],ymm104631 vpalignr ymm8,ymm6,ymm5,84632 add r9,QWORD[((32+256))+rsp]4633 and r12,rcx4634 rorx r13,rcx,414635 vpalignr ymm11,ymm2,ymm1,84636 rorx r15,rcx,184637 lea r10,[r14*1+r10]4638 lea r9,[r12*1+r9]4639 vpsrlq ymm10,ymm8,14640 andn r12,rcx,r84641 xor r13,r154642 rorx r14,rcx,144643 vpaddq ymm5,ymm5,ymm114644 vpsrlq ymm11,ymm8,74645 lea r9,[r12*1+r9]4646 xor r13,r144647 mov r15,r104648 vpsllq ymm9,ymm8,564649 vpxor ymm8,ymm11,ymm104650 rorx r12,r10,394651 lea r9,[r13*1+r9]4652 xor r15,r114653 vpsrlq ymm10,ymm10,74654 vpxor ymm8,ymm8,ymm94655 rorx r14,r10,344656 rorx r13,r10,284657 lea rbx,[r9*1+rbx]4658 vpsllq ymm9,ymm9,74659 vpxor ymm8,ymm8,ymm104660 and rdi,r154661 xor r14,r124662 xor rdi,r114663 vpsrlq ymm11,ymm4,64664 vpxor ymm8,ymm8,ymm94665 xor r14,r134666 lea r9,[rdi*1+r9]4667 mov r12,rcx4668 vpsllq ymm10,ymm4,34669 vpaddq ymm5,ymm5,ymm84670 add r8,QWORD[((40+256))+rsp]4671 and r12,rbx4672 rorx r13,rbx,414673 vpsrlq ymm9,ymm4,194674 vpxor ymm11,ymm11,ymm104675 rorx rdi,rbx,184676 lea r9,[r14*1+r9]4677 lea r8,[r12*1+r8]4678 vpsllq ymm10,ymm10,424679 vpxor ymm11,ymm11,ymm94680 andn r12,rbx,rdx4681 xor r13,rdi4682 rorx r14,rbx,144683 vpsrlq ymm9,ymm9,424684 vpxor ymm11,ymm11,ymm104685 lea r8,[r12*1+r8]4686 xor r13,r144687 mov rdi,r94688 vpxor ymm11,ymm11,ymm94689 rorx r12,r9,394690 lea r8,[r13*1+r8]4691 xor rdi,r104692 vpaddq ymm5,ymm5,ymm114693 rorx r14,r9,344694 rorx r13,r9,284695 lea rax,[r8*1+rax]4696 vpaddq ymm10,ymm5,YMMWORD[32+rbp]4697 and r15,rdi4698 xor r14,r124699 xor r15,r104700 xor r14,r134701 lea r8,[r15*1+r8]4702 mov r12,rbx4703 vmovdqa YMMWORD[32+rsp],ymm104704 vpalignr ymm8,ymm7,ymm6,84705 add rdx,QWORD[((64+256))+rsp]4706 and r12,rax4707 rorx r13,rax,414708 vpalignr ymm11,ymm3,ymm2,84709 rorx r15,rax,184710 lea r8,[r14*1+r8]4711 lea rdx,[r12*1+rdx]4712 vpsrlq ymm10,ymm8,14713 andn r12,rax,rcx4714 xor r13,r154715 rorx r14,rax,144716 vpaddq ymm6,ymm6,ymm114717 vpsrlq ymm11,ymm8,74718 lea rdx,[r12*1+rdx]4719 xor r13,r144720 mov r15,r84721 vpsllq ymm9,ymm8,564722 vpxor ymm8,ymm11,ymm104723 rorx r12,r8,394724 lea rdx,[r13*1+rdx]4725 xor r15,r94726 vpsrlq ymm10,ymm10,74727 vpxor ymm8,ymm8,ymm94728 rorx r14,r8,344729 rorx r13,r8,284730 lea r11,[rdx*1+r11]4731 vpsllq ymm9,ymm9,74732 vpxor ymm8,ymm8,ymm104733 and rdi,r154734 xor r14,r124735 xor rdi,r94736 vpsrlq ymm11,ymm5,64737 vpxor ymm8,ymm8,ymm94738 xor r14,r134739 lea rdx,[rdi*1+rdx]4740 mov r12,rax4741 vpsllq ymm10,ymm5,34742 vpaddq ymm6,ymm6,ymm84743 add rcx,QWORD[((72+256))+rsp]4744 and r12,r114745 rorx r13,r11,414746 vpsrlq ymm9,ymm5,194747 vpxor ymm11,ymm11,ymm104748 rorx rdi,r11,184749 lea rdx,[r14*1+rdx]4750 lea rcx,[r12*1+rcx]4751 vpsllq ymm10,ymm10,424752 vpxor ymm11,ymm11,ymm94753 andn r12,r11,rbx4754 xor r13,rdi4755 rorx r14,r11,144756 vpsrlq ymm9,ymm9,424757 vpxor ymm11,ymm11,ymm104758 lea rcx,[r12*1+rcx]4759 xor r13,r144760 mov rdi,rdx4761 vpxor ymm11,ymm11,ymm94762 rorx r12,rdx,394763 lea rcx,[r13*1+rcx]4764 xor rdi,r84765 vpaddq ymm6,ymm6,ymm114766 rorx r14,rdx,344767 rorx r13,rdx,284768 lea r10,[rcx*1+r10]4769 vpaddq ymm10,ymm6,YMMWORD[64+rbp]4770 and r15,rdi4771 xor r14,r124772 xor r15,r84773 xor r14,r134774 lea rcx,[r15*1+rcx]4775 mov r12,r114776 vmovdqa YMMWORD[64+rsp],ymm104777 vpalignr ymm8,ymm0,ymm7,84778 add rbx,QWORD[((96+256))+rsp]4779 and r12,r104780 rorx r13,r10,414781 vpalignr ymm11,ymm4,ymm3,84782 rorx r15,r10,184783 lea rcx,[r14*1+rcx]4784 lea rbx,[r12*1+rbx]4785 vpsrlq ymm10,ymm8,14786 andn r12,r10,rax4787 xor r13,r154788 rorx r14,r10,144789 vpaddq ymm7,ymm7,ymm114790 vpsrlq ymm11,ymm8,74791 lea rbx,[r12*1+rbx]4792 xor r13,r144793 mov r15,rcx4794 vpsllq ymm9,ymm8,564795 vpxor ymm8,ymm11,ymm104796 rorx r12,rcx,394797 lea rbx,[r13*1+rbx]4798 xor r15,rdx4799 vpsrlq ymm10,ymm10,74800 vpxor ymm8,ymm8,ymm94801 rorx r14,rcx,344802 rorx r13,rcx,284803 lea r9,[rbx*1+r9]4804 vpsllq ymm9,ymm9,74805 vpxor ymm8,ymm8,ymm104806 and rdi,r154807 xor r14,r124808 xor rdi,rdx4809 vpsrlq ymm11,ymm6,64810 vpxor ymm8,ymm8,ymm94811 xor r14,r134812 lea rbx,[rdi*1+rbx]4813 mov r12,r104814 vpsllq ymm10,ymm6,34815 vpaddq ymm7,ymm7,ymm84816 add rax,QWORD[((104+256))+rsp]4817 and r12,r94818 rorx r13,r9,414819 vpsrlq ymm9,ymm6,194820 vpxor ymm11,ymm11,ymm104821 rorx rdi,r9,184822 lea rbx,[r14*1+rbx]4823 lea rax,[r12*1+rax]4824 vpsllq ymm10,ymm10,424825 vpxor ymm11,ymm11,ymm94826 andn r12,r9,r114827 xor r13,rdi4828 rorx r14,r9,144829 vpsrlq ymm9,ymm9,424830 vpxor ymm11,ymm11,ymm104831 lea rax,[r12*1+rax]4832 xor r13,r144833 mov rdi,rbx4834 vpxor ymm11,ymm11,ymm94835 rorx r12,rbx,394836 lea rax,[r13*1+rax]4837 xor rdi,rcx4838 vpaddq ymm7,ymm7,ymm114839 rorx r14,rbx,344840 rorx r13,rbx,284841 lea r8,[rax*1+r8]4842 vpaddq ymm10,ymm7,YMMWORD[96+rbp]4843 and r15,rdi4844 xor r14,r124845 xor r15,rcx4846 xor r14,r134847 lea rax,[r15*1+rax]4848 mov r12,r94849 vmovdqa YMMWORD[96+rsp],ymm104850 lea rbp,[256+rbp]4851 cmp BYTE[((-121))+rbp],04852 jne NEAR $L$avx2_00_474853 add r11,QWORD[((0+128))+rsp]4854 and r12,r84855 rorx r13,r8,414856 rorx r15,r8,184857 lea rax,[r14*1+rax]4858 lea r11,[r12*1+r11]4859 andn r12,r8,r104860 xor r13,r154861 rorx r14,r8,144862 lea r11,[r12*1+r11]4863 xor r13,r144864 mov r15,rax4865 rorx r12,rax,394866 lea r11,[r13*1+r11]4867 xor r15,rbx4868 rorx r14,rax,344869 rorx r13,rax,284870 lea rdx,[r11*1+rdx]4871 and rdi,r154872 xor r14,r124873 xor rdi,rbx4874 xor r14,r134875 lea r11,[rdi*1+r11]4876 mov r12,r84877 add r10,QWORD[((8+128))+rsp]4878 and r12,rdx4879 rorx r13,rdx,414880 rorx rdi,rdx,184881 lea r11,[r14*1+r11]4882 lea r10,[r12*1+r10]4883 andn r12,rdx,r94884 xor r13,rdi4885 rorx r14,rdx,144886 lea r10,[r12*1+r10]4887 xor r13,r144888 mov rdi,r114889 rorx r12,r11,394890 lea r10,[r13*1+r10]4891 xor rdi,rax4892 rorx r14,r11,344893 rorx r13,r11,284894 lea rcx,[r10*1+rcx]4895 and r15,rdi4896 xor r14,r124897 xor r15,rax4898 xor r14,r134899 lea r10,[r15*1+r10]4900 mov r12,rdx4901 add r9,QWORD[((32+128))+rsp]4902 and r12,rcx4903 rorx r13,rcx,414904 rorx r15,rcx,184905 lea r10,[r14*1+r10]4906 lea r9,[r12*1+r9]4907 andn r12,rcx,r84908 xor r13,r154909 rorx r14,rcx,144910 lea r9,[r12*1+r9]4911 xor r13,r144912 mov r15,r104913 rorx r12,r10,394914 lea r9,[r13*1+r9]4915 xor r15,r114916 rorx r14,r10,344917 rorx r13,r10,284918 lea rbx,[r9*1+rbx]4919 and rdi,r154920 xor r14,r124921 xor rdi,r114922 xor r14,r134923 lea r9,[rdi*1+r9]4924 mov r12,rcx4925 add r8,QWORD[((40+128))+rsp]4926 and r12,rbx4927 rorx r13,rbx,414928 rorx rdi,rbx,184929 lea r9,[r14*1+r9]4930 lea r8,[r12*1+r8]4931 andn r12,rbx,rdx4932 xor r13,rdi4933 rorx r14,rbx,144934 lea r8,[r12*1+r8]4935 xor r13,r144936 mov rdi,r94937 rorx r12,r9,394938 lea r8,[r13*1+r8]4939 xor rdi,r104940 rorx r14,r9,344941 rorx r13,r9,284942 lea rax,[r8*1+rax]4943 and r15,rdi4944 xor r14,r124945 xor r15,r104946 xor r14,r134947 lea r8,[r15*1+r8]4948 mov r12,rbx4949 add rdx,QWORD[((64+128))+rsp]4950 and r12,rax4951 rorx r13,rax,414952 rorx r15,rax,184953 lea r8,[r14*1+r8]4954 lea rdx,[r12*1+rdx]4955 andn r12,rax,rcx4956 xor r13,r154957 rorx r14,rax,144958 lea rdx,[r12*1+rdx]4959 xor r13,r144960 mov r15,r84961 rorx r12,r8,394962 lea rdx,[r13*1+rdx]4963 xor r15,r94964 rorx r14,r8,344965 rorx r13,r8,284966 lea r11,[rdx*1+r11]4967 and rdi,r154968 xor r14,r124969 xor rdi,r94970 xor r14,r134971 lea rdx,[rdi*1+rdx]4972 mov r12,rax4973 add rcx,QWORD[((72+128))+rsp]4974 and r12,r114975 rorx r13,r11,414976 rorx rdi,r11,184977 lea rdx,[r14*1+rdx]4978 lea rcx,[r12*1+rcx]4979 andn r12,r11,rbx4980 xor r13,rdi4981 rorx r14,r11,144982 lea rcx,[r12*1+rcx]4983 xor r13,r144984 mov rdi,rdx4985 rorx r12,rdx,394986 lea rcx,[r13*1+rcx]4987 xor rdi,r84988 rorx r14,rdx,344989 rorx r13,rdx,284990 lea r10,[rcx*1+r10]4991 and r15,rdi4992 xor r14,r124993 xor r15,r84994 xor r14,r134995 lea rcx,[r15*1+rcx]4996 mov r12,r114997 add rbx,QWORD[((96+128))+rsp]4998 and r12,r104999 rorx r13,r10,415000 rorx r15,r10,185001 lea rcx,[r14*1+rcx]5002 lea rbx,[r12*1+rbx]5003 andn r12,r10,rax5004 xor r13,r155005 rorx r14,r10,145006 lea rbx,[r12*1+rbx]5007 xor r13,r145008 mov r15,rcx5009 rorx r12,rcx,395010 lea rbx,[r13*1+rbx]5011 xor r15,rdx5012 rorx r14,rcx,345013 rorx r13,rcx,285014 lea r9,[rbx*1+r9]5015 and rdi,r155016 xor r14,r125017 xor rdi,rdx5018 xor r14,r135019 lea rbx,[rdi*1+rbx]5020 mov r12,r105021 add rax,QWORD[((104+128))+rsp]5022 and r12,r95023 rorx r13,r9,415024 rorx rdi,r9,185025 lea rbx,[r14*1+rbx]5026 lea rax,[r12*1+rax]5027 andn r12,r9,r115028 xor r13,rdi5029 rorx r14,r9,145030 lea rax,[r12*1+rax]5031 xor r13,r145032 mov rdi,rbx5033 rorx r12,rbx,395034 lea rax,[r13*1+rax]5035 xor rdi,rcx5036 rorx r14,rbx,345037 rorx r13,rbx,285038 lea r8,[rax*1+r8]5039 and r15,rdi5040 xor r14,r125041 xor r15,rcx5042 xor r14,r135043 lea rax,[r15*1+rax]5044 mov r12,r95045 add r11,QWORD[rsp]5046 and r12,r85047 rorx r13,r8,415048 rorx r15,r8,185049 lea rax,[r14*1+rax]5050 lea r11,[r12*1+r11]5051 andn r12,r8,r105052 xor r13,r155053 rorx r14,r8,145054 lea r11,[r12*1+r11]5055 xor r13,r145056 mov r15,rax5057 rorx r12,rax,395058 lea r11,[r13*1+r11]5059 xor r15,rbx5060 rorx r14,rax,345061 rorx r13,rax,285062 lea rdx,[r11*1+rdx]5063 and rdi,r155064 xor r14,r125065 xor rdi,rbx5066 xor r14,r135067 lea r11,[rdi*1+r11]5068 mov r12,r85069 add r10,QWORD[8+rsp]5070 and r12,rdx5071 rorx r13,rdx,415072 rorx rdi,rdx,185073 lea r11,[r14*1+r11]5074 lea r10,[r12*1+r10]5075 andn r12,rdx,r95076 xor r13,rdi5077 rorx r14,rdx,145078 lea r10,[r12*1+r10]5079 xor r13,r145080 mov rdi,r115081 rorx r12,r11,395082 lea r10,[r13*1+r10]5083 xor rdi,rax5084 rorx r14,r11,345085 rorx r13,r11,285086 lea rcx,[r10*1+rcx]5087 and r15,rdi5088 xor r14,r125089 xor r15,rax5090 xor r14,r135091 lea r10,[r15*1+r10]5092 mov r12,rdx5093 add r9,QWORD[32+rsp]5094 and r12,rcx5095 rorx r13,rcx,415096 rorx r15,rcx,185097 lea r10,[r14*1+r10]5098 lea r9,[r12*1+r9]5099 andn r12,rcx,r85100 xor r13,r155101 rorx r14,rcx,145102 lea r9,[r12*1+r9]5103 xor r13,r145104 mov r15,r105105 rorx r12,r10,395106 lea r9,[r13*1+r9]5107 xor r15,r115108 rorx r14,r10,345109 rorx r13,r10,285110 lea rbx,[r9*1+rbx]5111 and rdi,r155112 xor r14,r125113 xor rdi,r115114 xor r14,r135115 lea r9,[rdi*1+r9]5116 mov r12,rcx5117 add r8,QWORD[40+rsp]5118 and r12,rbx5119 rorx r13,rbx,415120 rorx rdi,rbx,185121 lea r9,[r14*1+r9]5122 lea r8,[r12*1+r8]5123 andn r12,rbx,rdx5124 xor r13,rdi5125 rorx r14,rbx,145126 lea r8,[r12*1+r8]5127 xor r13,r145128 mov rdi,r95129 rorx r12,r9,395130 lea r8,[r13*1+r8]5131 xor rdi,r105132 rorx r14,r9,345133 rorx r13,r9,285134 lea rax,[r8*1+rax]5135 and r15,rdi5136 xor r14,r125137 xor r15,r105138 xor r14,r135139 lea r8,[r15*1+r8]5140 mov r12,rbx5141 add rdx,QWORD[64+rsp]5142 and r12,rax5143 rorx r13,rax,415144 rorx r15,rax,185145 lea r8,[r14*1+r8]5146 lea rdx,[r12*1+rdx]5147 andn r12,rax,rcx5148 xor r13,r155149 rorx r14,rax,145150 lea rdx,[r12*1+rdx]5151 xor r13,r145152 mov r15,r85153 rorx r12,r8,395154 lea rdx,[r13*1+rdx]5155 xor r15,r95156 rorx r14,r8,345157 rorx r13,r8,285158 lea r11,[rdx*1+r11]5159 and rdi,r155160 xor r14,r125161 xor rdi,r95162 xor r14,r135163 lea rdx,[rdi*1+rdx]5164 mov r12,rax5165 add rcx,QWORD[72+rsp]5166 and r12,r115167 rorx r13,r11,415168 rorx rdi,r11,185169 lea rdx,[r14*1+rdx]5170 lea rcx,[r12*1+rcx]5171 andn r12,r11,rbx5172 xor r13,rdi5173 rorx r14,r11,145174 lea rcx,[r12*1+rcx]5175 xor r13,r145176 mov rdi,rdx5177 rorx r12,rdx,395178 lea rcx,[r13*1+rcx]5179 xor rdi,r85180 rorx r14,rdx,345181 rorx r13,rdx,285182 lea r10,[rcx*1+r10]5183 and r15,rdi5184 xor r14,r125185 xor r15,r85186 xor r14,r135187 lea rcx,[r15*1+rcx]5188 mov r12,r115189 add rbx,QWORD[96+rsp]5190 and r12,r105191 rorx r13,r10,415192 rorx r15,r10,185193 lea rcx,[r14*1+rcx]5194 lea rbx,[r12*1+rbx]5195 andn r12,r10,rax5196 xor r13,r155197 rorx r14,r10,145198 lea rbx,[r12*1+rbx]5199 xor r13,r145200 mov r15,rcx5201 rorx r12,rcx,395202 lea rbx,[r13*1+rbx]5203 xor r15,rdx5204 rorx r14,rcx,345205 rorx r13,rcx,285206 lea r9,[rbx*1+r9]5207 and rdi,r155208 xor r14,r125209 xor rdi,rdx5210 xor r14,r135211 lea rbx,[rdi*1+rbx]5212 mov r12,r105213 add rax,QWORD[104+rsp]5214 and r12,r95215 rorx r13,r9,415216 rorx rdi,r9,185217 lea rbx,[r14*1+rbx]5218 lea rax,[r12*1+rax]5219 andn r12,r9,r115220 xor r13,rdi5221 rorx r14,r9,145222 lea rax,[r12*1+rax]5223 xor r13,r145224 mov rdi,rbx5225 rorx r12,rbx,395226 lea rax,[r13*1+rax]5227 xor rdi,rcx5228 rorx r14,rbx,345229 rorx r13,rbx,285230 lea r8,[rax*1+r8]5231 and r15,rdi5232 xor r14,r125233 xor r15,rcx5234 xor r14,r135235 lea rax,[r15*1+rax]5236 mov r12,r95237 mov rdi,QWORD[1280+rsp]5238 add rax,r145239 5240 lea rbp,[1152+rsp]5241 5242 add rax,QWORD[rdi]5243 add rbx,QWORD[8+rdi]5244 add rcx,QWORD[16+rdi]5245 add rdx,QWORD[24+rdi]5246 add r8,QWORD[32+rdi]5247 add r9,QWORD[40+rdi]5248 add r10,QWORD[48+rdi]5249 add r11,QWORD[56+rdi]5250 5251 mov QWORD[rdi],rax5252 mov QWORD[8+rdi],rbx5253 mov QWORD[16+rdi],rcx5254 mov QWORD[24+rdi],rdx5255 mov QWORD[32+rdi],r85256 mov QWORD[40+rdi],r95257 mov QWORD[48+rdi],r105258 mov QWORD[56+rdi],r115259 5260 cmp rsi,QWORD[144+rbp]5261 je NEAR $L$done_avx25262 5263 xor r14,r145264 mov rdi,rbx5265 xor rdi,rcx5266 mov r12,r95267 jmp NEAR $L$ower_avx25268 ALIGN 165269 $L$ower_avx2:5270 add r11,QWORD[((0+16))+rbp]5271 and r12,r85272 rorx r13,r8,415273 rorx r15,r8,185274 lea rax,[r14*1+rax]5275 lea r11,[r12*1+r11]5276 andn r12,r8,r105277 xor r13,r155278 rorx r14,r8,145279 lea r11,[r12*1+r11]5280 xor r13,r145281 mov r15,rax5282 rorx r12,rax,395283 lea r11,[r13*1+r11]5284 xor r15,rbx5285 rorx r14,rax,345286 rorx r13,rax,285287 lea rdx,[r11*1+rdx]5288 and rdi,r155289 xor r14,r125290 xor rdi,rbx5291 xor r14,r135292 lea r11,[rdi*1+r11]5293 mov r12,r85294 add r10,QWORD[((8+16))+rbp]5295 and r12,rdx5296 rorx r13,rdx,415297 rorx rdi,rdx,185298 lea r11,[r14*1+r11]5299 lea r10,[r12*1+r10]5300 andn r12,rdx,r95301 xor r13,rdi5302 rorx r14,rdx,145303 lea r10,[r12*1+r10]5304 xor r13,r145305 mov rdi,r115306 rorx r12,r11,395307 lea r10,[r13*1+r10]5308 xor rdi,rax5309 rorx r14,r11,345310 rorx r13,r11,285311 lea rcx,[r10*1+rcx]5312 and r15,rdi5313 xor r14,r125314 xor r15,rax5315 xor r14,r135316 lea r10,[r15*1+r10]5317 mov r12,rdx5318 add r9,QWORD[((32+16))+rbp]5319 and r12,rcx5320 rorx r13,rcx,415321 rorx r15,rcx,185322 lea r10,[r14*1+r10]5323 lea r9,[r12*1+r9]5324 andn r12,rcx,r85325 xor r13,r155326 rorx r14,rcx,145327 lea r9,[r12*1+r9]5328 xor r13,r145329 mov r15,r105330 rorx r12,r10,395331 lea r9,[r13*1+r9]5332 xor r15,r115333 rorx r14,r10,345334 rorx r13,r10,285335 lea rbx,[r9*1+rbx]5336 and rdi,r155337 xor r14,r125338 xor rdi,r115339 xor r14,r135340 lea r9,[rdi*1+r9]5341 mov r12,rcx5342 add r8,QWORD[((40+16))+rbp]5343 and r12,rbx5344 rorx r13,rbx,415345 rorx rdi,rbx,185346 lea r9,[r14*1+r9]5347 lea r8,[r12*1+r8]5348 andn r12,rbx,rdx5349 xor r13,rdi5350 rorx r14,rbx,145351 lea r8,[r12*1+r8]5352 xor r13,r145353 mov rdi,r95354 rorx r12,r9,395355 lea r8,[r13*1+r8]5356 xor rdi,r105357 rorx r14,r9,345358 rorx r13,r9,285359 lea rax,[r8*1+rax]5360 and r15,rdi5361 xor r14,r125362 xor r15,r105363 xor r14,r135364 lea r8,[r15*1+r8]5365 mov r12,rbx5366 add rdx,QWORD[((64+16))+rbp]5367 and r12,rax5368 rorx r13,rax,415369 rorx r15,rax,185370 lea r8,[r14*1+r8]5371 lea rdx,[r12*1+rdx]5372 andn r12,rax,rcx5373 xor r13,r155374 rorx r14,rax,145375 lea rdx,[r12*1+rdx]5376 xor r13,r145377 mov r15,r85378 rorx r12,r8,395379 lea rdx,[r13*1+rdx]5380 xor r15,r95381 rorx r14,r8,345382 rorx r13,r8,285383 lea r11,[rdx*1+r11]5384 and rdi,r155385 xor r14,r125386 xor rdi,r95387 xor r14,r135388 lea rdx,[rdi*1+rdx]5389 mov r12,rax5390 add rcx,QWORD[((72+16))+rbp]5391 and r12,r115392 rorx r13,r11,415393 rorx rdi,r11,185394 lea rdx,[r14*1+rdx]5395 lea rcx,[r12*1+rcx]5396 andn r12,r11,rbx5397 xor r13,rdi5398 rorx r14,r11,145399 lea rcx,[r12*1+rcx]5400 xor r13,r145401 mov rdi,rdx5402 rorx r12,rdx,395403 lea rcx,[r13*1+rcx]5404 xor rdi,r85405 rorx r14,rdx,345406 rorx r13,rdx,285407 lea r10,[rcx*1+r10]5408 and r15,rdi5409 xor r14,r125410 xor r15,r85411 xor r14,r135412 lea rcx,[r15*1+rcx]5413 mov r12,r115414 add rbx,QWORD[((96+16))+rbp]5415 and r12,r105416 rorx r13,r10,415417 rorx r15,r10,185418 lea rcx,[r14*1+rcx]5419 lea rbx,[r12*1+rbx]5420 andn r12,r10,rax5421 xor r13,r155422 rorx r14,r10,145423 lea rbx,[r12*1+rbx]5424 xor r13,r145425 mov r15,rcx5426 rorx r12,rcx,395427 lea rbx,[r13*1+rbx]5428 xor r15,rdx5429 rorx r14,rcx,345430 rorx r13,rcx,285431 lea r9,[rbx*1+r9]5432 and rdi,r155433 xor r14,r125434 xor rdi,rdx5435 xor r14,r135436 lea rbx,[rdi*1+rbx]5437 mov r12,r105438 add rax,QWORD[((104+16))+rbp]5439 and r12,r95440 rorx r13,r9,415441 rorx rdi,r9,185442 lea rbx,[r14*1+rbx]5443 lea rax,[r12*1+rax]5444 andn r12,r9,r115445 xor r13,rdi5446 rorx r14,r9,145447 lea rax,[r12*1+rax]5448 xor r13,r145449 mov rdi,rbx5450 rorx r12,rbx,395451 lea rax,[r13*1+rax]5452 xor rdi,rcx5453 rorx r14,rbx,345454 rorx r13,rbx,285455 lea r8,[rax*1+r8]5456 and r15,rdi5457 xor r14,r125458 xor r15,rcx5459 xor r14,r135460 lea rax,[r15*1+rax]5461 mov r12,r95462 lea rbp,[((-128))+rbp]5463 cmp rbp,rsp5464 jae NEAR $L$ower_avx25465 5466 mov rdi,QWORD[1280+rsp]5467 add rax,r145468 5469 lea rsp,[1152+rsp]5470 5471 5472 5473 add rax,QWORD[rdi]5474 add rbx,QWORD[8+rdi]5475 add rcx,QWORD[16+rdi]5476 add rdx,QWORD[24+rdi]5477 add r8,QWORD[32+rdi]5478 add r9,QWORD[40+rdi]5479 lea rsi,[256+rsi]5480 add r10,QWORD[48+rdi]5481 mov r12,rsi5482 add r11,QWORD[56+rdi]5483 cmp rsi,QWORD[((128+16))+rsp]5484 5485 mov QWORD[rdi],rax5486 cmove r12,rsp5487 mov QWORD[8+rdi],rbx5488 mov QWORD[16+rdi],rcx5489 mov QWORD[24+rdi],rdx5490 mov QWORD[32+rdi],r85491 mov QWORD[40+rdi],r95492 mov QWORD[48+rdi],r105493 mov QWORD[56+rdi],r115494 5495 jbe NEAR $L$oop_avx25496 lea rbp,[rsp]5497 5498 5499 5500 5501 $L$done_avx2:5502 mov rsi,QWORD[152+rbp]5503 5504 vzeroupper5505 movaps xmm6,XMMWORD[((128+32))+rbp]5506 movaps xmm7,XMMWORD[((128+48))+rbp]5507 movaps xmm8,XMMWORD[((128+64))+rbp]5508 movaps xmm9,XMMWORD[((128+80))+rbp]5509 movaps xmm10,XMMWORD[((128+96))+rbp]5510 movaps xmm11,XMMWORD[((128+112))+rbp]5511 mov r15,QWORD[((-48))+rsi]5512 5513 mov r14,QWORD[((-40))+rsi]5514 5515 mov r13,QWORD[((-32))+rsi]5516 5517 mov r12,QWORD[((-24))+rsi]5518 5519 mov rbp,QWORD[((-16))+rsi]5520 5521 mov rbx,QWORD[((-8))+rsi]5522 5523 lea rsp,[rsi]5524 5525 $L$epilogue_avx2:5526 mov rdi,QWORD[8+rsp] ;WIN64 epilogue5527 mov rsi,QWORD[16+rsp]5528 DB 0F3h,0C3h ;repret5529 5530 $L$SEH_end_sha512_block_data_order_avx2:5531 1822 EXTERN __imp_RtlVirtualUnwind 5532 1823 … … 5561 1852 cmp rbx,r10 5562 1853 jae NEAR $L$in_prologue 5563 lea r10,[$L$avx2_shortcut]5564 cmp rbx,r105565 jb NEAR $L$not_in_avx25566 5567 and rax,-256*85568 add rax,11525569 $L$not_in_avx2:5570 1854 mov rsi,rax 5571 1855 mov rax,QWORD[((128+24))+rax] … … 5637 1921 DD $L$SEH_end_sha512_block_data_order wrt ..imagebase 5638 1922 DD $L$SEH_info_sha512_block_data_order wrt ..imagebase 5639 DD $L$SEH_begin_sha512_block_data_order_xop wrt ..imagebase5640 DD $L$SEH_end_sha512_block_data_order_xop wrt ..imagebase5641 DD $L$SEH_info_sha512_block_data_order_xop wrt ..imagebase5642 DD $L$SEH_begin_sha512_block_data_order_avx wrt ..imagebase5643 DD $L$SEH_end_sha512_block_data_order_avx wrt ..imagebase5644 DD $L$SEH_info_sha512_block_data_order_avx wrt ..imagebase5645 DD $L$SEH_begin_sha512_block_data_order_avx2 wrt ..imagebase5646 DD $L$SEH_end_sha512_block_data_order_avx2 wrt ..imagebase5647 DD $L$SEH_info_sha512_block_data_order_avx2 wrt ..imagebase5648 1923 section .xdata rdata align=8 5649 1924 ALIGN 8 … … 5652 1927 DD se_handler wrt ..imagebase 5653 1928 DD $L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase 5654 $L$SEH_info_sha512_block_data_order_xop:5655 DB 9,0,0,05656 DD se_handler wrt ..imagebase5657 DD $L$prologue_xop wrt ..imagebase,$L$epilogue_xop wrt ..imagebase5658 $L$SEH_info_sha512_block_data_order_avx:5659 DB 9,0,0,05660 DD se_handler wrt ..imagebase5661 DD $L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase5662 $L$SEH_info_sha512_block_data_order_avx2:5663 DB 9,0,0,05664 DD se_handler wrt ..imagebase5665 DD $L$prologue_avx2 wrt ..imagebase,$L$epilogue_avx2 wrt ..imagebase
Note:
See TracChangeset
for help on using the changeset viewer.