11f1e2261SMartin Matuska/* 21f1e2261SMartin Matuska * CDDL HEADER START 31f1e2261SMartin Matuska * 41f1e2261SMartin Matuska * The contents of this file are subject to the terms of the 51f1e2261SMartin Matuska * Common Development and Distribution License (the "License"). 61f1e2261SMartin Matuska * You may not use this file except in compliance with the License. 71f1e2261SMartin Matuska * 81f1e2261SMartin Matuska * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9271171e0SMartin Matuska * or https://opensource.org/licenses/CDDL-1.0. 101f1e2261SMartin Matuska * See the License for the specific language governing permissions 111f1e2261SMartin Matuska * and limitations under the License. 121f1e2261SMartin Matuska * 131f1e2261SMartin Matuska * When distributing Covered Code, include this CDDL HEADER in each 141f1e2261SMartin Matuska * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 151f1e2261SMartin Matuska * If applicable, add the following below this CDDL HEADER, with the 161f1e2261SMartin Matuska * fields enclosed by brackets "[]" replaced with your own identifying 171f1e2261SMartin Matuska * information: Portions Copyright [yyyy] [name of copyright owner] 181f1e2261SMartin Matuska * 191f1e2261SMartin Matuska * CDDL HEADER END 201f1e2261SMartin Matuska */ 211f1e2261SMartin Matuska 221f1e2261SMartin Matuska/* 231f1e2261SMartin Matuska * Based on BLAKE3 v1.3.1, https://github.com/BLAKE3-team/BLAKE3 241f1e2261SMartin Matuska * Copyright (c) 2019-2020 Samuel Neves 251f1e2261SMartin Matuska * Copyright (c) 2022 Tino Reichardt <milky-zfs@mcmilk.de> 261f1e2261SMartin Matuska */ 271f1e2261SMartin Matuska 281f1e2261SMartin Matuska#if defined(HAVE_SSE4_1) 291f1e2261SMartin Matuska 301f1e2261SMartin Matuska#define _ASM 311f1e2261SMartin Matuska#include <sys/asm_linkage.h> 321f1e2261SMartin Matuska 331f1e2261SMartin Matuska.intel_syntax noprefix 341f1e2261SMartin Matuska 351f1e2261SMartin Matuska.text 361f1e2261SMartin Matuska 37*15f0b8c3SMartin MatuskaENTRY_ALIGN(zfs_blake3_hash_many_sse41, 64) 38dbd5678dSMartin Matuska ENDBR 391f1e2261SMartin Matuska push r15 401f1e2261SMartin Matuska push r14 411f1e2261SMartin Matuska push r13 421f1e2261SMartin Matuska push r12 431f1e2261SMartin Matuska push rbx 441f1e2261SMartin Matuska push rbp 451f1e2261SMartin Matuska mov rbp, rsp 461f1e2261SMartin Matuska sub rsp, 360 471f1e2261SMartin Matuska and rsp, 0xFFFFFFFFFFFFFFC0 481f1e2261SMartin Matuska neg r9d 491f1e2261SMartin Matuska movd xmm0, r9d 501f1e2261SMartin Matuska pshufd xmm0, xmm0, 0x00 511f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x130], xmm0 521f1e2261SMartin Matuska movdqa xmm1, xmm0 531f1e2261SMartin Matuska pand xmm1, xmmword ptr [ADD0+rip] 541f1e2261SMartin Matuska pand xmm0, xmmword ptr [ADD1+rip] 551f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x150], xmm0 561f1e2261SMartin Matuska movd xmm0, r8d 571f1e2261SMartin Matuska pshufd xmm0, xmm0, 0x00 581f1e2261SMartin Matuska paddd xmm0, xmm1 591f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x110], xmm0 601f1e2261SMartin Matuska pxor xmm0, xmmword ptr [CMP_MSB_MASK+rip] 611f1e2261SMartin Matuska pxor xmm1, xmmword ptr [CMP_MSB_MASK+rip] 621f1e2261SMartin Matuska pcmpgtd xmm1, xmm0 631f1e2261SMartin Matuska shr r8, 32 641f1e2261SMartin Matuska movd xmm2, r8d 651f1e2261SMartin Matuska pshufd xmm2, xmm2, 0x00 661f1e2261SMartin Matuska psubd xmm2, xmm1 671f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x120], xmm2 681f1e2261SMartin Matuska mov rbx, qword ptr [rbp+0x50] 691f1e2261SMartin Matuska mov r15, rdx 701f1e2261SMartin Matuska shl r15, 6 711f1e2261SMartin Matuska movzx r13d, byte ptr [rbp+0x38] 721f1e2261SMartin Matuska movzx r12d, byte ptr [rbp+0x48] 731f1e2261SMartin Matuska cmp rsi, 4 741f1e2261SMartin Matuska jc 3f 751f1e2261SMartin Matuska2: 761f1e2261SMartin Matuska movdqu xmm3, xmmword ptr [rcx] 771f1e2261SMartin Matuska pshufd xmm0, xmm3, 0x00 781f1e2261SMartin Matuska pshufd xmm1, xmm3, 0x55 791f1e2261SMartin Matuska pshufd xmm2, xmm3, 0xAA 801f1e2261SMartin Matuska pshufd xmm3, xmm3, 0xFF 811f1e2261SMartin Matuska movdqu xmm7, xmmword ptr [rcx+0x10] 821f1e2261SMartin Matuska pshufd xmm4, xmm7, 0x00 831f1e2261SMartin Matuska pshufd xmm5, xmm7, 0x55 841f1e2261SMartin Matuska pshufd xmm6, xmm7, 0xAA 851f1e2261SMartin Matuska pshufd xmm7, xmm7, 0xFF 861f1e2261SMartin Matuska mov r8, qword ptr [rdi] 871f1e2261SMartin Matuska mov r9, qword ptr [rdi+0x8] 881f1e2261SMartin Matuska mov r10, qword ptr [rdi+0x10] 891f1e2261SMartin Matuska mov r11, qword ptr [rdi+0x18] 901f1e2261SMartin Matuska movzx eax, byte ptr [rbp+0x40] 911f1e2261SMartin Matuska or eax, r13d 921f1e2261SMartin Matuska xor edx, edx 931f1e2261SMartin Matuska9: 941f1e2261SMartin Matuska mov r14d, eax 951f1e2261SMartin Matuska or eax, r12d 961f1e2261SMartin Matuska add rdx, 64 971f1e2261SMartin Matuska cmp rdx, r15 981f1e2261SMartin Matuska cmovne eax, r14d 991f1e2261SMartin Matuska movdqu xmm8, xmmword ptr [r8+rdx-0x40] 1001f1e2261SMartin Matuska movdqu xmm9, xmmword ptr [r9+rdx-0x40] 1011f1e2261SMartin Matuska movdqu xmm10, xmmword ptr [r10+rdx-0x40] 1021f1e2261SMartin Matuska movdqu xmm11, xmmword ptr [r11+rdx-0x40] 1031f1e2261SMartin Matuska movdqa xmm12, xmm8 1041f1e2261SMartin Matuska punpckldq xmm8, xmm9 1051f1e2261SMartin Matuska punpckhdq xmm12, xmm9 1061f1e2261SMartin Matuska movdqa xmm14, xmm10 1071f1e2261SMartin Matuska punpckldq xmm10, xmm11 1081f1e2261SMartin Matuska punpckhdq xmm14, xmm11 1091f1e2261SMartin Matuska movdqa xmm9, xmm8 1101f1e2261SMartin Matuska punpcklqdq xmm8, xmm10 1111f1e2261SMartin Matuska punpckhqdq xmm9, xmm10 1121f1e2261SMartin Matuska movdqa xmm13, xmm12 1131f1e2261SMartin Matuska punpcklqdq xmm12, xmm14 1141f1e2261SMartin Matuska punpckhqdq xmm13, xmm14 1151f1e2261SMartin Matuska movdqa xmmword ptr [rsp], xmm8 1161f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x10], xmm9 1171f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x20], xmm12 1181f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x30], xmm13 1191f1e2261SMartin Matuska movdqu xmm8, xmmword ptr [r8+rdx-0x30] 1201f1e2261SMartin Matuska movdqu xmm9, xmmword ptr [r9+rdx-0x30] 1211f1e2261SMartin Matuska movdqu xmm10, xmmword ptr [r10+rdx-0x30] 1221f1e2261SMartin Matuska movdqu xmm11, xmmword ptr [r11+rdx-0x30] 1231f1e2261SMartin Matuska movdqa xmm12, xmm8 1241f1e2261SMartin Matuska punpckldq xmm8, xmm9 1251f1e2261SMartin Matuska punpckhdq xmm12, xmm9 1261f1e2261SMartin Matuska movdqa xmm14, xmm10 1271f1e2261SMartin Matuska punpckldq xmm10, xmm11 1281f1e2261SMartin Matuska punpckhdq xmm14, xmm11 1291f1e2261SMartin Matuska movdqa xmm9, xmm8 1301f1e2261SMartin Matuska punpcklqdq xmm8, xmm10 1311f1e2261SMartin Matuska punpckhqdq xmm9, xmm10 1321f1e2261SMartin Matuska movdqa xmm13, xmm12 1331f1e2261SMartin Matuska punpcklqdq xmm12, xmm14 1341f1e2261SMartin Matuska punpckhqdq xmm13, xmm14 1351f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x40], xmm8 1361f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x50], xmm9 1371f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x60], xmm12 1381f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x70], xmm13 1391f1e2261SMartin Matuska movdqu xmm8, xmmword ptr [r8+rdx-0x20] 1401f1e2261SMartin Matuska movdqu xmm9, xmmword ptr [r9+rdx-0x20] 1411f1e2261SMartin Matuska movdqu xmm10, xmmword ptr [r10+rdx-0x20] 1421f1e2261SMartin Matuska movdqu xmm11, xmmword ptr [r11+rdx-0x20] 1431f1e2261SMartin Matuska movdqa xmm12, xmm8 1441f1e2261SMartin Matuska punpckldq xmm8, xmm9 1451f1e2261SMartin Matuska punpckhdq xmm12, xmm9 1461f1e2261SMartin Matuska movdqa xmm14, xmm10 1471f1e2261SMartin Matuska punpckldq xmm10, xmm11 1481f1e2261SMartin Matuska punpckhdq xmm14, xmm11 1491f1e2261SMartin Matuska movdqa xmm9, xmm8 1501f1e2261SMartin Matuska punpcklqdq xmm8, xmm10 1511f1e2261SMartin Matuska punpckhqdq xmm9, xmm10 1521f1e2261SMartin Matuska movdqa xmm13, xmm12 1531f1e2261SMartin Matuska punpcklqdq xmm12, xmm14 1541f1e2261SMartin Matuska punpckhqdq xmm13, xmm14 1551f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x80], xmm8 1561f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x90], xmm9 1571f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0xA0], xmm12 1581f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0xB0], xmm13 1591f1e2261SMartin Matuska movdqu xmm8, xmmword ptr [r8+rdx-0x10] 1601f1e2261SMartin Matuska movdqu xmm9, xmmword ptr [r9+rdx-0x10] 1611f1e2261SMartin Matuska movdqu xmm10, xmmword ptr [r10+rdx-0x10] 1621f1e2261SMartin Matuska movdqu xmm11, xmmword ptr [r11+rdx-0x10] 1631f1e2261SMartin Matuska movdqa xmm12, xmm8 1641f1e2261SMartin Matuska punpckldq xmm8, xmm9 1651f1e2261SMartin Matuska punpckhdq xmm12, xmm9 1661f1e2261SMartin Matuska movdqa xmm14, xmm10 1671f1e2261SMartin Matuska punpckldq xmm10, xmm11 1681f1e2261SMartin Matuska punpckhdq xmm14, xmm11 1691f1e2261SMartin Matuska movdqa xmm9, xmm8 1701f1e2261SMartin Matuska punpcklqdq xmm8, xmm10 1711f1e2261SMartin Matuska punpckhqdq xmm9, xmm10 1721f1e2261SMartin Matuska movdqa xmm13, xmm12 1731f1e2261SMartin Matuska punpcklqdq xmm12, xmm14 1741f1e2261SMartin Matuska punpckhqdq xmm13, xmm14 1751f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0xC0], xmm8 1761f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0xD0], xmm9 1771f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0xE0], xmm12 1781f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0xF0], xmm13 1791f1e2261SMartin Matuska movdqa xmm9, xmmword ptr [BLAKE3_IV_1+rip] 1801f1e2261SMartin Matuska movdqa xmm10, xmmword ptr [BLAKE3_IV_2+rip] 1811f1e2261SMartin Matuska movdqa xmm11, xmmword ptr [BLAKE3_IV_3+rip] 1821f1e2261SMartin Matuska movdqa xmm12, xmmword ptr [rsp+0x110] 1831f1e2261SMartin Matuska movdqa xmm13, xmmword ptr [rsp+0x120] 1841f1e2261SMartin Matuska movdqa xmm14, xmmword ptr [BLAKE3_BLOCK_LEN+rip] 1851f1e2261SMartin Matuska movd xmm15, eax 1861f1e2261SMartin Matuska pshufd xmm15, xmm15, 0x00 1871f1e2261SMartin Matuska prefetcht0 [r8+rdx+0x80] 1881f1e2261SMartin Matuska prefetcht0 [r9+rdx+0x80] 1891f1e2261SMartin Matuska prefetcht0 [r10+rdx+0x80] 1901f1e2261SMartin Matuska prefetcht0 [r11+rdx+0x80] 1911f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp] 1921f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0x20] 1931f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0x40] 1941f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x60] 1951f1e2261SMartin Matuska paddd xmm0, xmm4 1961f1e2261SMartin Matuska paddd xmm1, xmm5 1971f1e2261SMartin Matuska paddd xmm2, xmm6 1981f1e2261SMartin Matuska paddd xmm3, xmm7 1991f1e2261SMartin Matuska pxor xmm12, xmm0 2001f1e2261SMartin Matuska pxor xmm13, xmm1 2011f1e2261SMartin Matuska pxor xmm14, xmm2 2021f1e2261SMartin Matuska pxor xmm15, xmm3 2031f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT16+rip] 2041f1e2261SMartin Matuska pshufb xmm12, xmm8 2051f1e2261SMartin Matuska pshufb xmm13, xmm8 2061f1e2261SMartin Matuska pshufb xmm14, xmm8 2071f1e2261SMartin Matuska pshufb xmm15, xmm8 2081f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [BLAKE3_IV_0+rip] 2091f1e2261SMartin Matuska paddd xmm8, xmm12 2101f1e2261SMartin Matuska paddd xmm9, xmm13 2111f1e2261SMartin Matuska paddd xmm10, xmm14 2121f1e2261SMartin Matuska paddd xmm11, xmm15 2131f1e2261SMartin Matuska pxor xmm4, xmm8 2141f1e2261SMartin Matuska pxor xmm5, xmm9 2151f1e2261SMartin Matuska pxor xmm6, xmm10 2161f1e2261SMartin Matuska pxor xmm7, xmm11 2171f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 2181f1e2261SMartin Matuska movdqa xmm8, xmm4 2191f1e2261SMartin Matuska psrld xmm8, 12 2201f1e2261SMartin Matuska pslld xmm4, 20 2211f1e2261SMartin Matuska por xmm4, xmm8 2221f1e2261SMartin Matuska movdqa xmm8, xmm5 2231f1e2261SMartin Matuska psrld xmm8, 12 2241f1e2261SMartin Matuska pslld xmm5, 20 2251f1e2261SMartin Matuska por xmm5, xmm8 2261f1e2261SMartin Matuska movdqa xmm8, xmm6 2271f1e2261SMartin Matuska psrld xmm8, 12 2281f1e2261SMartin Matuska pslld xmm6, 20 2291f1e2261SMartin Matuska por xmm6, xmm8 2301f1e2261SMartin Matuska movdqa xmm8, xmm7 2311f1e2261SMartin Matuska psrld xmm8, 12 2321f1e2261SMartin Matuska pslld xmm7, 20 2331f1e2261SMartin Matuska por xmm7, xmm8 2341f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0x10] 2351f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0x30] 2361f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0x50] 2371f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x70] 2381f1e2261SMartin Matuska paddd xmm0, xmm4 2391f1e2261SMartin Matuska paddd xmm1, xmm5 2401f1e2261SMartin Matuska paddd xmm2, xmm6 2411f1e2261SMartin Matuska paddd xmm3, xmm7 2421f1e2261SMartin Matuska pxor xmm12, xmm0 2431f1e2261SMartin Matuska pxor xmm13, xmm1 2441f1e2261SMartin Matuska pxor xmm14, xmm2 2451f1e2261SMartin Matuska pxor xmm15, xmm3 2461f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT8+rip] 2471f1e2261SMartin Matuska pshufb xmm12, xmm8 2481f1e2261SMartin Matuska pshufb xmm13, xmm8 2491f1e2261SMartin Matuska pshufb xmm14, xmm8 2501f1e2261SMartin Matuska pshufb xmm15, xmm8 2511f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 2521f1e2261SMartin Matuska paddd xmm8, xmm12 2531f1e2261SMartin Matuska paddd xmm9, xmm13 2541f1e2261SMartin Matuska paddd xmm10, xmm14 2551f1e2261SMartin Matuska paddd xmm11, xmm15 2561f1e2261SMartin Matuska pxor xmm4, xmm8 2571f1e2261SMartin Matuska pxor xmm5, xmm9 2581f1e2261SMartin Matuska pxor xmm6, xmm10 2591f1e2261SMartin Matuska pxor xmm7, xmm11 2601f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 2611f1e2261SMartin Matuska movdqa xmm8, xmm4 2621f1e2261SMartin Matuska psrld xmm8, 7 2631f1e2261SMartin Matuska pslld xmm4, 25 2641f1e2261SMartin Matuska por xmm4, xmm8 2651f1e2261SMartin Matuska movdqa xmm8, xmm5 2661f1e2261SMartin Matuska psrld xmm8, 7 2671f1e2261SMartin Matuska pslld xmm5, 25 2681f1e2261SMartin Matuska por xmm5, xmm8 2691f1e2261SMartin Matuska movdqa xmm8, xmm6 2701f1e2261SMartin Matuska psrld xmm8, 7 2711f1e2261SMartin Matuska pslld xmm6, 25 2721f1e2261SMartin Matuska por xmm6, xmm8 2731f1e2261SMartin Matuska movdqa xmm8, xmm7 2741f1e2261SMartin Matuska psrld xmm8, 7 2751f1e2261SMartin Matuska pslld xmm7, 25 2761f1e2261SMartin Matuska por xmm7, xmm8 2771f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0x80] 2781f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0xA0] 2791f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0xC0] 2801f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0xE0] 2811f1e2261SMartin Matuska paddd xmm0, xmm5 2821f1e2261SMartin Matuska paddd xmm1, xmm6 2831f1e2261SMartin Matuska paddd xmm2, xmm7 2841f1e2261SMartin Matuska paddd xmm3, xmm4 2851f1e2261SMartin Matuska pxor xmm15, xmm0 2861f1e2261SMartin Matuska pxor xmm12, xmm1 2871f1e2261SMartin Matuska pxor xmm13, xmm2 2881f1e2261SMartin Matuska pxor xmm14, xmm3 2891f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT16+rip] 2901f1e2261SMartin Matuska pshufb xmm15, xmm8 2911f1e2261SMartin Matuska pshufb xmm12, xmm8 2921f1e2261SMartin Matuska pshufb xmm13, xmm8 2931f1e2261SMartin Matuska pshufb xmm14, xmm8 2941f1e2261SMartin Matuska paddd xmm10, xmm15 2951f1e2261SMartin Matuska paddd xmm11, xmm12 2961f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 2971f1e2261SMartin Matuska paddd xmm8, xmm13 2981f1e2261SMartin Matuska paddd xmm9, xmm14 2991f1e2261SMartin Matuska pxor xmm5, xmm10 3001f1e2261SMartin Matuska pxor xmm6, xmm11 3011f1e2261SMartin Matuska pxor xmm7, xmm8 3021f1e2261SMartin Matuska pxor xmm4, xmm9 3031f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 3041f1e2261SMartin Matuska movdqa xmm8, xmm5 3051f1e2261SMartin Matuska psrld xmm8, 12 3061f1e2261SMartin Matuska pslld xmm5, 20 3071f1e2261SMartin Matuska por xmm5, xmm8 3081f1e2261SMartin Matuska movdqa xmm8, xmm6 3091f1e2261SMartin Matuska psrld xmm8, 12 3101f1e2261SMartin Matuska pslld xmm6, 20 3111f1e2261SMartin Matuska por xmm6, xmm8 3121f1e2261SMartin Matuska movdqa xmm8, xmm7 3131f1e2261SMartin Matuska psrld xmm8, 12 3141f1e2261SMartin Matuska pslld xmm7, 20 3151f1e2261SMartin Matuska por xmm7, xmm8 3161f1e2261SMartin Matuska movdqa xmm8, xmm4 3171f1e2261SMartin Matuska psrld xmm8, 12 3181f1e2261SMartin Matuska pslld xmm4, 20 3191f1e2261SMartin Matuska por xmm4, xmm8 3201f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0x90] 3211f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0xB0] 3221f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0xD0] 3231f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0xF0] 3241f1e2261SMartin Matuska paddd xmm0, xmm5 3251f1e2261SMartin Matuska paddd xmm1, xmm6 3261f1e2261SMartin Matuska paddd xmm2, xmm7 3271f1e2261SMartin Matuska paddd xmm3, xmm4 3281f1e2261SMartin Matuska pxor xmm15, xmm0 3291f1e2261SMartin Matuska pxor xmm12, xmm1 3301f1e2261SMartin Matuska pxor xmm13, xmm2 3311f1e2261SMartin Matuska pxor xmm14, xmm3 3321f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT8+rip] 3331f1e2261SMartin Matuska pshufb xmm15, xmm8 3341f1e2261SMartin Matuska pshufb xmm12, xmm8 3351f1e2261SMartin Matuska pshufb xmm13, xmm8 3361f1e2261SMartin Matuska pshufb xmm14, xmm8 3371f1e2261SMartin Matuska paddd xmm10, xmm15 3381f1e2261SMartin Matuska paddd xmm11, xmm12 3391f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 3401f1e2261SMartin Matuska paddd xmm8, xmm13 3411f1e2261SMartin Matuska paddd xmm9, xmm14 3421f1e2261SMartin Matuska pxor xmm5, xmm10 3431f1e2261SMartin Matuska pxor xmm6, xmm11 3441f1e2261SMartin Matuska pxor xmm7, xmm8 3451f1e2261SMartin Matuska pxor xmm4, xmm9 3461f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 3471f1e2261SMartin Matuska movdqa xmm8, xmm5 3481f1e2261SMartin Matuska psrld xmm8, 7 3491f1e2261SMartin Matuska pslld xmm5, 25 3501f1e2261SMartin Matuska por xmm5, xmm8 3511f1e2261SMartin Matuska movdqa xmm8, xmm6 3521f1e2261SMartin Matuska psrld xmm8, 7 3531f1e2261SMartin Matuska pslld xmm6, 25 3541f1e2261SMartin Matuska por xmm6, xmm8 3551f1e2261SMartin Matuska movdqa xmm8, xmm7 3561f1e2261SMartin Matuska psrld xmm8, 7 3571f1e2261SMartin Matuska pslld xmm7, 25 3581f1e2261SMartin Matuska por xmm7, xmm8 3591f1e2261SMartin Matuska movdqa xmm8, xmm4 3601f1e2261SMartin Matuska psrld xmm8, 7 3611f1e2261SMartin Matuska pslld xmm4, 25 3621f1e2261SMartin Matuska por xmm4, xmm8 3631f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0x20] 3641f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0x30] 3651f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0x70] 3661f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x40] 3671f1e2261SMartin Matuska paddd xmm0, xmm4 3681f1e2261SMartin Matuska paddd xmm1, xmm5 3691f1e2261SMartin Matuska paddd xmm2, xmm6 3701f1e2261SMartin Matuska paddd xmm3, xmm7 3711f1e2261SMartin Matuska pxor xmm12, xmm0 3721f1e2261SMartin Matuska pxor xmm13, xmm1 3731f1e2261SMartin Matuska pxor xmm14, xmm2 3741f1e2261SMartin Matuska pxor xmm15, xmm3 3751f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT16+rip] 3761f1e2261SMartin Matuska pshufb xmm12, xmm8 3771f1e2261SMartin Matuska pshufb xmm13, xmm8 3781f1e2261SMartin Matuska pshufb xmm14, xmm8 3791f1e2261SMartin Matuska pshufb xmm15, xmm8 3801f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 3811f1e2261SMartin Matuska paddd xmm8, xmm12 3821f1e2261SMartin Matuska paddd xmm9, xmm13 3831f1e2261SMartin Matuska paddd xmm10, xmm14 3841f1e2261SMartin Matuska paddd xmm11, xmm15 3851f1e2261SMartin Matuska pxor xmm4, xmm8 3861f1e2261SMartin Matuska pxor xmm5, xmm9 3871f1e2261SMartin Matuska pxor xmm6, xmm10 3881f1e2261SMartin Matuska pxor xmm7, xmm11 3891f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 3901f1e2261SMartin Matuska movdqa xmm8, xmm4 3911f1e2261SMartin Matuska psrld xmm8, 12 3921f1e2261SMartin Matuska pslld xmm4, 20 3931f1e2261SMartin Matuska por xmm4, xmm8 3941f1e2261SMartin Matuska movdqa xmm8, xmm5 3951f1e2261SMartin Matuska psrld xmm8, 12 3961f1e2261SMartin Matuska pslld xmm5, 20 3971f1e2261SMartin Matuska por xmm5, xmm8 3981f1e2261SMartin Matuska movdqa xmm8, xmm6 3991f1e2261SMartin Matuska psrld xmm8, 12 4001f1e2261SMartin Matuska pslld xmm6, 20 4011f1e2261SMartin Matuska por xmm6, xmm8 4021f1e2261SMartin Matuska movdqa xmm8, xmm7 4031f1e2261SMartin Matuska psrld xmm8, 12 4041f1e2261SMartin Matuska pslld xmm7, 20 4051f1e2261SMartin Matuska por xmm7, xmm8 4061f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0x60] 4071f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0xA0] 4081f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp] 4091f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0xD0] 4101f1e2261SMartin Matuska paddd xmm0, xmm4 4111f1e2261SMartin Matuska paddd xmm1, xmm5 4121f1e2261SMartin Matuska paddd xmm2, xmm6 4131f1e2261SMartin Matuska paddd xmm3, xmm7 4141f1e2261SMartin Matuska pxor xmm12, xmm0 4151f1e2261SMartin Matuska pxor xmm13, xmm1 4161f1e2261SMartin Matuska pxor xmm14, xmm2 4171f1e2261SMartin Matuska pxor xmm15, xmm3 4181f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT8+rip] 4191f1e2261SMartin Matuska pshufb xmm12, xmm8 4201f1e2261SMartin Matuska pshufb xmm13, xmm8 4211f1e2261SMartin Matuska pshufb xmm14, xmm8 4221f1e2261SMartin Matuska pshufb xmm15, xmm8 4231f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 4241f1e2261SMartin Matuska paddd xmm8, xmm12 4251f1e2261SMartin Matuska paddd xmm9, xmm13 4261f1e2261SMartin Matuska paddd xmm10, xmm14 4271f1e2261SMartin Matuska paddd xmm11, xmm15 4281f1e2261SMartin Matuska pxor xmm4, xmm8 4291f1e2261SMartin Matuska pxor xmm5, xmm9 4301f1e2261SMartin Matuska pxor xmm6, xmm10 4311f1e2261SMartin Matuska pxor xmm7, xmm11 4321f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 4331f1e2261SMartin Matuska movdqa xmm8, xmm4 4341f1e2261SMartin Matuska psrld xmm8, 7 4351f1e2261SMartin Matuska pslld xmm4, 25 4361f1e2261SMartin Matuska por xmm4, xmm8 4371f1e2261SMartin Matuska movdqa xmm8, xmm5 4381f1e2261SMartin Matuska psrld xmm8, 7 4391f1e2261SMartin Matuska pslld xmm5, 25 4401f1e2261SMartin Matuska por xmm5, xmm8 4411f1e2261SMartin Matuska movdqa xmm8, xmm6 4421f1e2261SMartin Matuska psrld xmm8, 7 4431f1e2261SMartin Matuska pslld xmm6, 25 4441f1e2261SMartin Matuska por xmm6, xmm8 4451f1e2261SMartin Matuska movdqa xmm8, xmm7 4461f1e2261SMartin Matuska psrld xmm8, 7 4471f1e2261SMartin Matuska pslld xmm7, 25 4481f1e2261SMartin Matuska por xmm7, xmm8 4491f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0x10] 4501f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0xC0] 4511f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0x90] 4521f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0xF0] 4531f1e2261SMartin Matuska paddd xmm0, xmm5 4541f1e2261SMartin Matuska paddd xmm1, xmm6 4551f1e2261SMartin Matuska paddd xmm2, xmm7 4561f1e2261SMartin Matuska paddd xmm3, xmm4 4571f1e2261SMartin Matuska pxor xmm15, xmm0 4581f1e2261SMartin Matuska pxor xmm12, xmm1 4591f1e2261SMartin Matuska pxor xmm13, xmm2 4601f1e2261SMartin Matuska pxor xmm14, xmm3 4611f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT16+rip] 4621f1e2261SMartin Matuska pshufb xmm15, xmm8 4631f1e2261SMartin Matuska pshufb xmm12, xmm8 4641f1e2261SMartin Matuska pshufb xmm13, xmm8 4651f1e2261SMartin Matuska pshufb xmm14, xmm8 4661f1e2261SMartin Matuska paddd xmm10, xmm15 4671f1e2261SMartin Matuska paddd xmm11, xmm12 4681f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 4691f1e2261SMartin Matuska paddd xmm8, xmm13 4701f1e2261SMartin Matuska paddd xmm9, xmm14 4711f1e2261SMartin Matuska pxor xmm5, xmm10 4721f1e2261SMartin Matuska pxor xmm6, xmm11 4731f1e2261SMartin Matuska pxor xmm7, xmm8 4741f1e2261SMartin Matuska pxor xmm4, xmm9 4751f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 4761f1e2261SMartin Matuska movdqa xmm8, xmm5 4771f1e2261SMartin Matuska psrld xmm8, 12 4781f1e2261SMartin Matuska pslld xmm5, 20 4791f1e2261SMartin Matuska por xmm5, xmm8 4801f1e2261SMartin Matuska movdqa xmm8, xmm6 4811f1e2261SMartin Matuska psrld xmm8, 12 4821f1e2261SMartin Matuska pslld xmm6, 20 4831f1e2261SMartin Matuska por xmm6, xmm8 4841f1e2261SMartin Matuska movdqa xmm8, xmm7 4851f1e2261SMartin Matuska psrld xmm8, 12 4861f1e2261SMartin Matuska pslld xmm7, 20 4871f1e2261SMartin Matuska por xmm7, xmm8 4881f1e2261SMartin Matuska movdqa xmm8, xmm4 4891f1e2261SMartin Matuska psrld xmm8, 12 4901f1e2261SMartin Matuska pslld xmm4, 20 4911f1e2261SMartin Matuska por xmm4, xmm8 4921f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0xB0] 4931f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0x50] 4941f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0xE0] 4951f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x80] 4961f1e2261SMartin Matuska paddd xmm0, xmm5 4971f1e2261SMartin Matuska paddd xmm1, xmm6 4981f1e2261SMartin Matuska paddd xmm2, xmm7 4991f1e2261SMartin Matuska paddd xmm3, xmm4 5001f1e2261SMartin Matuska pxor xmm15, xmm0 5011f1e2261SMartin Matuska pxor xmm12, xmm1 5021f1e2261SMartin Matuska pxor xmm13, xmm2 5031f1e2261SMartin Matuska pxor xmm14, xmm3 5041f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT8+rip] 5051f1e2261SMartin Matuska pshufb xmm15, xmm8 5061f1e2261SMartin Matuska pshufb xmm12, xmm8 5071f1e2261SMartin Matuska pshufb xmm13, xmm8 5081f1e2261SMartin Matuska pshufb xmm14, xmm8 5091f1e2261SMartin Matuska paddd xmm10, xmm15 5101f1e2261SMartin Matuska paddd xmm11, xmm12 5111f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 5121f1e2261SMartin Matuska paddd xmm8, xmm13 5131f1e2261SMartin Matuska paddd xmm9, xmm14 5141f1e2261SMartin Matuska pxor xmm5, xmm10 5151f1e2261SMartin Matuska pxor xmm6, xmm11 5161f1e2261SMartin Matuska pxor xmm7, xmm8 5171f1e2261SMartin Matuska pxor xmm4, xmm9 5181f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 5191f1e2261SMartin Matuska movdqa xmm8, xmm5 5201f1e2261SMartin Matuska psrld xmm8, 7 5211f1e2261SMartin Matuska pslld xmm5, 25 5221f1e2261SMartin Matuska por xmm5, xmm8 5231f1e2261SMartin Matuska movdqa xmm8, xmm6 5241f1e2261SMartin Matuska psrld xmm8, 7 5251f1e2261SMartin Matuska pslld xmm6, 25 5261f1e2261SMartin Matuska por xmm6, xmm8 5271f1e2261SMartin Matuska movdqa xmm8, xmm7 5281f1e2261SMartin Matuska psrld xmm8, 7 5291f1e2261SMartin Matuska pslld xmm7, 25 5301f1e2261SMartin Matuska por xmm7, xmm8 5311f1e2261SMartin Matuska movdqa xmm8, xmm4 5321f1e2261SMartin Matuska psrld xmm8, 7 5331f1e2261SMartin Matuska pslld xmm4, 25 5341f1e2261SMartin Matuska por xmm4, xmm8 5351f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0x30] 5361f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0xA0] 5371f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0xD0] 5381f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x70] 5391f1e2261SMartin Matuska paddd xmm0, xmm4 5401f1e2261SMartin Matuska paddd xmm1, xmm5 5411f1e2261SMartin Matuska paddd xmm2, xmm6 5421f1e2261SMartin Matuska paddd xmm3, xmm7 5431f1e2261SMartin Matuska pxor xmm12, xmm0 5441f1e2261SMartin Matuska pxor xmm13, xmm1 5451f1e2261SMartin Matuska pxor xmm14, xmm2 5461f1e2261SMartin Matuska pxor xmm15, xmm3 5471f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT16+rip] 5481f1e2261SMartin Matuska pshufb xmm12, xmm8 5491f1e2261SMartin Matuska pshufb xmm13, xmm8 5501f1e2261SMartin Matuska pshufb xmm14, xmm8 5511f1e2261SMartin Matuska pshufb xmm15, xmm8 5521f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 5531f1e2261SMartin Matuska paddd xmm8, xmm12 5541f1e2261SMartin Matuska paddd xmm9, xmm13 5551f1e2261SMartin Matuska paddd xmm10, xmm14 5561f1e2261SMartin Matuska paddd xmm11, xmm15 5571f1e2261SMartin Matuska pxor xmm4, xmm8 5581f1e2261SMartin Matuska pxor xmm5, xmm9 5591f1e2261SMartin Matuska pxor xmm6, xmm10 5601f1e2261SMartin Matuska pxor xmm7, xmm11 5611f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 5621f1e2261SMartin Matuska movdqa xmm8, xmm4 5631f1e2261SMartin Matuska psrld xmm8, 12 5641f1e2261SMartin Matuska pslld xmm4, 20 5651f1e2261SMartin Matuska por xmm4, xmm8 5661f1e2261SMartin Matuska movdqa xmm8, xmm5 5671f1e2261SMartin Matuska psrld xmm8, 12 5681f1e2261SMartin Matuska pslld xmm5, 20 5691f1e2261SMartin Matuska por xmm5, xmm8 5701f1e2261SMartin Matuska movdqa xmm8, xmm6 5711f1e2261SMartin Matuska psrld xmm8, 12 5721f1e2261SMartin Matuska pslld xmm6, 20 5731f1e2261SMartin Matuska por xmm6, xmm8 5741f1e2261SMartin Matuska movdqa xmm8, xmm7 5751f1e2261SMartin Matuska psrld xmm8, 12 5761f1e2261SMartin Matuska pslld xmm7, 20 5771f1e2261SMartin Matuska por xmm7, xmm8 5781f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0x40] 5791f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0xC0] 5801f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0x20] 5811f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0xE0] 5821f1e2261SMartin Matuska paddd xmm0, xmm4 5831f1e2261SMartin Matuska paddd xmm1, xmm5 5841f1e2261SMartin Matuska paddd xmm2, xmm6 5851f1e2261SMartin Matuska paddd xmm3, xmm7 5861f1e2261SMartin Matuska pxor xmm12, xmm0 5871f1e2261SMartin Matuska pxor xmm13, xmm1 5881f1e2261SMartin Matuska pxor xmm14, xmm2 5891f1e2261SMartin Matuska pxor xmm15, xmm3 5901f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT8+rip] 5911f1e2261SMartin Matuska pshufb xmm12, xmm8 5921f1e2261SMartin Matuska pshufb xmm13, xmm8 5931f1e2261SMartin Matuska pshufb xmm14, xmm8 5941f1e2261SMartin Matuska pshufb xmm15, xmm8 5951f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 5961f1e2261SMartin Matuska paddd xmm8, xmm12 5971f1e2261SMartin Matuska paddd xmm9, xmm13 5981f1e2261SMartin Matuska paddd xmm10, xmm14 5991f1e2261SMartin Matuska paddd xmm11, xmm15 6001f1e2261SMartin Matuska pxor xmm4, xmm8 6011f1e2261SMartin Matuska pxor xmm5, xmm9 6021f1e2261SMartin Matuska pxor xmm6, xmm10 6031f1e2261SMartin Matuska pxor xmm7, xmm11 6041f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 6051f1e2261SMartin Matuska movdqa xmm8, xmm4 6061f1e2261SMartin Matuska psrld xmm8, 7 6071f1e2261SMartin Matuska pslld xmm4, 25 6081f1e2261SMartin Matuska por xmm4, xmm8 6091f1e2261SMartin Matuska movdqa xmm8, xmm5 6101f1e2261SMartin Matuska psrld xmm8, 7 6111f1e2261SMartin Matuska pslld xmm5, 25 6121f1e2261SMartin Matuska por xmm5, xmm8 6131f1e2261SMartin Matuska movdqa xmm8, xmm6 6141f1e2261SMartin Matuska psrld xmm8, 7 6151f1e2261SMartin Matuska pslld xmm6, 25 6161f1e2261SMartin Matuska por xmm6, xmm8 6171f1e2261SMartin Matuska movdqa xmm8, xmm7 6181f1e2261SMartin Matuska psrld xmm8, 7 6191f1e2261SMartin Matuska pslld xmm7, 25 6201f1e2261SMartin Matuska por xmm7, xmm8 6211f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0x60] 6221f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0x90] 6231f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0xB0] 6241f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x80] 6251f1e2261SMartin Matuska paddd xmm0, xmm5 6261f1e2261SMartin Matuska paddd xmm1, xmm6 6271f1e2261SMartin Matuska paddd xmm2, xmm7 6281f1e2261SMartin Matuska paddd xmm3, xmm4 6291f1e2261SMartin Matuska pxor xmm15, xmm0 6301f1e2261SMartin Matuska pxor xmm12, xmm1 6311f1e2261SMartin Matuska pxor xmm13, xmm2 6321f1e2261SMartin Matuska pxor xmm14, xmm3 6331f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT16+rip] 6341f1e2261SMartin Matuska pshufb xmm15, xmm8 6351f1e2261SMartin Matuska pshufb xmm12, xmm8 6361f1e2261SMartin Matuska pshufb xmm13, xmm8 6371f1e2261SMartin Matuska pshufb xmm14, xmm8 6381f1e2261SMartin Matuska paddd xmm10, xmm15 6391f1e2261SMartin Matuska paddd xmm11, xmm12 6401f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 6411f1e2261SMartin Matuska paddd xmm8, xmm13 6421f1e2261SMartin Matuska paddd xmm9, xmm14 6431f1e2261SMartin Matuska pxor xmm5, xmm10 6441f1e2261SMartin Matuska pxor xmm6, xmm11 6451f1e2261SMartin Matuska pxor xmm7, xmm8 6461f1e2261SMartin Matuska pxor xmm4, xmm9 6471f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 6481f1e2261SMartin Matuska movdqa xmm8, xmm5 6491f1e2261SMartin Matuska psrld xmm8, 12 6501f1e2261SMartin Matuska pslld xmm5, 20 6511f1e2261SMartin Matuska por xmm5, xmm8 6521f1e2261SMartin Matuska movdqa xmm8, xmm6 6531f1e2261SMartin Matuska psrld xmm8, 12 6541f1e2261SMartin Matuska pslld xmm6, 20 6551f1e2261SMartin Matuska por xmm6, xmm8 6561f1e2261SMartin Matuska movdqa xmm8, xmm7 6571f1e2261SMartin Matuska psrld xmm8, 12 6581f1e2261SMartin Matuska pslld xmm7, 20 6591f1e2261SMartin Matuska por xmm7, xmm8 6601f1e2261SMartin Matuska movdqa xmm8, xmm4 6611f1e2261SMartin Matuska psrld xmm8, 12 6621f1e2261SMartin Matuska pslld xmm4, 20 6631f1e2261SMartin Matuska por xmm4, xmm8 6641f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0x50] 6651f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp] 6661f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0xF0] 6671f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x10] 6681f1e2261SMartin Matuska paddd xmm0, xmm5 6691f1e2261SMartin Matuska paddd xmm1, xmm6 6701f1e2261SMartin Matuska paddd xmm2, xmm7 6711f1e2261SMartin Matuska paddd xmm3, xmm4 6721f1e2261SMartin Matuska pxor xmm15, xmm0 6731f1e2261SMartin Matuska pxor xmm12, xmm1 6741f1e2261SMartin Matuska pxor xmm13, xmm2 6751f1e2261SMartin Matuska pxor xmm14, xmm3 6761f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT8+rip] 6771f1e2261SMartin Matuska pshufb xmm15, xmm8 6781f1e2261SMartin Matuska pshufb xmm12, xmm8 6791f1e2261SMartin Matuska pshufb xmm13, xmm8 6801f1e2261SMartin Matuska pshufb xmm14, xmm8 6811f1e2261SMartin Matuska paddd xmm10, xmm15 6821f1e2261SMartin Matuska paddd xmm11, xmm12 6831f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 6841f1e2261SMartin Matuska paddd xmm8, xmm13 6851f1e2261SMartin Matuska paddd xmm9, xmm14 6861f1e2261SMartin Matuska pxor xmm5, xmm10 6871f1e2261SMartin Matuska pxor xmm6, xmm11 6881f1e2261SMartin Matuska pxor xmm7, xmm8 6891f1e2261SMartin Matuska pxor xmm4, xmm9 6901f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 6911f1e2261SMartin Matuska movdqa xmm8, xmm5 6921f1e2261SMartin Matuska psrld xmm8, 7 6931f1e2261SMartin Matuska pslld xmm5, 25 6941f1e2261SMartin Matuska por xmm5, xmm8 6951f1e2261SMartin Matuska movdqa xmm8, xmm6 6961f1e2261SMartin Matuska psrld xmm8, 7 6971f1e2261SMartin Matuska pslld xmm6, 25 6981f1e2261SMartin Matuska por xmm6, xmm8 6991f1e2261SMartin Matuska movdqa xmm8, xmm7 7001f1e2261SMartin Matuska psrld xmm8, 7 7011f1e2261SMartin Matuska pslld xmm7, 25 7021f1e2261SMartin Matuska por xmm7, xmm8 7031f1e2261SMartin Matuska movdqa xmm8, xmm4 7041f1e2261SMartin Matuska psrld xmm8, 7 7051f1e2261SMartin Matuska pslld xmm4, 25 7061f1e2261SMartin Matuska por xmm4, xmm8 7071f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0xA0] 7081f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0xC0] 7091f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0xE0] 7101f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0xD0] 7111f1e2261SMartin Matuska paddd xmm0, xmm4 7121f1e2261SMartin Matuska paddd xmm1, xmm5 7131f1e2261SMartin Matuska paddd xmm2, xmm6 7141f1e2261SMartin Matuska paddd xmm3, xmm7 7151f1e2261SMartin Matuska pxor xmm12, xmm0 7161f1e2261SMartin Matuska pxor xmm13, xmm1 7171f1e2261SMartin Matuska pxor xmm14, xmm2 7181f1e2261SMartin Matuska pxor xmm15, xmm3 7191f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT16+rip] 7201f1e2261SMartin Matuska pshufb xmm12, xmm8 7211f1e2261SMartin Matuska pshufb xmm13, xmm8 7221f1e2261SMartin Matuska pshufb xmm14, xmm8 7231f1e2261SMartin Matuska pshufb xmm15, xmm8 7241f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 7251f1e2261SMartin Matuska paddd xmm8, xmm12 7261f1e2261SMartin Matuska paddd xmm9, xmm13 7271f1e2261SMartin Matuska paddd xmm10, xmm14 7281f1e2261SMartin Matuska paddd xmm11, xmm15 7291f1e2261SMartin Matuska pxor xmm4, xmm8 7301f1e2261SMartin Matuska pxor xmm5, xmm9 7311f1e2261SMartin Matuska pxor xmm6, xmm10 7321f1e2261SMartin Matuska pxor xmm7, xmm11 7331f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 7341f1e2261SMartin Matuska movdqa xmm8, xmm4 7351f1e2261SMartin Matuska psrld xmm8, 12 7361f1e2261SMartin Matuska pslld xmm4, 20 7371f1e2261SMartin Matuska por xmm4, xmm8 7381f1e2261SMartin Matuska movdqa xmm8, xmm5 7391f1e2261SMartin Matuska psrld xmm8, 12 7401f1e2261SMartin Matuska pslld xmm5, 20 7411f1e2261SMartin Matuska por xmm5, xmm8 7421f1e2261SMartin Matuska movdqa xmm8, xmm6 7431f1e2261SMartin Matuska psrld xmm8, 12 7441f1e2261SMartin Matuska pslld xmm6, 20 7451f1e2261SMartin Matuska por xmm6, xmm8 7461f1e2261SMartin Matuska movdqa xmm8, xmm7 7471f1e2261SMartin Matuska psrld xmm8, 12 7481f1e2261SMartin Matuska pslld xmm7, 20 7491f1e2261SMartin Matuska por xmm7, xmm8 7501f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0x70] 7511f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0x90] 7521f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0x30] 7531f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0xF0] 7541f1e2261SMartin Matuska paddd xmm0, xmm4 7551f1e2261SMartin Matuska paddd xmm1, xmm5 7561f1e2261SMartin Matuska paddd xmm2, xmm6 7571f1e2261SMartin Matuska paddd xmm3, xmm7 7581f1e2261SMartin Matuska pxor xmm12, xmm0 7591f1e2261SMartin Matuska pxor xmm13, xmm1 7601f1e2261SMartin Matuska pxor xmm14, xmm2 7611f1e2261SMartin Matuska pxor xmm15, xmm3 7621f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT8+rip] 7631f1e2261SMartin Matuska pshufb xmm12, xmm8 7641f1e2261SMartin Matuska pshufb xmm13, xmm8 7651f1e2261SMartin Matuska pshufb xmm14, xmm8 7661f1e2261SMartin Matuska pshufb xmm15, xmm8 7671f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 7681f1e2261SMartin Matuska paddd xmm8, xmm12 7691f1e2261SMartin Matuska paddd xmm9, xmm13 7701f1e2261SMartin Matuska paddd xmm10, xmm14 7711f1e2261SMartin Matuska paddd xmm11, xmm15 7721f1e2261SMartin Matuska pxor xmm4, xmm8 7731f1e2261SMartin Matuska pxor xmm5, xmm9 7741f1e2261SMartin Matuska pxor xmm6, xmm10 7751f1e2261SMartin Matuska pxor xmm7, xmm11 7761f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 7771f1e2261SMartin Matuska movdqa xmm8, xmm4 7781f1e2261SMartin Matuska psrld xmm8, 7 7791f1e2261SMartin Matuska pslld xmm4, 25 7801f1e2261SMartin Matuska por xmm4, xmm8 7811f1e2261SMartin Matuska movdqa xmm8, xmm5 7821f1e2261SMartin Matuska psrld xmm8, 7 7831f1e2261SMartin Matuska pslld xmm5, 25 7841f1e2261SMartin Matuska por xmm5, xmm8 7851f1e2261SMartin Matuska movdqa xmm8, xmm6 7861f1e2261SMartin Matuska psrld xmm8, 7 7871f1e2261SMartin Matuska pslld xmm6, 25 7881f1e2261SMartin Matuska por xmm6, xmm8 7891f1e2261SMartin Matuska movdqa xmm8, xmm7 7901f1e2261SMartin Matuska psrld xmm8, 7 7911f1e2261SMartin Matuska pslld xmm7, 25 7921f1e2261SMartin Matuska por xmm7, xmm8 7931f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0x40] 7941f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0xB0] 7951f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0x50] 7961f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x10] 7971f1e2261SMartin Matuska paddd xmm0, xmm5 7981f1e2261SMartin Matuska paddd xmm1, xmm6 7991f1e2261SMartin Matuska paddd xmm2, xmm7 8001f1e2261SMartin Matuska paddd xmm3, xmm4 8011f1e2261SMartin Matuska pxor xmm15, xmm0 8021f1e2261SMartin Matuska pxor xmm12, xmm1 8031f1e2261SMartin Matuska pxor xmm13, xmm2 8041f1e2261SMartin Matuska pxor xmm14, xmm3 8051f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT16+rip] 8061f1e2261SMartin Matuska pshufb xmm15, xmm8 8071f1e2261SMartin Matuska pshufb xmm12, xmm8 8081f1e2261SMartin Matuska pshufb xmm13, xmm8 8091f1e2261SMartin Matuska pshufb xmm14, xmm8 8101f1e2261SMartin Matuska paddd xmm10, xmm15 8111f1e2261SMartin Matuska paddd xmm11, xmm12 8121f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 8131f1e2261SMartin Matuska paddd xmm8, xmm13 8141f1e2261SMartin Matuska paddd xmm9, xmm14 8151f1e2261SMartin Matuska pxor xmm5, xmm10 8161f1e2261SMartin Matuska pxor xmm6, xmm11 8171f1e2261SMartin Matuska pxor xmm7, xmm8 8181f1e2261SMartin Matuska pxor xmm4, xmm9 8191f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 8201f1e2261SMartin Matuska movdqa xmm8, xmm5 8211f1e2261SMartin Matuska psrld xmm8, 12 8221f1e2261SMartin Matuska pslld xmm5, 20 8231f1e2261SMartin Matuska por xmm5, xmm8 8241f1e2261SMartin Matuska movdqa xmm8, xmm6 8251f1e2261SMartin Matuska psrld xmm8, 12 8261f1e2261SMartin Matuska pslld xmm6, 20 8271f1e2261SMartin Matuska por xmm6, xmm8 8281f1e2261SMartin Matuska movdqa xmm8, xmm7 8291f1e2261SMartin Matuska psrld xmm8, 12 8301f1e2261SMartin Matuska pslld xmm7, 20 8311f1e2261SMartin Matuska por xmm7, xmm8 8321f1e2261SMartin Matuska movdqa xmm8, xmm4 8331f1e2261SMartin Matuska psrld xmm8, 12 8341f1e2261SMartin Matuska pslld xmm4, 20 8351f1e2261SMartin Matuska por xmm4, xmm8 8361f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp] 8371f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0x20] 8381f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0x80] 8391f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x60] 8401f1e2261SMartin Matuska paddd xmm0, xmm5 8411f1e2261SMartin Matuska paddd xmm1, xmm6 8421f1e2261SMartin Matuska paddd xmm2, xmm7 8431f1e2261SMartin Matuska paddd xmm3, xmm4 8441f1e2261SMartin Matuska pxor xmm15, xmm0 8451f1e2261SMartin Matuska pxor xmm12, xmm1 8461f1e2261SMartin Matuska pxor xmm13, xmm2 8471f1e2261SMartin Matuska pxor xmm14, xmm3 8481f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT8+rip] 8491f1e2261SMartin Matuska pshufb xmm15, xmm8 8501f1e2261SMartin Matuska pshufb xmm12, xmm8 8511f1e2261SMartin Matuska pshufb xmm13, xmm8 8521f1e2261SMartin Matuska pshufb xmm14, xmm8 8531f1e2261SMartin Matuska paddd xmm10, xmm15 8541f1e2261SMartin Matuska paddd xmm11, xmm12 8551f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 8561f1e2261SMartin Matuska paddd xmm8, xmm13 8571f1e2261SMartin Matuska paddd xmm9, xmm14 8581f1e2261SMartin Matuska pxor xmm5, xmm10 8591f1e2261SMartin Matuska pxor xmm6, xmm11 8601f1e2261SMartin Matuska pxor xmm7, xmm8 8611f1e2261SMartin Matuska pxor xmm4, xmm9 8621f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 8631f1e2261SMartin Matuska movdqa xmm8, xmm5 8641f1e2261SMartin Matuska psrld xmm8, 7 8651f1e2261SMartin Matuska pslld xmm5, 25 8661f1e2261SMartin Matuska por xmm5, xmm8 8671f1e2261SMartin Matuska movdqa xmm8, xmm6 8681f1e2261SMartin Matuska psrld xmm8, 7 8691f1e2261SMartin Matuska pslld xmm6, 25 8701f1e2261SMartin Matuska por xmm6, xmm8 8711f1e2261SMartin Matuska movdqa xmm8, xmm7 8721f1e2261SMartin Matuska psrld xmm8, 7 8731f1e2261SMartin Matuska pslld xmm7, 25 8741f1e2261SMartin Matuska por xmm7, xmm8 8751f1e2261SMartin Matuska movdqa xmm8, xmm4 8761f1e2261SMartin Matuska psrld xmm8, 7 8771f1e2261SMartin Matuska pslld xmm4, 25 8781f1e2261SMartin Matuska por xmm4, xmm8 8791f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0xC0] 8801f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0x90] 8811f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0xF0] 8821f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0xE0] 8831f1e2261SMartin Matuska paddd xmm0, xmm4 8841f1e2261SMartin Matuska paddd xmm1, xmm5 8851f1e2261SMartin Matuska paddd xmm2, xmm6 8861f1e2261SMartin Matuska paddd xmm3, xmm7 8871f1e2261SMartin Matuska pxor xmm12, xmm0 8881f1e2261SMartin Matuska pxor xmm13, xmm1 8891f1e2261SMartin Matuska pxor xmm14, xmm2 8901f1e2261SMartin Matuska pxor xmm15, xmm3 8911f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT16+rip] 8921f1e2261SMartin Matuska pshufb xmm12, xmm8 8931f1e2261SMartin Matuska pshufb xmm13, xmm8 8941f1e2261SMartin Matuska pshufb xmm14, xmm8 8951f1e2261SMartin Matuska pshufb xmm15, xmm8 8961f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 8971f1e2261SMartin Matuska paddd xmm8, xmm12 8981f1e2261SMartin Matuska paddd xmm9, xmm13 8991f1e2261SMartin Matuska paddd xmm10, xmm14 9001f1e2261SMartin Matuska paddd xmm11, xmm15 9011f1e2261SMartin Matuska pxor xmm4, xmm8 9021f1e2261SMartin Matuska pxor xmm5, xmm9 9031f1e2261SMartin Matuska pxor xmm6, xmm10 9041f1e2261SMartin Matuska pxor xmm7, xmm11 9051f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 9061f1e2261SMartin Matuska movdqa xmm8, xmm4 9071f1e2261SMartin Matuska psrld xmm8, 12 9081f1e2261SMartin Matuska pslld xmm4, 20 9091f1e2261SMartin Matuska por xmm4, xmm8 9101f1e2261SMartin Matuska movdqa xmm8, xmm5 9111f1e2261SMartin Matuska psrld xmm8, 12 9121f1e2261SMartin Matuska pslld xmm5, 20 9131f1e2261SMartin Matuska por xmm5, xmm8 9141f1e2261SMartin Matuska movdqa xmm8, xmm6 9151f1e2261SMartin Matuska psrld xmm8, 12 9161f1e2261SMartin Matuska pslld xmm6, 20 9171f1e2261SMartin Matuska por xmm6, xmm8 9181f1e2261SMartin Matuska movdqa xmm8, xmm7 9191f1e2261SMartin Matuska psrld xmm8, 12 9201f1e2261SMartin Matuska pslld xmm7, 20 9211f1e2261SMartin Matuska por xmm7, xmm8 9221f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0xD0] 9231f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0xB0] 9241f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0xA0] 9251f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x80] 9261f1e2261SMartin Matuska paddd xmm0, xmm4 9271f1e2261SMartin Matuska paddd xmm1, xmm5 9281f1e2261SMartin Matuska paddd xmm2, xmm6 9291f1e2261SMartin Matuska paddd xmm3, xmm7 9301f1e2261SMartin Matuska pxor xmm12, xmm0 9311f1e2261SMartin Matuska pxor xmm13, xmm1 9321f1e2261SMartin Matuska pxor xmm14, xmm2 9331f1e2261SMartin Matuska pxor xmm15, xmm3 9341f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT8+rip] 9351f1e2261SMartin Matuska pshufb xmm12, xmm8 9361f1e2261SMartin Matuska pshufb xmm13, xmm8 9371f1e2261SMartin Matuska pshufb xmm14, xmm8 9381f1e2261SMartin Matuska pshufb xmm15, xmm8 9391f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 9401f1e2261SMartin Matuska paddd xmm8, xmm12 9411f1e2261SMartin Matuska paddd xmm9, xmm13 9421f1e2261SMartin Matuska paddd xmm10, xmm14 9431f1e2261SMartin Matuska paddd xmm11, xmm15 9441f1e2261SMartin Matuska pxor xmm4, xmm8 9451f1e2261SMartin Matuska pxor xmm5, xmm9 9461f1e2261SMartin Matuska pxor xmm6, xmm10 9471f1e2261SMartin Matuska pxor xmm7, xmm11 9481f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 9491f1e2261SMartin Matuska movdqa xmm8, xmm4 9501f1e2261SMartin Matuska psrld xmm8, 7 9511f1e2261SMartin Matuska pslld xmm4, 25 9521f1e2261SMartin Matuska por xmm4, xmm8 9531f1e2261SMartin Matuska movdqa xmm8, xmm5 9541f1e2261SMartin Matuska psrld xmm8, 7 9551f1e2261SMartin Matuska pslld xmm5, 25 9561f1e2261SMartin Matuska por xmm5, xmm8 9571f1e2261SMartin Matuska movdqa xmm8, xmm6 9581f1e2261SMartin Matuska psrld xmm8, 7 9591f1e2261SMartin Matuska pslld xmm6, 25 9601f1e2261SMartin Matuska por xmm6, xmm8 9611f1e2261SMartin Matuska movdqa xmm8, xmm7 9621f1e2261SMartin Matuska psrld xmm8, 7 9631f1e2261SMartin Matuska pslld xmm7, 25 9641f1e2261SMartin Matuska por xmm7, xmm8 9651f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0x70] 9661f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0x50] 9671f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp] 9681f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x60] 9691f1e2261SMartin Matuska paddd xmm0, xmm5 9701f1e2261SMartin Matuska paddd xmm1, xmm6 9711f1e2261SMartin Matuska paddd xmm2, xmm7 9721f1e2261SMartin Matuska paddd xmm3, xmm4 9731f1e2261SMartin Matuska pxor xmm15, xmm0 9741f1e2261SMartin Matuska pxor xmm12, xmm1 9751f1e2261SMartin Matuska pxor xmm13, xmm2 9761f1e2261SMartin Matuska pxor xmm14, xmm3 9771f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT16+rip] 9781f1e2261SMartin Matuska pshufb xmm15, xmm8 9791f1e2261SMartin Matuska pshufb xmm12, xmm8 9801f1e2261SMartin Matuska pshufb xmm13, xmm8 9811f1e2261SMartin Matuska pshufb xmm14, xmm8 9821f1e2261SMartin Matuska paddd xmm10, xmm15 9831f1e2261SMartin Matuska paddd xmm11, xmm12 9841f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 9851f1e2261SMartin Matuska paddd xmm8, xmm13 9861f1e2261SMartin Matuska paddd xmm9, xmm14 9871f1e2261SMartin Matuska pxor xmm5, xmm10 9881f1e2261SMartin Matuska pxor xmm6, xmm11 9891f1e2261SMartin Matuska pxor xmm7, xmm8 9901f1e2261SMartin Matuska pxor xmm4, xmm9 9911f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 9921f1e2261SMartin Matuska movdqa xmm8, xmm5 9931f1e2261SMartin Matuska psrld xmm8, 12 9941f1e2261SMartin Matuska pslld xmm5, 20 9951f1e2261SMartin Matuska por xmm5, xmm8 9961f1e2261SMartin Matuska movdqa xmm8, xmm6 9971f1e2261SMartin Matuska psrld xmm8, 12 9981f1e2261SMartin Matuska pslld xmm6, 20 9991f1e2261SMartin Matuska por xmm6, xmm8 10001f1e2261SMartin Matuska movdqa xmm8, xmm7 10011f1e2261SMartin Matuska psrld xmm8, 12 10021f1e2261SMartin Matuska pslld xmm7, 20 10031f1e2261SMartin Matuska por xmm7, xmm8 10041f1e2261SMartin Matuska movdqa xmm8, xmm4 10051f1e2261SMartin Matuska psrld xmm8, 12 10061f1e2261SMartin Matuska pslld xmm4, 20 10071f1e2261SMartin Matuska por xmm4, xmm8 10081f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0x20] 10091f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0x30] 10101f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0x10] 10111f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x40] 10121f1e2261SMartin Matuska paddd xmm0, xmm5 10131f1e2261SMartin Matuska paddd xmm1, xmm6 10141f1e2261SMartin Matuska paddd xmm2, xmm7 10151f1e2261SMartin Matuska paddd xmm3, xmm4 10161f1e2261SMartin Matuska pxor xmm15, xmm0 10171f1e2261SMartin Matuska pxor xmm12, xmm1 10181f1e2261SMartin Matuska pxor xmm13, xmm2 10191f1e2261SMartin Matuska pxor xmm14, xmm3 10201f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT8+rip] 10211f1e2261SMartin Matuska pshufb xmm15, xmm8 10221f1e2261SMartin Matuska pshufb xmm12, xmm8 10231f1e2261SMartin Matuska pshufb xmm13, xmm8 10241f1e2261SMartin Matuska pshufb xmm14, xmm8 10251f1e2261SMartin Matuska paddd xmm10, xmm15 10261f1e2261SMartin Matuska paddd xmm11, xmm12 10271f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 10281f1e2261SMartin Matuska paddd xmm8, xmm13 10291f1e2261SMartin Matuska paddd xmm9, xmm14 10301f1e2261SMartin Matuska pxor xmm5, xmm10 10311f1e2261SMartin Matuska pxor xmm6, xmm11 10321f1e2261SMartin Matuska pxor xmm7, xmm8 10331f1e2261SMartin Matuska pxor xmm4, xmm9 10341f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 10351f1e2261SMartin Matuska movdqa xmm8, xmm5 10361f1e2261SMartin Matuska psrld xmm8, 7 10371f1e2261SMartin Matuska pslld xmm5, 25 10381f1e2261SMartin Matuska por xmm5, xmm8 10391f1e2261SMartin Matuska movdqa xmm8, xmm6 10401f1e2261SMartin Matuska psrld xmm8, 7 10411f1e2261SMartin Matuska pslld xmm6, 25 10421f1e2261SMartin Matuska por xmm6, xmm8 10431f1e2261SMartin Matuska movdqa xmm8, xmm7 10441f1e2261SMartin Matuska psrld xmm8, 7 10451f1e2261SMartin Matuska pslld xmm7, 25 10461f1e2261SMartin Matuska por xmm7, xmm8 10471f1e2261SMartin Matuska movdqa xmm8, xmm4 10481f1e2261SMartin Matuska psrld xmm8, 7 10491f1e2261SMartin Matuska pslld xmm4, 25 10501f1e2261SMartin Matuska por xmm4, xmm8 10511f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0x90] 10521f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0xB0] 10531f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0x80] 10541f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0xF0] 10551f1e2261SMartin Matuska paddd xmm0, xmm4 10561f1e2261SMartin Matuska paddd xmm1, xmm5 10571f1e2261SMartin Matuska paddd xmm2, xmm6 10581f1e2261SMartin Matuska paddd xmm3, xmm7 10591f1e2261SMartin Matuska pxor xmm12, xmm0 10601f1e2261SMartin Matuska pxor xmm13, xmm1 10611f1e2261SMartin Matuska pxor xmm14, xmm2 10621f1e2261SMartin Matuska pxor xmm15, xmm3 10631f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT16+rip] 10641f1e2261SMartin Matuska pshufb xmm12, xmm8 10651f1e2261SMartin Matuska pshufb xmm13, xmm8 10661f1e2261SMartin Matuska pshufb xmm14, xmm8 10671f1e2261SMartin Matuska pshufb xmm15, xmm8 10681f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 10691f1e2261SMartin Matuska paddd xmm8, xmm12 10701f1e2261SMartin Matuska paddd xmm9, xmm13 10711f1e2261SMartin Matuska paddd xmm10, xmm14 10721f1e2261SMartin Matuska paddd xmm11, xmm15 10731f1e2261SMartin Matuska pxor xmm4, xmm8 10741f1e2261SMartin Matuska pxor xmm5, xmm9 10751f1e2261SMartin Matuska pxor xmm6, xmm10 10761f1e2261SMartin Matuska pxor xmm7, xmm11 10771f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 10781f1e2261SMartin Matuska movdqa xmm8, xmm4 10791f1e2261SMartin Matuska psrld xmm8, 12 10801f1e2261SMartin Matuska pslld xmm4, 20 10811f1e2261SMartin Matuska por xmm4, xmm8 10821f1e2261SMartin Matuska movdqa xmm8, xmm5 10831f1e2261SMartin Matuska psrld xmm8, 12 10841f1e2261SMartin Matuska pslld xmm5, 20 10851f1e2261SMartin Matuska por xmm5, xmm8 10861f1e2261SMartin Matuska movdqa xmm8, xmm6 10871f1e2261SMartin Matuska psrld xmm8, 12 10881f1e2261SMartin Matuska pslld xmm6, 20 10891f1e2261SMartin Matuska por xmm6, xmm8 10901f1e2261SMartin Matuska movdqa xmm8, xmm7 10911f1e2261SMartin Matuska psrld xmm8, 12 10921f1e2261SMartin Matuska pslld xmm7, 20 10931f1e2261SMartin Matuska por xmm7, xmm8 10941f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0xE0] 10951f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0x50] 10961f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0xC0] 10971f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x10] 10981f1e2261SMartin Matuska paddd xmm0, xmm4 10991f1e2261SMartin Matuska paddd xmm1, xmm5 11001f1e2261SMartin Matuska paddd xmm2, xmm6 11011f1e2261SMartin Matuska paddd xmm3, xmm7 11021f1e2261SMartin Matuska pxor xmm12, xmm0 11031f1e2261SMartin Matuska pxor xmm13, xmm1 11041f1e2261SMartin Matuska pxor xmm14, xmm2 11051f1e2261SMartin Matuska pxor xmm15, xmm3 11061f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT8+rip] 11071f1e2261SMartin Matuska pshufb xmm12, xmm8 11081f1e2261SMartin Matuska pshufb xmm13, xmm8 11091f1e2261SMartin Matuska pshufb xmm14, xmm8 11101f1e2261SMartin Matuska pshufb xmm15, xmm8 11111f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 11121f1e2261SMartin Matuska paddd xmm8, xmm12 11131f1e2261SMartin Matuska paddd xmm9, xmm13 11141f1e2261SMartin Matuska paddd xmm10, xmm14 11151f1e2261SMartin Matuska paddd xmm11, xmm15 11161f1e2261SMartin Matuska pxor xmm4, xmm8 11171f1e2261SMartin Matuska pxor xmm5, xmm9 11181f1e2261SMartin Matuska pxor xmm6, xmm10 11191f1e2261SMartin Matuska pxor xmm7, xmm11 11201f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 11211f1e2261SMartin Matuska movdqa xmm8, xmm4 11221f1e2261SMartin Matuska psrld xmm8, 7 11231f1e2261SMartin Matuska pslld xmm4, 25 11241f1e2261SMartin Matuska por xmm4, xmm8 11251f1e2261SMartin Matuska movdqa xmm8, xmm5 11261f1e2261SMartin Matuska psrld xmm8, 7 11271f1e2261SMartin Matuska pslld xmm5, 25 11281f1e2261SMartin Matuska por xmm5, xmm8 11291f1e2261SMartin Matuska movdqa xmm8, xmm6 11301f1e2261SMartin Matuska psrld xmm8, 7 11311f1e2261SMartin Matuska pslld xmm6, 25 11321f1e2261SMartin Matuska por xmm6, xmm8 11331f1e2261SMartin Matuska movdqa xmm8, xmm7 11341f1e2261SMartin Matuska psrld xmm8, 7 11351f1e2261SMartin Matuska pslld xmm7, 25 11361f1e2261SMartin Matuska por xmm7, xmm8 11371f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0xD0] 11381f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp] 11391f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0x20] 11401f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x40] 11411f1e2261SMartin Matuska paddd xmm0, xmm5 11421f1e2261SMartin Matuska paddd xmm1, xmm6 11431f1e2261SMartin Matuska paddd xmm2, xmm7 11441f1e2261SMartin Matuska paddd xmm3, xmm4 11451f1e2261SMartin Matuska pxor xmm15, xmm0 11461f1e2261SMartin Matuska pxor xmm12, xmm1 11471f1e2261SMartin Matuska pxor xmm13, xmm2 11481f1e2261SMartin Matuska pxor xmm14, xmm3 11491f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT16+rip] 11501f1e2261SMartin Matuska pshufb xmm15, xmm8 11511f1e2261SMartin Matuska pshufb xmm12, xmm8 11521f1e2261SMartin Matuska pshufb xmm13, xmm8 11531f1e2261SMartin Matuska pshufb xmm14, xmm8 11541f1e2261SMartin Matuska paddd xmm10, xmm15 11551f1e2261SMartin Matuska paddd xmm11, xmm12 11561f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 11571f1e2261SMartin Matuska paddd xmm8, xmm13 11581f1e2261SMartin Matuska paddd xmm9, xmm14 11591f1e2261SMartin Matuska pxor xmm5, xmm10 11601f1e2261SMartin Matuska pxor xmm6, xmm11 11611f1e2261SMartin Matuska pxor xmm7, xmm8 11621f1e2261SMartin Matuska pxor xmm4, xmm9 11631f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 11641f1e2261SMartin Matuska movdqa xmm8, xmm5 11651f1e2261SMartin Matuska psrld xmm8, 12 11661f1e2261SMartin Matuska pslld xmm5, 20 11671f1e2261SMartin Matuska por xmm5, xmm8 11681f1e2261SMartin Matuska movdqa xmm8, xmm6 11691f1e2261SMartin Matuska psrld xmm8, 12 11701f1e2261SMartin Matuska pslld xmm6, 20 11711f1e2261SMartin Matuska por xmm6, xmm8 11721f1e2261SMartin Matuska movdqa xmm8, xmm7 11731f1e2261SMartin Matuska psrld xmm8, 12 11741f1e2261SMartin Matuska pslld xmm7, 20 11751f1e2261SMartin Matuska por xmm7, xmm8 11761f1e2261SMartin Matuska movdqa xmm8, xmm4 11771f1e2261SMartin Matuska psrld xmm8, 12 11781f1e2261SMartin Matuska pslld xmm4, 20 11791f1e2261SMartin Matuska por xmm4, xmm8 11801f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0x30] 11811f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0xA0] 11821f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0x60] 11831f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x70] 11841f1e2261SMartin Matuska paddd xmm0, xmm5 11851f1e2261SMartin Matuska paddd xmm1, xmm6 11861f1e2261SMartin Matuska paddd xmm2, xmm7 11871f1e2261SMartin Matuska paddd xmm3, xmm4 11881f1e2261SMartin Matuska pxor xmm15, xmm0 11891f1e2261SMartin Matuska pxor xmm12, xmm1 11901f1e2261SMartin Matuska pxor xmm13, xmm2 11911f1e2261SMartin Matuska pxor xmm14, xmm3 11921f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT8+rip] 11931f1e2261SMartin Matuska pshufb xmm15, xmm8 11941f1e2261SMartin Matuska pshufb xmm12, xmm8 11951f1e2261SMartin Matuska pshufb xmm13, xmm8 11961f1e2261SMartin Matuska pshufb xmm14, xmm8 11971f1e2261SMartin Matuska paddd xmm10, xmm15 11981f1e2261SMartin Matuska paddd xmm11, xmm12 11991f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 12001f1e2261SMartin Matuska paddd xmm8, xmm13 12011f1e2261SMartin Matuska paddd xmm9, xmm14 12021f1e2261SMartin Matuska pxor xmm5, xmm10 12031f1e2261SMartin Matuska pxor xmm6, xmm11 12041f1e2261SMartin Matuska pxor xmm7, xmm8 12051f1e2261SMartin Matuska pxor xmm4, xmm9 12061f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 12071f1e2261SMartin Matuska movdqa xmm8, xmm5 12081f1e2261SMartin Matuska psrld xmm8, 7 12091f1e2261SMartin Matuska pslld xmm5, 25 12101f1e2261SMartin Matuska por xmm5, xmm8 12111f1e2261SMartin Matuska movdqa xmm8, xmm6 12121f1e2261SMartin Matuska psrld xmm8, 7 12131f1e2261SMartin Matuska pslld xmm6, 25 12141f1e2261SMartin Matuska por xmm6, xmm8 12151f1e2261SMartin Matuska movdqa xmm8, xmm7 12161f1e2261SMartin Matuska psrld xmm8, 7 12171f1e2261SMartin Matuska pslld xmm7, 25 12181f1e2261SMartin Matuska por xmm7, xmm8 12191f1e2261SMartin Matuska movdqa xmm8, xmm4 12201f1e2261SMartin Matuska psrld xmm8, 7 12211f1e2261SMartin Matuska pslld xmm4, 25 12221f1e2261SMartin Matuska por xmm4, xmm8 12231f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0xB0] 12241f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0x50] 12251f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0x10] 12261f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x80] 12271f1e2261SMartin Matuska paddd xmm0, xmm4 12281f1e2261SMartin Matuska paddd xmm1, xmm5 12291f1e2261SMartin Matuska paddd xmm2, xmm6 12301f1e2261SMartin Matuska paddd xmm3, xmm7 12311f1e2261SMartin Matuska pxor xmm12, xmm0 12321f1e2261SMartin Matuska pxor xmm13, xmm1 12331f1e2261SMartin Matuska pxor xmm14, xmm2 12341f1e2261SMartin Matuska pxor xmm15, xmm3 12351f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT16+rip] 12361f1e2261SMartin Matuska pshufb xmm12, xmm8 12371f1e2261SMartin Matuska pshufb xmm13, xmm8 12381f1e2261SMartin Matuska pshufb xmm14, xmm8 12391f1e2261SMartin Matuska pshufb xmm15, xmm8 12401f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 12411f1e2261SMartin Matuska paddd xmm8, xmm12 12421f1e2261SMartin Matuska paddd xmm9, xmm13 12431f1e2261SMartin Matuska paddd xmm10, xmm14 12441f1e2261SMartin Matuska paddd xmm11, xmm15 12451f1e2261SMartin Matuska pxor xmm4, xmm8 12461f1e2261SMartin Matuska pxor xmm5, xmm9 12471f1e2261SMartin Matuska pxor xmm6, xmm10 12481f1e2261SMartin Matuska pxor xmm7, xmm11 12491f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 12501f1e2261SMartin Matuska movdqa xmm8, xmm4 12511f1e2261SMartin Matuska psrld xmm8, 12 12521f1e2261SMartin Matuska pslld xmm4, 20 12531f1e2261SMartin Matuska por xmm4, xmm8 12541f1e2261SMartin Matuska movdqa xmm8, xmm5 12551f1e2261SMartin Matuska psrld xmm8, 12 12561f1e2261SMartin Matuska pslld xmm5, 20 12571f1e2261SMartin Matuska por xmm5, xmm8 12581f1e2261SMartin Matuska movdqa xmm8, xmm6 12591f1e2261SMartin Matuska psrld xmm8, 12 12601f1e2261SMartin Matuska pslld xmm6, 20 12611f1e2261SMartin Matuska por xmm6, xmm8 12621f1e2261SMartin Matuska movdqa xmm8, xmm7 12631f1e2261SMartin Matuska psrld xmm8, 12 12641f1e2261SMartin Matuska pslld xmm7, 20 12651f1e2261SMartin Matuska por xmm7, xmm8 12661f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0xF0] 12671f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp] 12681f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0x90] 12691f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x60] 12701f1e2261SMartin Matuska paddd xmm0, xmm4 12711f1e2261SMartin Matuska paddd xmm1, xmm5 12721f1e2261SMartin Matuska paddd xmm2, xmm6 12731f1e2261SMartin Matuska paddd xmm3, xmm7 12741f1e2261SMartin Matuska pxor xmm12, xmm0 12751f1e2261SMartin Matuska pxor xmm13, xmm1 12761f1e2261SMartin Matuska pxor xmm14, xmm2 12771f1e2261SMartin Matuska pxor xmm15, xmm3 12781f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT8+rip] 12791f1e2261SMartin Matuska pshufb xmm12, xmm8 12801f1e2261SMartin Matuska pshufb xmm13, xmm8 12811f1e2261SMartin Matuska pshufb xmm14, xmm8 12821f1e2261SMartin Matuska pshufb xmm15, xmm8 12831f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 12841f1e2261SMartin Matuska paddd xmm8, xmm12 12851f1e2261SMartin Matuska paddd xmm9, xmm13 12861f1e2261SMartin Matuska paddd xmm10, xmm14 12871f1e2261SMartin Matuska paddd xmm11, xmm15 12881f1e2261SMartin Matuska pxor xmm4, xmm8 12891f1e2261SMartin Matuska pxor xmm5, xmm9 12901f1e2261SMartin Matuska pxor xmm6, xmm10 12911f1e2261SMartin Matuska pxor xmm7, xmm11 12921f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 12931f1e2261SMartin Matuska movdqa xmm8, xmm4 12941f1e2261SMartin Matuska psrld xmm8, 7 12951f1e2261SMartin Matuska pslld xmm4, 25 12961f1e2261SMartin Matuska por xmm4, xmm8 12971f1e2261SMartin Matuska movdqa xmm8, xmm5 12981f1e2261SMartin Matuska psrld xmm8, 7 12991f1e2261SMartin Matuska pslld xmm5, 25 13001f1e2261SMartin Matuska por xmm5, xmm8 13011f1e2261SMartin Matuska movdqa xmm8, xmm6 13021f1e2261SMartin Matuska psrld xmm8, 7 13031f1e2261SMartin Matuska pslld xmm6, 25 13041f1e2261SMartin Matuska por xmm6, xmm8 13051f1e2261SMartin Matuska movdqa xmm8, xmm7 13061f1e2261SMartin Matuska psrld xmm8, 7 13071f1e2261SMartin Matuska pslld xmm7, 25 13081f1e2261SMartin Matuska por xmm7, xmm8 13091f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0xE0] 13101f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0x20] 13111f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0x30] 13121f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0x70] 13131f1e2261SMartin Matuska paddd xmm0, xmm5 13141f1e2261SMartin Matuska paddd xmm1, xmm6 13151f1e2261SMartin Matuska paddd xmm2, xmm7 13161f1e2261SMartin Matuska paddd xmm3, xmm4 13171f1e2261SMartin Matuska pxor xmm15, xmm0 13181f1e2261SMartin Matuska pxor xmm12, xmm1 13191f1e2261SMartin Matuska pxor xmm13, xmm2 13201f1e2261SMartin Matuska pxor xmm14, xmm3 13211f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT16+rip] 13221f1e2261SMartin Matuska pshufb xmm15, xmm8 13231f1e2261SMartin Matuska pshufb xmm12, xmm8 13241f1e2261SMartin Matuska pshufb xmm13, xmm8 13251f1e2261SMartin Matuska pshufb xmm14, xmm8 13261f1e2261SMartin Matuska paddd xmm10, xmm15 13271f1e2261SMartin Matuska paddd xmm11, xmm12 13281f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 13291f1e2261SMartin Matuska paddd xmm8, xmm13 13301f1e2261SMartin Matuska paddd xmm9, xmm14 13311f1e2261SMartin Matuska pxor xmm5, xmm10 13321f1e2261SMartin Matuska pxor xmm6, xmm11 13331f1e2261SMartin Matuska pxor xmm7, xmm8 13341f1e2261SMartin Matuska pxor xmm4, xmm9 13351f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x100], xmm8 13361f1e2261SMartin Matuska movdqa xmm8, xmm5 13371f1e2261SMartin Matuska psrld xmm8, 12 13381f1e2261SMartin Matuska pslld xmm5, 20 13391f1e2261SMartin Matuska por xmm5, xmm8 13401f1e2261SMartin Matuska movdqa xmm8, xmm6 13411f1e2261SMartin Matuska psrld xmm8, 12 13421f1e2261SMartin Matuska pslld xmm6, 20 13431f1e2261SMartin Matuska por xmm6, xmm8 13441f1e2261SMartin Matuska movdqa xmm8, xmm7 13451f1e2261SMartin Matuska psrld xmm8, 12 13461f1e2261SMartin Matuska pslld xmm7, 20 13471f1e2261SMartin Matuska por xmm7, xmm8 13481f1e2261SMartin Matuska movdqa xmm8, xmm4 13491f1e2261SMartin Matuska psrld xmm8, 12 13501f1e2261SMartin Matuska pslld xmm4, 20 13511f1e2261SMartin Matuska por xmm4, xmm8 13521f1e2261SMartin Matuska paddd xmm0, xmmword ptr [rsp+0xA0] 13531f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0xC0] 13541f1e2261SMartin Matuska paddd xmm2, xmmword ptr [rsp+0x40] 13551f1e2261SMartin Matuska paddd xmm3, xmmword ptr [rsp+0xD0] 13561f1e2261SMartin Matuska paddd xmm0, xmm5 13571f1e2261SMartin Matuska paddd xmm1, xmm6 13581f1e2261SMartin Matuska paddd xmm2, xmm7 13591f1e2261SMartin Matuska paddd xmm3, xmm4 13601f1e2261SMartin Matuska pxor xmm15, xmm0 13611f1e2261SMartin Matuska pxor xmm12, xmm1 13621f1e2261SMartin Matuska pxor xmm13, xmm2 13631f1e2261SMartin Matuska pxor xmm14, xmm3 13641f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [ROT8+rip] 13651f1e2261SMartin Matuska pshufb xmm15, xmm8 13661f1e2261SMartin Matuska pshufb xmm12, xmm8 13671f1e2261SMartin Matuska pshufb xmm13, xmm8 13681f1e2261SMartin Matuska pshufb xmm14, xmm8 13691f1e2261SMartin Matuska paddd xmm10, xmm15 13701f1e2261SMartin Matuska paddd xmm11, xmm12 13711f1e2261SMartin Matuska movdqa xmm8, xmmword ptr [rsp+0x100] 13721f1e2261SMartin Matuska paddd xmm8, xmm13 13731f1e2261SMartin Matuska paddd xmm9, xmm14 13741f1e2261SMartin Matuska pxor xmm5, xmm10 13751f1e2261SMartin Matuska pxor xmm6, xmm11 13761f1e2261SMartin Matuska pxor xmm7, xmm8 13771f1e2261SMartin Matuska pxor xmm4, xmm9 13781f1e2261SMartin Matuska pxor xmm0, xmm8 13791f1e2261SMartin Matuska pxor xmm1, xmm9 13801f1e2261SMartin Matuska pxor xmm2, xmm10 13811f1e2261SMartin Matuska pxor xmm3, xmm11 13821f1e2261SMartin Matuska movdqa xmm8, xmm5 13831f1e2261SMartin Matuska psrld xmm8, 7 13841f1e2261SMartin Matuska pslld xmm5, 25 13851f1e2261SMartin Matuska por xmm5, xmm8 13861f1e2261SMartin Matuska movdqa xmm8, xmm6 13871f1e2261SMartin Matuska psrld xmm8, 7 13881f1e2261SMartin Matuska pslld xmm6, 25 13891f1e2261SMartin Matuska por xmm6, xmm8 13901f1e2261SMartin Matuska movdqa xmm8, xmm7 13911f1e2261SMartin Matuska psrld xmm8, 7 13921f1e2261SMartin Matuska pslld xmm7, 25 13931f1e2261SMartin Matuska por xmm7, xmm8 13941f1e2261SMartin Matuska movdqa xmm8, xmm4 13951f1e2261SMartin Matuska psrld xmm8, 7 13961f1e2261SMartin Matuska pslld xmm4, 25 13971f1e2261SMartin Matuska por xmm4, xmm8 13981f1e2261SMartin Matuska pxor xmm4, xmm12 13991f1e2261SMartin Matuska pxor xmm5, xmm13 14001f1e2261SMartin Matuska pxor xmm6, xmm14 14011f1e2261SMartin Matuska pxor xmm7, xmm15 14021f1e2261SMartin Matuska mov eax, r13d 14031f1e2261SMartin Matuska jne 9b 14041f1e2261SMartin Matuska movdqa xmm9, xmm0 14051f1e2261SMartin Matuska punpckldq xmm0, xmm1 14061f1e2261SMartin Matuska punpckhdq xmm9, xmm1 14071f1e2261SMartin Matuska movdqa xmm11, xmm2 14081f1e2261SMartin Matuska punpckldq xmm2, xmm3 14091f1e2261SMartin Matuska punpckhdq xmm11, xmm3 14101f1e2261SMartin Matuska movdqa xmm1, xmm0 14111f1e2261SMartin Matuska punpcklqdq xmm0, xmm2 14121f1e2261SMartin Matuska punpckhqdq xmm1, xmm2 14131f1e2261SMartin Matuska movdqa xmm3, xmm9 14141f1e2261SMartin Matuska punpcklqdq xmm9, xmm11 14151f1e2261SMartin Matuska punpckhqdq xmm3, xmm11 14161f1e2261SMartin Matuska movdqu xmmword ptr [rbx], xmm0 14171f1e2261SMartin Matuska movdqu xmmword ptr [rbx+0x20], xmm1 14181f1e2261SMartin Matuska movdqu xmmword ptr [rbx+0x40], xmm9 14191f1e2261SMartin Matuska movdqu xmmword ptr [rbx+0x60], xmm3 14201f1e2261SMartin Matuska movdqa xmm9, xmm4 14211f1e2261SMartin Matuska punpckldq xmm4, xmm5 14221f1e2261SMartin Matuska punpckhdq xmm9, xmm5 14231f1e2261SMartin Matuska movdqa xmm11, xmm6 14241f1e2261SMartin Matuska punpckldq xmm6, xmm7 14251f1e2261SMartin Matuska punpckhdq xmm11, xmm7 14261f1e2261SMartin Matuska movdqa xmm5, xmm4 14271f1e2261SMartin Matuska punpcklqdq xmm4, xmm6 14281f1e2261SMartin Matuska punpckhqdq xmm5, xmm6 14291f1e2261SMartin Matuska movdqa xmm7, xmm9 14301f1e2261SMartin Matuska punpcklqdq xmm9, xmm11 14311f1e2261SMartin Matuska punpckhqdq xmm7, xmm11 14321f1e2261SMartin Matuska movdqu xmmword ptr [rbx+0x10], xmm4 14331f1e2261SMartin Matuska movdqu xmmword ptr [rbx+0x30], xmm5 14341f1e2261SMartin Matuska movdqu xmmword ptr [rbx+0x50], xmm9 14351f1e2261SMartin Matuska movdqu xmmword ptr [rbx+0x70], xmm7 14361f1e2261SMartin Matuska movdqa xmm1, xmmword ptr [rsp+0x110] 14371f1e2261SMartin Matuska movdqa xmm0, xmm1 14381f1e2261SMartin Matuska paddd xmm1, xmmword ptr [rsp+0x150] 14391f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x110], xmm1 14401f1e2261SMartin Matuska pxor xmm0, xmmword ptr [CMP_MSB_MASK+rip] 14411f1e2261SMartin Matuska pxor xmm1, xmmword ptr [CMP_MSB_MASK+rip] 14421f1e2261SMartin Matuska pcmpgtd xmm0, xmm1 14431f1e2261SMartin Matuska movdqa xmm1, xmmword ptr [rsp+0x120] 14441f1e2261SMartin Matuska psubd xmm1, xmm0 14451f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x120], xmm1 14461f1e2261SMartin Matuska add rbx, 128 14471f1e2261SMartin Matuska add rdi, 32 14481f1e2261SMartin Matuska sub rsi, 4 14491f1e2261SMartin Matuska cmp rsi, 4 14501f1e2261SMartin Matuska jnc 2b 14511f1e2261SMartin Matuska test rsi, rsi 14521f1e2261SMartin Matuska jnz 3f 14531f1e2261SMartin Matuska4: 14541f1e2261SMartin Matuska mov rsp, rbp 14551f1e2261SMartin Matuska pop rbp 14561f1e2261SMartin Matuska pop rbx 14571f1e2261SMartin Matuska pop r12 14581f1e2261SMartin Matuska pop r13 14591f1e2261SMartin Matuska pop r14 14601f1e2261SMartin Matuska pop r15 1461a0b956f5SMartin Matuska RET 14621f1e2261SMartin Matuska.p2align 5 14631f1e2261SMartin Matuska3: 14641f1e2261SMartin Matuska test esi, 0x2 14651f1e2261SMartin Matuska je 3f 14661f1e2261SMartin Matuska movups xmm0, xmmword ptr [rcx] 14671f1e2261SMartin Matuska movups xmm1, xmmword ptr [rcx+0x10] 14681f1e2261SMartin Matuska movaps xmm8, xmm0 14691f1e2261SMartin Matuska movaps xmm9, xmm1 14701f1e2261SMartin Matuska movd xmm13, dword ptr [rsp+0x110] 14711f1e2261SMartin Matuska pinsrd xmm13, dword ptr [rsp+0x120], 1 14721f1e2261SMartin Matuska pinsrd xmm13, dword ptr [BLAKE3_BLOCK_LEN+rip], 2 14731f1e2261SMartin Matuska movaps xmmword ptr [rsp], xmm13 14741f1e2261SMartin Matuska movd xmm14, dword ptr [rsp+0x114] 14751f1e2261SMartin Matuska pinsrd xmm14, dword ptr [rsp+0x124], 1 14761f1e2261SMartin Matuska pinsrd xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2 14771f1e2261SMartin Matuska movaps xmmword ptr [rsp+0x10], xmm14 14781f1e2261SMartin Matuska mov r8, qword ptr [rdi] 14791f1e2261SMartin Matuska mov r9, qword ptr [rdi+0x8] 14801f1e2261SMartin Matuska movzx eax, byte ptr [rbp+0x40] 14811f1e2261SMartin Matuska or eax, r13d 14821f1e2261SMartin Matuska xor edx, edx 14831f1e2261SMartin Matuska2: 14841f1e2261SMartin Matuska mov r14d, eax 14851f1e2261SMartin Matuska or eax, r12d 14861f1e2261SMartin Matuska add rdx, 64 14871f1e2261SMartin Matuska cmp rdx, r15 14881f1e2261SMartin Matuska cmovne eax, r14d 14891f1e2261SMartin Matuska movaps xmm2, xmmword ptr [BLAKE3_IV+rip] 14901f1e2261SMartin Matuska movaps xmm10, xmm2 14911f1e2261SMartin Matuska movups xmm4, xmmword ptr [r8+rdx-0x40] 14921f1e2261SMartin Matuska movups xmm5, xmmword ptr [r8+rdx-0x30] 14931f1e2261SMartin Matuska movaps xmm3, xmm4 14941f1e2261SMartin Matuska shufps xmm4, xmm5, 136 14951f1e2261SMartin Matuska shufps xmm3, xmm5, 221 14961f1e2261SMartin Matuska movaps xmm5, xmm3 14971f1e2261SMartin Matuska movups xmm6, xmmword ptr [r8+rdx-0x20] 14981f1e2261SMartin Matuska movups xmm7, xmmword ptr [r8+rdx-0x10] 14991f1e2261SMartin Matuska movaps xmm3, xmm6 15001f1e2261SMartin Matuska shufps xmm6, xmm7, 136 15011f1e2261SMartin Matuska pshufd xmm6, xmm6, 0x93 15021f1e2261SMartin Matuska shufps xmm3, xmm7, 221 15031f1e2261SMartin Matuska pshufd xmm7, xmm3, 0x93 15041f1e2261SMartin Matuska movups xmm12, xmmword ptr [r9+rdx-0x40] 15051f1e2261SMartin Matuska movups xmm13, xmmword ptr [r9+rdx-0x30] 15061f1e2261SMartin Matuska movaps xmm11, xmm12 15071f1e2261SMartin Matuska shufps xmm12, xmm13, 136 15081f1e2261SMartin Matuska shufps xmm11, xmm13, 221 15091f1e2261SMartin Matuska movaps xmm13, xmm11 15101f1e2261SMartin Matuska movups xmm14, xmmword ptr [r9+rdx-0x20] 15111f1e2261SMartin Matuska movups xmm15, xmmword ptr [r9+rdx-0x10] 15121f1e2261SMartin Matuska movaps xmm11, xmm14 15131f1e2261SMartin Matuska shufps xmm14, xmm15, 136 15141f1e2261SMartin Matuska pshufd xmm14, xmm14, 0x93 15151f1e2261SMartin Matuska shufps xmm11, xmm15, 221 15161f1e2261SMartin Matuska pshufd xmm15, xmm11, 0x93 15171f1e2261SMartin Matuska movaps xmm3, xmmword ptr [rsp] 15181f1e2261SMartin Matuska movaps xmm11, xmmword ptr [rsp+0x10] 15191f1e2261SMartin Matuska pinsrd xmm3, eax, 3 15201f1e2261SMartin Matuska pinsrd xmm11, eax, 3 15211f1e2261SMartin Matuska mov al, 7 15221f1e2261SMartin Matuska9: 15231f1e2261SMartin Matuska paddd xmm0, xmm4 15241f1e2261SMartin Matuska paddd xmm8, xmm12 15251f1e2261SMartin Matuska movaps xmmword ptr [rsp+0x20], xmm4 15261f1e2261SMartin Matuska movaps xmmword ptr [rsp+0x30], xmm12 15271f1e2261SMartin Matuska paddd xmm0, xmm1 15281f1e2261SMartin Matuska paddd xmm8, xmm9 15291f1e2261SMartin Matuska pxor xmm3, xmm0 15301f1e2261SMartin Matuska pxor xmm11, xmm8 15311f1e2261SMartin Matuska movaps xmm12, xmmword ptr [ROT16+rip] 15321f1e2261SMartin Matuska pshufb xmm3, xmm12 15331f1e2261SMartin Matuska pshufb xmm11, xmm12 15341f1e2261SMartin Matuska paddd xmm2, xmm3 15351f1e2261SMartin Matuska paddd xmm10, xmm11 15361f1e2261SMartin Matuska pxor xmm1, xmm2 15371f1e2261SMartin Matuska pxor xmm9, xmm10 15381f1e2261SMartin Matuska movdqa xmm4, xmm1 15391f1e2261SMartin Matuska pslld xmm1, 20 15401f1e2261SMartin Matuska psrld xmm4, 12 15411f1e2261SMartin Matuska por xmm1, xmm4 15421f1e2261SMartin Matuska movdqa xmm4, xmm9 15431f1e2261SMartin Matuska pslld xmm9, 20 15441f1e2261SMartin Matuska psrld xmm4, 12 15451f1e2261SMartin Matuska por xmm9, xmm4 15461f1e2261SMartin Matuska paddd xmm0, xmm5 15471f1e2261SMartin Matuska paddd xmm8, xmm13 15481f1e2261SMartin Matuska movaps xmmword ptr [rsp+0x40], xmm5 15491f1e2261SMartin Matuska movaps xmmword ptr [rsp+0x50], xmm13 15501f1e2261SMartin Matuska paddd xmm0, xmm1 15511f1e2261SMartin Matuska paddd xmm8, xmm9 15521f1e2261SMartin Matuska pxor xmm3, xmm0 15531f1e2261SMartin Matuska pxor xmm11, xmm8 15541f1e2261SMartin Matuska movaps xmm13, xmmword ptr [ROT8+rip] 15551f1e2261SMartin Matuska pshufb xmm3, xmm13 15561f1e2261SMartin Matuska pshufb xmm11, xmm13 15571f1e2261SMartin Matuska paddd xmm2, xmm3 15581f1e2261SMartin Matuska paddd xmm10, xmm11 15591f1e2261SMartin Matuska pxor xmm1, xmm2 15601f1e2261SMartin Matuska pxor xmm9, xmm10 15611f1e2261SMartin Matuska movdqa xmm4, xmm1 15621f1e2261SMartin Matuska pslld xmm1, 25 15631f1e2261SMartin Matuska psrld xmm4, 7 15641f1e2261SMartin Matuska por xmm1, xmm4 15651f1e2261SMartin Matuska movdqa xmm4, xmm9 15661f1e2261SMartin Matuska pslld xmm9, 25 15671f1e2261SMartin Matuska psrld xmm4, 7 15681f1e2261SMartin Matuska por xmm9, xmm4 15691f1e2261SMartin Matuska pshufd xmm0, xmm0, 0x93 15701f1e2261SMartin Matuska pshufd xmm8, xmm8, 0x93 15711f1e2261SMartin Matuska pshufd xmm3, xmm3, 0x4E 15721f1e2261SMartin Matuska pshufd xmm11, xmm11, 0x4E 15731f1e2261SMartin Matuska pshufd xmm2, xmm2, 0x39 15741f1e2261SMartin Matuska pshufd xmm10, xmm10, 0x39 15751f1e2261SMartin Matuska paddd xmm0, xmm6 15761f1e2261SMartin Matuska paddd xmm8, xmm14 15771f1e2261SMartin Matuska paddd xmm0, xmm1 15781f1e2261SMartin Matuska paddd xmm8, xmm9 15791f1e2261SMartin Matuska pxor xmm3, xmm0 15801f1e2261SMartin Matuska pxor xmm11, xmm8 15811f1e2261SMartin Matuska pshufb xmm3, xmm12 15821f1e2261SMartin Matuska pshufb xmm11, xmm12 15831f1e2261SMartin Matuska paddd xmm2, xmm3 15841f1e2261SMartin Matuska paddd xmm10, xmm11 15851f1e2261SMartin Matuska pxor xmm1, xmm2 15861f1e2261SMartin Matuska pxor xmm9, xmm10 15871f1e2261SMartin Matuska movdqa xmm4, xmm1 15881f1e2261SMartin Matuska pslld xmm1, 20 15891f1e2261SMartin Matuska psrld xmm4, 12 15901f1e2261SMartin Matuska por xmm1, xmm4 15911f1e2261SMartin Matuska movdqa xmm4, xmm9 15921f1e2261SMartin Matuska pslld xmm9, 20 15931f1e2261SMartin Matuska psrld xmm4, 12 15941f1e2261SMartin Matuska por xmm9, xmm4 15951f1e2261SMartin Matuska paddd xmm0, xmm7 15961f1e2261SMartin Matuska paddd xmm8, xmm15 15971f1e2261SMartin Matuska paddd xmm0, xmm1 15981f1e2261SMartin Matuska paddd xmm8, xmm9 15991f1e2261SMartin Matuska pxor xmm3, xmm0 16001f1e2261SMartin Matuska pxor xmm11, xmm8 16011f1e2261SMartin Matuska pshufb xmm3, xmm13 16021f1e2261SMartin Matuska pshufb xmm11, xmm13 16031f1e2261SMartin Matuska paddd xmm2, xmm3 16041f1e2261SMartin Matuska paddd xmm10, xmm11 16051f1e2261SMartin Matuska pxor xmm1, xmm2 16061f1e2261SMartin Matuska pxor xmm9, xmm10 16071f1e2261SMartin Matuska movdqa xmm4, xmm1 16081f1e2261SMartin Matuska pslld xmm1, 25 16091f1e2261SMartin Matuska psrld xmm4, 7 16101f1e2261SMartin Matuska por xmm1, xmm4 16111f1e2261SMartin Matuska movdqa xmm4, xmm9 16121f1e2261SMartin Matuska pslld xmm9, 25 16131f1e2261SMartin Matuska psrld xmm4, 7 16141f1e2261SMartin Matuska por xmm9, xmm4 16151f1e2261SMartin Matuska pshufd xmm0, xmm0, 0x39 16161f1e2261SMartin Matuska pshufd xmm8, xmm8, 0x39 16171f1e2261SMartin Matuska pshufd xmm3, xmm3, 0x4E 16181f1e2261SMartin Matuska pshufd xmm11, xmm11, 0x4E 16191f1e2261SMartin Matuska pshufd xmm2, xmm2, 0x93 16201f1e2261SMartin Matuska pshufd xmm10, xmm10, 0x93 16211f1e2261SMartin Matuska dec al 16221f1e2261SMartin Matuska je 9f 16231f1e2261SMartin Matuska movdqa xmm12, xmmword ptr [rsp+0x20] 16241f1e2261SMartin Matuska movdqa xmm5, xmmword ptr [rsp+0x40] 16251f1e2261SMartin Matuska pshufd xmm13, xmm12, 0x0F 16261f1e2261SMartin Matuska shufps xmm12, xmm5, 214 16271f1e2261SMartin Matuska pshufd xmm4, xmm12, 0x39 16281f1e2261SMartin Matuska movdqa xmm12, xmm6 16291f1e2261SMartin Matuska shufps xmm12, xmm7, 250 16301f1e2261SMartin Matuska pblendw xmm13, xmm12, 0xCC 16311f1e2261SMartin Matuska movdqa xmm12, xmm7 16321f1e2261SMartin Matuska punpcklqdq xmm12, xmm5 16331f1e2261SMartin Matuska pblendw xmm12, xmm6, 0xC0 16341f1e2261SMartin Matuska pshufd xmm12, xmm12, 0x78 16351f1e2261SMartin Matuska punpckhdq xmm5, xmm7 16361f1e2261SMartin Matuska punpckldq xmm6, xmm5 16371f1e2261SMartin Matuska pshufd xmm7, xmm6, 0x1E 16381f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x20], xmm13 16391f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x40], xmm12 16401f1e2261SMartin Matuska movdqa xmm5, xmmword ptr [rsp+0x30] 16411f1e2261SMartin Matuska movdqa xmm13, xmmword ptr [rsp+0x50] 16421f1e2261SMartin Matuska pshufd xmm6, xmm5, 0x0F 16431f1e2261SMartin Matuska shufps xmm5, xmm13, 214 16441f1e2261SMartin Matuska pshufd xmm12, xmm5, 0x39 16451f1e2261SMartin Matuska movdqa xmm5, xmm14 16461f1e2261SMartin Matuska shufps xmm5, xmm15, 250 16471f1e2261SMartin Matuska pblendw xmm6, xmm5, 0xCC 16481f1e2261SMartin Matuska movdqa xmm5, xmm15 16491f1e2261SMartin Matuska punpcklqdq xmm5, xmm13 16501f1e2261SMartin Matuska pblendw xmm5, xmm14, 0xC0 16511f1e2261SMartin Matuska pshufd xmm5, xmm5, 0x78 16521f1e2261SMartin Matuska punpckhdq xmm13, xmm15 16531f1e2261SMartin Matuska punpckldq xmm14, xmm13 16541f1e2261SMartin Matuska pshufd xmm15, xmm14, 0x1E 16551f1e2261SMartin Matuska movdqa xmm13, xmm6 16561f1e2261SMartin Matuska movdqa xmm14, xmm5 16571f1e2261SMartin Matuska movdqa xmm5, xmmword ptr [rsp+0x20] 16581f1e2261SMartin Matuska movdqa xmm6, xmmword ptr [rsp+0x40] 16591f1e2261SMartin Matuska jmp 9b 16601f1e2261SMartin Matuska9: 16611f1e2261SMartin Matuska pxor xmm0, xmm2 16621f1e2261SMartin Matuska pxor xmm1, xmm3 16631f1e2261SMartin Matuska pxor xmm8, xmm10 16641f1e2261SMartin Matuska pxor xmm9, xmm11 16651f1e2261SMartin Matuska mov eax, r13d 16661f1e2261SMartin Matuska cmp rdx, r15 16671f1e2261SMartin Matuska jne 2b 16681f1e2261SMartin Matuska movups xmmword ptr [rbx], xmm0 16691f1e2261SMartin Matuska movups xmmword ptr [rbx+0x10], xmm1 16701f1e2261SMartin Matuska movups xmmword ptr [rbx+0x20], xmm8 16711f1e2261SMartin Matuska movups xmmword ptr [rbx+0x30], xmm9 16721f1e2261SMartin Matuska movdqa xmm0, xmmword ptr [rsp+0x130] 16731f1e2261SMartin Matuska movdqa xmm1, xmmword ptr [rsp+0x110] 16741f1e2261SMartin Matuska movdqa xmm2, xmmword ptr [rsp+0x120] 16751f1e2261SMartin Matuska movdqu xmm3, xmmword ptr [rsp+0x118] 16761f1e2261SMartin Matuska movdqu xmm4, xmmword ptr [rsp+0x128] 16771f1e2261SMartin Matuska blendvps xmm1, xmm3, xmm0 16781f1e2261SMartin Matuska blendvps xmm2, xmm4, xmm0 16791f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x110], xmm1 16801f1e2261SMartin Matuska movdqa xmmword ptr [rsp+0x120], xmm2 16811f1e2261SMartin Matuska add rdi, 16 16821f1e2261SMartin Matuska add rbx, 64 16831f1e2261SMartin Matuska sub rsi, 2 16841f1e2261SMartin Matuska3: 16851f1e2261SMartin Matuska test esi, 0x1 16861f1e2261SMartin Matuska je 4b 16871f1e2261SMartin Matuska movups xmm0, xmmword ptr [rcx] 16881f1e2261SMartin Matuska movups xmm1, xmmword ptr [rcx+0x10] 16891f1e2261SMartin Matuska movd xmm13, dword ptr [rsp+0x110] 16901f1e2261SMartin Matuska pinsrd xmm13, dword ptr [rsp+0x120], 1 16911f1e2261SMartin Matuska pinsrd xmm13, dword ptr [BLAKE3_BLOCK_LEN+rip], 2 16921f1e2261SMartin Matuska movaps xmm14, xmmword ptr [ROT8+rip] 16931f1e2261SMartin Matuska movaps xmm15, xmmword ptr [ROT16+rip] 16941f1e2261SMartin Matuska mov r8, qword ptr [rdi] 16951f1e2261SMartin Matuska movzx eax, byte ptr [rbp+0x40] 16961f1e2261SMartin Matuska or eax, r13d 16971f1e2261SMartin Matuska xor edx, edx 16981f1e2261SMartin Matuska2: 16991f1e2261SMartin Matuska mov r14d, eax 17001f1e2261SMartin Matuska or eax, r12d 17011f1e2261SMartin Matuska add rdx, 64 17021f1e2261SMartin Matuska cmp rdx, r15 17031f1e2261SMartin Matuska cmovne eax, r14d 17041f1e2261SMartin Matuska movaps xmm2, xmmword ptr [BLAKE3_IV+rip] 17051f1e2261SMartin Matuska movaps xmm3, xmm13 17061f1e2261SMartin Matuska pinsrd xmm3, eax, 3 17071f1e2261SMartin Matuska movups xmm4, xmmword ptr [r8+rdx-0x40] 17081f1e2261SMartin Matuska movups xmm5, xmmword ptr [r8+rdx-0x30] 17091f1e2261SMartin Matuska movaps xmm8, xmm4 17101f1e2261SMartin Matuska shufps xmm4, xmm5, 136 17111f1e2261SMartin Matuska shufps xmm8, xmm5, 221 17121f1e2261SMartin Matuska movaps xmm5, xmm8 17131f1e2261SMartin Matuska movups xmm6, xmmword ptr [r8+rdx-0x20] 17141f1e2261SMartin Matuska movups xmm7, xmmword ptr [r8+rdx-0x10] 17151f1e2261SMartin Matuska movaps xmm8, xmm6 17161f1e2261SMartin Matuska shufps xmm6, xmm7, 136 17171f1e2261SMartin Matuska pshufd xmm6, xmm6, 0x93 17181f1e2261SMartin Matuska shufps xmm8, xmm7, 221 17191f1e2261SMartin Matuska pshufd xmm7, xmm8, 0x93 17201f1e2261SMartin Matuska mov al, 7 17211f1e2261SMartin Matuska9: 17221f1e2261SMartin Matuska paddd xmm0, xmm4 17231f1e2261SMartin Matuska paddd xmm0, xmm1 17241f1e2261SMartin Matuska pxor xmm3, xmm0 17251f1e2261SMartin Matuska pshufb xmm3, xmm15 17261f1e2261SMartin Matuska paddd xmm2, xmm3 17271f1e2261SMartin Matuska pxor xmm1, xmm2 17281f1e2261SMartin Matuska movdqa xmm11, xmm1 17291f1e2261SMartin Matuska pslld xmm1, 20 17301f1e2261SMartin Matuska psrld xmm11, 12 17311f1e2261SMartin Matuska por xmm1, xmm11 17321f1e2261SMartin Matuska paddd xmm0, xmm5 17331f1e2261SMartin Matuska paddd xmm0, xmm1 17341f1e2261SMartin Matuska pxor xmm3, xmm0 17351f1e2261SMartin Matuska pshufb xmm3, xmm14 17361f1e2261SMartin Matuska paddd xmm2, xmm3 17371f1e2261SMartin Matuska pxor xmm1, xmm2 17381f1e2261SMartin Matuska movdqa xmm11, xmm1 17391f1e2261SMartin Matuska pslld xmm1, 25 17401f1e2261SMartin Matuska psrld xmm11, 7 17411f1e2261SMartin Matuska por xmm1, xmm11 17421f1e2261SMartin Matuska pshufd xmm0, xmm0, 0x93 17431f1e2261SMartin Matuska pshufd xmm3, xmm3, 0x4E 17441f1e2261SMartin Matuska pshufd xmm2, xmm2, 0x39 17451f1e2261SMartin Matuska paddd xmm0, xmm6 17461f1e2261SMartin Matuska paddd xmm0, xmm1 17471f1e2261SMartin Matuska pxor xmm3, xmm0 17481f1e2261SMartin Matuska pshufb xmm3, xmm15 17491f1e2261SMartin Matuska paddd xmm2, xmm3 17501f1e2261SMartin Matuska pxor xmm1, xmm2 17511f1e2261SMartin Matuska movdqa xmm11, xmm1 17521f1e2261SMartin Matuska pslld xmm1, 20 17531f1e2261SMartin Matuska psrld xmm11, 12 17541f1e2261SMartin Matuska por xmm1, xmm11 17551f1e2261SMartin Matuska paddd xmm0, xmm7 17561f1e2261SMartin Matuska paddd xmm0, xmm1 17571f1e2261SMartin Matuska pxor xmm3, xmm0 17581f1e2261SMartin Matuska pshufb xmm3, xmm14 17591f1e2261SMartin Matuska paddd xmm2, xmm3 17601f1e2261SMartin Matuska pxor xmm1, xmm2 17611f1e2261SMartin Matuska movdqa xmm11, xmm1 17621f1e2261SMartin Matuska pslld xmm1, 25 17631f1e2261SMartin Matuska psrld xmm11, 7 17641f1e2261SMartin Matuska por xmm1, xmm11 17651f1e2261SMartin Matuska pshufd xmm0, xmm0, 0x39 17661f1e2261SMartin Matuska pshufd xmm3, xmm3, 0x4E 17671f1e2261SMartin Matuska pshufd xmm2, xmm2, 0x93 17681f1e2261SMartin Matuska dec al 17691f1e2261SMartin Matuska jz 9f 17701f1e2261SMartin Matuska movdqa xmm8, xmm4 17711f1e2261SMartin Matuska shufps xmm8, xmm5, 214 17721f1e2261SMartin Matuska pshufd xmm9, xmm4, 0x0F 17731f1e2261SMartin Matuska pshufd xmm4, xmm8, 0x39 17741f1e2261SMartin Matuska movdqa xmm8, xmm6 17751f1e2261SMartin Matuska shufps xmm8, xmm7, 250 17761f1e2261SMartin Matuska pblendw xmm9, xmm8, 0xCC 17771f1e2261SMartin Matuska movdqa xmm8, xmm7 17781f1e2261SMartin Matuska punpcklqdq xmm8, xmm5 17791f1e2261SMartin Matuska pblendw xmm8, xmm6, 0xC0 17801f1e2261SMartin Matuska pshufd xmm8, xmm8, 0x78 17811f1e2261SMartin Matuska punpckhdq xmm5, xmm7 17821f1e2261SMartin Matuska punpckldq xmm6, xmm5 17831f1e2261SMartin Matuska pshufd xmm7, xmm6, 0x1E 17841f1e2261SMartin Matuska movdqa xmm5, xmm9 17851f1e2261SMartin Matuska movdqa xmm6, xmm8 17861f1e2261SMartin Matuska jmp 9b 17871f1e2261SMartin Matuska9: 17881f1e2261SMartin Matuska pxor xmm0, xmm2 17891f1e2261SMartin Matuska pxor xmm1, xmm3 17901f1e2261SMartin Matuska mov eax, r13d 17911f1e2261SMartin Matuska cmp rdx, r15 17921f1e2261SMartin Matuska jne 2b 17931f1e2261SMartin Matuska movups xmmword ptr [rbx], xmm0 17941f1e2261SMartin Matuska movups xmmword ptr [rbx+0x10], xmm1 17951f1e2261SMartin Matuska jmp 4b 1796*15f0b8c3SMartin MatuskaSET_SIZE(zfs_blake3_hash_many_sse41) 1797*15f0b8c3SMartin Matuska 1798*15f0b8c3SMartin MatuskaENTRY_ALIGN(zfs_blake3_compress_in_place_sse41, 64) 1799dbd5678dSMartin Matuska ENDBR 18001f1e2261SMartin Matuska movups xmm0, xmmword ptr [rdi] 18011f1e2261SMartin Matuska movups xmm1, xmmword ptr [rdi+0x10] 18021f1e2261SMartin Matuska movaps xmm2, xmmword ptr [BLAKE3_IV+rip] 18031f1e2261SMartin Matuska shl r8, 32 18041f1e2261SMartin Matuska add rdx, r8 18051f1e2261SMartin Matuska movq xmm3, rcx 18061f1e2261SMartin Matuska movq xmm4, rdx 18071f1e2261SMartin Matuska punpcklqdq xmm3, xmm4 18081f1e2261SMartin Matuska movups xmm4, xmmword ptr [rsi] 18091f1e2261SMartin Matuska movups xmm5, xmmword ptr [rsi+0x10] 18101f1e2261SMartin Matuska movaps xmm8, xmm4 18111f1e2261SMartin Matuska shufps xmm4, xmm5, 136 18121f1e2261SMartin Matuska shufps xmm8, xmm5, 221 18131f1e2261SMartin Matuska movaps xmm5, xmm8 18141f1e2261SMartin Matuska movups xmm6, xmmword ptr [rsi+0x20] 18151f1e2261SMartin Matuska movups xmm7, xmmword ptr [rsi+0x30] 18161f1e2261SMartin Matuska movaps xmm8, xmm6 18171f1e2261SMartin Matuska shufps xmm6, xmm7, 136 18181f1e2261SMartin Matuska pshufd xmm6, xmm6, 0x93 18191f1e2261SMartin Matuska shufps xmm8, xmm7, 221 18201f1e2261SMartin Matuska pshufd xmm7, xmm8, 0x93 18211f1e2261SMartin Matuska movaps xmm14, xmmword ptr [ROT8+rip] 18221f1e2261SMartin Matuska movaps xmm15, xmmword ptr [ROT16+rip] 18231f1e2261SMartin Matuska mov al, 7 18241f1e2261SMartin Matuska9: 18251f1e2261SMartin Matuska paddd xmm0, xmm4 18261f1e2261SMartin Matuska paddd xmm0, xmm1 18271f1e2261SMartin Matuska pxor xmm3, xmm0 18281f1e2261SMartin Matuska pshufb xmm3, xmm15 18291f1e2261SMartin Matuska paddd xmm2, xmm3 18301f1e2261SMartin Matuska pxor xmm1, xmm2 18311f1e2261SMartin Matuska movdqa xmm11, xmm1 18321f1e2261SMartin Matuska pslld xmm1, 20 18331f1e2261SMartin Matuska psrld xmm11, 12 18341f1e2261SMartin Matuska por xmm1, xmm11 18351f1e2261SMartin Matuska paddd xmm0, xmm5 18361f1e2261SMartin Matuska paddd xmm0, xmm1 18371f1e2261SMartin Matuska pxor xmm3, xmm0 18381f1e2261SMartin Matuska pshufb xmm3, xmm14 18391f1e2261SMartin Matuska paddd xmm2, xmm3 18401f1e2261SMartin Matuska pxor xmm1, xmm2 18411f1e2261SMartin Matuska movdqa xmm11, xmm1 18421f1e2261SMartin Matuska pslld xmm1, 25 18431f1e2261SMartin Matuska psrld xmm11, 7 18441f1e2261SMartin Matuska por xmm1, xmm11 18451f1e2261SMartin Matuska pshufd xmm0, xmm0, 0x93 18461f1e2261SMartin Matuska pshufd xmm3, xmm3, 0x4E 18471f1e2261SMartin Matuska pshufd xmm2, xmm2, 0x39 18481f1e2261SMartin Matuska paddd xmm0, xmm6 18491f1e2261SMartin Matuska paddd xmm0, xmm1 18501f1e2261SMartin Matuska pxor xmm3, xmm0 18511f1e2261SMartin Matuska pshufb xmm3, xmm15 18521f1e2261SMartin Matuska paddd xmm2, xmm3 18531f1e2261SMartin Matuska pxor xmm1, xmm2 18541f1e2261SMartin Matuska movdqa xmm11, xmm1 18551f1e2261SMartin Matuska pslld xmm1, 20 18561f1e2261SMartin Matuska psrld xmm11, 12 18571f1e2261SMartin Matuska por xmm1, xmm11 18581f1e2261SMartin Matuska paddd xmm0, xmm7 18591f1e2261SMartin Matuska paddd xmm0, xmm1 18601f1e2261SMartin Matuska pxor xmm3, xmm0 18611f1e2261SMartin Matuska pshufb xmm3, xmm14 18621f1e2261SMartin Matuska paddd xmm2, xmm3 18631f1e2261SMartin Matuska pxor xmm1, xmm2 18641f1e2261SMartin Matuska movdqa xmm11, xmm1 18651f1e2261SMartin Matuska pslld xmm1, 25 18661f1e2261SMartin Matuska psrld xmm11, 7 18671f1e2261SMartin Matuska por xmm1, xmm11 18681f1e2261SMartin Matuska pshufd xmm0, xmm0, 0x39 18691f1e2261SMartin Matuska pshufd xmm3, xmm3, 0x4E 18701f1e2261SMartin Matuska pshufd xmm2, xmm2, 0x93 18711f1e2261SMartin Matuska dec al 18721f1e2261SMartin Matuska jz 9f 18731f1e2261SMartin Matuska movdqa xmm8, xmm4 18741f1e2261SMartin Matuska shufps xmm8, xmm5, 214 18751f1e2261SMartin Matuska pshufd xmm9, xmm4, 0x0F 18761f1e2261SMartin Matuska pshufd xmm4, xmm8, 0x39 18771f1e2261SMartin Matuska movdqa xmm8, xmm6 18781f1e2261SMartin Matuska shufps xmm8, xmm7, 250 18791f1e2261SMartin Matuska pblendw xmm9, xmm8, 0xCC 18801f1e2261SMartin Matuska movdqa xmm8, xmm7 18811f1e2261SMartin Matuska punpcklqdq xmm8, xmm5 18821f1e2261SMartin Matuska pblendw xmm8, xmm6, 0xC0 18831f1e2261SMartin Matuska pshufd xmm8, xmm8, 0x78 18841f1e2261SMartin Matuska punpckhdq xmm5, xmm7 18851f1e2261SMartin Matuska punpckldq xmm6, xmm5 18861f1e2261SMartin Matuska pshufd xmm7, xmm6, 0x1E 18871f1e2261SMartin Matuska movdqa xmm5, xmm9 18881f1e2261SMartin Matuska movdqa xmm6, xmm8 18891f1e2261SMartin Matuska jmp 9b 18901f1e2261SMartin Matuska9: 18911f1e2261SMartin Matuska pxor xmm0, xmm2 18921f1e2261SMartin Matuska pxor xmm1, xmm3 18931f1e2261SMartin Matuska movups xmmword ptr [rdi], xmm0 18941f1e2261SMartin Matuska movups xmmword ptr [rdi+0x10], xmm1 1895a0b956f5SMartin Matuska RET 1896*15f0b8c3SMartin MatuskaSET_SIZE(zfs_blake3_compress_in_place_sse41) 1897*15f0b8c3SMartin Matuska 1898*15f0b8c3SMartin MatuskaENTRY_ALIGN(zfs_blake3_compress_xof_sse41, 64) 1899dbd5678dSMartin Matuska ENDBR 19001f1e2261SMartin Matuska movups xmm0, xmmword ptr [rdi] 19011f1e2261SMartin Matuska movups xmm1, xmmword ptr [rdi+0x10] 19021f1e2261SMartin Matuska movaps xmm2, xmmword ptr [BLAKE3_IV+rip] 19031f1e2261SMartin Matuska movzx eax, r8b 19041f1e2261SMartin Matuska movzx edx, dl 19051f1e2261SMartin Matuska shl rax, 32 19061f1e2261SMartin Matuska add rdx, rax 19071f1e2261SMartin Matuska movq xmm3, rcx 19081f1e2261SMartin Matuska movq xmm4, rdx 19091f1e2261SMartin Matuska punpcklqdq xmm3, xmm4 19101f1e2261SMartin Matuska movups xmm4, xmmword ptr [rsi] 19111f1e2261SMartin Matuska movups xmm5, xmmword ptr [rsi+0x10] 19121f1e2261SMartin Matuska movaps xmm8, xmm4 19131f1e2261SMartin Matuska shufps xmm4, xmm5, 136 19141f1e2261SMartin Matuska shufps xmm8, xmm5, 221 19151f1e2261SMartin Matuska movaps xmm5, xmm8 19161f1e2261SMartin Matuska movups xmm6, xmmword ptr [rsi+0x20] 19171f1e2261SMartin Matuska movups xmm7, xmmword ptr [rsi+0x30] 19181f1e2261SMartin Matuska movaps xmm8, xmm6 19191f1e2261SMartin Matuska shufps xmm6, xmm7, 136 19201f1e2261SMartin Matuska pshufd xmm6, xmm6, 0x93 19211f1e2261SMartin Matuska shufps xmm8, xmm7, 221 19221f1e2261SMartin Matuska pshufd xmm7, xmm8, 0x93 19231f1e2261SMartin Matuska movaps xmm14, xmmword ptr [ROT8+rip] 19241f1e2261SMartin Matuska movaps xmm15, xmmword ptr [ROT16+rip] 19251f1e2261SMartin Matuska mov al, 7 19261f1e2261SMartin Matuska9: 19271f1e2261SMartin Matuska paddd xmm0, xmm4 19281f1e2261SMartin Matuska paddd xmm0, xmm1 19291f1e2261SMartin Matuska pxor xmm3, xmm0 19301f1e2261SMartin Matuska pshufb xmm3, xmm15 19311f1e2261SMartin Matuska paddd xmm2, xmm3 19321f1e2261SMartin Matuska pxor xmm1, xmm2 19331f1e2261SMartin Matuska movdqa xmm11, xmm1 19341f1e2261SMartin Matuska pslld xmm1, 20 19351f1e2261SMartin Matuska psrld xmm11, 12 19361f1e2261SMartin Matuska por xmm1, xmm11 19371f1e2261SMartin Matuska paddd xmm0, xmm5 19381f1e2261SMartin Matuska paddd xmm0, xmm1 19391f1e2261SMartin Matuska pxor xmm3, xmm0 19401f1e2261SMartin Matuska pshufb xmm3, xmm14 19411f1e2261SMartin Matuska paddd xmm2, xmm3 19421f1e2261SMartin Matuska pxor xmm1, xmm2 19431f1e2261SMartin Matuska movdqa xmm11, xmm1 19441f1e2261SMartin Matuska pslld xmm1, 25 19451f1e2261SMartin Matuska psrld xmm11, 7 19461f1e2261SMartin Matuska por xmm1, xmm11 19471f1e2261SMartin Matuska pshufd xmm0, xmm0, 0x93 19481f1e2261SMartin Matuska pshufd xmm3, xmm3, 0x4E 19491f1e2261SMartin Matuska pshufd xmm2, xmm2, 0x39 19501f1e2261SMartin Matuska paddd xmm0, xmm6 19511f1e2261SMartin Matuska paddd xmm0, xmm1 19521f1e2261SMartin Matuska pxor xmm3, xmm0 19531f1e2261SMartin Matuska pshufb xmm3, xmm15 19541f1e2261SMartin Matuska paddd xmm2, xmm3 19551f1e2261SMartin Matuska pxor xmm1, xmm2 19561f1e2261SMartin Matuska movdqa xmm11, xmm1 19571f1e2261SMartin Matuska pslld xmm1, 20 19581f1e2261SMartin Matuska psrld xmm11, 12 19591f1e2261SMartin Matuska por xmm1, xmm11 19601f1e2261SMartin Matuska paddd xmm0, xmm7 19611f1e2261SMartin Matuska paddd xmm0, xmm1 19621f1e2261SMartin Matuska pxor xmm3, xmm0 19631f1e2261SMartin Matuska pshufb xmm3, xmm14 19641f1e2261SMartin Matuska paddd xmm2, xmm3 19651f1e2261SMartin Matuska pxor xmm1, xmm2 19661f1e2261SMartin Matuska movdqa xmm11, xmm1 19671f1e2261SMartin Matuska pslld xmm1, 25 19681f1e2261SMartin Matuska psrld xmm11, 7 19691f1e2261SMartin Matuska por xmm1, xmm11 19701f1e2261SMartin Matuska pshufd xmm0, xmm0, 0x39 19711f1e2261SMartin Matuska pshufd xmm3, xmm3, 0x4E 19721f1e2261SMartin Matuska pshufd xmm2, xmm2, 0x93 19731f1e2261SMartin Matuska dec al 19741f1e2261SMartin Matuska jz 9f 19751f1e2261SMartin Matuska movdqa xmm8, xmm4 19761f1e2261SMartin Matuska shufps xmm8, xmm5, 214 19771f1e2261SMartin Matuska pshufd xmm9, xmm4, 0x0F 19781f1e2261SMartin Matuska pshufd xmm4, xmm8, 0x39 19791f1e2261SMartin Matuska movdqa xmm8, xmm6 19801f1e2261SMartin Matuska shufps xmm8, xmm7, 250 19811f1e2261SMartin Matuska pblendw xmm9, xmm8, 0xCC 19821f1e2261SMartin Matuska movdqa xmm8, xmm7 19831f1e2261SMartin Matuska punpcklqdq xmm8, xmm5 19841f1e2261SMartin Matuska pblendw xmm8, xmm6, 0xC0 19851f1e2261SMartin Matuska pshufd xmm8, xmm8, 0x78 19861f1e2261SMartin Matuska punpckhdq xmm5, xmm7 19871f1e2261SMartin Matuska punpckldq xmm6, xmm5 19881f1e2261SMartin Matuska pshufd xmm7, xmm6, 0x1E 19891f1e2261SMartin Matuska movdqa xmm5, xmm9 19901f1e2261SMartin Matuska movdqa xmm6, xmm8 19911f1e2261SMartin Matuska jmp 9b 19921f1e2261SMartin Matuska9: 19931f1e2261SMartin Matuska movdqu xmm4, xmmword ptr [rdi] 19941f1e2261SMartin Matuska movdqu xmm5, xmmword ptr [rdi+0x10] 19951f1e2261SMartin Matuska pxor xmm0, xmm2 19961f1e2261SMartin Matuska pxor xmm1, xmm3 19971f1e2261SMartin Matuska pxor xmm2, xmm4 19981f1e2261SMartin Matuska pxor xmm3, xmm5 19991f1e2261SMartin Matuska movups xmmword ptr [r9], xmm0 20001f1e2261SMartin Matuska movups xmmword ptr [r9+0x10], xmm1 20011f1e2261SMartin Matuska movups xmmword ptr [r9+0x20], xmm2 20021f1e2261SMartin Matuska movups xmmword ptr [r9+0x30], xmm3 2003a0b956f5SMartin Matuska RET 2004*15f0b8c3SMartin MatuskaSET_SIZE(zfs_blake3_compress_xof_sse41) 20051f1e2261SMartin Matuska 2006*15f0b8c3SMartin MatuskaSECTION_STATIC 20071f1e2261SMartin Matuska 20081f1e2261SMartin Matuska.p2align 6 20091f1e2261SMartin MatuskaBLAKE3_IV: 20101f1e2261SMartin Matuska .long 0x6A09E667, 0xBB67AE85 20111f1e2261SMartin Matuska .long 0x3C6EF372, 0xA54FF53A 20121f1e2261SMartin MatuskaROT16: 20131f1e2261SMartin Matuska .byte 2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9, 14, 15, 12, 13 20141f1e2261SMartin MatuskaROT8: 20151f1e2261SMartin Matuska .byte 1, 2, 3, 0, 5, 6, 7, 4, 9, 10, 11, 8, 13, 14, 15, 12 20161f1e2261SMartin MatuskaADD0: 20171f1e2261SMartin Matuska .long 0, 1, 2, 3 20181f1e2261SMartin MatuskaADD1: 20191f1e2261SMartin Matuska .long 4, 4, 4, 4 20201f1e2261SMartin MatuskaBLAKE3_IV_0: 20211f1e2261SMartin Matuska .long 0x6A09E667, 0x6A09E667, 0x6A09E667, 0x6A09E667 20221f1e2261SMartin MatuskaBLAKE3_IV_1: 20231f1e2261SMartin Matuska .long 0xBB67AE85, 0xBB67AE85, 0xBB67AE85, 0xBB67AE85 20241f1e2261SMartin MatuskaBLAKE3_IV_2: 20251f1e2261SMartin Matuska .long 0x3C6EF372, 0x3C6EF372, 0x3C6EF372, 0x3C6EF372 20261f1e2261SMartin MatuskaBLAKE3_IV_3: 20271f1e2261SMartin Matuska .long 0xA54FF53A, 0xA54FF53A, 0xA54FF53A, 0xA54FF53A 20281f1e2261SMartin MatuskaBLAKE3_BLOCK_LEN: 20291f1e2261SMartin Matuska .long 64, 64, 64, 64 20301f1e2261SMartin MatuskaCMP_MSB_MASK: 20311f1e2261SMartin Matuska .long 0x80000000, 0x80000000, 0x80000000, 0x80000000 20321f1e2261SMartin Matuska 20331f1e2261SMartin Matuska#endif /* HAVE_SSE4_1 */ 20341f1e2261SMartin Matuska 20351f1e2261SMartin Matuska#ifdef __ELF__ 20361f1e2261SMartin Matuska.section .note.GNU-stack,"",%progbits 20371f1e2261SMartin Matuska#endif 2038