Function at 0x4a8340
Capabilities:
Encrypt data using salsa20 or chacha

Disassembly:
push rbp
mov rbp, rsp
sub rsp, 0x240
mov rbp, rsp
add rbp, 0x40
and rbp, 0xffffffffffffffc0
mov rdi, qword [rsp + 0x250]
add rdi, 0x10
mov rsi, qword [rsp + 0x258]
mov rdx, qword [rsp + 0x270]
mov rcx, qword [rsp + 0x260]
lea rax, str.expand_32_byte_k
vmovdqu xmm8, xmmword [rax]
vmovdqu xmm6, xmmword [rax + 0x10]
vmovdqu xmm7, xmmword [rax + 0x20]
vmovdqu xmm9, xmmword [rdi]
vmovdqu xmm10, xmmword [rdi + 0x10]
vmovdqu xmm11, xmmword [rdi + 0x20]
mov r9, 1
vmovdqa xmmword [rbp], xmm8
vmovdqa xmmword [rbp + 0x10], xmm9
vmovdqa xmmword [rbp + 0x20], xmm10
vmovdqa xmmword [rbp + 0x30], xmm11
vmovdqa xmmword [rbp + 0x1c0], xmm6
vmovdqa xmmword [rbp + 0x1d0], xmm6
vmovdqa xmmword [rbp + 0x1e0], xmm7
vmovdqa xmmword [rbp + 0x1f0], xmm7
cmp rcx, 0x200
jae 0x4a83f3
cmp rcx, 0x100
jae 0x4a8c93
jmp 0x4a9447
mov rax, qword [rbp + 0x30]
lea r8, [rax + 1]
lea r9, [rax + 2]
lea r10, [rax + 3]
lea rbx, [rax + 4]
lea r11, [rax + 5]
lea r12, [rax + 6]
lea r13, [rax + 7]
lea r14, [rax + 8]
mov dword [rbp + 0x80], eax
mov dword [rbp + 0x84], r8d
mov dword [rbp + 0x88], r9d
mov dword [rbp + 0x8c], r10d
mov dword [rbp + 0x90], ebx
mov dword [rbp + 0x94], r11d
mov dword [rbp + 0x98], r12d
mov dword [rbp + 0x9c], r13d
shr rax, 0x20
shr r8, 0x20
shr r9, 0x20
shr r10, 0x20
shr rbx, 0x20
shr r11, 0x20
shr r12, 0x20
shr r13, 0x20
mov dword [rbp + 0xa0], eax
mov dword [rbp + 0xa4], r8d
mov dword [rbp + 0xa8], r9d
mov dword [rbp + 0xac], r10d
mov dword [rbp + 0xb0], ebx
mov dword [rbp + 0xb4], r11d
mov dword [rbp + 0xb8], r12d
mov dword [rbp + 0xbc], r13d
mov qword [rbp + 0x30], r14
mov rax, 0x14
vpbroadcastd ymm0, dword [rbp]
vpbroadcastd ymm1, dword [rbp + 4]
vpbroadcastd ymm2, dword [rbp + 8]
vpbroadcastd ymm3, dword [rbp + 0xc]
vpbroadcastd ymm4, dword [rbp + 0x10]
vpbroadcastd ymm5, dword [rbp + 0x14]
vpbroadcastd ymm6, dword [rbp + 0x18]
vpbroadcastd ymm7, dword [rbp + 0x1c]
vpbroadcastd ymm8, dword [rbp + 0x20]
vpbroadcastd ymm9, dword [rbp + 0x24]
vpbroadcastd ymm10, dword [rbp + 0x28]
vpbroadcastd ymm11, dword [rbp + 0x2c]
vpbroadcastd ymm14, dword [rbp + 0x38]
vpbroadcastd ymm15, dword [rbp + 0x3c]
vmovdqa ymm12, ymmword [rbp + 0x80]
vmovdqa ymm13, ymmword [rbp + 0xa0]
vpaddd ymm0, ymm4, ymm0
vpaddd ymm1, ymm5, ymm1
vpxor ymm12, ymm0, ymm12
vpxor ymm13, ymm1, ymm13
vpaddd ymm2, ymm6, ymm2
vpaddd ymm3, ymm7, ymm3
vpxor ymm14, ymm2, ymm14
vpxor ymm15, ymm3, ymm15
vpshufb ymm12, ymm12, ymmword [rbp + 0x1c0]
vpshufb ymm13, ymm13, ymmword [rbp + 0x1c0]
vpaddd ymm8, ymm12, ymm8
vpaddd ymm9, ymm13, ymm9
vpshufb ymm14, ymm14, ymmword [rbp + 0x1c0]
vpshufb ymm15, ymm15, ymmword [rbp + 0x1c0]
vpaddd ymm10, ymm14, ymm10
vpaddd ymm11, ymm15, ymm11
vmovdqa ymmword [rbp + 0x60], ymm12
vpxor ymm4, ymm8, ymm4
vpxor ymm5, ymm9, ymm5
vpslld ymm12, ymm4, 0xc
vpsrld ymm4, ymm4, 0x14
vpxor ymm4, ymm12, ymm4
vpslld ymm12, ymm5, 0xc
vpsrld ymm5, ymm5, 0x14
vpxor ymm5, ymm12, ymm5
vpxor ymm6, ymm10, ymm6
vpxor ymm7, ymm11, ymm7
vpslld ymm12, ymm6, 0xc
vpsrld ymm6, ymm6, 0x14
vpxor ymm6, ymm12, ymm6
vpslld ymm12, ymm7, 0xc
vpsrld ymm7, ymm7, 0x14
vpxor ymm7, ymm12, ymm7
vpaddd ymm0, ymm4, ymm0
vpaddd ymm1, ymm5, ymm1
vpxor ymm12, ymm0, ymmword [rbp + 0x60]
vpxor ymm13, ymm1, ymm13
vpaddd ymm2, ymm6, ymm2
vpaddd ymm3, ymm7, ymm3
vpxor ymm14, ymm2, ymm14
vpxor ymm15, ymm3, ymm15
vpshufb ymm12, ymm12, ymmword [rbp + 0x1e0]
vpshufb ymm13, ymm13, ymmword [rbp + 0x1e0]
vpaddd ymm8, ymm12, ymm8
vpaddd ymm9, ymm13, ymm9
vpshufb ymm14, ymm14, ymmword [rbp + 0x1e0]
vpshufb ymm15, ymm15, ymmword [rbp + 0x1e0]
vpaddd ymm10, ymm14, ymm10
vpaddd ymm11, ymm15, ymm11
vmovdqa ymmword [rbp + 0x60], ymm12
vpxor ymm4, ymm8, ymm4
vpxor ymm5, ymm9, ymm5
vpslld ymm12, ymm4, 7
vpsrld ymm4, ymm4, 0x19
vpxor ymm4, ymm12, ymm4
vpslld ymm12, ymm5, 7
vpsrld ymm5, ymm5, 0x19
vpxor ymm5, ymm12, ymm5
vpxor ymm6, ymm10, ymm6
vpxor ymm7, ymm11, ymm7
vpslld ymm12, ymm6, 7
vpsrld ymm6, ymm6, 0x19
vpxor ymm6, ymm12, ymm6
vpslld ymm12, ymm7, 7
vpsrld ymm7, ymm7, 0x19
vpxor ymm7, ymm12, ymm7
vpaddd ymm0, ymm5, ymm0
vpaddd ymm1, ymm6, ymm1
vpxor ymm15, ymm0, ymm15
vpxor ymm12, ymm1, ymmword [rbp + 0x60]
vpaddd ymm2, ymm7, ymm2
vpaddd ymm3, ymm4, ymm3
vpxor ymm13, ymm2, ymm13
vpxor ymm14, ymm3, ymm14
vpshufb ymm15, ymm15, ymmword [rbp + 0x1c0]
vpshufb ymm12, ymm12, ymmword [rbp + 0x1c0]
vpaddd ymm10, ymm15, ymm10
vpaddd ymm11, ymm12, ymm11
vpshufb ymm13, ymm13, ymmword [rbp + 0x1c0]
vpshufb ymm14, ymm14, ymmword [rbp + 0x1c0]
vpaddd ymm8, ymm13, ymm8
vpaddd ymm9, ymm14, ymm9
vmovdqa ymmword [rbp + 0x60], ymm15
vpxor ymm5, ymm10, ymm5
vpxor ymm6, ymm11, ymm6
vpslld ymm15, ymm5, 0xc
vpsrld ymm5, ymm5, 0x14
vpxor ymm5, ymm15, ymm5
vpslld ymm15, ymm6, 0xc
vpsrld ymm6, ymm6, 0x14
vpxor ymm6, ymm15, ymm6
vpxor ymm7, ymm8, ymm7
vpxor ymm4, ymm9, ymm4
vpslld ymm15, ymm7, 0xc
vpsrld ymm7, ymm7, 0x14
vpxor ymm7, ymm15, ymm7
vpslld ymm15, ymm4, 0xc
vpsrld ymm4, ymm4, 0x14
vpxor ymm4, ymm15, ymm4
vpaddd ymm0, ymm5, ymm0
vpaddd ymm1, ymm6, ymm1
vpxor ymm15, ymm0, ymmword [rbp + 0x60]
vpxor ymm12, ymm1, ymm12
vpaddd ymm2, ymm7, ymm2
vpaddd ymm3, ymm4, ymm3
vpxor ymm13, ymm2, ymm13
vpxor ymm14, ymm3, ymm14
vpshufb ymm15, ymm15, ymmword [rbp + 0x1e0]
vpshufb ymm12, ymm12, ymmword [rbp + 0x1e0]
vpaddd ymm10, ymm15, ymm10
vpaddd ymm11, ymm12, ymm11
vpshufb ymm13, ymm13, ymmword [rbp + 0x1e0]
vpshufb ymm14, ymm14, ymmword [rbp + 0x1e0]
vpaddd ymm8, ymm13, ymm8
vpaddd ymm9, ymm14, ymm9
vmovdqa ymmword [rbp + 0x60], ymm15
vpxor ymm5, ymm10, ymm5
vpxor ymm6, ymm11, ymm6
vpslld ymm15, ymm5, 7
vpsrld ymm5, ymm5, 0x19
vpxor ymm5, ymm15, ymm5
vpslld ymm15, ymm6, 7
vpsrld ymm6, ymm6, 0x19
vpxor ymm6, ymm15, ymm6
vpxor ymm7, ymm8, ymm7
vpxor ymm4, ymm9, ymm4
vpslld ymm15, ymm7, 7
vpsrld ymm7, ymm7, 0x19
vpxor ymm7, ymm15, ymm7
vpslld ymm15, ymm4, 7
vpsrld ymm4, ymm4, 0x19
vpxor ymm4, ymm15, ymm4
vmovdqa ymm15, ymmword [rbp + 0x60]
sub rax, 2
jne 0x4a8512
vmovdqa ymmword [rbp + 0xc0], ymm8
vmovdqa ymmword [rbp + 0xe0], ymm9
vmovdqa ymmword [rbp + 0x100], ymm10
vmovdqa ymmword [rbp + 0x120], ymm11
vmovdqa ymmword [rbp + 0x140], ymm12
vmovdqa ymmword [rbp + 0x160], ymm13
vmovdqa ymmword [rbp + 0x180], ymm14
vmovdqa ymmword [rbp + 0x1a0], ymm15
vpbroadcastd ymm8, dword [rbp]
vpbroadcastd ymm9, dword [rbp + 4]
vpbroadcastd ymm10, dword [rbp + 8]
vpbroadcastd ymm11, dword [rbp + 0xc]
vpbroadcastd ymm12, dword [rbp + 0x10]
vpbroadcastd ymm13, dword [rbp + 0x14]
vpbroadcastd ymm14, dword [rbp + 0x18]
vpbroadcastd ymm15, dword [rbp + 0x1c]
vpaddd ymm0, ymm0, ymm8
vpaddd ymm1, ymm1, ymm9
vpaddd ymm2, ymm2, ymm10
vpaddd ymm3, ymm3, ymm11
vpaddd ymm4, ymm4, ymm12
vpaddd ymm5, ymm5, ymm13
vpaddd ymm6, ymm6, ymm14
vpaddd ymm7, ymm7, ymm15
vpunpckldq ymm8, ymm0, ymm1
vpunpckldq ymm9, ymm2, ymm3
vpunpckhdq ymm12, ymm0, ymm1
vpunpckhdq ymm13, ymm2, ymm3
vpunpckldq ymm10, ymm4, ymm5
vpunpckldq ymm11, ymm6, ymm7
vpunpckhdq ymm14, ymm4, ymm5
vpunpckhdq ymm15, ymm6, ymm7
vpunpcklqdq ymm0, ymm8, ymm9
vpunpcklqdq ymm1, ymm10, ymm11
vpunpckhqdq ymm2, ymm8, ymm9
vpunpckhqdq ymm3, ymm10, ymm11
vpunpcklqdq ymm4, ymm12, ymm13
vpunpcklqdq ymm5, ymm14, ymm15
vpunpckhqdq ymm6, ymm12, ymm13
vpunpckhqdq ymm7, ymm14, ymm15
vperm2i128 ymm8, ymm0, ymm1, 0x20
vperm2i128 ymm9, ymm2, ymm3, 0x20
vperm2i128 ymm12, ymm0, ymm1, 0x31
vperm2i128 ymm13, ymm2, ymm3, 0x31
vperm2i128 ymm10, ymm4, ymm5, 0x20
vperm2i128 ymm11, ymm6, ymm7, 0x20
vperm2i128 ymm14, ymm4, ymm5, 0x31
vperm2i128 ymm15, ymm6, ymm7, 0x31
and rsi, rsi
je 0x4a8ae4
vpxor ymm8, ymm8, ymmword [rsi]
vpxor ymm9, ymm9, ymmword [rsi + 0x40]
vpxor ymm10, ymm10, ymmword [rsi + 0x80]
vpxor ymm11, ymm11, ymmword [rsi + 0xc0]
vpxor ymm12, ymm12, ymmword [rsi + 0x100]
vpxor ymm13, ymm13, ymmword [rsi + 0x140]
vpxor ymm14, ymm14, ymmword [rsi + 0x180]
vpxor ymm15, ymm15, ymmword [rsi + 0x1c0]
vmovdqu ymmword [rdx], ymm8
vmovdqu ymmword [rdx + 0x40], ymm9
vmovdqu ymmword [rdx + 0x80], ymm10
vmovdqu ymmword [rdx + 0xc0], ymm11
vmovdqu ymmword [rdx + 0x100], ymm12
vmovdqu ymmword [rdx + 0x140], ymm13
vmovdqu ymmword [rdx + 0x180], ymm14
vmovdqu ymmword [rdx + 0x1c0], ymm15
vmovdqa ymm0, ymmword [rbp + 0xc0]
vmovdqa ymm1, ymmword [rbp + 0xe0]
vmovdqa ymm2, ymmword [rbp + 0x100]
vmovdqa ymm3, ymmword [rbp + 0x120]
vmovdqa ymm4, ymmword [rbp + 0x140]
vmovdqa ymm5, ymmword [rbp + 0x160]
vmovdqa ymm6, ymmword [rbp + 0x180]
vmovdqa ymm7, ymmword [rbp + 0x1a0]
vpbroadcastd ymm8, dword [rbp + 0x20]
vpbroadcastd ymm9, dword [rbp + 0x24]
vpbroadcastd ymm10, dword [rbp + 0x28]
vpbroadcastd ymm11, dword [rbp + 0x2c]
vmovdqa ymm12, ymmword [rbp + 0x80]
vmovdqa ymm13, ymmword [rbp + 0xa0]
vpbroadcastd ymm14, dword [rbp + 0x38]
vpbroadcastd ymm15, dword [rbp + 0x3c]
vpaddd ymm0, ymm0, ymm8
vpaddd ymm1, ymm1, ymm9
vpaddd ymm2, ymm2, ymm10
vpaddd ymm3, ymm3, ymm11
vpaddd ymm4, ymm4, ymm12
vpaddd ymm5, ymm5, ymm13
vpaddd ymm6, ymm6, ymm14
vpaddd ymm7, ymm7, ymm15
vpunpckldq ymm8, ymm0, ymm1
vpunpckldq ymm9, ymm2, ymm3
vpunpckhdq ymm12, ymm0, ymm1
vpunpckhdq ymm13, ymm2, ymm3
vpunpckldq ymm10, ymm4, ymm5
vpunpckldq ymm11, ymm6, ymm7
vpunpckhdq ymm14, ymm4, ymm5
vpunpckhdq ymm15, ymm6, ymm7
vpunpcklqdq ymm0, ymm8, ymm9
vpunpcklqdq ymm1, ymm10, ymm11
vpunpckhqdq ymm2, ymm8, ymm9
vpunpckhqdq ymm3, ymm10, ymm11
vpunpcklqdq ymm4, ymm12, ymm13
vpunpcklqdq ymm5, ymm14, ymm15
vpunpckhqdq ymm6, ymm12, ymm13
vpunpckhqdq ymm7, ymm14, ymm15
vperm2i128 ymm8, ymm0, ymm1, 0x20
vperm2i128 ymm9, ymm2, ymm3, 0x20
vperm2i128 ymm12, ymm0, ymm1, 0x31
vperm2i128 ymm13, ymm2, ymm3, 0x31
vperm2i128 ymm10, ymm4, ymm5, 0x20
vperm2i128 ymm11, ymm6, ymm7, 0x20
vperm2i128 ymm14, ymm4, ymm5, 0x31
vperm2i128 ymm15, ymm6, ymm7, 0x31
vpxor ymm8, ymm8, ymmword [rsi + 0x20]
vpxor ymm9, ymm9, ymmword [rsi + 0x60]
vpxor ymm10, ymm10, ymmword [rsi + 0xa0]
vpxor ymm11, ymm11, ymmword [rsi + 0xe0]
vpxor ymm12, ymm12, ymmword [rsi + 0x120]
vpxor ymm13, ymm13, ymmword [rsi + 0x160]
vpxor ymm14, ymm14, ymmword [rsi + 0x1a0]
vpxor ymm15, ymm15, ymmword [rsi + 0x1e0]
vmovdqu ymmword [rdx + 0x20], ymm8
vmovdqu ymmword [rdx + 0x60], ymm9
vmovdqu ymmword [rdx + 0xa0], ymm10
vmovdqu ymmword [rdx + 0xe0], ymm11
vmovdqu ymmword [rdx + 0x120], ymm12
vmovdqu ymmword [rdx + 0x160], ymm13
vmovdqu ymmword [rdx + 0x1a0], ymm14
vmovdqu ymmword [rdx + 0x1e0], ymm15
add rsi, 0x200
jmp 0x4a8c6b
vmovdqu ymmword [rdx], ymm8
vmovdqu ymmword [rdx + 0x40], ymm9
vmovdqu ymmword [rdx + 0x80], ymm10
vmovdqu ymmword [rdx + 0xc0], ymm11
vmovdqu ymmword [rdx + 0x100], ymm12
vmovdqu ymmword [rdx + 0x140], ymm13
vmovdqu ymmword [rdx + 0x180], ymm14
vmovdqu ymmword [rdx + 0x1c0], ymm15
vmovdqa ymm0, ymmword [rbp + 0xc0]
vmovdqa ymm1, ymmword [rbp + 0xe0]
vmovdqa ymm2, ymmword [rbp + 0x100]
vmovdqa ymm3, ymmword [rbp + 0x120]
vmovdqa ymm4, ymmword [rbp + 0x140]
vmovdqa ymm5, ymmword [rbp + 0x160]
vmovdqa ymm6, ymmword [rbp + 0x180]
vmovdqa ymm7, ymmword [rbp + 0x1a0]
vpbroadcastd ymm8, dword [rbp + 0x20]
vpbroadcastd ymm9, dword [rbp + 0x24]
vpbroadcastd ymm10, dword [rbp + 0x28]
vpbroadcastd ymm11, dword [rbp + 0x2c]
vmovdqa ymm12, ymmword [rbp + 0x80]
vmovdqa ymm13, ymmword [rbp + 0xa0]
vpbroadcastd ymm14, dword [rbp + 0x38]
vpbroadcastd ymm15, dword [rbp + 0x3c]
vpaddd ymm0, ymm0, ymm8
vpaddd ymm1, ymm1, ymm9
vpaddd ymm2, ymm2, ymm10
vpaddd ymm3, ymm3, ymm11
vpaddd ymm4, ymm4, ymm12
vpaddd ymm5, ymm5, ymm13
vpaddd ymm6, ymm6, ymm14
vpaddd ymm7, ymm7, ymm15
vpunpckldq ymm8, ymm0, ymm1
vpunpckldq ymm9, ymm2, ymm3
vpunpckhdq ymm12, ymm0, ymm1
vpunpckhdq ymm13, ymm2, ymm3
vpunpckldq ymm10, ymm4, ymm5
vpunpckldq ymm11, ymm6, ymm7
vpunpckhdq ymm14, ymm4, ymm5
vpunpckhdq ymm15, ymm6, ymm7
vpunpcklqdq ymm0, ymm8, ymm9
vpunpcklqdq ymm1, ymm10, ymm11
vpunpckhqdq ymm2, ymm8, ymm9
vpunpckhqdq ymm3, ymm10, ymm11
vpunpcklqdq ymm4, ymm12, ymm13
vpunpcklqdq ymm5, ymm14, ymm15
vpunpckhqdq ymm6, ymm12, ymm13
vpunpckhqdq ymm7, ymm14, ymm15
vperm2i128 ymm8, ymm0, ymm1, 0x20
vperm2i128 ymm9, ymm2, ymm3, 0x20
vperm2i128 ymm12, ymm0, ymm1, 0x31
vperm2i128 ymm13, ymm2, ymm3, 0x31
vperm2i128 ymm10, ymm4, ymm5, 0x20
vperm2i128 ymm11, ymm6, ymm7, 0x20
vperm2i128 ymm14, ymm4, ymm5, 0x31
vperm2i128 ymm15, ymm6, ymm7, 0x31
vmovdqu ymmword [rdx + 0x20], ymm8
vmovdqu ymmword [rdx + 0x60], ymm9
vmovdqu ymmword [rdx + 0xa0], ymm10
vmovdqu ymmword [rdx + 0xe0], ymm11
vmovdqu ymmword [rdx + 0x120], ymm12
vmovdqu ymmword [rdx + 0x160], ymm13
vmovdqu ymmword [rdx + 0x1a0], ymm14
vmovdqu ymmword [rdx + 0x1e0], ymm15
add rdx, 0x200
sub rcx, 0x200
cmp rcx, 0x200
jae 0x4a83f3
cmp rcx, 0x100
jb 0x4a941c
mov rax, qword [rbp + 0x30]
lea r8, [rax + 1]
lea r9, [rax + 2]
lea r10, [rax + 3]
lea rbx, [rax + 4]
mov dword [rbp + 0x80], eax
mov dword [rbp + 0x84], r8d
mov dword [rbp + 0x88], r9d
mov dword [rbp + 0x8c], r10d
shr rax, 0x20
shr r8, 0x20
shr r9, 0x20
shr r10, 0x20
mov dword [rbp + 0xa0], eax
mov dword [rbp + 0xa4], r8d
mov dword [rbp + 0xa8], r9d
mov dword [rbp + 0xac], r10d
mov qword [rbp + 0x30], rbx
mov rax, 0x14
vpbroadcastd xmm0, dword [rbp]
vpbroadcastd xmm1, dword [rbp + 4]
vpbroadcastd xmm2, dword [rbp + 8]
vpbroadcastd xmm3, dword [rbp + 0xc]
vpbroadcastd xmm4, dword [rbp + 0x10]
vpbroadcastd xmm5, dword [rbp + 0x14]
vpbroadcastd xmm6, dword [rbp + 0x18]
vpbroadcastd xmm7, dword [rbp + 0x1c]
vpbroadcastd xmm8, dword [rbp + 0x20]
vpbroadcastd xmm9, dword [rbp + 0x24]
vpbroadcastd xmm10, dword [rbp + 0x28]
vpbroadcastd xmm11, dword [rbp + 0x2c]
vmovdqa xmm12, xmmword [rbp + 0x80]
vmovdqa xmm13, xmmword [rbp + 0xa0]
vpbroadcastd xmm14, dword [rbp + 0x38]
vpbroadcastd xmm15, dword [rbp + 0x3c]
vpaddd xmm0, xmm4, xmm0
vpaddd xmm1, xmm5, xmm1
vpxor xmm12, xmm0, xmm12
vpxor xmm13, xmm1, xmm13
vpaddd xmm2, xmm6, xmm2
vpaddd xmm3, xmm7, xmm3
vpxor xmm14, xmm2, xmm14
vpxor xmm15, xmm3, xmm15
vpshufb xmm12, xmm12, xmmword [rbp + 0x1c0]
vpshufb xmm13, xmm13, xmmword [rbp + 0x1c0]
vpaddd xmm8, xmm12, xmm8
vpaddd xmm9, xmm13, xmm9
vpshufb xmm14, xmm14, xmmword [rbp + 0x1c0]
vpshufb xmm15, xmm15, xmmword [rbp + 0x1c0]
vpaddd xmm10, xmm14, xmm10
vpaddd xmm11, xmm15, xmm11
vmovdqa xmmword [rbp + 0x60], xmm12
vpxor xmm4, xmm8, xmm4
vpxor xmm5, xmm9, xmm5
vpslld xmm12, xmm4, 0xc
vpsrld xmm4, xmm4, 0x14
vpxor xmm4, xmm12, xmm4
vpslld xmm12, xmm5, 0xc
vpsrld xmm5, xmm5, 0x14
vpxor xmm5, xmm12, xmm5
vpxor xmm6, xmm10, xmm6
vpxor xmm7, xmm11, xmm7
vpslld xmm12, xmm6, 0xc
vpsrld xmm6, xmm6, 0x14
vpxor xmm6, xmm12, xmm6
vpslld xmm12, xmm7, 0xc
vpsrld xmm7, xmm7, 0x14
vpxor xmm7, xmm12, xmm7
vpaddd xmm0, xmm4, xmm0
vpaddd xmm1, xmm5, xmm1
vpxor xmm12, xmm0, xmmword [rbp + 0x60]
vpxor xmm13, xmm1, xmm13
vpaddd xmm2, xmm6, xmm2
vpaddd xmm3, xmm7, xmm3
vpxor xmm14, xmm2, xmm14
vpxor xmm15, xmm3, xmm15
vpshufb xmm12, xmm12, xmmword [rbp + 0x1e0]
vpshufb xmm13, xmm13, xmmword [rbp + 0x1e0]
vpaddd xmm8, xmm12, xmm8
vpaddd xmm9, xmm13, xmm9
vpshufb xmm14, xmm14, xmmword [rbp + 0x1e0]
vpshufb xmm15, xmm15, xmmword [rbp + 0x1e0]
vpaddd xmm10, xmm14, xmm10
vpaddd xmm11, xmm15, xmm11
vmovdqa xmmword [rbp + 0x60], xmm12
vpxor xmm4, xmm8, xmm4
vpxor xmm5, xmm9, xmm5
vpslld xmm12, xmm4, 7
vpsrld xmm4, xmm4, 0x19
vpxor xmm4, xmm12, xmm4
vpslld xmm12, xmm5, 7
vpsrld xmm5, xmm5, 0x19
vpxor xmm5, xmm12, xmm5
vpxor xmm6, xmm10, xmm6
vpxor xmm7, xmm11, xmm7
vpslld xmm12, xmm6, 7
vpsrld xmm6, xmm6, 0x19
vpxor xmm6, xmm12, xmm6
vpslld xmm12, xmm7, 7
vpsrld xmm7, xmm7, 0x19
vpxor xmm7, xmm12, xmm7
vpaddd xmm0, xmm5, xmm0
vpaddd xmm1, xmm6, xmm1
vpxor xmm15, xmm0, xmm15
vpxor xmm12, xmm1, xmmword [rbp + 0x60]
vpaddd xmm2, xmm7, xmm2
vpaddd xmm3, xmm4, xmm3
vpxor xmm13, xmm2, xmm13
vpxor xmm14, xmm3, xmm14
vpshufb xmm15, xmm15, xmmword [rbp + 0x1c0]
vpshufb xmm12, xmm12, xmmword [rbp + 0x1c0]
vpaddd xmm10, xmm15, xmm10
vpaddd xmm11, xmm12, xmm11
vpshufb xmm13, xmm13, xmmword [rbp + 0x1c0]
vpshufb xmm14, xmm14, xmmword [rbp + 0x1c0]
vpaddd xmm8, xmm13, xmm8
vpaddd xmm9, xmm14, xmm9
vmovdqa xmmword [rbp + 0x60], xmm15
vpxor xmm5, xmm10, xmm5
vpxor xmm6, xmm11, xmm6
vpslld xmm15, xmm5, 0xc
vpsrld xmm5, xmm5, 0x14
vpxor xmm5, xmm15, xmm5
vpslld xmm15, xmm6, 0xc
vpsrld xmm6, xmm6, 0x14
vpxor xmm6, xmm15, xmm6
vpxor xmm7, xmm8, xmm7
vpxor xmm4, xmm9, xmm4
vpslld xmm15, xmm7, 0xc
vpsrld xmm7, xmm7, 0x14
vpxor xmm7, xmm15, xmm7
vpslld xmm15, xmm4, 0xc
vpsrld xmm4, xmm4, 0x14
vpxor xmm4, xmm15, xmm4
vpaddd xmm0, xmm5, xmm0
vpaddd xmm1, xmm6, xmm1
vpxor xmm15, xmm0, xmmword [rbp + 0x60]
vpxor xmm12, xmm1, xmm12
vpaddd xmm2, xmm7, xmm2
vpaddd xmm3, xmm4, xmm3
vpxor xmm13, xmm2, xmm13
vpxor xmm14, xmm3, xmm14
vpshufb xmm15, xmm15, xmmword [rbp + 0x1e0]
vpshufb xmm12, xmm12, xmmword [rbp + 0x1e0]
vpaddd xmm10, xmm15, xmm10
vpaddd xmm11, xmm12, xmm11
vpshufb xmm13, xmm13, xmmword [rbp + 0x1e0]
vpshufb xmm14, xmm14, xmmword [rbp + 0x1e0]
vpaddd xmm8, xmm13, xmm8
vpaddd xmm9, xmm14, xmm9
vmovdqa xmmword [rbp + 0x60], xmm15
vpxor xmm5, xmm10, xmm5
vpxor xmm6, xmm11, xmm6
vpslld xmm15, xmm5, 7
vpsrld xmm5, xmm5, 0x19
vpxor xmm5, xmm15, xmm5
vpslld xmm15, xmm6, 7
vpsrld xmm6, xmm6, 0x19
vpxor xmm6, xmm15, xmm6
vpxor xmm7, xmm8, xmm7
vpxor xmm4, xmm9, xmm4
vpslld xmm15, xmm7, 7
vpsrld xmm7, xmm7, 0x19
vpxor xmm7, xmm15, xmm7
vpslld xmm15, xmm4, 7
vpsrld xmm4, xmm4, 0x19
vpxor xmm4, xmm15, xmm4
vmovdqa xmm15, xmmword [rbp + 0x60]
sub rax, 2
jne 0x4a8d5c
vmovdqa xmmword [rbp + 0xc0], xmm8
vmovdqa xmmword [rbp + 0xd0], xmm9
vmovdqa xmmword [rbp + 0xe0], xmm10
vmovdqa xmmword [rbp + 0xf0], xmm11
vmovdqa xmmword [rbp + 0x100], xmm12
vmovdqa xmmword [rbp + 0x110], xmm13
vmovdqa xmmword [rbp + 0x120], xmm14
vmovdqa xmmword [rbp + 0x130], xmm15
vpbroadcastd xmm8, dword [rbp]
vpbroadcastd xmm9, dword [rbp + 4]
vpbroadcastd xmm10, dword [rbp + 8]
vpbroadcastd xmm11, dword [rbp + 0xc]
vpbroadcastd xmm12, dword [rbp + 0x10]
vpbroadcastd xmm13, dword [rbp + 0x14]
vpbroadcastd xmm14, dword [rbp + 0x18]
vpbroadcastd xmm15, dword [rbp + 0x1c]
vpaddd xmm0, xmm0, xmm8
vpaddd xmm1, xmm1, xmm9
vpaddd xmm2, xmm2, xmm10
vpaddd xmm3, xmm3, xmm11
vpaddd xmm4, xmm4, xmm12
vpaddd xmm5, xmm5, xmm13
vpaddd xmm6, xmm6, xmm14
vpaddd xmm7, xmm7, xmm15
vpunpckldq xmm8, xmm0, xmm1
vpunpckldq xmm9, xmm2, xmm3
vpunpckhdq xmm12, xmm0, xmm1
vpunpckhdq xmm13, xmm2, xmm3
vpunpckldq xmm10, xmm4, xmm5
vpunpckldq xmm11, xmm6, xmm7
vpunpckhdq xmm14, xmm4, xmm5
vpunpckhdq xmm15, xmm6, xmm7
vpunpcklqdq xmm0, xmm8, xmm9
vpunpcklqdq xmm1, xmm10, xmm11
vpunpckhqdq xmm2, xmm8, xmm9
vpunpckhqdq xmm3, xmm10, xmm11
vpunpcklqdq xmm4, xmm12, xmm13
vpunpcklqdq xmm5, xmm14, xmm15
vpunpckhqdq xmm6, xmm12, xmm13
vpunpckhqdq xmm7, xmm14, xmm15
and rsi, rsi
je 0x4a92b6
vpxor xmm0, xmm0, xmmword [rsi]
vpxor xmm1, xmm1, xmmword [rsi + 0x10]
vpxor xmm2, xmm2, xmmword [rsi + 0x40]
vpxor xmm3, xmm3, xmmword [rsi + 0x50]
vpxor xmm4, xmm4, xmmword [rsi + 0x80]
vpxor xmm5, xmm5, xmmword [rsi + 0x90]
vpxor xmm6, xmm6, xmmword [rsi + 0xc0]
vpxor xmm7, xmm7, xmmword [rsi + 0xd0]
vmovdqu xmmword [rdx], xmm0
vmovdqu xmmword [rdx + 0x10], xmm1
vmovdqu xmmword [rdx + 0x40], xmm2
vmovdqu xmmword [rdx + 0x50], xmm3
vmovdqu xmmword [rdx + 0x80], xmm4
vmovdqu xmmword [rdx + 0x90], xmm5
vmovdqu xmmword [rdx + 0xc0], xmm6
vmovdqu xmmword [rdx + 0xd0], xmm7
vmovdqa xmm0, xmmword [rbp + 0xc0]
vmovdqa xmm1, xmmword [rbp + 0xd0]
vmovdqa xmm2, xmmword [rbp + 0xe0]
vmovdqa xmm3, xmmword [rbp + 0xf0]
vmovdqa xmm4, xmmword [rbp + 0x100]
vmovdqa xmm5, xmmword [rbp + 0x110]
vmovdqa xmm6, xmmword [rbp + 0x120]
vmovdqa xmm7, xmmword [rbp + 0x130]
vpbroadcastd xmm8, dword [rbp + 0x20]
vpbroadcastd xmm9, dword [rbp + 0x24]
vpbroadcastd xmm10, dword [rbp + 0x28]
vpbroadcastd xmm11, dword [rbp + 0x2c]
vmovdqa xmm12, xmmword [rbp + 0x80]
vmovdqa xmm13, xmmword [rbp + 0xa0]
vpbroadcastd xmm14, dword [rbp + 0x38]
vpbroadcastd xmm15, dword [rbp + 0x3c]
vpaddd xmm0, xmm0, xmm8
vpaddd xmm1, xmm1, xmm9
vpaddd xmm2, xmm2, xmm10
vpaddd xmm3, xmm3, xmm11
vpaddd xmm4, xmm4, xmm12
vpaddd xmm5, xmm5, xmm13
vpaddd xmm6, xmm6, xmm14
vpaddd xmm7, xmm7, xmm15
vpunpckldq xmm8, xmm0, xmm1
vpunpckldq xmm9, xmm2, xmm3
vpunpckhdq xmm12, xmm0, xmm1
vpunpckhdq xmm13, xmm2, xmm3
vpunpckldq xmm10, xmm4, xmm5
vpunpckldq xmm11, xmm6, xmm7
vpunpckhdq xmm14, xmm4, xmm5
vpunpckhdq xmm15, xmm6, xmm7
vpunpcklqdq xmm0, xmm8, xmm9
vpunpcklqdq xmm1, xmm10, xmm11
vpunpckhqdq xmm2, xmm8, xmm9
vpunpckhqdq xmm3, xmm10, xmm11
vpunpcklqdq xmm4, xmm12, xmm13
vpunpcklqdq xmm5, xmm14, xmm15
vpunpckhqdq xmm6, xmm12, xmm13
vpunpckhqdq xmm7, xmm14, xmm15
vpxor xmm0, xmm0, xmmword [rsi + 0x20]
vpxor xmm1, xmm1, xmmword [rsi + 0x30]
vpxor xmm2, xmm2, xmmword [rsi + 0x60]
vpxor xmm3, xmm3, xmmword [rsi + 0x70]
vpxor xmm4, xmm4, xmmword [rsi + 0xa0]
vpxor xmm5, xmm5, xmmword [rsi + 0xb0]
vpxor xmm6, xmm6, xmmword [rsi + 0xe0]
vpxor xmm7, xmm7, xmmword [rsi + 0xf0]
vmovdqu xmmword [rdx + 0x20], xmm0
vmovdqu xmmword [rdx + 0x30], xmm1
vmovdqu xmmword [rdx + 0x60], xmm2
vmovdqu xmmword [rdx + 0x70], xmm3
vmovdqu xmmword [rdx + 0xa0], xmm4
vmovdqu xmmword [rdx + 0xb0], xmm5
vmovdqu xmmword [rdx + 0xe0], xmm6
vmovdqu xmmword [rdx + 0xf0], xmm7
add rsi, 0x100
jmp 0x4a9401
vmovdqu xmmword [rdx], xmm0
vmovdqu xmmword [rdx + 0x10], xmm1
vmovdqu xmmword [rdx + 0x40], xmm2
vmovdqu xmmword [rdx + 0x50], xmm3
vmovdqu xmmword [rdx + 0x80], xmm4
vmovdqu xmmword [rdx + 0x90], xmm5
vmovdqu xmmword [rdx + 0xc0], xmm6
vmovdqu xmmword [rdx + 0xd0], xmm7
vmovdqa xmm0, xmmword [rbp + 0xc0]
vmovdqa xmm1, xmmword [rbp + 0xd0]
vmovdqa xmm2, xmmword [rbp + 0xe0]
vmovdqa xmm3, xmmword [rbp + 0xf0]
vmovdqa xmm4, xmmword [rbp + 0x100]
vmovdqa xmm5, xmmword [rbp + 0x110]
vmovdqa xmm6, xmmword [rbp + 0x120]
vmovdqa xmm7, xmmword [rbp + 0x130]
vpbroadcastd xmm8, dword [rbp + 0x20]
vpbroadcastd xmm9, dword [rbp + 0x24]
vpbroadcastd xmm10, dword [rbp + 0x28]
vpbroadcastd xmm11, dword [rbp + 0x2c]
vmovdqa xmm12, xmmword [rbp + 0x80]
vmovdqa xmm13, xmmword [rbp + 0xa0]
vpbroadcastd xmm14, dword [rbp + 0x38]
vpbroadcastd xmm15, dword [rbp + 0x3c]
vpaddd xmm0, xmm0, xmm8
vpaddd xmm1, xmm1, xmm9
vpaddd xmm2, xmm2, xmm10
vpaddd xmm3, xmm3, xmm11
vpaddd xmm4, xmm4, xmm12
vpaddd xmm5, xmm5, xmm13
vpaddd xmm6, xmm6, xmm14
vpaddd xmm7, xmm7, xmm15
vpunpckldq xmm8, xmm0, xmm1
vpunpckldq xmm9, xmm2, xmm3
vpunpckhdq xmm12, xmm0, xmm1
vpunpckhdq xmm13, xmm2, xmm3
vpunpckldq xmm10, xmm4, xmm5
vpunpckldq xmm11, xmm6, xmm7
vpunpckhdq xmm14, xmm4, xmm5
vpunpckhdq xmm15, xmm6, xmm7
vpunpcklqdq xmm0, xmm8, xmm9
vpunpcklqdq xmm1, xmm10, xmm11
vpunpckhqdq xmm2, xmm8, xmm9
vpunpckhqdq xmm3, xmm10, xmm11
vpunpcklqdq xmm4, xmm12, xmm13
vpunpcklqdq xmm5, xmm14, xmm15
vpunpckhqdq xmm6, xmm12, xmm13
vpunpckhqdq xmm7, xmm14, xmm15
vmovdqu xmmword [rdx + 0x20], xmm0
vmovdqu xmmword [rdx + 0x30], xmm1
vmovdqu xmmword [rdx + 0x60], xmm2
vmovdqu xmmword [rdx + 0x70], xmm3
vmovdqu xmmword [rdx + 0xa0], xmm4
vmovdqu xmmword [rdx + 0xb0], xmm5
vmovdqu xmmword [rdx + 0xe0], xmm6
vmovdqu xmmword [rdx + 0xf0], xmm7
add rdx, 0x100
sub rcx, 0x100
cmp rcx, 0x100
jae 0x4a8c93
vmovdqa xmm6, xmmword [rbp + 0x1c0]
vmovdqa xmm7, xmmword [rbp + 0x1e0]
vmovdqa xmm8, xmmword [rbp]
vmovdqa xmm9, xmmword [rbp + 0x10]
vmovdqa xmm10, xmmword [rbp + 0x20]
vmovdqa xmm11, xmmword [rbp + 0x30]
mov r9, 1
vmovq xmm5, r9
and rcx, rcx
je 0x4a95c2
cmp rcx, 0x40
jae 0x4a9485
mov r9, rdx
and rsi, rsi
je 0x4a9482
mov r10, rcx
mov rdx, rbp
add rsi, r10
add rdx, r10
neg r10
mov al, byte [rsi + r10]
mov byte [rdx + r10], al
inc r10
jne 0x4a9472
mov rsi, rbp
mov rdx, rbp
vmovdqa xmm0, xmm8
vmovdqa xmm1, xmm9
vmovdqa xmm2, xmm10
vmovdqa xmm3, xmm11
mov rax, 0x14
vpaddd xmm0, xmm1, xmm0
vpxor xmm3, xmm0, xmm3
vpshufb xmm3, xmm3, xmm6
vpaddd xmm2, xmm3, xmm2
vpxor xmm1, xmm2, xmm1
vpslld xmm4, xmm1, 0xc
vpsrld xmm1, xmm1, 0x14
vpxor xmm1, xmm4, xmm1
vpaddd xmm0, xmm1, xmm0
vpxor xmm3, xmm0, xmm3
vpshufb xmm3, xmm3, xmm7
vpshufd xmm0, xmm0, 0x93
vpaddd xmm2, xmm3, xmm2
vpshufd xmm3, xmm3, 0x4e
vpxor xmm1, xmm2, xmm1
vpshufd xmm2, xmm2, 0x39
vpslld xmm4, xmm1, 7
vpsrld xmm1, xmm1, 0x19
vpxor xmm1, xmm4, xmm1
vpaddd xmm0, xmm1, xmm0
vpxor xmm3, xmm0, xmm3
vpshufb xmm3, xmm3, xmm6
vpaddd xmm2, xmm3, xmm2
vpxor xmm1, xmm2, xmm1
vpslld xmm4, xmm1, 0xc
vpsrld xmm1, xmm1, 0x14
vpxor xmm1, xmm4, xmm1
vpaddd xmm0, xmm1, xmm0
vpxor xmm3, xmm0, xmm3
vpshufb xmm3, xmm3, xmm7
vpshufd xmm0, xmm0, 0x39
vpaddd xmm2, xmm3, xmm2
vpshufd xmm3, xmm3, 0x4e
vpxor xmm1, xmm2, xmm1
vpshufd xmm2, xmm2, 0x93
vpslld xmm4, xmm1, 7
vpsrld xmm1, xmm1, 0x19
vpxor xmm1, xmm4, xmm1
sub rax, 2
jne 0x4a949c
vpaddd xmm0, xmm8, xmm0
vpaddd xmm1, xmm9, xmm1
vpaddd xmm2, xmm10, xmm2
vpaddd xmm3, xmm11, xmm3
and rsi, rsi
je 0x4a957c
vpxor xmm0, xmm0, xmmword [rsi]
vpxor xmm1, xmm1, xmmword [rsi + 0x10]
vpxor xmm2, xmm2, xmmword [rsi + 0x20]
vpxor xmm3, xmm3, xmmword [rsi + 0x30]
add rsi, 0x40
vmovdqu xmmword [rdx], xmm0
vmovdqu xmmword [rdx + 0x10], xmm1
vmovdqu xmmword [rdx + 0x20], xmm2
vmovdqu xmmword [rdx + 0x30], xmm3
vpaddq xmm11, xmm5, xmm11
cmp rcx, 0x40
jbe 0x4a95a7
add rdx, 0x40
sub rcx, 0x40
jmp 0x4a9447
cmp rcx, 0x40
je 0x4a95c2
add r9, rcx
add rdx, rcx
neg rcx
mov al, byte [rdx + rcx]
mov byte [r9 + rcx], al
inc rcx
jne 0x4a95b6
vmovdqu xmmword [rdi + 0x20], xmm11
vzeroupper
add rsp, 0x240
pop rbp
ret