chibipub

experimental activitypub node in C
git clone git://jb55.com/chibipub
Log | Files | Refs | README | LICENSE

blake3_avx2_x86-64_unix.S (66050B)


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