The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/openzfs/module/icp/asm-x86_64/blake3/blake3_avx2.S

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * CDDL HEADER START
    3  *
    4  * The contents of this file are subject to the terms of the
    5  * Common Development and Distribution License (the "License").
    6  * You may not use this file except in compliance with the License.
    7  *
    8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
    9  * or https://opensource.org/licenses/CDDL-1.0.
   10  * See the License for the specific language governing permissions
   11  * and limitations under the License.
   12  *
   13  * When distributing Covered Code, include this CDDL HEADER in each
   14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
   15  * If applicable, add the following below this CDDL HEADER, with the
   16  * fields enclosed by brackets "[]" replaced with your own identifying
   17  * information: Portions Copyright [yyyy] [name of copyright owner]
   18  *
   19  * CDDL HEADER END
   20  */
   21 
   22 /*
   23  * Based on BLAKE3 v1.3.1, https://github.com/BLAKE3-team/BLAKE3
   24  * Copyright (c) 2019-2020 Samuel Neves
   25  * Copyright (c) 2022 Tino Reichardt <milky-zfs@mcmilk.de>
   26  */
   27 
   28 #if defined(HAVE_AVX2)
   29 
   30 #define _ASM
   31 #include <sys/asm_linkage.h>
   32 
   33 .intel_syntax noprefix
   34 .text
   35 
   36 ENTRY_ALIGN(zfs_blake3_hash_many_avx2, 64)
   37         ENDBR
   38         push    r15
   39         push    r14
   40         push    r13
   41         push    r12
   42         push    rbx
   43         push    rbp
   44         mov     rbp, rsp
   45         sub     rsp, 680
   46         and     rsp, 0xFFFFFFFFFFFFFFC0
   47         neg     r9d
   48         vmovd   xmm0, r9d
   49         vpbroadcastd ymm0, xmm0
   50         vmovdqa ymmword ptr [rsp+0x280], ymm0
   51         vpand   ymm1, ymm0, ymmword ptr [ADD0+rip]
   52         vpand   ymm2, ymm0, ymmword ptr [ADD1+rip]
   53         vmovdqa ymmword ptr [rsp+0x220], ymm2
   54         vmovd   xmm2, r8d
   55         vpbroadcastd ymm2, xmm2
   56         vpaddd  ymm2, ymm2, ymm1
   57         vmovdqa ymmword ptr [rsp+0x240], ymm2
   58         vpxor   ymm1, ymm1, ymmword ptr [CMP_MSB_MASK+rip]
   59         vpxor   ymm2, ymm2, ymmword ptr [CMP_MSB_MASK+rip]
   60         vpcmpgtd ymm2, ymm1, ymm2
   61         shr     r8, 32
   62         vmovd   xmm3, r8d
   63         vpbroadcastd ymm3, xmm3
   64         vpsubd  ymm3, ymm3, ymm2
   65         vmovdqa ymmword ptr [rsp+0x260], ymm3
   66         shl     rdx, 6
   67         mov     qword ptr [rsp+0x2A0], rdx
   68         cmp     rsi, 8
   69         jc      3f
   70 2:
   71         vpbroadcastd ymm0, dword ptr [rcx]
   72         vpbroadcastd ymm1, dword ptr [rcx+0x4]
   73         vpbroadcastd ymm2, dword ptr [rcx+0x8]
   74         vpbroadcastd ymm3, dword ptr [rcx+0xC]
   75         vpbroadcastd ymm4, dword ptr [rcx+0x10]
   76         vpbroadcastd ymm5, dword ptr [rcx+0x14]
   77         vpbroadcastd ymm6, dword ptr [rcx+0x18]
   78         vpbroadcastd ymm7, dword ptr [rcx+0x1C]
   79         mov     r8, qword ptr [rdi]
   80         mov     r9, qword ptr [rdi+0x8]
   81         mov     r10, qword ptr [rdi+0x10]
   82         mov     r11, qword ptr [rdi+0x18]
   83         mov     r12, qword ptr [rdi+0x20]
   84         mov     r13, qword ptr [rdi+0x28]
   85         mov     r14, qword ptr [rdi+0x30]
   86         mov     r15, qword ptr [rdi+0x38]
   87         movzx   eax, byte ptr [rbp+0x38]
   88         movzx   ebx, byte ptr [rbp+0x40]
   89         or      eax, ebx
   90         xor     edx, edx
   91 .p2align  5
   92 9:
   93         movzx   ebx, byte ptr [rbp+0x48]
   94         or      ebx, eax
   95         add     rdx, 64
   96         cmp     rdx, qword ptr [rsp+0x2A0]
   97         cmove   eax, ebx
   98         mov     dword ptr [rsp+0x200], eax
   99         vmovups xmm8, xmmword ptr [r8+rdx-0x40]
  100         vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x40], 0x01
  101         vmovups xmm9, xmmword ptr [r9+rdx-0x40]
  102         vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x40], 0x01
  103         vunpcklpd ymm12, ymm8, ymm9
  104         vunpckhpd ymm13, ymm8, ymm9
  105         vmovups xmm10, xmmword ptr [r10+rdx-0x40]
  106         vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x40], 0x01
  107         vmovups xmm11, xmmword ptr [r11+rdx-0x40]
  108         vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x40], 0x01
  109         vunpcklpd ymm14, ymm10, ymm11
  110         vunpckhpd ymm15, ymm10, ymm11
  111         vshufps ymm8, ymm12, ymm14, 136
  112         vmovaps ymmword ptr [rsp], ymm8
  113         vshufps ymm9, ymm12, ymm14, 221
  114         vmovaps ymmword ptr [rsp+0x20], ymm9
  115         vshufps ymm10, ymm13, ymm15, 136
  116         vmovaps ymmword ptr [rsp+0x40], ymm10
  117         vshufps ymm11, ymm13, ymm15, 221
  118         vmovaps ymmword ptr [rsp+0x60], ymm11
  119         vmovups xmm8, xmmword ptr [r8+rdx-0x30]
  120         vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x30], 0x01
  121         vmovups xmm9, xmmword ptr [r9+rdx-0x30]
  122         vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x30], 0x01
  123         vunpcklpd ymm12, ymm8, ymm9
  124         vunpckhpd ymm13, ymm8, ymm9
  125         vmovups xmm10, xmmword ptr [r10+rdx-0x30]
  126         vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x30], 0x01
  127         vmovups xmm11, xmmword ptr [r11+rdx-0x30]
  128         vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x30], 0x01
  129         vunpcklpd ymm14, ymm10, ymm11
  130         vunpckhpd ymm15, ymm10, ymm11
  131         vshufps ymm8, ymm12, ymm14, 136
  132         vmovaps ymmword ptr [rsp+0x80], ymm8
  133         vshufps ymm9, ymm12, ymm14, 221
  134         vmovaps ymmword ptr [rsp+0xA0], ymm9
  135         vshufps ymm10, ymm13, ymm15, 136
  136         vmovaps ymmword ptr [rsp+0xC0], ymm10
  137         vshufps ymm11, ymm13, ymm15, 221
  138         vmovaps ymmword ptr [rsp+0xE0], ymm11
  139         vmovups xmm8, xmmword ptr [r8+rdx-0x20]
  140         vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x20], 0x01
  141         vmovups xmm9, xmmword ptr [r9+rdx-0x20]
  142         vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x20], 0x01
  143         vunpcklpd ymm12, ymm8, ymm9
  144         vunpckhpd ymm13, ymm8, ymm9
  145         vmovups xmm10, xmmword ptr [r10+rdx-0x20]
  146         vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x20], 0x01
  147         vmovups xmm11, xmmword ptr [r11+rdx-0x20]
  148         vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x20], 0x01
  149         vunpcklpd ymm14, ymm10, ymm11
  150         vunpckhpd ymm15, ymm10, ymm11
  151         vshufps ymm8, ymm12, ymm14, 136
  152         vmovaps ymmword ptr [rsp+0x100], ymm8
  153         vshufps ymm9, ymm12, ymm14, 221
  154         vmovaps ymmword ptr [rsp+0x120], ymm9
  155         vshufps ymm10, ymm13, ymm15, 136
  156         vmovaps ymmword ptr [rsp+0x140], ymm10
  157         vshufps ymm11, ymm13, ymm15, 221
  158         vmovaps ymmword ptr [rsp+0x160], ymm11
  159         vmovups xmm8, xmmword ptr [r8+rdx-0x10]
  160         vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x10], 0x01
  161         vmovups xmm9, xmmword ptr [r9+rdx-0x10]
  162         vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x10], 0x01
  163         vunpcklpd ymm12, ymm8, ymm9
  164         vunpckhpd ymm13, ymm8, ymm9
  165         vmovups xmm10, xmmword ptr [r10+rdx-0x10]
  166         vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x10], 0x01
  167         vmovups xmm11, xmmword ptr [r11+rdx-0x10]
  168         vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x10], 0x01
  169         vunpcklpd ymm14, ymm10, ymm11
  170         vunpckhpd ymm15, ymm10, ymm11
  171         vshufps ymm8, ymm12, ymm14, 136
  172         vmovaps ymmword ptr [rsp+0x180], ymm8
  173         vshufps ymm9, ymm12, ymm14, 221
  174         vmovaps ymmword ptr [rsp+0x1A0], ymm9
  175         vshufps ymm10, ymm13, ymm15, 136
  176         vmovaps ymmword ptr [rsp+0x1C0], ymm10
  177         vshufps ymm11, ymm13, ymm15, 221
  178         vmovaps ymmword ptr [rsp+0x1E0], ymm11
  179         vpbroadcastd ymm15, dword ptr [rsp+0x200]
  180         prefetcht0 [r8+rdx+0x80]
  181         prefetcht0 [r12+rdx+0x80]
  182         prefetcht0 [r9+rdx+0x80]
  183         prefetcht0 [r13+rdx+0x80]
  184         prefetcht0 [r10+rdx+0x80]
  185         prefetcht0 [r14+rdx+0x80]
  186         prefetcht0 [r11+rdx+0x80]
  187         prefetcht0 [r15+rdx+0x80]
  188         vpaddd  ymm0, ymm0, ymmword ptr [rsp]
  189         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x40]
  190         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x80]
  191         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0xC0]
  192         vpaddd  ymm0, ymm0, ymm4
  193         vpaddd  ymm1, ymm1, ymm5
  194         vpaddd  ymm2, ymm2, ymm6
  195         vpaddd  ymm3, ymm3, ymm7
  196         vpxor   ymm12, ymm0, ymmword ptr [rsp+0x240]
  197         vpxor   ymm13, ymm1, ymmword ptr [rsp+0x260]
  198         vpxor   ymm14, ymm2, ymmword ptr [BLAKE3_BLOCK_LEN+rip]
  199         vpxor   ymm15, ymm3, ymm15
  200         vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
  201         vpshufb ymm12, ymm12, ymm8
  202         vpshufb ymm13, ymm13, ymm8
  203         vpshufb ymm14, ymm14, ymm8
  204         vpshufb ymm15, ymm15, ymm8
  205         vpaddd  ymm8, ymm12, ymmword ptr [BLAKE3_IV_0+rip]
  206         vpaddd  ymm9, ymm13, ymmword ptr [BLAKE3_IV_1+rip]
  207         vpaddd  ymm10, ymm14, ymmword ptr [BLAKE3_IV_2+rip]
  208         vpaddd  ymm11, ymm15, ymmword ptr [BLAKE3_IV_3+rip]
  209         vpxor   ymm4, ymm4, ymm8
  210         vpxor   ymm5, ymm5, ymm9
  211         vpxor   ymm6, ymm6, ymm10
  212         vpxor   ymm7, ymm7, ymm11
  213         vmovdqa ymmword ptr [rsp+0x200], ymm8
  214         vpsrld  ymm8, ymm4, 12
  215         vpslld  ymm4, ymm4, 20
  216         vpor    ymm4, ymm4, ymm8
  217         vpsrld  ymm8, ymm5, 12
  218         vpslld  ymm5, ymm5, 20
  219         vpor    ymm5, ymm5, ymm8
  220         vpsrld  ymm8, ymm6, 12
  221         vpslld  ymm6, ymm6, 20
  222         vpor    ymm6, ymm6, ymm8
  223         vpsrld  ymm8, ymm7, 12
  224         vpslld  ymm7, ymm7, 20
  225         vpor    ymm7, ymm7, ymm8
  226         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x20]
  227         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x60]
  228         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0xA0]
  229         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0xE0]
  230         vpaddd  ymm0, ymm0, ymm4
  231         vpaddd  ymm1, ymm1, ymm5
  232         vpaddd  ymm2, ymm2, ymm6
  233         vpaddd  ymm3, ymm3, ymm7
  234         vpxor   ymm12, ymm12, ymm0
  235         vpxor   ymm13, ymm13, ymm1
  236         vpxor   ymm14, ymm14, ymm2
  237         vpxor   ymm15, ymm15, ymm3
  238         vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
  239         vpshufb ymm12, ymm12, ymm8
  240         vpshufb ymm13, ymm13, ymm8
  241         vpshufb ymm14, ymm14, ymm8
  242         vpshufb ymm15, ymm15, ymm8
  243         vpaddd  ymm8, ymm12, ymmword ptr [rsp+0x200]
  244         vpaddd  ymm9, ymm9, ymm13
  245         vpaddd  ymm10, ymm10, ymm14
  246         vpaddd  ymm11, ymm11, ymm15
  247         vpxor   ymm4, ymm4, ymm8
  248         vpxor   ymm5, ymm5, ymm9
  249         vpxor   ymm6, ymm6, ymm10
  250         vpxor   ymm7, ymm7, ymm11
  251         vmovdqa ymmword ptr [rsp+0x200], ymm8
  252         vpsrld  ymm8, ymm4, 7
  253         vpslld  ymm4, ymm4, 25
  254         vpor    ymm4, ymm4, ymm8
  255         vpsrld  ymm8, ymm5, 7
  256         vpslld  ymm5, ymm5, 25
  257         vpor    ymm5, ymm5, ymm8
  258         vpsrld  ymm8, ymm6, 7
  259         vpslld  ymm6, ymm6, 25
  260         vpor    ymm6, ymm6, ymm8
  261         vpsrld  ymm8, ymm7, 7
  262         vpslld  ymm7, ymm7, 25
  263         vpor    ymm7, ymm7, ymm8
  264         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x100]
  265         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x140]
  266         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x180]
  267         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x1C0]
  268         vpaddd  ymm0, ymm0, ymm5
  269         vpaddd  ymm1, ymm1, ymm6
  270         vpaddd  ymm2, ymm2, ymm7
  271         vpaddd  ymm3, ymm3, ymm4
  272         vpxor   ymm15, ymm15, ymm0
  273         vpxor   ymm12, ymm12, ymm1
  274         vpxor   ymm13, ymm13, ymm2
  275         vpxor   ymm14, ymm14, ymm3
  276         vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
  277         vpshufb ymm15, ymm15, ymm8
  278         vpshufb ymm12, ymm12, ymm8
  279         vpshufb ymm13, ymm13, ymm8
  280         vpshufb ymm14, ymm14, ymm8
  281         vpaddd  ymm10, ymm10, ymm15
  282         vpaddd  ymm11, ymm11, ymm12
  283         vpaddd  ymm8, ymm13, ymmword ptr [rsp+0x200]
  284         vpaddd  ymm9, ymm9, ymm14
  285         vpxor   ymm5, ymm5, ymm10
  286         vpxor   ymm6, ymm6, ymm11
  287         vpxor   ymm7, ymm7, ymm8
  288         vpxor   ymm4, ymm4, ymm9
  289         vmovdqa ymmword ptr [rsp+0x200], ymm8
  290         vpsrld  ymm8, ymm5, 12
  291         vpslld  ymm5, ymm5, 20
  292         vpor    ymm5, ymm5, ymm8
  293         vpsrld  ymm8, ymm6, 12
  294         vpslld  ymm6, ymm6, 20
  295         vpor    ymm6, ymm6, ymm8
  296         vpsrld  ymm8, ymm7, 12
  297         vpslld  ymm7, ymm7, 20
  298         vpor    ymm7, ymm7, ymm8
  299         vpsrld  ymm8, ymm4, 12
  300         vpslld  ymm4, ymm4, 20
  301         vpor    ymm4, ymm4, ymm8
  302         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x120]
  303         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x160]
  304         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x1A0]
  305         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x1E0]
  306         vpaddd  ymm0, ymm0, ymm5
  307         vpaddd  ymm1, ymm1, ymm6
  308         vpaddd  ymm2, ymm2, ymm7
  309         vpaddd  ymm3, ymm3, ymm4
  310         vpxor   ymm15, ymm15, ymm0
  311         vpxor   ymm12, ymm12, ymm1
  312         vpxor   ymm13, ymm13, ymm2
  313         vpxor   ymm14, ymm14, ymm3
  314         vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
  315         vpshufb ymm15, ymm15, ymm8
  316         vpshufb ymm12, ymm12, ymm8
  317         vpshufb ymm13, ymm13, ymm8
  318         vpshufb ymm14, ymm14, ymm8
  319         vpaddd  ymm10, ymm10, ymm15
  320         vpaddd  ymm11, ymm11, ymm12
  321         vpaddd  ymm8, ymm13, ymmword ptr [rsp+0x200]
  322         vpaddd  ymm9, ymm9, ymm14
  323         vpxor   ymm5, ymm5, ymm10
  324         vpxor   ymm6, ymm6, ymm11
  325         vpxor   ymm7, ymm7, ymm8
  326         vpxor   ymm4, ymm4, ymm9
  327         vmovdqa ymmword ptr [rsp+0x200], ymm8
  328         vpsrld  ymm8, ymm5, 7
  329         vpslld  ymm5, ymm5, 25
  330         vpor    ymm5, ymm5, ymm8
  331         vpsrld  ymm8, ymm6, 7
  332         vpslld  ymm6, ymm6, 25
  333         vpor    ymm6, ymm6, ymm8
  334         vpsrld  ymm8, ymm7, 7
  335         vpslld  ymm7, ymm7, 25
  336         vpor    ymm7, ymm7, ymm8
  337         vpsrld  ymm8, ymm4, 7
  338         vpslld  ymm4, ymm4, 25
  339         vpor    ymm4, ymm4, ymm8
  340         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x40]
  341         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x60]
  342         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0xE0]
  343         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x80]
  344         vpaddd  ymm0, ymm0, ymm4
  345         vpaddd  ymm1, ymm1, ymm5
  346         vpaddd  ymm2, ymm2, ymm6
  347         vpaddd  ymm3, ymm3, ymm7
  348         vpxor   ymm12, ymm12, ymm0
  349         vpxor   ymm13, ymm13, ymm1
  350         vpxor   ymm14, ymm14, ymm2
  351         vpxor   ymm15, ymm15, ymm3
  352         vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
  353         vpshufb ymm12, ymm12, ymm8
  354         vpshufb ymm13, ymm13, ymm8
  355         vpshufb ymm14, ymm14, ymm8
  356         vpshufb ymm15, ymm15, ymm8
  357         vpaddd  ymm8, ymm12, ymmword ptr [rsp+0x200]
  358         vpaddd  ymm9, ymm9, ymm13
  359         vpaddd  ymm10, ymm10, ymm14
  360         vpaddd  ymm11, ymm11, ymm15
  361         vpxor   ymm4, ymm4, ymm8
  362         vpxor   ymm5, ymm5, ymm9
  363         vpxor   ymm6, ymm6, ymm10
  364         vpxor   ymm7, ymm7, ymm11
  365         vmovdqa ymmword ptr [rsp+0x200], ymm8
  366         vpsrld  ymm8, ymm4, 12
  367         vpslld  ymm4, ymm4, 20
  368         vpor    ymm4, ymm4, ymm8
  369         vpsrld  ymm8, ymm5, 12
  370         vpslld  ymm5, ymm5, 20
  371         vpor    ymm5, ymm5, ymm8
  372         vpsrld  ymm8, ymm6, 12
  373         vpslld  ymm6, ymm6, 20
  374         vpor    ymm6, ymm6, ymm8
  375         vpsrld  ymm8, ymm7, 12
  376         vpslld  ymm7, ymm7, 20
  377         vpor    ymm7, ymm7, ymm8
  378         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0xC0]
  379         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x140]
  380         vpaddd  ymm2, ymm2, ymmword ptr [rsp]
  381         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x1A0]
  382         vpaddd  ymm0, ymm0, ymm4
  383         vpaddd  ymm1, ymm1, ymm5
  384         vpaddd  ymm2, ymm2, ymm6
  385         vpaddd  ymm3, ymm3, ymm7
  386         vpxor   ymm12, ymm12, ymm0
  387         vpxor   ymm13, ymm13, ymm1
  388         vpxor   ymm14, ymm14, ymm2
  389         vpxor   ymm15, ymm15, ymm3
  390         vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
  391         vpshufb ymm12, ymm12, ymm8
  392         vpshufb ymm13, ymm13, ymm8
  393         vpshufb ymm14, ymm14, ymm8
  394         vpshufb ymm15, ymm15, ymm8
  395         vpaddd  ymm8, ymm12, ymmword ptr [rsp+0x200]
  396         vpaddd  ymm9, ymm9, ymm13
  397         vpaddd  ymm10, ymm10, ymm14
  398         vpaddd  ymm11, ymm11, ymm15
  399         vpxor   ymm4, ymm4, ymm8
  400         vpxor   ymm5, ymm5, ymm9
  401         vpxor   ymm6, ymm6, ymm10
  402         vpxor   ymm7, ymm7, ymm11
  403         vmovdqa ymmword ptr [rsp+0x200], ymm8
  404         vpsrld  ymm8, ymm4, 7
  405         vpslld  ymm4, ymm4, 25
  406         vpor    ymm4, ymm4, ymm8
  407         vpsrld  ymm8, ymm5, 7
  408         vpslld  ymm5, ymm5, 25
  409         vpor    ymm5, ymm5, ymm8
  410         vpsrld  ymm8, ymm6, 7
  411         vpslld  ymm6, ymm6, 25
  412         vpor    ymm6, ymm6, ymm8
  413         vpsrld  ymm8, ymm7, 7
  414         vpslld  ymm7, ymm7, 25
  415         vpor    ymm7, ymm7, ymm8
  416         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x20]
  417         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x180]
  418         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x120]
  419         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x1E0]
  420         vpaddd  ymm0, ymm0, ymm5
  421         vpaddd  ymm1, ymm1, ymm6
  422         vpaddd  ymm2, ymm2, ymm7
  423         vpaddd  ymm3, ymm3, ymm4
  424         vpxor   ymm15, ymm15, ymm0
  425         vpxor   ymm12, ymm12, ymm1
  426         vpxor   ymm13, ymm13, ymm2
  427         vpxor   ymm14, ymm14, ymm3
  428         vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
  429         vpshufb ymm15, ymm15, ymm8
  430         vpshufb ymm12, ymm12, ymm8
  431         vpshufb ymm13, ymm13, ymm8
  432         vpshufb ymm14, ymm14, ymm8
  433         vpaddd  ymm10, ymm10, ymm15
  434         vpaddd  ymm11, ymm11, ymm12
  435         vpaddd  ymm8, ymm13, ymmword ptr [rsp+0x200]
  436         vpaddd  ymm9, ymm9, ymm14
  437         vpxor   ymm5, ymm5, ymm10
  438         vpxor   ymm6, ymm6, ymm11
  439         vpxor   ymm7, ymm7, ymm8
  440         vpxor   ymm4, ymm4, ymm9
  441         vmovdqa ymmword ptr [rsp+0x200], ymm8
  442         vpsrld  ymm8, ymm5, 12
  443         vpslld  ymm5, ymm5, 20
  444         vpor    ymm5, ymm5, ymm8
  445         vpsrld  ymm8, ymm6, 12
  446         vpslld  ymm6, ymm6, 20
  447         vpor    ymm6, ymm6, ymm8
  448         vpsrld  ymm8, ymm7, 12
  449         vpslld  ymm7, ymm7, 20
  450         vpor    ymm7, ymm7, ymm8
  451         vpsrld  ymm8, ymm4, 12
  452         vpslld  ymm4, ymm4, 20
  453         vpor    ymm4, ymm4, ymm8
  454         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x160]
  455         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0xA0]
  456         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x1C0]
  457         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x100]
  458         vpaddd  ymm0, ymm0, ymm5
  459         vpaddd  ymm1, ymm1, ymm6
  460         vpaddd  ymm2, ymm2, ymm7
  461         vpaddd  ymm3, ymm3, ymm4
  462         vpxor   ymm15, ymm15, ymm0
  463         vpxor   ymm12, ymm12, ymm1
  464         vpxor   ymm13, ymm13, ymm2
  465         vpxor   ymm14, ymm14, ymm3
  466         vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
  467         vpshufb ymm15, ymm15, ymm8
  468         vpshufb ymm12, ymm12, ymm8
  469         vpshufb ymm13, ymm13, ymm8
  470         vpshufb ymm14, ymm14, ymm8
  471         vpaddd  ymm10, ymm10, ymm15
  472         vpaddd  ymm11, ymm11, ymm12
  473         vpaddd  ymm8, ymm13, ymmword ptr [rsp+0x200]
  474         vpaddd  ymm9, ymm9, ymm14
  475         vpxor   ymm5, ymm5, ymm10
  476         vpxor   ymm6, ymm6, ymm11
  477         vpxor   ymm7, ymm7, ymm8
  478         vpxor   ymm4, ymm4, ymm9
  479         vmovdqa ymmword ptr [rsp+0x200], ymm8
  480         vpsrld  ymm8, ymm5, 7
  481         vpslld  ymm5, ymm5, 25
  482         vpor    ymm5, ymm5, ymm8
  483         vpsrld  ymm8, ymm6, 7
  484         vpslld  ymm6, ymm6, 25
  485         vpor    ymm6, ymm6, ymm8
  486         vpsrld  ymm8, ymm7, 7
  487         vpslld  ymm7, ymm7, 25
  488         vpor    ymm7, ymm7, ymm8
  489         vpsrld  ymm8, ymm4, 7
  490         vpslld  ymm4, ymm4, 25
  491         vpor    ymm4, ymm4, ymm8
  492         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x60]
  493         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x140]
  494         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x1A0]
  495         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0xE0]
  496         vpaddd  ymm0, ymm0, ymm4
  497         vpaddd  ymm1, ymm1, ymm5
  498         vpaddd  ymm2, ymm2, ymm6
  499         vpaddd  ymm3, ymm3, ymm7
  500         vpxor   ymm12, ymm12, ymm0
  501         vpxor   ymm13, ymm13, ymm1
  502         vpxor   ymm14, ymm14, ymm2
  503         vpxor   ymm15, ymm15, ymm3
  504         vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
  505         vpshufb ymm12, ymm12, ymm8
  506         vpshufb ymm13, ymm13, ymm8
  507         vpshufb ymm14, ymm14, ymm8
  508         vpshufb ymm15, ymm15, ymm8
  509         vpaddd  ymm8, ymm12, ymmword ptr [rsp+0x200]
  510         vpaddd  ymm9, ymm9, ymm13
  511         vpaddd  ymm10, ymm10, ymm14
  512         vpaddd  ymm11, ymm11, ymm15
  513         vpxor   ymm4, ymm4, ymm8
  514         vpxor   ymm5, ymm5, ymm9
  515         vpxor   ymm6, ymm6, ymm10
  516         vpxor   ymm7, ymm7, ymm11
  517         vmovdqa ymmword ptr [rsp+0x200], ymm8
  518         vpsrld  ymm8, ymm4, 12
  519         vpslld  ymm4, ymm4, 20
  520         vpor    ymm4, ymm4, ymm8
  521         vpsrld  ymm8, ymm5, 12
  522         vpslld  ymm5, ymm5, 20
  523         vpor    ymm5, ymm5, ymm8
  524         vpsrld  ymm8, ymm6, 12
  525         vpslld  ymm6, ymm6, 20
  526         vpor    ymm6, ymm6, ymm8
  527         vpsrld  ymm8, ymm7, 12
  528         vpslld  ymm7, ymm7, 20
  529         vpor    ymm7, ymm7, ymm8
  530         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x80]
  531         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x180]
  532         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x40]
  533         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x1C0]
  534         vpaddd  ymm0, ymm0, ymm4
  535         vpaddd  ymm1, ymm1, ymm5
  536         vpaddd  ymm2, ymm2, ymm6
  537         vpaddd  ymm3, ymm3, ymm7
  538         vpxor   ymm12, ymm12, ymm0
  539         vpxor   ymm13, ymm13, ymm1
  540         vpxor   ymm14, ymm14, ymm2
  541         vpxor   ymm15, ymm15, ymm3
  542         vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
  543         vpshufb ymm12, ymm12, ymm8
  544         vpshufb ymm13, ymm13, ymm8
  545         vpshufb ymm14, ymm14, ymm8
  546         vpshufb ymm15, ymm15, ymm8
  547         vpaddd  ymm8, ymm12, ymmword ptr [rsp+0x200]
  548         vpaddd  ymm9, ymm9, ymm13
  549         vpaddd  ymm10, ymm10, ymm14
  550         vpaddd  ymm11, ymm11, ymm15
  551         vpxor   ymm4, ymm4, ymm8
  552         vpxor   ymm5, ymm5, ymm9
  553         vpxor   ymm6, ymm6, ymm10
  554         vpxor   ymm7, ymm7, ymm11
  555         vmovdqa ymmword ptr [rsp+0x200], ymm8
  556         vpsrld  ymm8, ymm4, 7
  557         vpslld  ymm4, ymm4, 25
  558         vpor    ymm4, ymm4, ymm8
  559         vpsrld  ymm8, ymm5, 7
  560         vpslld  ymm5, ymm5, 25
  561         vpor    ymm5, ymm5, ymm8
  562         vpsrld  ymm8, ymm6, 7
  563         vpslld  ymm6, ymm6, 25
  564         vpor    ymm6, ymm6, ymm8
  565         vpsrld  ymm8, ymm7, 7
  566         vpslld  ymm7, ymm7, 25
  567         vpor    ymm7, ymm7, ymm8
  568         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0xC0]
  569         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x120]
  570         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x160]
  571         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x100]
  572         vpaddd  ymm0, ymm0, ymm5
  573         vpaddd  ymm1, ymm1, ymm6
  574         vpaddd  ymm2, ymm2, ymm7
  575         vpaddd  ymm3, ymm3, ymm4
  576         vpxor   ymm15, ymm15, ymm0
  577         vpxor   ymm12, ymm12, ymm1
  578         vpxor   ymm13, ymm13, ymm2
  579         vpxor   ymm14, ymm14, ymm3
  580         vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
  581         vpshufb ymm15, ymm15, ymm8
  582         vpshufb ymm12, ymm12, ymm8
  583         vpshufb ymm13, ymm13, ymm8
  584         vpshufb ymm14, ymm14, ymm8
  585         vpaddd  ymm10, ymm10, ymm15
  586         vpaddd  ymm11, ymm11, ymm12
  587         vpaddd  ymm8, ymm13, ymmword ptr [rsp+0x200]
  588         vpaddd  ymm9, ymm9, ymm14
  589         vpxor   ymm5, ymm5, ymm10
  590         vpxor   ymm6, ymm6, ymm11
  591         vpxor   ymm7, ymm7, ymm8
  592         vpxor   ymm4, ymm4, ymm9
  593         vmovdqa ymmword ptr [rsp+0x200], ymm8
  594         vpsrld  ymm8, ymm5, 12
  595         vpslld  ymm5, ymm5, 20
  596         vpor    ymm5, ymm5, ymm8
  597         vpsrld  ymm8, ymm6, 12
  598         vpslld  ymm6, ymm6, 20
  599         vpor    ymm6, ymm6, ymm8
  600         vpsrld  ymm8, ymm7, 12
  601         vpslld  ymm7, ymm7, 20
  602         vpor    ymm7, ymm7, ymm8
  603         vpsrld  ymm8, ymm4, 12
  604         vpslld  ymm4, ymm4, 20
  605         vpor    ymm4, ymm4, ymm8
  606         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0xA0]
  607         vpaddd  ymm1, ymm1, ymmword ptr [rsp]
  608         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x1E0]
  609         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x20]
  610         vpaddd  ymm0, ymm0, ymm5
  611         vpaddd  ymm1, ymm1, ymm6
  612         vpaddd  ymm2, ymm2, ymm7
  613         vpaddd  ymm3, ymm3, ymm4
  614         vpxor   ymm15, ymm15, ymm0
  615         vpxor   ymm12, ymm12, ymm1
  616         vpxor   ymm13, ymm13, ymm2
  617         vpxor   ymm14, ymm14, ymm3
  618         vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
  619         vpshufb ymm15, ymm15, ymm8
  620         vpshufb ymm12, ymm12, ymm8
  621         vpshufb ymm13, ymm13, ymm8
  622         vpshufb ymm14, ymm14, ymm8
  623         vpaddd  ymm10, ymm10, ymm15
  624         vpaddd  ymm11, ymm11, ymm12
  625         vpaddd  ymm8, ymm13, ymmword ptr [rsp+0x200]
  626         vpaddd  ymm9, ymm9, ymm14
  627         vpxor   ymm5, ymm5, ymm10
  628         vpxor   ymm6, ymm6, ymm11
  629         vpxor   ymm7, ymm7, ymm8
  630         vpxor   ymm4, ymm4, ymm9
  631         vmovdqa ymmword ptr [rsp+0x200], ymm8
  632         vpsrld  ymm8, ymm5, 7
  633         vpslld  ymm5, ymm5, 25
  634         vpor    ymm5, ymm5, ymm8
  635         vpsrld  ymm8, ymm6, 7
  636         vpslld  ymm6, ymm6, 25
  637         vpor    ymm6, ymm6, ymm8
  638         vpsrld  ymm8, ymm7, 7
  639         vpslld  ymm7, ymm7, 25
  640         vpor    ymm7, ymm7, ymm8
  641         vpsrld  ymm8, ymm4, 7
  642         vpslld  ymm4, ymm4, 25
  643         vpor    ymm4, ymm4, ymm8
  644         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x140]
  645         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x180]
  646         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x1C0]
  647         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x1A0]
  648         vpaddd  ymm0, ymm0, ymm4
  649         vpaddd  ymm1, ymm1, ymm5
  650         vpaddd  ymm2, ymm2, ymm6
  651         vpaddd  ymm3, ymm3, ymm7
  652         vpxor   ymm12, ymm12, ymm0
  653         vpxor   ymm13, ymm13, ymm1
  654         vpxor   ymm14, ymm14, ymm2
  655         vpxor   ymm15, ymm15, ymm3
  656         vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
  657         vpshufb ymm12, ymm12, ymm8
  658         vpshufb ymm13, ymm13, ymm8
  659         vpshufb ymm14, ymm14, ymm8
  660         vpshufb ymm15, ymm15, ymm8
  661         vpaddd  ymm8, ymm12, ymmword ptr [rsp+0x200]
  662         vpaddd  ymm9, ymm9, ymm13
  663         vpaddd  ymm10, ymm10, ymm14
  664         vpaddd  ymm11, ymm11, ymm15
  665         vpxor   ymm4, ymm4, ymm8
  666         vpxor   ymm5, ymm5, ymm9
  667         vpxor   ymm6, ymm6, ymm10
  668         vpxor   ymm7, ymm7, ymm11
  669         vmovdqa ymmword ptr [rsp+0x200], ymm8
  670         vpsrld  ymm8, ymm4, 12
  671         vpslld  ymm4, ymm4, 20
  672         vpor    ymm4, ymm4, ymm8
  673         vpsrld  ymm8, ymm5, 12
  674         vpslld  ymm5, ymm5, 20
  675         vpor    ymm5, ymm5, ymm8
  676         vpsrld  ymm8, ymm6, 12
  677         vpslld  ymm6, ymm6, 20
  678         vpor    ymm6, ymm6, ymm8
  679         vpsrld  ymm8, ymm7, 12
  680         vpslld  ymm7, ymm7, 20
  681         vpor    ymm7, ymm7, ymm8
  682         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0xE0]
  683         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x120]
  684         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x60]
  685         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x1E0]
  686         vpaddd  ymm0, ymm0, ymm4
  687         vpaddd  ymm1, ymm1, ymm5
  688         vpaddd  ymm2, ymm2, ymm6
  689         vpaddd  ymm3, ymm3, ymm7
  690         vpxor   ymm12, ymm12, ymm0
  691         vpxor   ymm13, ymm13, ymm1
  692         vpxor   ymm14, ymm14, ymm2
  693         vpxor   ymm15, ymm15, ymm3
  694         vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
  695         vpshufb ymm12, ymm12, ymm8
  696         vpshufb ymm13, ymm13, ymm8
  697         vpshufb ymm14, ymm14, ymm8
  698         vpshufb ymm15, ymm15, ymm8
  699         vpaddd  ymm8, ymm12, ymmword ptr [rsp+0x200]
  700         vpaddd  ymm9, ymm9, ymm13
  701         vpaddd  ymm10, ymm10, ymm14
  702         vpaddd  ymm11, ymm11, ymm15
  703         vpxor   ymm4, ymm4, ymm8
  704         vpxor   ymm5, ymm5, ymm9
  705         vpxor   ymm6, ymm6, ymm10
  706         vpxor   ymm7, ymm7, ymm11
  707         vmovdqa ymmword ptr [rsp+0x200], ymm8
  708         vpsrld  ymm8, ymm4, 7
  709         vpslld  ymm4, ymm4, 25
  710         vpor    ymm4, ymm4, ymm8
  711         vpsrld  ymm8, ymm5, 7
  712         vpslld  ymm5, ymm5, 25
  713         vpor    ymm5, ymm5, ymm8
  714         vpsrld  ymm8, ymm6, 7
  715         vpslld  ymm6, ymm6, 25
  716         vpor    ymm6, ymm6, ymm8
  717         vpsrld  ymm8, ymm7, 7
  718         vpslld  ymm7, ymm7, 25
  719         vpor    ymm7, ymm7, ymm8
  720         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x80]
  721         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x160]
  722         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0xA0]
  723         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x20]
  724         vpaddd  ymm0, ymm0, ymm5
  725         vpaddd  ymm1, ymm1, ymm6
  726         vpaddd  ymm2, ymm2, ymm7
  727         vpaddd  ymm3, ymm3, ymm4
  728         vpxor   ymm15, ymm15, ymm0
  729         vpxor   ymm12, ymm12, ymm1
  730         vpxor   ymm13, ymm13, ymm2
  731         vpxor   ymm14, ymm14, ymm3
  732         vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
  733         vpshufb ymm15, ymm15, ymm8
  734         vpshufb ymm12, ymm12, ymm8
  735         vpshufb ymm13, ymm13, ymm8
  736         vpshufb ymm14, ymm14, ymm8
  737         vpaddd  ymm10, ymm10, ymm15
  738         vpaddd  ymm11, ymm11, ymm12
  739         vpaddd  ymm8, ymm13, ymmword ptr [rsp+0x200]
  740         vpaddd  ymm9, ymm9, ymm14
  741         vpxor   ymm5, ymm5, ymm10
  742         vpxor   ymm6, ymm6, ymm11
  743         vpxor   ymm7, ymm7, ymm8
  744         vpxor   ymm4, ymm4, ymm9
  745         vmovdqa ymmword ptr [rsp+0x200], ymm8
  746         vpsrld  ymm8, ymm5, 12
  747         vpslld  ymm5, ymm5, 20
  748         vpor    ymm5, ymm5, ymm8
  749         vpsrld  ymm8, ymm6, 12
  750         vpslld  ymm6, ymm6, 20
  751         vpor    ymm6, ymm6, ymm8
  752         vpsrld  ymm8, ymm7, 12
  753         vpslld  ymm7, ymm7, 20
  754         vpor    ymm7, ymm7, ymm8
  755         vpsrld  ymm8, ymm4, 12
  756         vpslld  ymm4, ymm4, 20
  757         vpor    ymm4, ymm4, ymm8
  758         vpaddd  ymm0, ymm0, ymmword ptr [rsp]
  759         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x40]
  760         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x100]
  761         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0xC0]
  762         vpaddd  ymm0, ymm0, ymm5
  763         vpaddd  ymm1, ymm1, ymm6
  764         vpaddd  ymm2, ymm2, ymm7
  765         vpaddd  ymm3, ymm3, ymm4
  766         vpxor   ymm15, ymm15, ymm0
  767         vpxor   ymm12, ymm12, ymm1
  768         vpxor   ymm13, ymm13, ymm2
  769         vpxor   ymm14, ymm14, ymm3
  770         vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
  771         vpshufb ymm15, ymm15, ymm8
  772         vpshufb ymm12, ymm12, ymm8
  773         vpshufb ymm13, ymm13, ymm8
  774         vpshufb ymm14, ymm14, ymm8
  775         vpaddd  ymm10, ymm10, ymm15
  776         vpaddd  ymm11, ymm11, ymm12
  777         vpaddd  ymm8, ymm13, ymmword ptr [rsp+0x200]
  778         vpaddd  ymm9, ymm9, ymm14
  779         vpxor   ymm5, ymm5, ymm10
  780         vpxor   ymm6, ymm6, ymm11
  781         vpxor   ymm7, ymm7, ymm8
  782         vpxor   ymm4, ymm4, ymm9
  783         vmovdqa ymmword ptr [rsp+0x200], ymm8
  784         vpsrld  ymm8, ymm5, 7
  785         vpslld  ymm5, ymm5, 25
  786         vpor    ymm5, ymm5, ymm8
  787         vpsrld  ymm8, ymm6, 7
  788         vpslld  ymm6, ymm6, 25
  789         vpor    ymm6, ymm6, ymm8
  790         vpsrld  ymm8, ymm7, 7
  791         vpslld  ymm7, ymm7, 25
  792         vpor    ymm7, ymm7, ymm8
  793         vpsrld  ymm8, ymm4, 7
  794         vpslld  ymm4, ymm4, 25
  795         vpor    ymm4, ymm4, ymm8
  796         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x180]
  797         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x120]
  798         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x1E0]
  799         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x1C0]
  800         vpaddd  ymm0, ymm0, ymm4
  801         vpaddd  ymm1, ymm1, ymm5
  802         vpaddd  ymm2, ymm2, ymm6
  803         vpaddd  ymm3, ymm3, ymm7
  804         vpxor   ymm12, ymm12, ymm0
  805         vpxor   ymm13, ymm13, ymm1
  806         vpxor   ymm14, ymm14, ymm2
  807         vpxor   ymm15, ymm15, ymm3
  808         vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
  809         vpshufb ymm12, ymm12, ymm8
  810         vpshufb ymm13, ymm13, ymm8
  811         vpshufb ymm14, ymm14, ymm8
  812         vpshufb ymm15, ymm15, ymm8
  813         vpaddd  ymm8, ymm12, ymmword ptr [rsp+0x200]
  814         vpaddd  ymm9, ymm9, ymm13
  815         vpaddd  ymm10, ymm10, ymm14
  816         vpaddd  ymm11, ymm11, ymm15
  817         vpxor   ymm4, ymm4, ymm8
  818         vpxor   ymm5, ymm5, ymm9
  819         vpxor   ymm6, ymm6, ymm10
  820         vpxor   ymm7, ymm7, ymm11
  821         vmovdqa ymmword ptr [rsp+0x200], ymm8
  822         vpsrld  ymm8, ymm4, 12
  823         vpslld  ymm4, ymm4, 20
  824         vpor    ymm4, ymm4, ymm8
  825         vpsrld  ymm8, ymm5, 12
  826         vpslld  ymm5, ymm5, 20
  827         vpor    ymm5, ymm5, ymm8
  828         vpsrld  ymm8, ymm6, 12
  829         vpslld  ymm6, ymm6, 20
  830         vpor    ymm6, ymm6, ymm8
  831         vpsrld  ymm8, ymm7, 12
  832         vpslld  ymm7, ymm7, 20
  833         vpor    ymm7, ymm7, ymm8
  834         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x1A0]
  835         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x160]
  836         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x140]
  837         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x100]
  838         vpaddd  ymm0, ymm0, ymm4
  839         vpaddd  ymm1, ymm1, ymm5
  840         vpaddd  ymm2, ymm2, ymm6
  841         vpaddd  ymm3, ymm3, ymm7
  842         vpxor   ymm12, ymm12, ymm0
  843         vpxor   ymm13, ymm13, ymm1
  844         vpxor   ymm14, ymm14, ymm2
  845         vpxor   ymm15, ymm15, ymm3
  846         vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
  847         vpshufb ymm12, ymm12, ymm8
  848         vpshufb ymm13, ymm13, ymm8
  849         vpshufb ymm14, ymm14, ymm8
  850         vpshufb ymm15, ymm15, ymm8
  851         vpaddd  ymm8, ymm12, ymmword ptr [rsp+0x200]
  852         vpaddd  ymm9, ymm9, ymm13
  853         vpaddd  ymm10, ymm10, ymm14
  854         vpaddd  ymm11, ymm11, ymm15
  855         vpxor   ymm4, ymm4, ymm8
  856         vpxor   ymm5, ymm5, ymm9
  857         vpxor   ymm6, ymm6, ymm10
  858         vpxor   ymm7, ymm7, ymm11
  859         vmovdqa ymmword ptr [rsp+0x200], ymm8
  860         vpsrld  ymm8, ymm4, 7
  861         vpslld  ymm4, ymm4, 25
  862         vpor    ymm4, ymm4, ymm8
  863         vpsrld  ymm8, ymm5, 7
  864         vpslld  ymm5, ymm5, 25
  865         vpor    ymm5, ymm5, ymm8
  866         vpsrld  ymm8, ymm6, 7
  867         vpslld  ymm6, ymm6, 25
  868         vpor    ymm6, ymm6, ymm8
  869         vpsrld  ymm8, ymm7, 7
  870         vpslld  ymm7, ymm7, 25
  871         vpor    ymm7, ymm7, ymm8
  872         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0xE0]
  873         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0xA0]
  874         vpaddd  ymm2, ymm2, ymmword ptr [rsp]
  875         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0xC0]
  876         vpaddd  ymm0, ymm0, ymm5
  877         vpaddd  ymm1, ymm1, ymm6
  878         vpaddd  ymm2, ymm2, ymm7
  879         vpaddd  ymm3, ymm3, ymm4
  880         vpxor   ymm15, ymm15, ymm0
  881         vpxor   ymm12, ymm12, ymm1
  882         vpxor   ymm13, ymm13, ymm2
  883         vpxor   ymm14, ymm14, ymm3
  884         vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
  885         vpshufb ymm15, ymm15, ymm8
  886         vpshufb ymm12, ymm12, ymm8
  887         vpshufb ymm13, ymm13, ymm8
  888         vpshufb ymm14, ymm14, ymm8
  889         vpaddd  ymm10, ymm10, ymm15
  890         vpaddd  ymm11, ymm11, ymm12
  891         vpaddd  ymm8, ymm13, ymmword ptr [rsp+0x200]
  892         vpaddd  ymm9, ymm9, ymm14
  893         vpxor   ymm5, ymm5, ymm10
  894         vpxor   ymm6, ymm6, ymm11
  895         vpxor   ymm7, ymm7, ymm8
  896         vpxor   ymm4, ymm4, ymm9
  897         vmovdqa ymmword ptr [rsp+0x200], ymm8
  898         vpsrld  ymm8, ymm5, 12
  899         vpslld  ymm5, ymm5, 20
  900         vpor    ymm5, ymm5, ymm8
  901         vpsrld  ymm8, ymm6, 12
  902         vpslld  ymm6, ymm6, 20
  903         vpor    ymm6, ymm6, ymm8
  904         vpsrld  ymm8, ymm7, 12
  905         vpslld  ymm7, ymm7, 20
  906         vpor    ymm7, ymm7, ymm8
  907         vpsrld  ymm8, ymm4, 12
  908         vpslld  ymm4, ymm4, 20
  909         vpor    ymm4, ymm4, ymm8
  910         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x40]
  911         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x60]
  912         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x20]
  913         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x80]
  914         vpaddd  ymm0, ymm0, ymm5
  915         vpaddd  ymm1, ymm1, ymm6
  916         vpaddd  ymm2, ymm2, ymm7
  917         vpaddd  ymm3, ymm3, ymm4
  918         vpxor   ymm15, ymm15, ymm0
  919         vpxor   ymm12, ymm12, ymm1
  920         vpxor   ymm13, ymm13, ymm2
  921         vpxor   ymm14, ymm14, ymm3
  922         vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
  923         vpshufb ymm15, ymm15, ymm8
  924         vpshufb ymm12, ymm12, ymm8
  925         vpshufb ymm13, ymm13, ymm8
  926         vpshufb ymm14, ymm14, ymm8
  927         vpaddd  ymm10, ymm10, ymm15
  928         vpaddd  ymm11, ymm11, ymm12
  929         vpaddd  ymm8, ymm13, ymmword ptr [rsp+0x200]
  930         vpaddd  ymm9, ymm9, ymm14
  931         vpxor   ymm5, ymm5, ymm10
  932         vpxor   ymm6, ymm6, ymm11
  933         vpxor   ymm7, ymm7, ymm8
  934         vpxor   ymm4, ymm4, ymm9
  935         vmovdqa ymmword ptr [rsp+0x200], ymm8
  936         vpsrld  ymm8, ymm5, 7
  937         vpslld  ymm5, ymm5, 25
  938         vpor    ymm5, ymm5, ymm8
  939         vpsrld  ymm8, ymm6, 7
  940         vpslld  ymm6, ymm6, 25
  941         vpor    ymm6, ymm6, ymm8
  942         vpsrld  ymm8, ymm7, 7
  943         vpslld  ymm7, ymm7, 25
  944         vpor    ymm7, ymm7, ymm8
  945         vpsrld  ymm8, ymm4, 7
  946         vpslld  ymm4, ymm4, 25
  947         vpor    ymm4, ymm4, ymm8
  948         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x120]
  949         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x160]
  950         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x100]
  951         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x1E0]
  952         vpaddd  ymm0, ymm0, ymm4
  953         vpaddd  ymm1, ymm1, ymm5
  954         vpaddd  ymm2, ymm2, ymm6
  955         vpaddd  ymm3, ymm3, ymm7
  956         vpxor   ymm12, ymm12, ymm0
  957         vpxor   ymm13, ymm13, ymm1
  958         vpxor   ymm14, ymm14, ymm2
  959         vpxor   ymm15, ymm15, ymm3
  960         vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
  961         vpshufb ymm12, ymm12, ymm8
  962         vpshufb ymm13, ymm13, ymm8
  963         vpshufb ymm14, ymm14, ymm8
  964         vpshufb ymm15, ymm15, ymm8
  965         vpaddd  ymm8, ymm12, ymmword ptr [rsp+0x200]
  966         vpaddd  ymm9, ymm9, ymm13
  967         vpaddd  ymm10, ymm10, ymm14
  968         vpaddd  ymm11, ymm11, ymm15
  969         vpxor   ymm4, ymm4, ymm8
  970         vpxor   ymm5, ymm5, ymm9
  971         vpxor   ymm6, ymm6, ymm10
  972         vpxor   ymm7, ymm7, ymm11
  973         vmovdqa ymmword ptr [rsp+0x200], ymm8
  974         vpsrld  ymm8, ymm4, 12
  975         vpslld  ymm4, ymm4, 20
  976         vpor    ymm4, ymm4, ymm8
  977         vpsrld  ymm8, ymm5, 12
  978         vpslld  ymm5, ymm5, 20
  979         vpor    ymm5, ymm5, ymm8
  980         vpsrld  ymm8, ymm6, 12
  981         vpslld  ymm6, ymm6, 20
  982         vpor    ymm6, ymm6, ymm8
  983         vpsrld  ymm8, ymm7, 12
  984         vpslld  ymm7, ymm7, 20
  985         vpor    ymm7, ymm7, ymm8
  986         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x1C0]
  987         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0xA0]
  988         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x180]
  989         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x20]
  990         vpaddd  ymm0, ymm0, ymm4
  991         vpaddd  ymm1, ymm1, ymm5
  992         vpaddd  ymm2, ymm2, ymm6
  993         vpaddd  ymm3, ymm3, ymm7
  994         vpxor   ymm12, ymm12, ymm0
  995         vpxor   ymm13, ymm13, ymm1
  996         vpxor   ymm14, ymm14, ymm2
  997         vpxor   ymm15, ymm15, ymm3
  998         vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
  999         vpshufb ymm12, ymm12, ymm8
 1000         vpshufb ymm13, ymm13, ymm8
 1001         vpshufb ymm14, ymm14, ymm8
 1002         vpshufb ymm15, ymm15, ymm8
 1003         vpaddd  ymm8, ymm12, ymmword ptr [rsp+0x200]
 1004         vpaddd  ymm9, ymm9, ymm13
 1005         vpaddd  ymm10, ymm10, ymm14
 1006         vpaddd  ymm11, ymm11, ymm15
 1007         vpxor   ymm4, ymm4, ymm8
 1008         vpxor   ymm5, ymm5, ymm9
 1009         vpxor   ymm6, ymm6, ymm10
 1010         vpxor   ymm7, ymm7, ymm11
 1011         vmovdqa ymmword ptr [rsp+0x200], ymm8
 1012         vpsrld  ymm8, ymm4, 7
 1013         vpslld  ymm4, ymm4, 25
 1014         vpor    ymm4, ymm4, ymm8
 1015         vpsrld  ymm8, ymm5, 7
 1016         vpslld  ymm5, ymm5, 25
 1017         vpor    ymm5, ymm5, ymm8
 1018         vpsrld  ymm8, ymm6, 7
 1019         vpslld  ymm6, ymm6, 25
 1020         vpor    ymm6, ymm6, ymm8
 1021         vpsrld  ymm8, ymm7, 7
 1022         vpslld  ymm7, ymm7, 25
 1023         vpor    ymm7, ymm7, ymm8
 1024         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x1A0]
 1025         vpaddd  ymm1, ymm1, ymmword ptr [rsp]
 1026         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x40]
 1027         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x80]
 1028         vpaddd  ymm0, ymm0, ymm5
 1029         vpaddd  ymm1, ymm1, ymm6
 1030         vpaddd  ymm2, ymm2, ymm7
 1031         vpaddd  ymm3, ymm3, ymm4
 1032         vpxor   ymm15, ymm15, ymm0
 1033         vpxor   ymm12, ymm12, ymm1
 1034         vpxor   ymm13, ymm13, ymm2
 1035         vpxor   ymm14, ymm14, ymm3
 1036         vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
 1037         vpshufb ymm15, ymm15, ymm8
 1038         vpshufb ymm12, ymm12, ymm8
 1039         vpshufb ymm13, ymm13, ymm8
 1040         vpshufb ymm14, ymm14, ymm8
 1041         vpaddd  ymm10, ymm10, ymm15
 1042         vpaddd  ymm11, ymm11, ymm12
 1043         vpaddd  ymm8, ymm13, ymmword ptr [rsp+0x200]
 1044         vpaddd  ymm9, ymm9, ymm14
 1045         vpxor   ymm5, ymm5, ymm10
 1046         vpxor   ymm6, ymm6, ymm11
 1047         vpxor   ymm7, ymm7, ymm8
 1048         vpxor   ymm4, ymm4, ymm9
 1049         vmovdqa ymmword ptr [rsp+0x200], ymm8
 1050         vpsrld  ymm8, ymm5, 12
 1051         vpslld  ymm5, ymm5, 20
 1052         vpor    ymm5, ymm5, ymm8
 1053         vpsrld  ymm8, ymm6, 12
 1054         vpslld  ymm6, ymm6, 20
 1055         vpor    ymm6, ymm6, ymm8
 1056         vpsrld  ymm8, ymm7, 12
 1057         vpslld  ymm7, ymm7, 20
 1058         vpor    ymm7, ymm7, ymm8
 1059         vpsrld  ymm8, ymm4, 12
 1060         vpslld  ymm4, ymm4, 20
 1061         vpor    ymm4, ymm4, ymm8
 1062         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x60]
 1063         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x140]
 1064         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0xC0]
 1065         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0xE0]
 1066         vpaddd  ymm0, ymm0, ymm5
 1067         vpaddd  ymm1, ymm1, ymm6
 1068         vpaddd  ymm2, ymm2, ymm7
 1069         vpaddd  ymm3, ymm3, ymm4
 1070         vpxor   ymm15, ymm15, ymm0
 1071         vpxor   ymm12, ymm12, ymm1
 1072         vpxor   ymm13, ymm13, ymm2
 1073         vpxor   ymm14, ymm14, ymm3
 1074         vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
 1075         vpshufb ymm15, ymm15, ymm8
 1076         vpshufb ymm12, ymm12, ymm8
 1077         vpshufb ymm13, ymm13, ymm8
 1078         vpshufb ymm14, ymm14, ymm8
 1079         vpaddd  ymm10, ymm10, ymm15
 1080         vpaddd  ymm11, ymm11, ymm12
 1081         vpaddd  ymm8, ymm13, ymmword ptr [rsp+0x200]
 1082         vpaddd  ymm9, ymm9, ymm14
 1083         vpxor   ymm5, ymm5, ymm10
 1084         vpxor   ymm6, ymm6, ymm11
 1085         vpxor   ymm7, ymm7, ymm8
 1086         vpxor   ymm4, ymm4, ymm9
 1087         vmovdqa ymmword ptr [rsp+0x200], ymm8
 1088         vpsrld  ymm8, ymm5, 7
 1089         vpslld  ymm5, ymm5, 25
 1090         vpor    ymm5, ymm5, ymm8
 1091         vpsrld  ymm8, ymm6, 7
 1092         vpslld  ymm6, ymm6, 25
 1093         vpor    ymm6, ymm6, ymm8
 1094         vpsrld  ymm8, ymm7, 7
 1095         vpslld  ymm7, ymm7, 25
 1096         vpor    ymm7, ymm7, ymm8
 1097         vpsrld  ymm8, ymm4, 7
 1098         vpslld  ymm4, ymm4, 25
 1099         vpor    ymm4, ymm4, ymm8
 1100         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x160]
 1101         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0xA0]
 1102         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x20]
 1103         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x100]
 1104         vpaddd  ymm0, ymm0, ymm4
 1105         vpaddd  ymm1, ymm1, ymm5
 1106         vpaddd  ymm2, ymm2, ymm6
 1107         vpaddd  ymm3, ymm3, ymm7
 1108         vpxor   ymm12, ymm12, ymm0
 1109         vpxor   ymm13, ymm13, ymm1
 1110         vpxor   ymm14, ymm14, ymm2
 1111         vpxor   ymm15, ymm15, ymm3
 1112         vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
 1113         vpshufb ymm12, ymm12, ymm8
 1114         vpshufb ymm13, ymm13, ymm8
 1115         vpshufb ymm14, ymm14, ymm8
 1116         vpshufb ymm15, ymm15, ymm8
 1117         vpaddd  ymm8, ymm12, ymmword ptr [rsp+0x200]
 1118         vpaddd  ymm9, ymm9, ymm13
 1119         vpaddd  ymm10, ymm10, ymm14
 1120         vpaddd  ymm11, ymm11, ymm15
 1121         vpxor   ymm4, ymm4, ymm8
 1122         vpxor   ymm5, ymm5, ymm9
 1123         vpxor   ymm6, ymm6, ymm10
 1124         vpxor   ymm7, ymm7, ymm11
 1125         vmovdqa ymmword ptr [rsp+0x200], ymm8
 1126         vpsrld  ymm8, ymm4, 12
 1127         vpslld  ymm4, ymm4, 20
 1128         vpor    ymm4, ymm4, ymm8
 1129         vpsrld  ymm8, ymm5, 12
 1130         vpslld  ymm5, ymm5, 20
 1131         vpor    ymm5, ymm5, ymm8
 1132         vpsrld  ymm8, ymm6, 12
 1133         vpslld  ymm6, ymm6, 20
 1134         vpor    ymm6, ymm6, ymm8
 1135         vpsrld  ymm8, ymm7, 12
 1136         vpslld  ymm7, ymm7, 20
 1137         vpor    ymm7, ymm7, ymm8
 1138         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x1E0]
 1139         vpaddd  ymm1, ymm1, ymmword ptr [rsp]
 1140         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x120]
 1141         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0xC0]
 1142         vpaddd  ymm0, ymm0, ymm4
 1143         vpaddd  ymm1, ymm1, ymm5
 1144         vpaddd  ymm2, ymm2, ymm6
 1145         vpaddd  ymm3, ymm3, ymm7
 1146         vpxor   ymm12, ymm12, ymm0
 1147         vpxor   ymm13, ymm13, ymm1
 1148         vpxor   ymm14, ymm14, ymm2
 1149         vpxor   ymm15, ymm15, ymm3
 1150         vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
 1151         vpshufb ymm12, ymm12, ymm8
 1152         vpshufb ymm13, ymm13, ymm8
 1153         vpshufb ymm14, ymm14, ymm8
 1154         vpshufb ymm15, ymm15, ymm8
 1155         vpaddd  ymm8, ymm12, ymmword ptr [rsp+0x200]
 1156         vpaddd  ymm9, ymm9, ymm13
 1157         vpaddd  ymm10, ymm10, ymm14
 1158         vpaddd  ymm11, ymm11, ymm15
 1159         vpxor   ymm4, ymm4, ymm8
 1160         vpxor   ymm5, ymm5, ymm9
 1161         vpxor   ymm6, ymm6, ymm10
 1162         vpxor   ymm7, ymm7, ymm11
 1163         vmovdqa ymmword ptr [rsp+0x200], ymm8
 1164         vpsrld  ymm8, ymm4, 7
 1165         vpslld  ymm4, ymm4, 25
 1166         vpor    ymm4, ymm4, ymm8
 1167         vpsrld  ymm8, ymm5, 7
 1168         vpslld  ymm5, ymm5, 25
 1169         vpor    ymm5, ymm5, ymm8
 1170         vpsrld  ymm8, ymm6, 7
 1171         vpslld  ymm6, ymm6, 25
 1172         vpor    ymm6, ymm6, ymm8
 1173         vpsrld  ymm8, ymm7, 7
 1174         vpslld  ymm7, ymm7, 25
 1175         vpor    ymm7, ymm7, ymm8
 1176         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x1C0]
 1177         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x40]
 1178         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x60]
 1179         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0xE0]
 1180         vpaddd  ymm0, ymm0, ymm5
 1181         vpaddd  ymm1, ymm1, ymm6
 1182         vpaddd  ymm2, ymm2, ymm7
 1183         vpaddd  ymm3, ymm3, ymm4
 1184         vpxor   ymm15, ymm15, ymm0
 1185         vpxor   ymm12, ymm12, ymm1
 1186         vpxor   ymm13, ymm13, ymm2
 1187         vpxor   ymm14, ymm14, ymm3
 1188         vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
 1189         vpshufb ymm15, ymm15, ymm8
 1190         vpshufb ymm12, ymm12, ymm8
 1191         vpshufb ymm13, ymm13, ymm8
 1192         vpshufb ymm14, ymm14, ymm8
 1193         vpaddd  ymm10, ymm10, ymm15
 1194         vpaddd  ymm11, ymm11, ymm12
 1195         vpaddd  ymm8, ymm13, ymmword ptr [rsp+0x200]
 1196         vpaddd  ymm9, ymm9, ymm14
 1197         vpxor   ymm5, ymm5, ymm10
 1198         vpxor   ymm6, ymm6, ymm11
 1199         vpxor   ymm7, ymm7, ymm8
 1200         vpxor   ymm4, ymm4, ymm9
 1201         vmovdqa ymmword ptr [rsp+0x200], ymm8
 1202         vpsrld  ymm8, ymm5, 12
 1203         vpslld  ymm5, ymm5, 20
 1204         vpor    ymm5, ymm5, ymm8
 1205         vpsrld  ymm8, ymm6, 12
 1206         vpslld  ymm6, ymm6, 20
 1207         vpor    ymm6, ymm6, ymm8
 1208         vpsrld  ymm8, ymm7, 12
 1209         vpslld  ymm7, ymm7, 20
 1210         vpor    ymm7, ymm7, ymm8
 1211         vpsrld  ymm8, ymm4, 12
 1212         vpslld  ymm4, ymm4, 20
 1213         vpor    ymm4, ymm4, ymm8
 1214         vpaddd  ymm0, ymm0, ymmword ptr [rsp+0x140]
 1215         vpaddd  ymm1, ymm1, ymmword ptr [rsp+0x180]
 1216         vpaddd  ymm2, ymm2, ymmword ptr [rsp+0x80]
 1217         vpaddd  ymm3, ymm3, ymmword ptr [rsp+0x1A0]
 1218         vpaddd  ymm0, ymm0, ymm5
 1219         vpaddd  ymm1, ymm1, ymm6
 1220         vpaddd  ymm2, ymm2, ymm7
 1221         vpaddd  ymm3, ymm3, ymm4
 1222         vpxor   ymm15, ymm15, ymm0
 1223         vpxor   ymm12, ymm12, ymm1
 1224         vpxor   ymm13, ymm13, ymm2
 1225         vpxor   ymm14, ymm14, ymm3
 1226         vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
 1227         vpshufb ymm15, ymm15, ymm8
 1228         vpshufb ymm12, ymm12, ymm8
 1229         vpshufb ymm13, ymm13, ymm8
 1230         vpshufb ymm14, ymm14, ymm8
 1231         vpaddd  ymm10, ymm10, ymm15
 1232         vpaddd  ymm11, ymm11, ymm12
 1233         vpaddd  ymm8, ymm13, ymmword ptr [rsp+0x200]
 1234         vpaddd  ymm9, ymm9, ymm14
 1235         vpxor   ymm5, ymm5, ymm10
 1236         vpxor   ymm6, ymm6, ymm11
 1237         vpxor   ymm7, ymm7, ymm8
 1238         vpxor   ymm4, ymm4, ymm9
 1239         vpxor   ymm0, ymm0, ymm8
 1240         vpxor   ymm1, ymm1, ymm9
 1241         vpxor   ymm2, ymm2, ymm10
 1242         vpxor   ymm3, ymm3, ymm11
 1243         vpsrld  ymm8, ymm5, 7
 1244         vpslld  ymm5, ymm5, 25
 1245         vpor    ymm5, ymm5, ymm8
 1246         vpsrld  ymm8, ymm6, 7
 1247         vpslld  ymm6, ymm6, 25
 1248         vpor    ymm6, ymm6, ymm8
 1249         vpsrld  ymm8, ymm7, 7
 1250         vpslld  ymm7, ymm7, 25
 1251         vpor    ymm7, ymm7, ymm8
 1252         vpsrld  ymm8, ymm4, 7
 1253         vpslld  ymm4, ymm4, 25
 1254         vpor    ymm4, ymm4, ymm8
 1255         vpxor   ymm4, ymm4, ymm12
 1256         vpxor   ymm5, ymm5, ymm13
 1257         vpxor   ymm6, ymm6, ymm14
 1258         vpxor   ymm7, ymm7, ymm15
 1259         movzx   eax, byte ptr [rbp+0x38]
 1260         jne     9b
 1261         mov     rbx, qword ptr [rbp+0x50]
 1262         vunpcklps ymm8, ymm0, ymm1
 1263         vunpcklps ymm9, ymm2, ymm3
 1264         vunpckhps ymm10, ymm0, ymm1
 1265         vunpcklps ymm11, ymm4, ymm5
 1266         vunpcklps ymm0, ymm6, ymm7
 1267         vshufps ymm12, ymm8, ymm9, 78
 1268         vblendps ymm1, ymm8, ymm12, 0xCC
 1269         vshufps ymm8, ymm11, ymm0, 78
 1270         vunpckhps ymm13, ymm2, ymm3
 1271         vblendps ymm2, ymm11, ymm8, 0xCC
 1272         vblendps ymm3, ymm12, ymm9, 0xCC
 1273         vperm2f128 ymm12, ymm1, ymm2, 0x20
 1274         vmovups ymmword ptr [rbx], ymm12
 1275         vunpckhps ymm14, ymm4, ymm5
 1276         vblendps ymm4, ymm8, ymm0, 0xCC
 1277         vunpckhps ymm15, ymm6, ymm7
 1278         vperm2f128 ymm7, ymm3, ymm4, 0x20
 1279         vmovups ymmword ptr [rbx+0x20], ymm7
 1280         vshufps ymm5, ymm10, ymm13, 78
 1281         vblendps ymm6, ymm5, ymm13, 0xCC
 1282         vshufps ymm13, ymm14, ymm15, 78
 1283         vblendps ymm10, ymm10, ymm5, 0xCC
 1284         vblendps ymm14, ymm14, ymm13, 0xCC
 1285         vperm2f128 ymm8, ymm10, ymm14, 0x20
 1286         vmovups ymmword ptr [rbx+0x40], ymm8
 1287         vblendps ymm15, ymm13, ymm15, 0xCC
 1288         vperm2f128 ymm13, ymm6, ymm15, 0x20
 1289         vmovups ymmword ptr [rbx+0x60], ymm13
 1290         vperm2f128 ymm9, ymm1, ymm2, 0x31
 1291         vperm2f128 ymm11, ymm3, ymm4, 0x31
 1292         vmovups ymmword ptr [rbx+0x80], ymm9
 1293         vperm2f128 ymm14, ymm10, ymm14, 0x31
 1294         vperm2f128 ymm15, ymm6, ymm15, 0x31
 1295         vmovups ymmword ptr [rbx+0xA0], ymm11
 1296         vmovups ymmword ptr [rbx+0xC0], ymm14
 1297         vmovups ymmword ptr [rbx+0xE0], ymm15
 1298         vmovdqa ymm0, ymmword ptr [rsp+0x220]
 1299         vpaddd  ymm1, ymm0, ymmword ptr [rsp+0x240]
 1300         vmovdqa ymmword ptr [rsp+0x240], ymm1
 1301         vpxor   ymm0, ymm0, ymmword ptr [CMP_MSB_MASK+rip]
 1302         vpxor   ymm2, ymm1, ymmword ptr [CMP_MSB_MASK+rip]
 1303         vpcmpgtd ymm2, ymm0, ymm2
 1304         vmovdqa ymm0, ymmword ptr [rsp+0x260]
 1305         vpsubd  ymm2, ymm0, ymm2
 1306         vmovdqa ymmword ptr [rsp+0x260], ymm2
 1307         add     rdi, 64
 1308         add     rbx, 256
 1309         mov     qword ptr [rbp+0x50], rbx
 1310         sub     rsi, 8
 1311         cmp     rsi, 8
 1312         jnc     2b
 1313         test    rsi, rsi
 1314         jnz     3f
 1315 4:
 1316         vzeroupper
 1317         mov     rsp, rbp
 1318         pop     rbp
 1319         pop     rbx
 1320         pop     r12
 1321         pop     r13
 1322         pop     r14
 1323         pop     r15
 1324         RET
 1325 .p2align  5
 1326 3:
 1327         mov     rbx, qword ptr [rbp+0x50]
 1328         mov     r15, qword ptr [rsp+0x2A0]
 1329         movzx   r13d, byte ptr [rbp+0x38]
 1330         movzx   r12d, byte ptr [rbp+0x48]
 1331         test    rsi, 0x4
 1332         je      3f
 1333         vbroadcasti128 ymm0, xmmword ptr [rcx]
 1334         vbroadcasti128 ymm1, xmmword ptr [rcx+0x10]
 1335         vmovdqa ymm8, ymm0
 1336         vmovdqa ymm9, ymm1
 1337         vbroadcasti128 ymm12, xmmword ptr [rsp+0x240]
 1338         vbroadcasti128 ymm13, xmmword ptr [rsp+0x260]
 1339         vpunpckldq ymm14, ymm12, ymm13
 1340         vpunpckhdq ymm15, ymm12, ymm13
 1341         vpermq  ymm14, ymm14, 0x50
 1342         vpermq  ymm15, ymm15, 0x50
 1343         vbroadcasti128 ymm12, xmmword ptr [BLAKE3_BLOCK_LEN+rip]
 1344         vpblendd ymm14, ymm14, ymm12, 0x44
 1345         vpblendd ymm15, ymm15, ymm12, 0x44
 1346         vmovdqa ymmword ptr [rsp], ymm14
 1347         vmovdqa ymmword ptr [rsp+0x20], ymm15
 1348         mov     r8, qword ptr [rdi]
 1349         mov     r9, qword ptr [rdi+0x8]
 1350         mov     r10, qword ptr [rdi+0x10]
 1351         mov     r11, qword ptr [rdi+0x18]
 1352         movzx   eax, byte ptr [rbp+0x40]
 1353         or      eax, r13d
 1354         xor     edx, edx
 1355 .p2align  5
 1356 2:
 1357         mov     r14d, eax
 1358         or      eax, r12d
 1359         add     rdx, 64
 1360         cmp     rdx, r15
 1361         cmovne  eax, r14d
 1362         mov     dword ptr [rsp+0x200], eax
 1363         vmovups ymm2, ymmword ptr [r8+rdx-0x40]
 1364         vinsertf128 ymm2, ymm2, xmmword ptr [r9+rdx-0x40], 0x01
 1365         vmovups ymm3, ymmword ptr [r8+rdx-0x30]
 1366         vinsertf128 ymm3, ymm3, xmmword ptr [r9+rdx-0x30], 0x01
 1367         vshufps ymm4, ymm2, ymm3, 136
 1368         vshufps ymm5, ymm2, ymm3, 221
 1369         vmovups ymm2, ymmword ptr [r8+rdx-0x20]
 1370         vinsertf128 ymm2, ymm2, xmmword ptr [r9+rdx-0x20], 0x01
 1371         vmovups ymm3, ymmword ptr [r8+rdx-0x10]
 1372         vinsertf128 ymm3, ymm3, xmmword ptr [r9+rdx-0x10], 0x01
 1373         vshufps ymm6, ymm2, ymm3, 136
 1374         vshufps ymm7, ymm2, ymm3, 221
 1375         vpshufd ymm6, ymm6, 0x93
 1376         vpshufd ymm7, ymm7, 0x93
 1377         vmovups ymm10, ymmword ptr [r10+rdx-0x40]
 1378         vinsertf128 ymm10, ymm10, xmmword ptr [r11+rdx-0x40], 0x01
 1379         vmovups ymm11, ymmword ptr [r10+rdx-0x30]
 1380         vinsertf128 ymm11, ymm11, xmmword ptr [r11+rdx-0x30], 0x01
 1381         vshufps ymm12, ymm10, ymm11, 136
 1382         vshufps ymm13, ymm10, ymm11, 221
 1383         vmovups ymm10, ymmword ptr [r10+rdx-0x20]
 1384         vinsertf128 ymm10, ymm10, xmmword ptr [r11+rdx-0x20], 0x01
 1385         vmovups ymm11, ymmword ptr [r10+rdx-0x10]
 1386         vinsertf128 ymm11, ymm11, xmmword ptr [r11+rdx-0x10], 0x01
 1387         vshufps ymm14, ymm10, ymm11, 136
 1388         vshufps ymm15, ymm10, ymm11, 221
 1389         vpshufd ymm14, ymm14, 0x93
 1390         vpshufd ymm15, ymm15, 0x93
 1391         prefetcht0 [r8+rdx+0x80]
 1392         prefetcht0 [r9+rdx+0x80]
 1393         prefetcht0 [r10+rdx+0x80]
 1394         prefetcht0 [r11+rdx+0x80]
 1395         vpbroadcastd ymm2, dword ptr [rsp+0x200]
 1396         vmovdqa ymm3, ymmword ptr [rsp]
 1397         vmovdqa ymm11, ymmword ptr [rsp+0x20]
 1398         vpblendd ymm3, ymm3, ymm2, 0x88
 1399         vpblendd ymm11, ymm11, ymm2, 0x88
 1400         vbroadcasti128 ymm2, xmmword ptr [BLAKE3_IV+rip]
 1401         vmovdqa ymm10, ymm2
 1402         mov     al, 7
 1403 9:
 1404         vpaddd  ymm0, ymm0, ymm4
 1405         vpaddd  ymm8, ymm8, ymm12
 1406         vmovdqa ymmword ptr [rsp+0x40], ymm4
 1407         nop
 1408         vmovdqa ymmword ptr [rsp+0x60], ymm12
 1409         nop
 1410         vpaddd  ymm0, ymm0, ymm1
 1411         vpaddd  ymm8, ymm8, ymm9
 1412         vpxor   ymm3, ymm3, ymm0
 1413         vpxor   ymm11, ymm11, ymm8
 1414         vbroadcasti128 ymm4, xmmword ptr [ROT16+rip]
 1415         vpshufb ymm3, ymm3, ymm4
 1416         vpshufb ymm11, ymm11, ymm4
 1417         vpaddd  ymm2, ymm2, ymm3
 1418         vpaddd  ymm10, ymm10, ymm11
 1419         vpxor   ymm1, ymm1, ymm2
 1420         vpxor   ymm9, ymm9, ymm10
 1421         vpsrld  ymm4, ymm1, 12
 1422         vpslld  ymm1, ymm1, 20
 1423         vpor    ymm1, ymm1, ymm4
 1424         vpsrld  ymm4, ymm9, 12
 1425         vpslld  ymm9, ymm9, 20
 1426         vpor    ymm9, ymm9, ymm4
 1427         vpaddd  ymm0, ymm0, ymm5
 1428         vpaddd  ymm8, ymm8, ymm13
 1429         vpaddd  ymm0, ymm0, ymm1
 1430         vpaddd  ymm8, ymm8, ymm9
 1431         vmovdqa ymmword ptr [rsp+0x80], ymm5
 1432         vmovdqa ymmword ptr [rsp+0xA0], ymm13
 1433         vpxor   ymm3, ymm3, ymm0
 1434         vpxor   ymm11, ymm11, ymm8
 1435         vbroadcasti128 ymm4, xmmword ptr [ROT8+rip]
 1436         vpshufb ymm3, ymm3, ymm4
 1437         vpshufb ymm11, ymm11, ymm4
 1438         vpaddd  ymm2, ymm2, ymm3
 1439         vpaddd  ymm10, ymm10, ymm11
 1440         vpxor   ymm1, ymm1, ymm2
 1441         vpxor   ymm9, ymm9, ymm10
 1442         vpsrld  ymm4, ymm1, 7
 1443         vpslld  ymm1, ymm1, 25
 1444         vpor    ymm1, ymm1, ymm4
 1445         vpsrld  ymm4, ymm9, 7
 1446         vpslld  ymm9, ymm9, 25
 1447         vpor    ymm9, ymm9, ymm4
 1448         vpshufd ymm0, ymm0, 0x93
 1449         vpshufd ymm8, ymm8, 0x93
 1450         vpshufd ymm3, ymm3, 0x4E
 1451         vpshufd ymm11, ymm11, 0x4E
 1452         vpshufd ymm2, ymm2, 0x39
 1453         vpshufd ymm10, ymm10, 0x39
 1454         vpaddd  ymm0, ymm0, ymm6
 1455         vpaddd  ymm8, ymm8, ymm14
 1456         vpaddd  ymm0, ymm0, ymm1
 1457         vpaddd  ymm8, ymm8, ymm9
 1458         vpxor   ymm3, ymm3, ymm0
 1459         vpxor   ymm11, ymm11, ymm8
 1460         vbroadcasti128 ymm4, xmmword ptr [ROT16+rip]
 1461         vpshufb ymm3, ymm3, ymm4
 1462         vpshufb ymm11, ymm11, ymm4
 1463         vpaddd  ymm2, ymm2, ymm3
 1464         vpaddd  ymm10, ymm10, ymm11
 1465         vpxor   ymm1, ymm1, ymm2
 1466         vpxor   ymm9, ymm9, ymm10
 1467         vpsrld  ymm4, ymm1, 12
 1468         vpslld  ymm1, ymm1, 20
 1469         vpor    ymm1, ymm1, ymm4
 1470         vpsrld  ymm4, ymm9, 12
 1471         vpslld  ymm9, ymm9, 20
 1472         vpor    ymm9, ymm9, ymm4
 1473         vpaddd  ymm0, ymm0, ymm7
 1474         vpaddd  ymm8, ymm8, ymm15
 1475         vpaddd  ymm0, ymm0, ymm1
 1476         vpaddd  ymm8, ymm8, ymm9
 1477         vpxor   ymm3, ymm3, ymm0
 1478         vpxor   ymm11, ymm11, ymm8
 1479         vbroadcasti128 ymm4, xmmword ptr [ROT8+rip]
 1480         vpshufb ymm3, ymm3, ymm4
 1481         vpshufb ymm11, ymm11, ymm4
 1482         vpaddd  ymm2, ymm2, ymm3
 1483         vpaddd  ymm10, ymm10, ymm11
 1484         vpxor   ymm1, ymm1, ymm2
 1485         vpxor   ymm9, ymm9, ymm10
 1486         vpsrld  ymm4, ymm1, 7
 1487         vpslld  ymm1, ymm1, 25
 1488         vpor    ymm1, ymm1, ymm4
 1489         vpsrld  ymm4, ymm9, 7
 1490         vpslld  ymm9, ymm9, 25
 1491         vpor    ymm9, ymm9, ymm4
 1492         vpshufd ymm0, ymm0, 0x39
 1493         vpshufd ymm8, ymm8, 0x39
 1494         vpshufd ymm3, ymm3, 0x4E
 1495         vpshufd ymm11, ymm11, 0x4E
 1496         vpshufd ymm2, ymm2, 0x93
 1497         vpshufd ymm10, ymm10, 0x93
 1498         dec     al
 1499         je      9f
 1500         vmovdqa ymm4, ymmword ptr [rsp+0x40]
 1501         vmovdqa ymm5, ymmword ptr [rsp+0x80]
 1502         vshufps ymm12, ymm4, ymm5, 214
 1503         vpshufd ymm13, ymm4, 0x0F
 1504         vpshufd ymm4, ymm12, 0x39
 1505         vshufps ymm12, ymm6, ymm7, 250
 1506         vpblendd ymm13, ymm13, ymm12, 0xAA
 1507         vpunpcklqdq ymm12, ymm7, ymm5
 1508         vpblendd ymm12, ymm12, ymm6, 0x88
 1509         vpshufd ymm12, ymm12, 0x78
 1510         vpunpckhdq ymm5, ymm5, ymm7
 1511         vpunpckldq ymm6, ymm6, ymm5
 1512         vpshufd ymm7, ymm6, 0x1E
 1513         vmovdqa ymmword ptr [rsp+0x40], ymm13
 1514         vmovdqa ymmword ptr [rsp+0x80], ymm12
 1515         vmovdqa ymm12, ymmword ptr [rsp+0x60]
 1516         vmovdqa ymm13, ymmword ptr [rsp+0xA0]
 1517         vshufps ymm5, ymm12, ymm13, 214
 1518         vpshufd ymm6, ymm12, 0x0F
 1519         vpshufd ymm12, ymm5, 0x39
 1520         vshufps ymm5, ymm14, ymm15, 250
 1521         vpblendd ymm6, ymm6, ymm5, 0xAA
 1522         vpunpcklqdq ymm5, ymm15, ymm13
 1523         vpblendd ymm5, ymm5, ymm14, 0x88
 1524         vpshufd ymm5, ymm5, 0x78
 1525         vpunpckhdq ymm13, ymm13, ymm15
 1526         vpunpckldq ymm14, ymm14, ymm13
 1527         vpshufd ymm15, ymm14, 0x1E
 1528         vmovdqa ymm13, ymm6
 1529         vmovdqa ymm14, ymm5
 1530         vmovdqa ymm5, ymmword ptr [rsp+0x40]
 1531         vmovdqa ymm6, ymmword ptr [rsp+0x80]
 1532         jmp     9b
 1533 9:
 1534         vpxor   ymm0, ymm0, ymm2
 1535         vpxor   ymm1, ymm1, ymm3
 1536         vpxor   ymm8, ymm8, ymm10
 1537         vpxor   ymm9, ymm9, ymm11
 1538         mov     eax, r13d
 1539         cmp     rdx, r15
 1540         jne     2b
 1541         vmovdqu xmmword ptr [rbx], xmm0
 1542         vmovdqu xmmword ptr [rbx+0x10], xmm1
 1543         vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01
 1544         vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01
 1545         vmovdqu xmmword ptr [rbx+0x40], xmm8
 1546         vmovdqu xmmword ptr [rbx+0x50], xmm9
 1547         vextracti128 xmmword ptr [rbx+0x60], ymm8, 0x01
 1548         vextracti128 xmmword ptr [rbx+0x70], ymm9, 0x01
 1549         vmovaps xmm8, xmmword ptr [rsp+0x280]
 1550         vmovaps xmm0, xmmword ptr [rsp+0x240]
 1551         vmovaps xmm1, xmmword ptr [rsp+0x250]
 1552         vmovaps xmm2, xmmword ptr [rsp+0x260]
 1553         vmovaps xmm3, xmmword ptr [rsp+0x270]
 1554         vblendvps xmm0, xmm0, xmm1, xmm8
 1555         vblendvps xmm2, xmm2, xmm3, xmm8
 1556         vmovaps xmmword ptr [rsp+0x240], xmm0
 1557         vmovaps xmmword ptr [rsp+0x260], xmm2
 1558         add     rbx, 128
 1559         add     rdi, 32
 1560         sub     rsi, 4
 1561 3:
 1562         test    rsi, 0x2
 1563         je      3f
 1564         vbroadcasti128 ymm0, xmmword ptr [rcx]
 1565         vbroadcasti128 ymm1, xmmword ptr [rcx+0x10]
 1566         vmovd   xmm13, dword ptr [rsp+0x240]
 1567         vpinsrd xmm13, xmm13, dword ptr [rsp+0x260], 1
 1568         vpinsrd xmm13, xmm13, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
 1569         vmovd   xmm14, dword ptr [rsp+0x244]
 1570         vpinsrd xmm14, xmm14, dword ptr [rsp+0x264], 1
 1571         vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
 1572         vinserti128 ymm13, ymm13, xmm14, 0x01
 1573         vbroadcasti128 ymm14, xmmword ptr [ROT16+rip]
 1574         vbroadcasti128 ymm15, xmmword ptr [ROT8+rip]
 1575         mov     r8, qword ptr [rdi]
 1576         mov     r9, qword ptr [rdi+0x8]
 1577         movzx   eax, byte ptr [rbp+0x40]
 1578         or      eax, r13d
 1579         xor     edx, edx
 1580 .p2align  5
 1581 2:
 1582         mov     r14d, eax
 1583         or      eax, r12d
 1584         add     rdx, 64
 1585         cmp     rdx, r15
 1586         cmovne  eax, r14d
 1587         mov     dword ptr [rsp+0x200], eax
 1588         vbroadcasti128 ymm2, xmmword ptr [BLAKE3_IV+rip]
 1589         vpbroadcastd ymm8, dword ptr [rsp+0x200]
 1590         vpblendd ymm3, ymm13, ymm8, 0x88
 1591         vmovups ymm8, ymmword ptr [r8+rdx-0x40]
 1592         vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x40], 0x01
 1593         vmovups ymm9, ymmword ptr [r8+rdx-0x30]
 1594         vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x30], 0x01
 1595         vshufps ymm4, ymm8, ymm9, 136
 1596         vshufps ymm5, ymm8, ymm9, 221
 1597         vmovups ymm8, ymmword ptr [r8+rdx-0x20]
 1598         vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x20], 0x01
 1599         vmovups ymm9, ymmword ptr [r8+rdx-0x10]
 1600         vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x10], 0x01
 1601         vshufps ymm6, ymm8, ymm9, 136
 1602         vshufps ymm7, ymm8, ymm9, 221
 1603         vpshufd ymm6, ymm6, 0x93
 1604         vpshufd ymm7, ymm7, 0x93
 1605         mov     al, 7
 1606 9:
 1607         vpaddd  ymm0, ymm0, ymm4
 1608         vpaddd  ymm0, ymm0, ymm1
 1609         vpxor   ymm3, ymm3, ymm0
 1610         vpshufb ymm3, ymm3, ymm14
 1611         vpaddd  ymm2, ymm2, ymm3
 1612         vpxor   ymm1, ymm1, ymm2
 1613         vpsrld  ymm8, ymm1, 12
 1614         vpslld  ymm1, ymm1, 20
 1615         vpor    ymm1, ymm1, ymm8
 1616         vpaddd  ymm0, ymm0, ymm5
 1617         vpaddd  ymm0, ymm0, ymm1
 1618         vpxor   ymm3, ymm3, ymm0
 1619         vpshufb ymm3, ymm3, ymm15
 1620         vpaddd  ymm2, ymm2, ymm3
 1621         vpxor   ymm1, ymm1, ymm2
 1622         vpsrld  ymm8, ymm1, 7
 1623         vpslld  ymm1, ymm1, 25
 1624         vpor    ymm1, ymm1, ymm8
 1625         vpshufd ymm0, ymm0, 0x93
 1626         vpshufd ymm3, ymm3, 0x4E
 1627         vpshufd ymm2, ymm2, 0x39
 1628         vpaddd  ymm0, ymm0, ymm6
 1629         vpaddd  ymm0, ymm0, ymm1
 1630         vpxor   ymm3, ymm3, ymm0
 1631         vpshufb ymm3, ymm3, ymm14
 1632         vpaddd  ymm2, ymm2, ymm3
 1633         vpxor   ymm1, ymm1, ymm2
 1634         vpsrld  ymm8, ymm1, 12
 1635         vpslld  ymm1, ymm1, 20
 1636         vpor    ymm1, ymm1, ymm8
 1637         vpaddd  ymm0, ymm0, ymm7
 1638         vpaddd  ymm0, ymm0, ymm1
 1639         vpxor   ymm3, ymm3, ymm0
 1640         vpshufb ymm3, ymm3, ymm15
 1641         vpaddd  ymm2, ymm2, ymm3
 1642         vpxor   ymm1, ymm1, ymm2
 1643         vpsrld  ymm8, ymm1, 7
 1644         vpslld  ymm1, ymm1, 25
 1645         vpor    ymm1, ymm1, ymm8
 1646         vpshufd ymm0, ymm0, 0x39
 1647         vpshufd ymm3, ymm3, 0x4E
 1648         vpshufd ymm2, ymm2, 0x93
 1649         dec     al
 1650         jz      9f
 1651         vshufps ymm8, ymm4, ymm5, 214
 1652         vpshufd ymm9, ymm4, 0x0F
 1653         vpshufd ymm4, ymm8, 0x39
 1654         vshufps ymm8, ymm6, ymm7, 250
 1655         vpblendd ymm9, ymm9, ymm8, 0xAA
 1656         vpunpcklqdq ymm8, ymm7, ymm5
 1657         vpblendd ymm8, ymm8, ymm6, 0x88
 1658         vpshufd ymm8, ymm8, 0x78
 1659         vpunpckhdq ymm5, ymm5, ymm7
 1660         vpunpckldq ymm6, ymm6, ymm5
 1661         vpshufd ymm7, ymm6, 0x1E
 1662         vmovdqa ymm5, ymm9
 1663         vmovdqa ymm6, ymm8
 1664         jmp     9b
 1665 9:
 1666         vpxor   ymm0, ymm0, ymm2
 1667         vpxor   ymm1, ymm1, ymm3
 1668         mov     eax, r13d
 1669         cmp     rdx, r15
 1670         jne     2b
 1671         vmovdqu xmmword ptr [rbx], xmm0
 1672         vmovdqu xmmword ptr [rbx+0x10], xmm1
 1673         vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01
 1674         vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01
 1675         vmovaps ymm8, ymmword ptr [rsp+0x280]
 1676         vmovaps ymm0, ymmword ptr [rsp+0x240]
 1677         vmovups ymm1, ymmword ptr [rsp+0x248]
 1678         vmovaps ymm2, ymmword ptr [rsp+0x260]
 1679         vmovups ymm3, ymmword ptr [rsp+0x268]
 1680         vblendvps ymm0, ymm0, ymm1, ymm8
 1681         vblendvps ymm2, ymm2, ymm3, ymm8
 1682         vmovaps ymmword ptr [rsp+0x240], ymm0
 1683         vmovaps ymmword ptr [rsp+0x260], ymm2
 1684         add     rbx, 64
 1685         add     rdi, 16
 1686         sub     rsi, 2
 1687 3:
 1688         test    rsi, 0x1
 1689         je      4b
 1690         vmovdqu xmm0, xmmword ptr [rcx]
 1691         vmovdqu xmm1, xmmword ptr [rcx+0x10]
 1692         vmovd   xmm3, dword ptr [rsp+0x240]
 1693         vpinsrd xmm3, xmm3, dword ptr [rsp+0x260], 1
 1694         vpinsrd xmm13, xmm3, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
 1695         vmovdqa xmm14, xmmword ptr [ROT16+rip]
 1696         vmovdqa xmm15, xmmword ptr [ROT8+rip]
 1697         mov     r8, qword ptr [rdi]
 1698         movzx   eax, byte ptr [rbp+0x40]
 1699         or      eax, r13d
 1700         xor     edx, edx
 1701 .p2align  5
 1702 2:
 1703         mov     r14d, eax
 1704         or      eax, r12d
 1705         add     rdx, 64
 1706         cmp     rdx, r15
 1707         cmovne  eax, r14d
 1708         vmovdqa xmm2, xmmword ptr [BLAKE3_IV+rip]
 1709         vmovdqa xmm3, xmm13
 1710         vpinsrd xmm3, xmm3, eax, 3
 1711         vmovups xmm8, xmmword ptr [r8+rdx-0x40]
 1712         vmovups xmm9, xmmword ptr [r8+rdx-0x30]
 1713         vshufps xmm4, xmm8, xmm9, 136
 1714         vshufps xmm5, xmm8, xmm9, 221
 1715         vmovups xmm8, xmmword ptr [r8+rdx-0x20]
 1716         vmovups xmm9, xmmword ptr [r8+rdx-0x10]
 1717         vshufps xmm6, xmm8, xmm9, 136
 1718         vshufps xmm7, xmm8, xmm9, 221
 1719         vpshufd xmm6, xmm6, 0x93
 1720         vpshufd xmm7, xmm7, 0x93
 1721         mov     al, 7
 1722 9:
 1723         vpaddd  xmm0, xmm0, xmm4
 1724         vpaddd  xmm0, xmm0, xmm1
 1725         vpxor   xmm3, xmm3, xmm0
 1726         vpshufb xmm3, xmm3, xmm14
 1727         vpaddd  xmm2, xmm2, xmm3
 1728         vpxor   xmm1, xmm1, xmm2
 1729         vpsrld  xmm8, xmm1, 12
 1730         vpslld  xmm1, xmm1, 20
 1731         vpor    xmm1, xmm1, xmm8
 1732         vpaddd  xmm0, xmm0, xmm5
 1733         vpaddd  xmm0, xmm0, xmm1
 1734         vpxor   xmm3, xmm3, xmm0
 1735         vpshufb xmm3, xmm3, xmm15
 1736         vpaddd  xmm2, xmm2, xmm3
 1737         vpxor   xmm1, xmm1, xmm2
 1738         vpsrld  xmm8, xmm1, 7
 1739         vpslld  xmm1, xmm1, 25
 1740         vpor    xmm1, xmm1, xmm8
 1741         vpshufd xmm0, xmm0, 0x93
 1742         vpshufd xmm3, xmm3, 0x4E
 1743         vpshufd xmm2, xmm2, 0x39
 1744         vpaddd  xmm0, xmm0, xmm6
 1745         vpaddd  xmm0, xmm0, xmm1
 1746         vpxor   xmm3, xmm3, xmm0
 1747         vpshufb xmm3, xmm3, xmm14
 1748         vpaddd  xmm2, xmm2, xmm3
 1749         vpxor   xmm1, xmm1, xmm2
 1750         vpsrld  xmm8, xmm1, 12
 1751         vpslld  xmm1, xmm1, 20
 1752         vpor    xmm1, xmm1, xmm8
 1753         vpaddd  xmm0, xmm0, xmm7
 1754         vpaddd  xmm0, xmm0, xmm1
 1755         vpxor   xmm3, xmm3, xmm0
 1756         vpshufb xmm3, xmm3, xmm15
 1757         vpaddd  xmm2, xmm2, xmm3
 1758         vpxor   xmm1, xmm1, xmm2
 1759         vpsrld  xmm8, xmm1, 7
 1760         vpslld  xmm1, xmm1, 25
 1761         vpor    xmm1, xmm1, xmm8
 1762         vpshufd xmm0, xmm0, 0x39
 1763         vpshufd xmm3, xmm3, 0x4E
 1764         vpshufd xmm2, xmm2, 0x93
 1765         dec     al
 1766         jz      9f
 1767         vshufps xmm8, xmm4, xmm5, 214
 1768         vpshufd xmm9, xmm4, 0x0F
 1769         vpshufd xmm4, xmm8, 0x39
 1770         vshufps xmm8, xmm6, xmm7, 250
 1771         vpblendd xmm9, xmm9, xmm8, 0xAA
 1772         vpunpcklqdq xmm8, xmm7, xmm5
 1773         vpblendd xmm8, xmm8, xmm6, 0x88
 1774         vpshufd xmm8, xmm8, 0x78
 1775         vpunpckhdq xmm5, xmm5, xmm7
 1776         vpunpckldq xmm6, xmm6, xmm5
 1777         vpshufd xmm7, xmm6, 0x1E
 1778         vmovdqa xmm5, xmm9
 1779         vmovdqa xmm6, xmm8
 1780         jmp     9b
 1781 9:
 1782         vpxor   xmm0, xmm0, xmm2
 1783         vpxor   xmm1, xmm1, xmm3
 1784         mov     eax, r13d
 1785         cmp     rdx, r15
 1786         jne     2b
 1787         vmovdqu xmmword ptr [rbx], xmm0
 1788         vmovdqu xmmword ptr [rbx+0x10], xmm1
 1789         jmp     4b
 1790 
 1791 SET_SIZE(zfs_blake3_hash_many_avx2)
 1792 
 1793 SECTION_STATIC
 1794 .section .rodata
 1795 
 1796 .p2align  6
 1797 ADD0:
 1798         .long  0, 1, 2, 3, 4, 5, 6, 7
 1799 ADD1:
 1800         .long  8, 8, 8, 8, 8, 8, 8, 8
 1801 BLAKE3_IV_0:
 1802         .long  0x6A09E667, 0x6A09E667, 0x6A09E667, 0x6A09E667
 1803         .long  0x6A09E667, 0x6A09E667, 0x6A09E667, 0x6A09E667
 1804 BLAKE3_IV_1:
 1805         .long  0xBB67AE85, 0xBB67AE85, 0xBB67AE85, 0xBB67AE85
 1806         .long  0xBB67AE85, 0xBB67AE85, 0xBB67AE85, 0xBB67AE85
 1807 BLAKE3_IV_2:
 1808         .long  0x3C6EF372, 0x3C6EF372, 0x3C6EF372, 0x3C6EF372
 1809         .long  0x3C6EF372, 0x3C6EF372, 0x3C6EF372, 0x3C6EF372
 1810 BLAKE3_IV_3:
 1811         .long  0xA54FF53A, 0xA54FF53A, 0xA54FF53A, 0xA54FF53A
 1812         .long  0xA54FF53A, 0xA54FF53A, 0xA54FF53A, 0xA54FF53A
 1813 BLAKE3_BLOCK_LEN:
 1814         .long  0x00000040, 0x00000040, 0x00000040, 0x00000040
 1815         .long  0x00000040, 0x00000040, 0x00000040, 0x00000040
 1816 ROT16:
 1817         .byte  2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9, 14, 15, 12, 13
 1818 ROT8:
 1819         .byte  1, 2, 3, 0, 5, 6, 7, 4, 9, 10, 11, 8, 13, 14, 15, 12
 1820 CMP_MSB_MASK:
 1821         .long  0x80000000, 0x80000000, 0x80000000, 0x80000000
 1822         .long  0x80000000, 0x80000000, 0x80000000, 0x80000000
 1823 BLAKE3_IV:
 1824         .long  0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A
 1825 #endif  /* HAVE_AVX2 */
 1826 
 1827 #ifdef __ELF__
 1828 .section .note.GNU-stack,"",%progbits
 1829 #endif

Cache object: 6b538754c50f3f1168eb0fb3c593948e


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.