chibipub

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

blake3_avx2_x86-64_windows_gnu.S (66736B)


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