Function at 0x515500
Capabilities:
Encode data using xor
Encrypt data using salsa20 or chacha
Resolve function by parsing pe exports

Disassembly:
mov r14, qword [0x0077d590]
mov r14, qword gs:[r14]
mov r14, qword [r14]
lea r12, [rsp - 0x150]
cmp r12, qword [r14 + 0x10]
jbe 0x516672
push rbp
mov rbp, rsp
sub rsp, 0x1c8
mov rdi, qword [rsp + 0x1d8]
mov rsi, qword [rsp + 0x1e0]
mov rdx, qword [rsp + 0x1e8]
mov rcx, qword [rsp + 0x1f0]
mov r8, qword [rsp + 0x1f8]
mov r12, rsp
add r12, 0x1f
and r12, 0xffffffffffffffe0
mov r9, rdx
mov rdx, rcx
mov r10, r8
cmp r9, 0
jbe 0x516658
mov ecx, dword [r10 + 0x14]
mov r8d, dword [r10]
mov eax, dword [rdx]
mov r11d, dword [r10 + 0x10]
mov dword [r12], ecx
mov dword [r12 + 4], r8d
mov dword [r12 + 8], eax
mov dword [r12 + 0xc], r11d
mov ecx, dword [rdx + 8]
mov r8d, dword [r10 + 0x18]
mov eax, dword [r10 + 4]
mov r11d, dword [rdx + 4]
mov dword [r12 + 0x10], ecx
mov dword [r12 + 0x14], r8d
mov dword [r12 + 0x18], eax
mov dword [r12 + 0x1c], r11d
mov ecx, dword [rdx + 0xc]
mov edx, dword [r10 + 0xc]
mov r8d, dword [r10 + 0x1c]
mov eax, dword [r10 + 8]
mov dword [r12 + 0x20], edx
mov dword [r12 + 0x24], ecx
mov dword [r12 + 0x28], r8d
mov dword [r12 + 0x2c], eax
mov rdx, 0x61707865
mov rcx, 0x3320646e
mov r8, 0x79622d32
mov rax, 0x6b206574
mov dword [r12 + 0x30], edx
mov dword [r12 + 0x34], ecx
mov dword [r12 + 0x38], r8d
mov dword [r12 + 0x3c], eax
cmp r9, 0x100
jb 0x516284
movdqa xmm0, xmmword [r12 + 0x30]
pshufd xmm1, xmm0, 0x55
pshufd xmm2, xmm0, 0xaa
pshufd xmm3, xmm0, 0xff
pshufd xmm0, xmm0, 0
movdqa xmmword [r12 + 0x40], xmm1
movdqa xmmword [r12 + 0x50], xmm2
movdqa xmmword [r12 + 0x60], xmm3
movdqa xmmword [r12 + 0x70], xmm0
movdqa xmm0, xmmword [r12]
pshufd xmm1, xmm0, 0xaa
pshufd xmm2, xmm0, 0xff
pshufd xmm3, xmm0, 0
pshufd xmm0, xmm0, 0x55
movdqa xmmword [r12 + 0x80], xmm1
movdqa xmmword [r12 + 0x90], xmm2
movdqa xmmword [r12 + 0xa0], xmm3
movdqa xmmword [r12 + 0xb0], xmm0
movdqa xmm0, xmmword [r12 + 0x10]
pshufd xmm1, xmm0, 0xff
pshufd xmm2, xmm0, 0x55
pshufd xmm0, xmm0, 0xaa
movdqa xmmword [r12 + 0xc0], xmm1
movdqa xmmword [r12 + 0xd0], xmm2
movdqa xmmword [r12 + 0xe0], xmm0
movdqa xmm0, xmmword [r12 + 0x20]
pshufd xmm1, xmm0, 0
pshufd xmm2, xmm0, 0xaa
pshufd xmm0, xmm0, 0xff
movdqa xmmword [r12 + 0xf0], xmm1
movdqa xmmword [r12 + 0x100], xmm2
movdqa xmmword [r12 + 0x110], xmm0
mov edx, dword [r12 + 0x10]
mov ecx, dword [r12 + 0x24]
mov dword [r12 + 0x120], edx
mov dword [r12 + 0x130], ecx
shl rcx, 0x20
add rdx, rcx
add rdx, 1
mov rcx, rdx
shr rcx, 0x20
mov dword [r12 + 0x124], edx
mov dword [r12 + 0x134], ecx
add rdx, 1
mov rcx, rdx
shr rcx, 0x20
mov dword [r12 + 0x128], edx
mov dword [r12 + 0x138], ecx
add rdx, 1
mov rcx, rdx
shr rcx, 0x20
mov dword [r12 + 0x12c], edx
mov dword [r12 + 0x13c], ecx
add rdx, 1
mov rcx, rdx
shr rcx, 0x20
mov dword [r12 + 0x10], edx
mov dword [r12 + 0x24], ecx
mov qword [r12 + 0x160], r9
mov rdx, 0x14
movdqa xmm0, xmmword [r12 + 0x40]
movdqa xmm1, xmmword [r12 + 0x50]
movdqa xmm2, xmmword [r12 + 0x60]
movdqa xmm3, xmmword [r12 + 0x100]
movdqa xmm4, xmmword [r12 + 0x110]
movdqa xmm5, xmmword [r12 + 0x80]
movdqa xmm6, xmmword [r12 + 0x90]
movdqa xmm7, xmmword [r12 + 0xb0]
movdqa xmm8, xmmword [r12 + 0xc0]
movdqa xmm9, xmmword [r12 + 0xd0]
movdqa xmm10, xmmword [r12 + 0xe0]
movdqa xmm11, xmmword [r12 + 0x130]
movdqa xmm12, xmmword [r12 + 0x70]
movdqa xmm13, xmmword [r12 + 0xa0]
movdqa xmm14, xmmword [r12 + 0xf0]
movdqa xmm15, xmmword [r12 + 0x120]
movdqa xmmword [r12 + 0x140], xmm1
movdqa xmmword [r12 + 0x150], xmm2
movdqa xmm1, xmm13
paddd xmm1, xmm12
movdqa xmm2, xmm1
pslld xmm1, 7
pxor xmm14, xmm1
psrld xmm2, 0x19
pxor xmm14, xmm2
movdqa xmm1, xmm7
paddd xmm1, xmm0
movdqa xmm2, xmm1
pslld xmm1, 7
pxor xmm11, xmm1
psrld xmm2, 0x19
pxor xmm11, xmm2
movdqa xmm1, xmm12
paddd xmm1, xmm14
movdqa xmm2, xmm1
pslld xmm1, 9
pxor xmm15, xmm1
psrld xmm2, 0x17
pxor xmm15, xmm2
movdqa xmm1, xmm0
paddd xmm1, xmm11
movdqa xmm2, xmm1
pslld xmm1, 9
pxor xmm9, xmm1
psrld xmm2, 0x17
pxor xmm9, xmm2
movdqa xmm1, xmm14
paddd xmm1, xmm15
movdqa xmm2, xmm1
pslld xmm1, 0xd
pxor xmm13, xmm1
psrld xmm2, 0x13
pxor xmm13, xmm2
movdqa xmm1, xmm11
paddd xmm1, xmm9
movdqa xmm2, xmm1
pslld xmm1, 0xd
pxor xmm7, xmm1
psrld xmm2, 0x13
pxor xmm7, xmm2
movdqa xmm1, xmm15
paddd xmm1, xmm13
movdqa xmm2, xmm1
pslld xmm1, 0x12
pxor xmm12, xmm1
psrld xmm2, 0xe
pxor xmm12, xmm2
movdqa xmm1, xmmword [r12 + 0x140]
movdqa xmmword [r12 + 0x140], xmm12
movdqa xmm2, xmm9
paddd xmm2, xmm7
movdqa xmm12, xmm2
pslld xmm2, 0x12
pxor xmm0, xmm2
psrld xmm12, 0xe
pxor xmm0, xmm12
movdqa xmm2, xmm5
paddd xmm2, xmm1
movdqa xmm12, xmm2
pslld xmm2, 7
pxor xmm3, xmm2
psrld xmm12, 0x19
pxor xmm3, xmm12
movdqa xmm2, xmmword [r12 + 0x150]
movdqa xmmword [r12 + 0x150], xmm0
movdqa xmm0, xmm6
paddd xmm0, xmm2
movdqa xmm12, xmm0
pslld xmm0, 7
pxor xmm4, xmm0
psrld xmm12, 0x19
pxor xmm4, xmm12
movdqa xmm0, xmm1
paddd xmm0, xmm3
movdqa xmm12, xmm0
pslld xmm0, 9
pxor xmm10, xmm0
psrld xmm12, 0x17
pxor xmm10, xmm12
movdqa xmm0, xmm2
paddd xmm0, xmm4
movdqa xmm12, xmm0
pslld xmm0, 9
pxor xmm8, xmm0
psrld xmm12, 0x17
pxor xmm8, xmm12
movdqa xmm0, xmm3
paddd xmm0, xmm10
movdqa xmm12, xmm0
pslld xmm0, 0xd
pxor xmm5, xmm0
psrld xmm12, 0x13
pxor xmm5, xmm12
movdqa xmm0, xmm4
paddd xmm0, xmm8
movdqa xmm12, xmm0
pslld xmm0, 0xd
pxor xmm6, xmm0
psrld xmm12, 0x13
pxor xmm6, xmm12
movdqa xmm0, xmm10
paddd xmm0, xmm5
movdqa xmm12, xmm0
pslld xmm0, 0x12
pxor xmm1, xmm0
psrld xmm12, 0xe
pxor xmm1, xmm12
movdqa xmm0, xmmword [r12 + 0x140]
movdqa xmmword [r12 + 0x140], xmm1
movdqa xmm1, xmm4
paddd xmm1, xmm0
movdqa xmm12, xmm1
pslld xmm1, 7
pxor xmm7, xmm1
psrld xmm12, 0x19
pxor xmm7, xmm12
movdqa xmm1, xmm8
paddd xmm1, xmm6
movdqa xmm12, xmm1
pslld xmm1, 0x12
pxor xmm2, xmm1
psrld xmm12, 0xe
pxor xmm2, xmm12
movdqa xmm12, xmmword [r12 + 0x150]
movdqa xmmword [r12 + 0x150], xmm2
movdqa xmm1, xmm14
paddd xmm1, xmm12
movdqa xmm2, xmm1
pslld xmm1, 7
pxor xmm5, xmm1
psrld xmm2, 0x19
pxor xmm5, xmm2
movdqa xmm1, xmm0
paddd xmm1, xmm7
movdqa xmm2, xmm1
pslld xmm1, 9
pxor xmm10, xmm1
psrld xmm2, 0x17
pxor xmm10, xmm2
movdqa xmm1, xmm12
paddd xmm1, xmm5
movdqa xmm2, xmm1
pslld xmm1, 9
pxor xmm8, xmm1
psrld xmm2, 0x17
pxor xmm8, xmm2
movdqa xmm1, xmm7
paddd xmm1, xmm10
movdqa xmm2, xmm1
pslld xmm1, 0xd
pxor xmm4, xmm1
psrld xmm2, 0x13
pxor xmm4, xmm2
movdqa xmm1, xmm5
paddd xmm1, xmm8
movdqa xmm2, xmm1
pslld xmm1, 0xd
pxor xmm14, xmm1
psrld xmm2, 0x13
pxor xmm14, xmm2
movdqa xmm1, xmm10
paddd xmm1, xmm4
movdqa xmm2, xmm1
pslld xmm1, 0x12
pxor xmm0, xmm1
psrld xmm2, 0xe
pxor xmm0, xmm2
movdqa xmm1, xmmword [r12 + 0x140]
movdqa xmmword [r12 + 0x140], xmm0
movdqa xmm0, xmm8
paddd xmm0, xmm14
movdqa xmm2, xmm0
pslld xmm0, 0x12
pxor xmm12, xmm0
psrld xmm2, 0xe
pxor xmm12, xmm2
movdqa xmm0, xmm11
paddd xmm0, xmm1
movdqa xmm2, xmm0
pslld xmm0, 7
pxor xmm6, xmm0
psrld xmm2, 0x19
pxor xmm6, xmm2
movdqa xmm2, xmmword [r12 + 0x150]
movdqa xmmword [r12 + 0x150], xmm12
movdqa xmm0, xmm3
paddd xmm0, xmm2
movdqa xmm12, xmm0
pslld xmm0, 7
pxor xmm13, xmm0
psrld xmm12, 0x19
pxor xmm13, xmm12
movdqa xmm0, xmm1
paddd xmm0, xmm6
movdqa xmm12, xmm0
pslld xmm0, 9
pxor xmm15, xmm0
psrld xmm12, 0x17
pxor xmm15, xmm12
movdqa xmm0, xmm2
paddd xmm0, xmm13
movdqa xmm12, xmm0
pslld xmm0, 9
pxor xmm9, xmm0
psrld xmm12, 0x17
pxor xmm9, xmm12
movdqa xmm0, xmm6
paddd xmm0, xmm15
movdqa xmm12, xmm0
pslld xmm0, 0xd
pxor xmm11, xmm0
psrld xmm12, 0x13
pxor xmm11, xmm12
movdqa xmm0, xmm13
paddd xmm0, xmm9
movdqa xmm12, xmm0
pslld xmm0, 0xd
pxor xmm3, xmm0
psrld xmm12, 0x13
pxor xmm3, xmm12
movdqa xmm0, xmm15
paddd xmm0, xmm11
movdqa xmm12, xmm0
pslld xmm0, 0x12
pxor xmm1, xmm0
psrld xmm12, 0xe
pxor xmm1, xmm12
movdqa xmm0, xmm9
paddd xmm0, xmm3
movdqa xmm12, xmm0
pslld xmm0, 0x12
pxor xmm2, xmm0
psrld xmm12, 0xe
pxor xmm2, xmm12
movdqa xmm12, xmmword [r12 + 0x140]
movdqa xmm0, xmmword [r12 + 0x150]
sub rdx, 2
ja 0x51581f
paddd xmm12, xmmword [r12 + 0x70]
paddd xmm7, xmmword [r12 + 0xb0]
paddd xmm10, xmmword [r12 + 0xe0]
paddd xmm4, xmmword [r12 + 0x110]
movq rdx, xmm12
movq rcx, xmm7
movq r8, xmm10
movq r9, xmm4
pshufd xmm12, xmm12, 0x39
pshufd xmm7, xmm7, 0x39
pshufd xmm10, xmm10, 0x39
pshufd xmm4, xmm4, 0x39
xor edx, dword [rsi]
xor ecx, dword [rsi + 4]
xor r8d, dword [rsi + 8]
xor r9d, dword [rsi + 0xc]
mov dword [rdi], edx
mov dword [rdi + 4], ecx
mov dword [rdi + 8], r8d
mov dword [rdi + 0xc], r9d
movq rdx, xmm12
movq rcx, xmm7
movq r8, xmm10
movq r9, xmm4
pshufd xmm12, xmm12, 0x39
pshufd xmm7, xmm7, 0x39
pshufd xmm10, xmm10, 0x39
pshufd xmm4, xmm4, 0x39
xor edx, dword [rsi + 0x40]
xor ecx, dword [rsi + 0x44]
xor r8d, dword [rsi + 0x48]
xor r9d, dword [rsi + 0x4c]
mov dword [rdi + 0x40], edx
mov dword [rdi + 0x44], ecx
mov dword [rdi + 0x48], r8d
mov dword [rdi + 0x4c], r9d
movq rdx, xmm12
movq rcx, xmm7
movq r8, xmm10
movq r9, xmm4
pshufd xmm12, xmm12, 0x39
pshufd xmm7, xmm7, 0x39
pshufd xmm10, xmm10, 0x39
pshufd xmm4, xmm4, 0x39
xor edx, dword [rsi + 0x80]
xor ecx, dword [rsi + 0x84]
xor r8d, dword [rsi + 0x88]
xor r9d, dword [rsi + 0x8c]
mov dword [rdi + 0x80], edx
mov dword [rdi + 0x84], ecx
mov dword [rdi + 0x88], r8d
mov dword [rdi + 0x8c], r9d
movq rdx, xmm12
movq rcx, xmm7
movq r8, xmm10
movq r9, xmm4
xor edx, dword [rsi + 0xc0]
xor ecx, dword [rsi + 0xc4]
xor r8d, dword [rsi + 0xc8]
xor r9d, dword [rsi + 0xcc]
mov dword [rdi + 0xc0], edx
mov dword [rdi + 0xc4], ecx
mov dword [rdi + 0xc8], r8d
mov dword [rdi + 0xcc], r9d
paddd xmm14, xmmword [r12 + 0xf0]
paddd xmm0, xmmword [r12 + 0x40]
paddd xmm5, xmmword [r12 + 0x80]
paddd xmm8, xmmword [r12 + 0xc0]
movq rdx, xmm14
movq rcx, xmm0
movq r8, xmm5
movq r9, xmm8
pshufd xmm14, xmm14, 0x39
pshufd xmm0, xmm0, 0x39
pshufd xmm5, xmm5, 0x39
pshufd xmm8, xmm8, 0x39
xor edx, dword [rsi + 0x10]
xor ecx, dword [rsi + 0x14]
xor r8d, dword [rsi + 0x18]
xor r9d, dword [rsi + 0x1c]
mov dword [rdi + 0x10], edx
mov dword [rdi + 0x14], ecx
mov dword [rdi + 0x18], r8d
mov dword [rdi + 0x1c], r9d
movq rdx, xmm14
movq rcx, xmm0
movq r8, xmm5
movq r9, xmm8
pshufd xmm14, xmm14, 0x39
pshufd xmm0, xmm0, 0x39
pshufd xmm5, xmm5, 0x39
pshufd xmm8, xmm8, 0x39
xor edx, dword [rsi + 0x50]
xor ecx, dword [rsi + 0x54]
xor r8d, dword [rsi + 0x58]
xor r9d, dword [rsi + 0x5c]
mov dword [rdi + 0x50], edx
mov dword [rdi + 0x54], ecx
mov dword [rdi + 0x58], r8d
mov dword [rdi + 0x5c], r9d
movq rdx, xmm14
movq rcx, xmm0
movq r8, xmm5
movq r9, xmm8
pshufd xmm14, xmm14, 0x39
pshufd xmm0, xmm0, 0x39
pshufd xmm5, xmm5, 0x39
pshufd xmm8, xmm8, 0x39
xor edx, dword [rsi + 0x90]
xor ecx, dword [rsi + 0x94]
xor r8d, dword [rsi + 0x98]
xor r9d, dword [rsi + 0x9c]
mov dword [rdi + 0x90], edx
mov dword [rdi + 0x94], ecx
mov dword [rdi + 0x98], r8d
mov dword [rdi + 0x9c], r9d
movq rdx, xmm14
movq rcx, xmm0
movq r8, xmm5
movq r9, xmm8
xor edx, dword [rsi + 0xd0]
xor ecx, dword [rsi + 0xd4]
xor r8d, dword [rsi + 0xd8]
xor r9d, dword [rsi + 0xdc]
mov dword [rdi + 0xd0], edx
mov dword [rdi + 0xd4], ecx
mov dword [rdi + 0xd8], r8d
mov dword [rdi + 0xdc], r9d
paddd xmm15, xmmword [r12 + 0x120]
paddd xmm11, xmmword [r12 + 0x130]
paddd xmm1, xmmword [r12 + 0x50]
paddd xmm6, xmmword [r12 + 0x90]
movq rdx, xmm15
movq rcx, xmm11
movq r8, xmm1
movq r9, xmm6
pshufd xmm15, xmm15, 0x39
pshufd xmm11, xmm11, 0x39
pshufd xmm1, xmm1, 0x39
pshufd xmm6, xmm6, 0x39
xor edx, dword [rsi + 0x20]
xor ecx, dword [rsi + 0x24]
xor r8d, dword [rsi + 0x28]
xor r9d, dword [rsi + 0x2c]
mov dword [rdi + 0x20], edx
mov dword [rdi + 0x24], ecx
mov dword [rdi + 0x28], r8d
mov dword [rdi + 0x2c], r9d
movq rdx, xmm15
movq rcx, xmm11
movq r8, xmm1
movq r9, xmm6
pshufd xmm15, xmm15, 0x39
pshufd xmm11, xmm11, 0x39
pshufd xmm1, xmm1, 0x39
pshufd xmm6, xmm6, 0x39
xor edx, dword [rsi + 0x60]
xor ecx, dword [rsi + 0x64]
xor r8d, dword [rsi + 0x68]
xor r9d, dword [rsi + 0x6c]
mov dword [rdi + 0x60], edx
mov dword [rdi + 0x64], ecx
mov dword [rdi + 0x68], r8d
mov dword [rdi + 0x6c], r9d
movq rdx, xmm15
movq rcx, xmm11
movq r8, xmm1
movq r9, xmm6
pshufd xmm15, xmm15, 0x39
pshufd xmm11, xmm11, 0x39
pshufd xmm1, xmm1, 0x39
pshufd xmm6, xmm6, 0x39
xor edx, dword [rsi + 0xa0]
xor ecx, dword [rsi + 0xa4]
xor r8d, dword [rsi + 0xa8]
xor r9d, dword [rsi + 0xac]
mov dword [rdi + 0xa0], edx
mov dword [rdi + 0xa4], ecx
mov dword [rdi + 0xa8], r8d
mov dword [rdi + 0xac], r9d
movq rdx, xmm15
movq rcx, xmm11
movq r8, xmm1
movq r9, xmm6
xor edx, dword [rsi + 0xe0]
xor ecx, dword [rsi + 0xe4]
xor r8d, dword [rsi + 0xe8]
xor r9d, dword [rsi + 0xec]
mov dword [rdi + 0xe0], edx
mov dword [rdi + 0xe4], ecx
mov dword [rdi + 0xe8], r8d
mov dword [rdi + 0xec], r9d
paddd xmm13, xmmword [r12 + 0xa0]
paddd xmm9, xmmword [r12 + 0xd0]
paddd xmm3, xmmword [r12 + 0x100]
paddd xmm2, xmmword [r12 + 0x60]
movq rdx, xmm13
movq rcx, xmm9
movq r8, xmm3
movq r9, xmm2
pshufd xmm13, xmm13, 0x39
pshufd xmm9, xmm9, 0x39
pshufd xmm3, xmm3, 0x39
pshufd xmm2, xmm2, 0x39
xor edx, dword [rsi + 0x30]
xor ecx, dword [rsi + 0x34]
xor r8d, dword [rsi + 0x38]
xor r9d, dword [rsi + 0x3c]
mov dword [rdi + 0x30], edx
mov dword [rdi + 0x34], ecx
mov dword [rdi + 0x38], r8d
mov dword [rdi + 0x3c], r9d
movq rdx, xmm13
movq rcx, xmm9
movq r8, xmm3
movq r9, xmm2
pshufd xmm13, xmm13, 0x39
pshufd xmm9, xmm9, 0x39
pshufd xmm3, xmm3, 0x39
pshufd xmm2, xmm2, 0x39
xor edx, dword [rsi + 0x70]
xor ecx, dword [rsi + 0x74]
xor r8d, dword [rsi + 0x78]
xor r9d, dword [rsi + 0x7c]
mov dword [rdi + 0x70], edx
mov dword [rdi + 0x74], ecx
mov dword [rdi + 0x78], r8d
mov dword [rdi + 0x7c], r9d
movq rdx, xmm13
movq rcx, xmm9
movq r8, xmm3
movq r9, xmm2
pshufd xmm13, xmm13, 0x39
pshufd xmm9, xmm9, 0x39
pshufd xmm3, xmm3, 0x39
pshufd xmm2, xmm2, 0x39
xor edx, dword [rsi + 0xb0]
xor ecx, dword [rsi + 0xb4]
xor r8d, dword [rsi + 0xb8]
xor r9d, dword [rsi + 0xbc]
mov dword [rdi + 0xb0], edx
mov dword [rdi + 0xb4], ecx
mov dword [rdi + 0xb8], r8d
mov dword [rdi + 0xbc], r9d
movq rdx, xmm13
movq rcx, xmm9
movq r8, xmm3
movq r9, xmm2
xor edx, dword [rsi + 0xf0]
xor ecx, dword [rsi + 0xf4]
xor r8d, dword [rsi + 0xf8]
xor r9d, dword [rsi + 0xfc]
mov dword [rdi + 0xf0], edx
mov dword [rdi + 0xf4], ecx
mov dword [rdi + 0xf8], r8d
mov dword [rdi + 0xfc], r9d
mov r9, qword [r12 + 0x160]
sub r9, 0x100
add rsi, 0x100
add rdi, 0x100
cmp r9, 0x100
jae 0x5156f5
cmp r9, 0
jbe 0x516658
cmp r9, 0x40
jae 0x5162aa
mov rdx, rdi
lea rdi, [r12 + 0x168]
mov rcx, r9
rep movsb byte [rdi], byte [rsi]
lea rdi, [r12 + 0x168]
lea rsi, [r12 + 0x168]
mov qword [r12 + 0x160], r9
movdqa xmm0, xmmword [r12 + 0x30]
movdqa xmm1, xmmword [r12]
movdqa xmm2, xmmword [r12 + 0x10]
movdqa xmm3, xmmword [r12 + 0x20]
movdqa xmm4, xmm1
mov rcx, 0x14
paddd xmm4, xmm0
movdqa xmm5, xmm0
movdqa xmm6, xmm4
pslld xmm4, 7
psrld xmm6, 0x19
pxor xmm3, xmm4
pxor xmm3, xmm6
paddd xmm5, xmm3
movdqa xmm4, xmm3
movdqa xmm6, xmm5
pslld xmm5, 9
psrld xmm6, 0x17
pxor xmm2, xmm5
pshufd xmm3, xmm3, 0x93
pxor xmm2, xmm6
paddd xmm4, xmm2
movdqa xmm5, xmm2
movdqa xmm6, xmm4
pslld xmm4, 0xd
psrld xmm6, 0x13
pxor xmm1, xmm4
pshufd xmm2, xmm2, 0x4e
pxor xmm1, xmm6
paddd xmm5, xmm1
movdqa xmm4, xmm3
movdqa xmm6, xmm5
pslld xmm5, 0x12
psrld xmm6, 0xe
pxor xmm0, xmm5
pshufd xmm1, xmm1, 0x39
pxor xmm0, xmm6
paddd xmm4, xmm0
movdqa xmm5, xmm0
movdqa xmm6, xmm4
pslld xmm4, 7
psrld xmm6, 0x19
pxor xmm1, xmm4
pxor xmm1, xmm6
paddd xmm5, xmm1
movdqa xmm4, xmm1
movdqa xmm6, xmm5
pslld xmm5, 9
psrld xmm6, 0x17
pxor xmm2, xmm5
pshufd xmm1, xmm1, 0x93
pxor xmm2, xmm6
paddd xmm4, xmm2
movdqa xmm5, xmm2
movdqa xmm6, xmm4
pslld xmm4, 0xd
psrld xmm6, 0x13
pxor xmm3, xmm4
pshufd xmm2, xmm2, 0x4e
pxor xmm3, xmm6
paddd xmm5, xmm3
movdqa xmm4, xmm1
movdqa xmm6, xmm5
pslld xmm5, 0x12
psrld xmm6, 0xe
pxor xmm0, xmm5
pshufd xmm3, xmm3, 0x39
pxor xmm0, xmm6
paddd xmm4, xmm0
movdqa xmm5, xmm0
movdqa xmm6, xmm4
pslld xmm4, 7
psrld xmm6, 0x19
pxor xmm3, xmm4
pxor xmm3, xmm6
paddd xmm5, xmm3
movdqa xmm4, xmm3
movdqa xmm6, xmm5
pslld xmm5, 9
psrld xmm6, 0x17
pxor xmm2, xmm5
pshufd xmm3, xmm3, 0x93
pxor xmm2, xmm6
paddd xmm4, xmm2
movdqa xmm5, xmm2
movdqa xmm6, xmm4
pslld xmm4, 0xd
psrld xmm6, 0x13
pxor xmm1, xmm4
pshufd xmm2, xmm2, 0x4e
pxor xmm1, xmm6
paddd xmm5, xmm1
movdqa xmm4, xmm3
movdqa xmm6, xmm5
pslld xmm5, 0x12
psrld xmm6, 0xe
pxor xmm0, xmm5
pshufd xmm1, xmm1, 0x39
pxor xmm0, xmm6
paddd xmm4, xmm0
movdqa xmm5, xmm0
movdqa xmm6, xmm4
pslld xmm4, 7
psrld xmm6, 0x19
pxor xmm1, xmm4
pxor xmm1, xmm6
paddd xmm5, xmm1
movdqa xmm4, xmm1
movdqa xmm6, xmm5
pslld xmm5, 9
psrld xmm6, 0x17
pxor xmm2, xmm5
pshufd xmm1, xmm1, 0x93
pxor xmm2, xmm6
paddd xmm4, xmm2
movdqa xmm5, xmm2
movdqa xmm6, xmm4
pslld xmm4, 0xd
psrld xmm6, 0x13
pxor xmm3, xmm4
pshufd xmm2, xmm2, 0x4e
pxor xmm3, xmm6
sub rcx, 4
paddd xmm5, xmm3
movdqa xmm4, xmm1
movdqa xmm6, xmm5
pslld xmm5, 0x12
pxor xmm7, xmm7
psrld xmm6, 0xe
pxor xmm0, xmm5
pshufd xmm3, xmm3, 0x39
pxor xmm0, xmm6
ja 0x5162d8
paddd xmm0, xmmword [r12 + 0x30]
paddd xmm1, xmmword [r12]
paddd xmm2, xmmword [r12 + 0x10]
paddd xmm3, xmmword [r12 + 0x20]
movq rcx, xmm0
movq r8, xmm1
movq r9, xmm2
movq rax, xmm3
pshufd xmm0, xmm0, 0x39
pshufd xmm1, xmm1, 0x39
pshufd xmm2, xmm2, 0x39
pshufd xmm3, xmm3, 0x39
xor ecx, dword [rsi]
xor r8d, dword [rsi + 0x30]
xor r9d, dword [rsi + 0x20]
xor eax, dword [rsi + 0x10]
mov dword [rdi], ecx
mov dword [rdi + 0x30], r8d
mov dword [rdi + 0x20], r9d
mov dword [rdi + 0x10], eax
movq rcx, xmm0
movq r8, xmm1
movq r9, xmm2
movq rax, xmm3
pshufd xmm0, xmm0, 0x39
pshufd xmm1, xmm1, 0x39
pshufd xmm2, xmm2, 0x39
pshufd xmm3, xmm3, 0x39
xor ecx, dword [rsi + 0x14]
xor r8d, dword [rsi + 4]
xor r9d, dword [rsi + 0x34]
xor eax, dword [rsi + 0x24]
mov dword [rdi + 0x14], ecx
mov dword [rdi + 4], r8d
mov dword [rdi + 0x34], r9d
mov dword [rdi + 0x24], eax
movq rcx, xmm0
movq r8, xmm1
movq r9, xmm2
movq rax, xmm3
pshufd xmm0, xmm0, 0x39
pshufd xmm1, xmm1, 0x39
pshufd xmm2, xmm2, 0x39
pshufd xmm3, xmm3, 0x39
xor ecx, dword [rsi + 0x28]
xor r8d, dword [rsi + 0x18]
xor r9d, dword [rsi + 8]
xor eax, dword [rsi + 0x38]
mov dword [rdi + 0x28], ecx
mov dword [rdi + 0x18], r8d
mov dword [rdi + 8], r9d
mov dword [rdi + 0x38], eax
movq rcx, xmm0
movq r8, xmm1
movq r9, xmm2
movq rax, xmm3
xor ecx, dword [rsi + 0x3c]
xor r8d, dword [rsi + 0x2c]
xor r9d, dword [rsi + 0x1c]
xor eax, dword [rsi + 0xc]
mov dword [rdi + 0x3c], ecx
mov dword [rdi + 0x2c], r8d
mov dword [rdi + 0x1c], r9d
mov dword [rdi + 0xc], eax
mov r9, qword [r12 + 0x160]
mov ecx, dword [r12 + 0x10]
mov r8d, dword [r12 + 0x24]
add rcx, 1
shl r8, 0x20
add rcx, r8
mov r8, rcx
shr r8, 0x20
mov dword [r12 + 0x10], ecx
mov dword [r12 + 0x24], r8d
cmp r9, 0x40
ja 0x516661
jae 0x516658
mov rsi, rdi
mov rdi, rdx
mov rcx, r9
rep movsb byte [rdi], byte [rsi]
add rsp, 0x1c8
pop rbp
ret
sub r9, 0x40
add rdi, 0x40
add rsi, 0x40
jmp 0x516284
call sym.runtime.morestack_noctxt.abi0
jmp sym.golang.org_x_crypto_salsa20_salsa.salsa2020XORKeyStream.abi0