2020-08-23 23:25:15 +02:00
|
|
|
#if defined(__ELF__) && defined(__linux__)
|
|
|
|
.section .note.GNU-stack,"",%progbits
|
|
|
|
#endif
|
|
|
|
|
2020-07-30 01:03:37 +02:00
|
|
|
#if defined(__ELF__) && defined(__CET__) && defined(__has_include)
|
|
|
|
#if __has_include(<cet.h>)
|
2020-06-26 19:39:17 +02:00
|
|
|
#include <cet.h>
|
2020-07-30 01:03:37 +02:00
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if !defined(_CET_ENDBR)
|
2020-06-26 19:39:17 +02:00
|
|
|
#define _CET_ENDBR
|
|
|
|
#endif
|
|
|
|
|
2020-02-11 18:25:30 +01:00
|
|
|
.intel_syntax noprefix
|
|
|
|
.global _blake3_hash_many_avx2
|
|
|
|
.global blake3_hash_many_avx2
|
|
|
|
#ifdef __APPLE__
|
|
|
|
.text
|
|
|
|
#else
|
|
|
|
.section .text
|
|
|
|
#endif
|
|
|
|
.p2align 6
|
|
|
|
_blake3_hash_many_avx2:
|
|
|
|
blake3_hash_many_avx2:
|
2020-06-26 19:39:17 +02:00
|
|
|
_CET_ENDBR
|
2020-02-11 18:25:30 +01:00
|
|
|
push r15
|
|
|
|
push r14
|
|
|
|
push r13
|
|
|
|
push r12
|
|
|
|
push rbx
|
|
|
|
push rbp
|
|
|
|
mov rbp, rsp
|
|
|
|
sub rsp, 680
|
|
|
|
and rsp, 0xFFFFFFFFFFFFFFC0
|
|
|
|
neg r9d
|
|
|
|
vmovd xmm0, r9d
|
|
|
|
vpbroadcastd ymm0, xmm0
|
|
|
|
vmovdqa ymmword ptr [rsp+0x280], ymm0
|
|
|
|
vpand ymm1, ymm0, ymmword ptr [ADD0+rip]
|
|
|
|
vpand ymm2, ymm0, ymmword ptr [ADD1+rip]
|
|
|
|
vmovdqa ymmword ptr [rsp+0x220], ymm2
|
|
|
|
vmovd xmm2, r8d
|
|
|
|
vpbroadcastd ymm2, xmm2
|
|
|
|
vpaddd ymm2, ymm2, ymm1
|
|
|
|
vmovdqa ymmword ptr [rsp+0x240], ymm2
|
|
|
|
vpxor ymm1, ymm1, ymmword ptr [CMP_MSB_MASK+rip]
|
|
|
|
vpxor ymm2, ymm2, ymmword ptr [CMP_MSB_MASK+rip]
|
|
|
|
vpcmpgtd ymm2, ymm1, ymm2
|
|
|
|
shr r8, 32
|
|
|
|
vmovd xmm3, r8d
|
|
|
|
vpbroadcastd ymm3, xmm3
|
|
|
|
vpsubd ymm3, ymm3, ymm2
|
|
|
|
vmovdqa ymmword ptr [rsp+0x260], ymm3
|
|
|
|
shl rdx, 6
|
|
|
|
mov qword ptr [rsp+0x2A0], rdx
|
|
|
|
cmp rsi, 8
|
|
|
|
jc 3f
|
|
|
|
2:
|
|
|
|
vpbroadcastd ymm0, dword ptr [rcx]
|
|
|
|
vpbroadcastd ymm1, dword ptr [rcx+0x4]
|
|
|
|
vpbroadcastd ymm2, dword ptr [rcx+0x8]
|
|
|
|
vpbroadcastd ymm3, dword ptr [rcx+0xC]
|
|
|
|
vpbroadcastd ymm4, dword ptr [rcx+0x10]
|
|
|
|
vpbroadcastd ymm5, dword ptr [rcx+0x14]
|
|
|
|
vpbroadcastd ymm6, dword ptr [rcx+0x18]
|
|
|
|
vpbroadcastd ymm7, dword ptr [rcx+0x1C]
|
|
|
|
mov r8, qword ptr [rdi]
|
|
|
|
mov r9, qword ptr [rdi+0x8]
|
|
|
|
mov r10, qword ptr [rdi+0x10]
|
|
|
|
mov r11, qword ptr [rdi+0x18]
|
|
|
|
mov r12, qword ptr [rdi+0x20]
|
|
|
|
mov r13, qword ptr [rdi+0x28]
|
|
|
|
mov r14, qword ptr [rdi+0x30]
|
|
|
|
mov r15, qword ptr [rdi+0x38]
|
|
|
|
movzx eax, byte ptr [rbp+0x38]
|
|
|
|
movzx ebx, byte ptr [rbp+0x40]
|
|
|
|
or eax, ebx
|
|
|
|
xor edx, edx
|
|
|
|
.p2align 5
|
2020-02-13 14:46:32 +01:00
|
|
|
9:
|
2020-02-11 18:25:30 +01:00
|
|
|
movzx ebx, byte ptr [rbp+0x48]
|
|
|
|
or ebx, eax
|
|
|
|
add rdx, 64
|
|
|
|
cmp rdx, qword ptr [rsp+0x2A0]
|
|
|
|
cmove eax, ebx
|
|
|
|
mov dword ptr [rsp+0x200], eax
|
|
|
|
vmovups xmm8, xmmword ptr [r8+rdx-0x40]
|
|
|
|
vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x40], 0x01
|
|
|
|
vmovups xmm9, xmmword ptr [r9+rdx-0x40]
|
|
|
|
vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x40], 0x01
|
|
|
|
vunpcklpd ymm12, ymm8, ymm9
|
|
|
|
vunpckhpd ymm13, ymm8, ymm9
|
|
|
|
vmovups xmm10, xmmword ptr [r10+rdx-0x40]
|
|
|
|
vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x40], 0x01
|
|
|
|
vmovups xmm11, xmmword ptr [r11+rdx-0x40]
|
|
|
|
vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x40], 0x01
|
|
|
|
vunpcklpd ymm14, ymm10, ymm11
|
|
|
|
vunpckhpd ymm15, ymm10, ymm11
|
|
|
|
vshufps ymm8, ymm12, ymm14, 136
|
|
|
|
vmovaps ymmword ptr [rsp], ymm8
|
|
|
|
vshufps ymm9, ymm12, ymm14, 221
|
|
|
|
vmovaps ymmword ptr [rsp+0x20], ymm9
|
|
|
|
vshufps ymm10, ymm13, ymm15, 136
|
|
|
|
vmovaps ymmword ptr [rsp+0x40], ymm10
|
|
|
|
vshufps ymm11, ymm13, ymm15, 221
|
|
|
|
vmovaps ymmword ptr [rsp+0x60], ymm11
|
|
|
|
vmovups xmm8, xmmword ptr [r8+rdx-0x30]
|
|
|
|
vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x30], 0x01
|
|
|
|
vmovups xmm9, xmmword ptr [r9+rdx-0x30]
|
|
|
|
vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x30], 0x01
|
|
|
|
vunpcklpd ymm12, ymm8, ymm9
|
|
|
|
vunpckhpd ymm13, ymm8, ymm9
|
|
|
|
vmovups xmm10, xmmword ptr [r10+rdx-0x30]
|
|
|
|
vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x30], 0x01
|
|
|
|
vmovups xmm11, xmmword ptr [r11+rdx-0x30]
|
|
|
|
vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x30], 0x01
|
|
|
|
vunpcklpd ymm14, ymm10, ymm11
|
|
|
|
vunpckhpd ymm15, ymm10, ymm11
|
|
|
|
vshufps ymm8, ymm12, ymm14, 136
|
|
|
|
vmovaps ymmword ptr [rsp+0x80], ymm8
|
|
|
|
vshufps ymm9, ymm12, ymm14, 221
|
|
|
|
vmovaps ymmword ptr [rsp+0xA0], ymm9
|
|
|
|
vshufps ymm10, ymm13, ymm15, 136
|
|
|
|
vmovaps ymmword ptr [rsp+0xC0], ymm10
|
|
|
|
vshufps ymm11, ymm13, ymm15, 221
|
|
|
|
vmovaps ymmword ptr [rsp+0xE0], ymm11
|
|
|
|
vmovups xmm8, xmmword ptr [r8+rdx-0x20]
|
|
|
|
vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x20], 0x01
|
|
|
|
vmovups xmm9, xmmword ptr [r9+rdx-0x20]
|
|
|
|
vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x20], 0x01
|
|
|
|
vunpcklpd ymm12, ymm8, ymm9
|
|
|
|
vunpckhpd ymm13, ymm8, ymm9
|
|
|
|
vmovups xmm10, xmmword ptr [r10+rdx-0x20]
|
|
|
|
vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x20], 0x01
|
|
|
|
vmovups xmm11, xmmword ptr [r11+rdx-0x20]
|
|
|
|
vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x20], 0x01
|
|
|
|
vunpcklpd ymm14, ymm10, ymm11
|
|
|
|
vunpckhpd ymm15, ymm10, ymm11
|
|
|
|
vshufps ymm8, ymm12, ymm14, 136
|
|
|
|
vmovaps ymmword ptr [rsp+0x100], ymm8
|
|
|
|
vshufps ymm9, ymm12, ymm14, 221
|
|
|
|
vmovaps ymmword ptr [rsp+0x120], ymm9
|
|
|
|
vshufps ymm10, ymm13, ymm15, 136
|
|
|
|
vmovaps ymmword ptr [rsp+0x140], ymm10
|
|
|
|
vshufps ymm11, ymm13, ymm15, 221
|
|
|
|
vmovaps ymmword ptr [rsp+0x160], ymm11
|
|
|
|
vmovups xmm8, xmmword ptr [r8+rdx-0x10]
|
|
|
|
vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x10], 0x01
|
|
|
|
vmovups xmm9, xmmword ptr [r9+rdx-0x10]
|
|
|
|
vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x10], 0x01
|
|
|
|
vunpcklpd ymm12, ymm8, ymm9
|
|
|
|
vunpckhpd ymm13, ymm8, ymm9
|
|
|
|
vmovups xmm10, xmmword ptr [r10+rdx-0x10]
|
|
|
|
vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x10], 0x01
|
|
|
|
vmovups xmm11, xmmword ptr [r11+rdx-0x10]
|
|
|
|
vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x10], 0x01
|
|
|
|
vunpcklpd ymm14, ymm10, ymm11
|
|
|
|
vunpckhpd ymm15, ymm10, ymm11
|
|
|
|
vshufps ymm8, ymm12, ymm14, 136
|
|
|
|
vmovaps ymmword ptr [rsp+0x180], ymm8
|
|
|
|
vshufps ymm9, ymm12, ymm14, 221
|
|
|
|
vmovaps ymmword ptr [rsp+0x1A0], ymm9
|
|
|
|
vshufps ymm10, ymm13, ymm15, 136
|
|
|
|
vmovaps ymmword ptr [rsp+0x1C0], ymm10
|
|
|
|
vshufps ymm11, ymm13, ymm15, 221
|
|
|
|
vmovaps ymmword ptr [rsp+0x1E0], ymm11
|
|
|
|
vpbroadcastd ymm15, dword ptr [rsp+0x200]
|
|
|
|
prefetcht0 [r8+rdx+0x80]
|
|
|
|
prefetcht0 [r12+rdx+0x80]
|
|
|
|
prefetcht0 [r9+rdx+0x80]
|
|
|
|
prefetcht0 [r13+rdx+0x80]
|
|
|
|
prefetcht0 [r10+rdx+0x80]
|
|
|
|
prefetcht0 [r14+rdx+0x80]
|
|
|
|
prefetcht0 [r11+rdx+0x80]
|
|
|
|
prefetcht0 [r15+rdx+0x80]
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0x40]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0x80]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0xC0]
|
|
|
|
vpaddd ymm0, ymm0, ymm4
|
|
|
|
vpaddd ymm1, ymm1, ymm5
|
|
|
|
vpaddd ymm2, ymm2, ymm6
|
|
|
|
vpaddd ymm3, ymm3, ymm7
|
|
|
|
vpxor ymm12, ymm0, ymmword ptr [rsp+0x240]
|
|
|
|
vpxor ymm13, ymm1, ymmword ptr [rsp+0x260]
|
|
|
|
vpxor ymm14, ymm2, ymmword ptr [BLAKE3_BLOCK_LEN+rip]
|
|
|
|
vpxor ymm15, ymm3, ymm15
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpaddd ymm8, ymm12, ymmword ptr [BLAKE3_IV_0+rip]
|
|
|
|
vpaddd ymm9, ymm13, ymmword ptr [BLAKE3_IV_1+rip]
|
|
|
|
vpaddd ymm10, ymm14, ymmword ptr [BLAKE3_IV_2+rip]
|
|
|
|
vpaddd ymm11, ymm15, ymmword ptr [BLAKE3_IV_3+rip]
|
|
|
|
vpxor ymm4, ymm4, ymm8
|
|
|
|
vpxor ymm5, ymm5, ymm9
|
|
|
|
vpxor ymm6, ymm6, ymm10
|
|
|
|
vpxor ymm7, ymm7, ymm11
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm4, 12
|
|
|
|
vpslld ymm4, ymm4, 20
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpsrld ymm8, ymm5, 12
|
|
|
|
vpslld ymm5, ymm5, 20
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 12
|
|
|
|
vpslld ymm6, ymm6, 20
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 12
|
|
|
|
vpslld ymm7, ymm7, 20
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0x20]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0x60]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0xA0]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0xE0]
|
|
|
|
vpaddd ymm0, ymm0, ymm4
|
|
|
|
vpaddd ymm1, ymm1, ymm5
|
|
|
|
vpaddd ymm2, ymm2, ymm6
|
|
|
|
vpaddd ymm3, ymm3, ymm7
|
|
|
|
vpxor ymm12, ymm12, ymm0
|
|
|
|
vpxor ymm13, ymm13, ymm1
|
|
|
|
vpxor ymm14, ymm14, ymm2
|
|
|
|
vpxor ymm15, ymm15, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm13
|
|
|
|
vpaddd ymm10, ymm10, ymm14
|
|
|
|
vpaddd ymm11, ymm11, ymm15
|
|
|
|
vpxor ymm4, ymm4, ymm8
|
|
|
|
vpxor ymm5, ymm5, ymm9
|
|
|
|
vpxor ymm6, ymm6, ymm10
|
|
|
|
vpxor ymm7, ymm7, ymm11
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm4, 7
|
|
|
|
vpslld ymm4, ymm4, 25
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpsrld ymm8, ymm5, 7
|
|
|
|
vpslld ymm5, ymm5, 25
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 7
|
|
|
|
vpslld ymm6, ymm6, 25
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 7
|
|
|
|
vpslld ymm7, ymm7, 25
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0x100]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0x140]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0x180]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1C0]
|
|
|
|
vpaddd ymm0, ymm0, ymm5
|
|
|
|
vpaddd ymm1, ymm1, ymm6
|
|
|
|
vpaddd ymm2, ymm2, ymm7
|
|
|
|
vpaddd ymm3, ymm3, ymm4
|
|
|
|
vpxor ymm15, ymm15, ymm0
|
|
|
|
vpxor ymm12, ymm12, ymm1
|
|
|
|
vpxor ymm13, ymm13, ymm2
|
|
|
|
vpxor ymm14, ymm14, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpaddd ymm10, ymm10, ymm15
|
|
|
|
vpaddd ymm11, ymm11, ymm12
|
|
|
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm14
|
|
|
|
vpxor ymm5, ymm5, ymm10
|
|
|
|
vpxor ymm6, ymm6, ymm11
|
|
|
|
vpxor ymm7, ymm7, ymm8
|
|
|
|
vpxor ymm4, ymm4, ymm9
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm5, 12
|
|
|
|
vpslld ymm5, ymm5, 20
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 12
|
|
|
|
vpslld ymm6, ymm6, 20
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 12
|
|
|
|
vpslld ymm7, ymm7, 20
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpsrld ymm8, ymm4, 12
|
|
|
|
vpslld ymm4, ymm4, 20
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0x120]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0x160]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0x1A0]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1E0]
|
|
|
|
vpaddd ymm0, ymm0, ymm5
|
|
|
|
vpaddd ymm1, ymm1, ymm6
|
|
|
|
vpaddd ymm2, ymm2, ymm7
|
|
|
|
vpaddd ymm3, ymm3, ymm4
|
|
|
|
vpxor ymm15, ymm15, ymm0
|
|
|
|
vpxor ymm12, ymm12, ymm1
|
|
|
|
vpxor ymm13, ymm13, ymm2
|
|
|
|
vpxor ymm14, ymm14, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpaddd ymm10, ymm10, ymm15
|
|
|
|
vpaddd ymm11, ymm11, ymm12
|
|
|
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm14
|
|
|
|
vpxor ymm5, ymm5, ymm10
|
|
|
|
vpxor ymm6, ymm6, ymm11
|
|
|
|
vpxor ymm7, ymm7, ymm8
|
|
|
|
vpxor ymm4, ymm4, ymm9
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm5, 7
|
|
|
|
vpslld ymm5, ymm5, 25
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 7
|
|
|
|
vpslld ymm6, ymm6, 25
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 7
|
|
|
|
vpslld ymm7, ymm7, 25
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpsrld ymm8, ymm4, 7
|
|
|
|
vpslld ymm4, ymm4, 25
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0x40]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0x60]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0xE0]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0x80]
|
|
|
|
vpaddd ymm0, ymm0, ymm4
|
|
|
|
vpaddd ymm1, ymm1, ymm5
|
|
|
|
vpaddd ymm2, ymm2, ymm6
|
|
|
|
vpaddd ymm3, ymm3, ymm7
|
|
|
|
vpxor ymm12, ymm12, ymm0
|
|
|
|
vpxor ymm13, ymm13, ymm1
|
|
|
|
vpxor ymm14, ymm14, ymm2
|
|
|
|
vpxor ymm15, ymm15, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm13
|
|
|
|
vpaddd ymm10, ymm10, ymm14
|
|
|
|
vpaddd ymm11, ymm11, ymm15
|
|
|
|
vpxor ymm4, ymm4, ymm8
|
|
|
|
vpxor ymm5, ymm5, ymm9
|
|
|
|
vpxor ymm6, ymm6, ymm10
|
|
|
|
vpxor ymm7, ymm7, ymm11
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm4, 12
|
|
|
|
vpslld ymm4, ymm4, 20
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpsrld ymm8, ymm5, 12
|
|
|
|
vpslld ymm5, ymm5, 20
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 12
|
|
|
|
vpslld ymm6, ymm6, 20
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 12
|
|
|
|
vpslld ymm7, ymm7, 20
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0xC0]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0x140]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1A0]
|
|
|
|
vpaddd ymm0, ymm0, ymm4
|
|
|
|
vpaddd ymm1, ymm1, ymm5
|
|
|
|
vpaddd ymm2, ymm2, ymm6
|
|
|
|
vpaddd ymm3, ymm3, ymm7
|
|
|
|
vpxor ymm12, ymm12, ymm0
|
|
|
|
vpxor ymm13, ymm13, ymm1
|
|
|
|
vpxor ymm14, ymm14, ymm2
|
|
|
|
vpxor ymm15, ymm15, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm13
|
|
|
|
vpaddd ymm10, ymm10, ymm14
|
|
|
|
vpaddd ymm11, ymm11, ymm15
|
|
|
|
vpxor ymm4, ymm4, ymm8
|
|
|
|
vpxor ymm5, ymm5, ymm9
|
|
|
|
vpxor ymm6, ymm6, ymm10
|
|
|
|
vpxor ymm7, ymm7, ymm11
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm4, 7
|
|
|
|
vpslld ymm4, ymm4, 25
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpsrld ymm8, ymm5, 7
|
|
|
|
vpslld ymm5, ymm5, 25
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 7
|
|
|
|
vpslld ymm6, ymm6, 25
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 7
|
|
|
|
vpslld ymm7, ymm7, 25
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0x20]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0x180]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0x120]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1E0]
|
|
|
|
vpaddd ymm0, ymm0, ymm5
|
|
|
|
vpaddd ymm1, ymm1, ymm6
|
|
|
|
vpaddd ymm2, ymm2, ymm7
|
|
|
|
vpaddd ymm3, ymm3, ymm4
|
|
|
|
vpxor ymm15, ymm15, ymm0
|
|
|
|
vpxor ymm12, ymm12, ymm1
|
|
|
|
vpxor ymm13, ymm13, ymm2
|
|
|
|
vpxor ymm14, ymm14, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpaddd ymm10, ymm10, ymm15
|
|
|
|
vpaddd ymm11, ymm11, ymm12
|
|
|
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm14
|
|
|
|
vpxor ymm5, ymm5, ymm10
|
|
|
|
vpxor ymm6, ymm6, ymm11
|
|
|
|
vpxor ymm7, ymm7, ymm8
|
|
|
|
vpxor ymm4, ymm4, ymm9
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm5, 12
|
|
|
|
vpslld ymm5, ymm5, 20
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 12
|
|
|
|
vpslld ymm6, ymm6, 20
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 12
|
|
|
|
vpslld ymm7, ymm7, 20
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpsrld ymm8, ymm4, 12
|
|
|
|
vpslld ymm4, ymm4, 20
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0x160]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0xA0]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0x1C0]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0x100]
|
|
|
|
vpaddd ymm0, ymm0, ymm5
|
|
|
|
vpaddd ymm1, ymm1, ymm6
|
|
|
|
vpaddd ymm2, ymm2, ymm7
|
|
|
|
vpaddd ymm3, ymm3, ymm4
|
|
|
|
vpxor ymm15, ymm15, ymm0
|
|
|
|
vpxor ymm12, ymm12, ymm1
|
|
|
|
vpxor ymm13, ymm13, ymm2
|
|
|
|
vpxor ymm14, ymm14, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpaddd ymm10, ymm10, ymm15
|
|
|
|
vpaddd ymm11, ymm11, ymm12
|
|
|
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm14
|
|
|
|
vpxor ymm5, ymm5, ymm10
|
|
|
|
vpxor ymm6, ymm6, ymm11
|
|
|
|
vpxor ymm7, ymm7, ymm8
|
|
|
|
vpxor ymm4, ymm4, ymm9
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm5, 7
|
|
|
|
vpslld ymm5, ymm5, 25
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 7
|
|
|
|
vpslld ymm6, ymm6, 25
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 7
|
|
|
|
vpslld ymm7, ymm7, 25
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpsrld ymm8, ymm4, 7
|
|
|
|
vpslld ymm4, ymm4, 25
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0x60]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0x140]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0x1A0]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0xE0]
|
|
|
|
vpaddd ymm0, ymm0, ymm4
|
|
|
|
vpaddd ymm1, ymm1, ymm5
|
|
|
|
vpaddd ymm2, ymm2, ymm6
|
|
|
|
vpaddd ymm3, ymm3, ymm7
|
|
|
|
vpxor ymm12, ymm12, ymm0
|
|
|
|
vpxor ymm13, ymm13, ymm1
|
|
|
|
vpxor ymm14, ymm14, ymm2
|
|
|
|
vpxor ymm15, ymm15, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm13
|
|
|
|
vpaddd ymm10, ymm10, ymm14
|
|
|
|
vpaddd ymm11, ymm11, ymm15
|
|
|
|
vpxor ymm4, ymm4, ymm8
|
|
|
|
vpxor ymm5, ymm5, ymm9
|
|
|
|
vpxor ymm6, ymm6, ymm10
|
|
|
|
vpxor ymm7, ymm7, ymm11
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm4, 12
|
|
|
|
vpslld ymm4, ymm4, 20
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpsrld ymm8, ymm5, 12
|
|
|
|
vpslld ymm5, ymm5, 20
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 12
|
|
|
|
vpslld ymm6, ymm6, 20
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 12
|
|
|
|
vpslld ymm7, ymm7, 20
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0x80]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0x180]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0x40]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1C0]
|
|
|
|
vpaddd ymm0, ymm0, ymm4
|
|
|
|
vpaddd ymm1, ymm1, ymm5
|
|
|
|
vpaddd ymm2, ymm2, ymm6
|
|
|
|
vpaddd ymm3, ymm3, ymm7
|
|
|
|
vpxor ymm12, ymm12, ymm0
|
|
|
|
vpxor ymm13, ymm13, ymm1
|
|
|
|
vpxor ymm14, ymm14, ymm2
|
|
|
|
vpxor ymm15, ymm15, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm13
|
|
|
|
vpaddd ymm10, ymm10, ymm14
|
|
|
|
vpaddd ymm11, ymm11, ymm15
|
|
|
|
vpxor ymm4, ymm4, ymm8
|
|
|
|
vpxor ymm5, ymm5, ymm9
|
|
|
|
vpxor ymm6, ymm6, ymm10
|
|
|
|
vpxor ymm7, ymm7, ymm11
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm4, 7
|
|
|
|
vpslld ymm4, ymm4, 25
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpsrld ymm8, ymm5, 7
|
|
|
|
vpslld ymm5, ymm5, 25
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 7
|
|
|
|
vpslld ymm6, ymm6, 25
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 7
|
|
|
|
vpslld ymm7, ymm7, 25
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0xC0]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0x120]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0x160]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0x100]
|
|
|
|
vpaddd ymm0, ymm0, ymm5
|
|
|
|
vpaddd ymm1, ymm1, ymm6
|
|
|
|
vpaddd ymm2, ymm2, ymm7
|
|
|
|
vpaddd ymm3, ymm3, ymm4
|
|
|
|
vpxor ymm15, ymm15, ymm0
|
|
|
|
vpxor ymm12, ymm12, ymm1
|
|
|
|
vpxor ymm13, ymm13, ymm2
|
|
|
|
vpxor ymm14, ymm14, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpaddd ymm10, ymm10, ymm15
|
|
|
|
vpaddd ymm11, ymm11, ymm12
|
|
|
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm14
|
|
|
|
vpxor ymm5, ymm5, ymm10
|
|
|
|
vpxor ymm6, ymm6, ymm11
|
|
|
|
vpxor ymm7, ymm7, ymm8
|
|
|
|
vpxor ymm4, ymm4, ymm9
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm5, 12
|
|
|
|
vpslld ymm5, ymm5, 20
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 12
|
|
|
|
vpslld ymm6, ymm6, 20
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 12
|
|
|
|
vpslld ymm7, ymm7, 20
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpsrld ymm8, ymm4, 12
|
|
|
|
vpslld ymm4, ymm4, 20
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0xA0]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0x1E0]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0x20]
|
|
|
|
vpaddd ymm0, ymm0, ymm5
|
|
|
|
vpaddd ymm1, ymm1, ymm6
|
|
|
|
vpaddd ymm2, ymm2, ymm7
|
|
|
|
vpaddd ymm3, ymm3, ymm4
|
|
|
|
vpxor ymm15, ymm15, ymm0
|
|
|
|
vpxor ymm12, ymm12, ymm1
|
|
|
|
vpxor ymm13, ymm13, ymm2
|
|
|
|
vpxor ymm14, ymm14, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpaddd ymm10, ymm10, ymm15
|
|
|
|
vpaddd ymm11, ymm11, ymm12
|
|
|
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm14
|
|
|
|
vpxor ymm5, ymm5, ymm10
|
|
|
|
vpxor ymm6, ymm6, ymm11
|
|
|
|
vpxor ymm7, ymm7, ymm8
|
|
|
|
vpxor ymm4, ymm4, ymm9
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm5, 7
|
|
|
|
vpslld ymm5, ymm5, 25
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 7
|
|
|
|
vpslld ymm6, ymm6, 25
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 7
|
|
|
|
vpslld ymm7, ymm7, 25
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpsrld ymm8, ymm4, 7
|
|
|
|
vpslld ymm4, ymm4, 25
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0x140]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0x180]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0x1C0]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1A0]
|
|
|
|
vpaddd ymm0, ymm0, ymm4
|
|
|
|
vpaddd ymm1, ymm1, ymm5
|
|
|
|
vpaddd ymm2, ymm2, ymm6
|
|
|
|
vpaddd ymm3, ymm3, ymm7
|
|
|
|
vpxor ymm12, ymm12, ymm0
|
|
|
|
vpxor ymm13, ymm13, ymm1
|
|
|
|
vpxor ymm14, ymm14, ymm2
|
|
|
|
vpxor ymm15, ymm15, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm13
|
|
|
|
vpaddd ymm10, ymm10, ymm14
|
|
|
|
vpaddd ymm11, ymm11, ymm15
|
|
|
|
vpxor ymm4, ymm4, ymm8
|
|
|
|
vpxor ymm5, ymm5, ymm9
|
|
|
|
vpxor ymm6, ymm6, ymm10
|
|
|
|
vpxor ymm7, ymm7, ymm11
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm4, 12
|
|
|
|
vpslld ymm4, ymm4, 20
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpsrld ymm8, ymm5, 12
|
|
|
|
vpslld ymm5, ymm5, 20
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 12
|
|
|
|
vpslld ymm6, ymm6, 20
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 12
|
|
|
|
vpslld ymm7, ymm7, 20
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0xE0]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0x120]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0x60]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1E0]
|
|
|
|
vpaddd ymm0, ymm0, ymm4
|
|
|
|
vpaddd ymm1, ymm1, ymm5
|
|
|
|
vpaddd ymm2, ymm2, ymm6
|
|
|
|
vpaddd ymm3, ymm3, ymm7
|
|
|
|
vpxor ymm12, ymm12, ymm0
|
|
|
|
vpxor ymm13, ymm13, ymm1
|
|
|
|
vpxor ymm14, ymm14, ymm2
|
|
|
|
vpxor ymm15, ymm15, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm13
|
|
|
|
vpaddd ymm10, ymm10, ymm14
|
|
|
|
vpaddd ymm11, ymm11, ymm15
|
|
|
|
vpxor ymm4, ymm4, ymm8
|
|
|
|
vpxor ymm5, ymm5, ymm9
|
|
|
|
vpxor ymm6, ymm6, ymm10
|
|
|
|
vpxor ymm7, ymm7, ymm11
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm4, 7
|
|
|
|
vpslld ymm4, ymm4, 25
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpsrld ymm8, ymm5, 7
|
|
|
|
vpslld ymm5, ymm5, 25
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 7
|
|
|
|
vpslld ymm6, ymm6, 25
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 7
|
|
|
|
vpslld ymm7, ymm7, 25
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0x80]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0x160]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0xA0]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0x20]
|
|
|
|
vpaddd ymm0, ymm0, ymm5
|
|
|
|
vpaddd ymm1, ymm1, ymm6
|
|
|
|
vpaddd ymm2, ymm2, ymm7
|
|
|
|
vpaddd ymm3, ymm3, ymm4
|
|
|
|
vpxor ymm15, ymm15, ymm0
|
|
|
|
vpxor ymm12, ymm12, ymm1
|
|
|
|
vpxor ymm13, ymm13, ymm2
|
|
|
|
vpxor ymm14, ymm14, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpaddd ymm10, ymm10, ymm15
|
|
|
|
vpaddd ymm11, ymm11, ymm12
|
|
|
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm14
|
|
|
|
vpxor ymm5, ymm5, ymm10
|
|
|
|
vpxor ymm6, ymm6, ymm11
|
|
|
|
vpxor ymm7, ymm7, ymm8
|
|
|
|
vpxor ymm4, ymm4, ymm9
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm5, 12
|
|
|
|
vpslld ymm5, ymm5, 20
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 12
|
|
|
|
vpslld ymm6, ymm6, 20
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 12
|
|
|
|
vpslld ymm7, ymm7, 20
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpsrld ymm8, ymm4, 12
|
|
|
|
vpslld ymm4, ymm4, 20
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0x40]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0x100]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0xC0]
|
|
|
|
vpaddd ymm0, ymm0, ymm5
|
|
|
|
vpaddd ymm1, ymm1, ymm6
|
|
|
|
vpaddd ymm2, ymm2, ymm7
|
|
|
|
vpaddd ymm3, ymm3, ymm4
|
|
|
|
vpxor ymm15, ymm15, ymm0
|
|
|
|
vpxor ymm12, ymm12, ymm1
|
|
|
|
vpxor ymm13, ymm13, ymm2
|
|
|
|
vpxor ymm14, ymm14, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpaddd ymm10, ymm10, ymm15
|
|
|
|
vpaddd ymm11, ymm11, ymm12
|
|
|
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm14
|
|
|
|
vpxor ymm5, ymm5, ymm10
|
|
|
|
vpxor ymm6, ymm6, ymm11
|
|
|
|
vpxor ymm7, ymm7, ymm8
|
|
|
|
vpxor ymm4, ymm4, ymm9
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm5, 7
|
|
|
|
vpslld ymm5, ymm5, 25
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 7
|
|
|
|
vpslld ymm6, ymm6, 25
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 7
|
|
|
|
vpslld ymm7, ymm7, 25
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpsrld ymm8, ymm4, 7
|
|
|
|
vpslld ymm4, ymm4, 25
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0x180]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0x120]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0x1E0]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1C0]
|
|
|
|
vpaddd ymm0, ymm0, ymm4
|
|
|
|
vpaddd ymm1, ymm1, ymm5
|
|
|
|
vpaddd ymm2, ymm2, ymm6
|
|
|
|
vpaddd ymm3, ymm3, ymm7
|
|
|
|
vpxor ymm12, ymm12, ymm0
|
|
|
|
vpxor ymm13, ymm13, ymm1
|
|
|
|
vpxor ymm14, ymm14, ymm2
|
|
|
|
vpxor ymm15, ymm15, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm13
|
|
|
|
vpaddd ymm10, ymm10, ymm14
|
|
|
|
vpaddd ymm11, ymm11, ymm15
|
|
|
|
vpxor ymm4, ymm4, ymm8
|
|
|
|
vpxor ymm5, ymm5, ymm9
|
|
|
|
vpxor ymm6, ymm6, ymm10
|
|
|
|
vpxor ymm7, ymm7, ymm11
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm4, 12
|
|
|
|
vpslld ymm4, ymm4, 20
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpsrld ymm8, ymm5, 12
|
|
|
|
vpslld ymm5, ymm5, 20
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 12
|
|
|
|
vpslld ymm6, ymm6, 20
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 12
|
|
|
|
vpslld ymm7, ymm7, 20
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0x1A0]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0x160]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0x140]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0x100]
|
|
|
|
vpaddd ymm0, ymm0, ymm4
|
|
|
|
vpaddd ymm1, ymm1, ymm5
|
|
|
|
vpaddd ymm2, ymm2, ymm6
|
|
|
|
vpaddd ymm3, ymm3, ymm7
|
|
|
|
vpxor ymm12, ymm12, ymm0
|
|
|
|
vpxor ymm13, ymm13, ymm1
|
|
|
|
vpxor ymm14, ymm14, ymm2
|
|
|
|
vpxor ymm15, ymm15, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm13
|
|
|
|
vpaddd ymm10, ymm10, ymm14
|
|
|
|
vpaddd ymm11, ymm11, ymm15
|
|
|
|
vpxor ymm4, ymm4, ymm8
|
|
|
|
vpxor ymm5, ymm5, ymm9
|
|
|
|
vpxor ymm6, ymm6, ymm10
|
|
|
|
vpxor ymm7, ymm7, ymm11
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm4, 7
|
|
|
|
vpslld ymm4, ymm4, 25
|
|
|
|
vpor ymm4, ymm4, ymm8
|
|
|
|
vpsrld ymm8, ymm5, 7
|
|
|
|
vpslld ymm5, ymm5, 25
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 7
|
|
|
|
vpslld ymm6, ymm6, 25
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 7
|
|
|
|
vpslld ymm7, ymm7, 25
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0xE0]
|
|
|
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0xA0]
|
|
|
|
vpaddd ymm2, ymm2, ymmword ptr [rsp]
|
|
|
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0xC0]
|
|
|
|
vpaddd ymm0, ymm0, ymm5
|
|
|
|
vpaddd ymm1, ymm1, ymm6
|
|
|
|
vpaddd ymm2, ymm2, ymm7
|
|
|
|
vpaddd ymm3, ymm3, ymm4
|
|
|
|
vpxor ymm15, ymm15, ymm0
|
|
|
|
vpxor ymm12, ymm12, ymm1
|
|
|
|
vpxor ymm13, ymm13, ymm2
|
|
|
|
vpxor ymm14, ymm14, ymm3
|
|
|
|
vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
|
|
|
|
vpshufb ymm15, ymm15, ymm8
|
|
|
|
vpshufb ymm12, ymm12, ymm8
|
|
|
|
vpshufb ymm13, ymm13, ymm8
|
|
|
|
vpshufb ymm14, ymm14, ymm8
|
|
|
|
vpaddd ymm10, ymm10, ymm15
|
|
|
|
vpaddd ymm11, ymm11, ymm12
|
|
|
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
|
|
|
|
vpaddd ymm9, ymm9, ymm14
|
|
|
|
vpxor ymm5, ymm5, ymm10
|
|
|
|
vpxor ymm6, ymm6, ymm11
|
|
|
|
vpxor ymm7, ymm7, ymm8
|
|
|
|
vpxor ymm4, ymm4, ymm9
|
|
|
|
vmovdqa ymmword ptr [rsp+0x200], ymm8
|
|
|
|
vpsrld ymm8, ymm5, 12
|
|
|
|
vpslld ymm5, ymm5, 20
|
|
|
|
vpor ymm5, ymm5, ymm8
|
|
|
|
vpsrld ymm8, ymm6, 12
|
|
|
|
vpslld ymm6, ymm6, 20
|
|
|
|
vpor ymm6, ymm6, ymm8
|
|
|
|
vpsrld ymm8, ymm7, 12
|
|
|
|
vpslld ymm7, ymm7, 20
|
|
|
|
vpor ymm7, ymm7, ymm8
|
|
|
|
vpsrld ymm8, ymm4, 12
|
|
|
|
vpslld ymm4, ymm4, 20
|
|