Function at 0x50ecd0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xe8
movdqa xmmword [rsp + 0xd0], xmm15
movdqa xmmword [rsp + 0xc0], xmm14
movdqa xmmword [rsp + 0xb0], xmm13
movdqa xmmword [rsp + 0xa0], xmm12
movdqa xmmword [rsp + 0x90], xmm11
movdqa xmmword [rsp + 0x80], xmm10
movdqa xmmword [rsp + 0x70], xmm9
movdqa xmmword [rsp + 0x60], xmm8
movdqa xmmword [rsp + 0x50], xmm7
movdqa xmmword [rsp + 0x40], xmm6
mov r15, rcx
mov rax, qword [rcx]
mov rax, qword [rax + 0x30]
mov rcx, rax
xor rcx, 0xffffffffffffbfff
xor edi, edi
test rcx, rax
je 0x50ed5d
mov r13, rdx
cmp byte [rdx + 0x3f], 0
je 0x50edbf
mov eax, edi
movaps xmm6, xmmword [rsp + 0x40]
movaps xmm7, xmmword [rsp + 0x50]
movaps xmm8, xmmword [rsp + 0x60]
movaps xmm9, xmmword [rsp + 0x70]
movaps xmm10, xmmword [rsp + 0x80]
movaps xmm11, xmmword [rsp + 0x90]
movaps xmm12, xmmword [rsp + 0xa0]
movaps xmm13, xmmword [rsp + 0xb0]
movaps xmm14, xmmword [rsp + 0xc0]
movaps xmm15, xmmword [rsp + 0xd0]
add rsp, 0xe8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rax, qword [r13 + 0x48]
test rax, rax
je 0x50ef46
movabs r12, 0x40019f0cc7f0a5ab
xor edi, edi
movabs rcx, 0x1c2adcdf6993d152
mov r9d, ecx
not r9d
or r9d, ecx
mov r14d, 0xffffffff
movabs r11, 0xffffffffffffffe
and r11, r12
jmp 0x50ee0d
mov rax, qword [rax + 8]
test rax, rax
je 0x50ef48
mov ecx, dword [rax + 0x28]
test ecx, ecx
jle 0x50ee00
mov r10d, ecx
and r10d, r9d
and r10d, 1
cmp ecx, 1
jne 0x50ee30
xor ebp, ebp
jmp 0x50eef4
movabs rbp, 0x632ef59bd1619ce7
mov edx, ebp
not edx
or edx, ebp
and edx, ecx
and edx, 0xfffffffe
xor ebp, ebp
nop word [rax + rax]
mov rcx, rbp
shl rcx, 4
mov ecx, dword [rax + rcx + 0x40]
mov esi, 1
shl esi, cl
cmp ecx, 0x1f
cmovg esi, r14d
mov ecx, esi
and ecx, edi
xor esi, edi
or esi, ecx
mov rdi, rbp
not rdi
mov rcx, r12
not rcx
and rdi, r12
mov rbx, rbp
and rbx, rcx
or rbx, rdi
mov edi, ecx
and edi, 1
or rdi, r11
xor rdi, rbx
or ecx, r12d
and ecx, ebp
and ecx, 1
or rcx, rdi
shl rcx, 4
mov ecx, dword [rax + rcx + 0x40]
mov ebx, 1
shl ebx, cl
cmp ecx, 0x1f
cmovg ebx, r14d
mov edi, ebx
not edi
mov ecx, esi
not ecx
mov r8d, edi
and r8d, 0x3d0930ba
and ebx, 0xc2f6cf45
or ebx, r8d
or edi, ecx
and ecx, 0x3d0930ba
and esi, 0xc2f6cf45
or esi, ecx
xor esi, ebx
not edi
or edi, esi
add rbp, 2
add rdx, 0xfffffffffffffffe
jne 0x50ee50
test r10, r10
je 0x50ee00
shl rbp, 4
mov ecx, dword [rax + rbp + 0x40]
mov edx, 1
shl edx, cl
cmp ecx, 0x1f
cmovg edx, r14d
mov ecx, edx
not ecx
mov ebp, edi
not ebp
mov ebx, ecx
and ebx, 0x5c2043ea
and edx, 0xa3dfbc15
or edx, ebx
or ecx, ebp
and ebp, 0x5c2043ea
and edi, 0xa3dfbc15
or edi, ebp
xor edi, edx
not ecx
or edi, ecx
jmp 0x50ee00
xor edi, edi
mov rcx, qword [r13]
mov r9, qword [r13 + 0x60]
mov r8, qword [r9 + 0x60]
test r8, r8
je 0x50ef8d
mov bl, byte [rcx]
test bl, bl
je 0x50efa6
lea rdx, [rcx + 1]
xor eax, eax
lea rsi, [0x005fade0]
movzx ebp, bl
movzx ebp, byte [rbp + rsi]
add ebp, eax
imul eax, ebp, 0x9e3779b1
movzx ebx, byte [rdx]
add rdx, 1
test bl, bl
jne 0x50ef70
jmp 0x50efa8
lea rdx, [r9 + 0x54]
add r9, 0x58
mov r10d, dword [rdx]
lea r8, [0x0213b3c8]
test r10d, r10d
jne 0x50efcc
jmp 0x50f01e
xor eax, eax
xor edx, edx
div dword [r9 + 0x50]
shl rdx, 4
lea r9, [r8 + rdx]
add r9, 8
add rdx, r8
mov r10d, dword [rdx]
lea r8, [0x0213b3c8]
test r10d, r10d
je 0x50f01e
lea r11, [0x005fade0]
mov r9, qword [r9]
add r10d, 0xffffffff
mov rsi, qword [r9 + 0x18]
xor eax, eax
jmp 0x50f000
movzx ebx, byte [rbp + r11]
cmp bl, byte [rdx + r11]
jne 0x50f014
add rax, 1
movzx ebp, byte [rsi + rax]
movzx edx, byte [rcx + rax]
cmp bpl, dl
jne 0x50eff0
test bpl, bpl
jne 0x50effc
jmp 0x50f01b
test r10d, r10d
jne 0x50efd3
jmp 0x50f01e
mov r8, r9
mov r14, qword [r8 + 0x10]
test r14, r14
je 0x50ed5d
movabs rax, 0x3ffffffffffffffe
lea rbx, [rsp + 0x30]
mov r12d, 0xffffffff
pcmpeqd xmm6, xmm6
movdqa xmm9, xmmword [0x005fa7b0]
movdqa xmm10, xmmword [0x005fa7c0]
movdqa xmm8, xmmword [0x005fa7d0]
not rax
mov qword [rsp + 0x38], rax
movdqa xmm12, xmmword [0x005fa7e0]
movdqa xmm13, xmmword [0x005fa7f0]
movdqa xmm14, xmmword [0x005fa800]
movdqa xmm15, xmmword [0x005fa810]
jmp 0x50f09d
mov r14, qword [r14 + 0x18]
test r14, r14
je 0x50ed5d
mov qword [rsp + 0x30], 0
mov qword [rsp + 0x20], 0
mov rcx, r15
mov rdx, r13
mov r8, r14
mov r9, rbx
call fcn.005134a0
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x50f090
movzx eax, word [rcx + 0x5e]
test eax, eax
je 0x50f090
mov rdx, qword [rcx + 8]
cmp eax, 1
mov ecx, 1
cmovbe eax, ecx
cmp eax, 8
jae 0x50f0ed
xor ebp, ebp
jmp 0x50f538
movabs rcx, 0x800c716e9b9a108b
mov ebp, ecx
not ebp
or ebp, ecx
and ebp, eax
and ebp, 0xfffffff8
movd xmm0, edi
lea rsi, [rbp - 8]
mov rdi, rsi
shr rdi, 3
add rdi, 1
movabs rcx, 0xd7f5be92996c6257
mov r8d, ecx
not r8d
or r8d, ecx
and r8d, edi
and r8d, 1
test rsi, rsi
je 0x50f56b
not rdi
or rdi, qword [rsp + 0x38]
movabs rcx, 0x90b9488cece2447f
mov rsi, rcx
not rsi
or rsi, rcx
not rdi
and rdi, rsi
pxor xmm1, xmm1
xor ebx, ebx
nop
movq xmm3, qword [rdx + rbx*2]
movq xmm4, qword [rdx + rbx*2 + 8]
movdqa xmm2, xmm3
pcmpgtw xmm2, xmm9
punpcklwd xmm5, xmm2
psrad xmm5, 0x10
movdqa xmm2, xmm4
pcmpgtw xmm2, xmm9
punpcklwd xmm2, xmm2
psrad xmm2, 0x10
punpcklwd xmm3, xmm3
punpcklwd xmm4, xmm4
pslld xmm3, 0x17
paddd xmm3, xmm10
cvttps2dq xmm11, xmm3
movdqa xmm3, xmm8
pmuludq xmm3, xmm11
pshufd xmm3, xmm3, 0xe8
pshufd xmm7, xmm11, 0xf5
pmuludq xmm7, xmm8
pshufd xmm7, xmm7, 0xe8
punpckldq xmm3, xmm7
por xmm3, xmm5
pslld xmm4, 0x17
paddd xmm4, xmm10
cvttps2dq xmm5, xmm4
movdqa xmm4, xmm8
pmuludq xmm4, xmm5
pshufd xmm4, xmm4, 0xe8
pshufd xmm5, xmm5, 0xf5
pmuludq xmm5, xmm8
pshufd xmm5, xmm5, 0xe8
punpckldq xmm4, xmm5
por xmm4, xmm2
movdqa xmm5, xmm3
pxor xmm5, xmm6
movdqa xmm2, xmm0
pxor xmm2, xmm6
por xmm2, xmm5
movdqa xmm5, xmm12
pandn xmm5, xmm3
pandn xmm3, xmm12
por xmm3, xmm5
movdqa xmm5, xmm12
pandn xmm5, xmm0
pandn xmm0, xmm12
por xmm0, xmm5
pxor xmm0, xmm3
pxor xmm2, xmm6
por xmm2, xmm0
movdqa xmm0, xmm4
pxor xmm0, xmm6
movdqa xmm3, xmm1
pxor xmm3, xmm6
por xmm3, xmm0
movdqa xmm0, xmm13
pandn xmm0, xmm4
pandn xmm4, xmm13
por xmm4, xmm0
movdqa xmm0, xmm13
pandn xmm0, xmm1
pandn xmm1, xmm13
por xmm1, xmm0
pxor xmm1, xmm4
pxor xmm3, xmm6
por xmm3, xmm1
mov esi, ebx
and esi, 8
mov rcx, rbx
xor rcx, 8
or rcx, rsi
movq xmm1, qword [rdx + rcx*2]
movq xmm4, qword [rdx + rcx*2 + 8]
movdqa xmm0, xmm1
pcmpgtw xmm0, xmm9
punpcklwd xmm5, xmm0
psrad xmm5, 0x10
movdqa xmm0, xmm4
pcmpgtw xmm0, xmm9
punpcklwd xmm0, xmm0
psrad xmm0, 0x10
punpcklwd xmm1, xmm1
punpcklwd xmm4, xmm4
pslld xmm1, 0x17
paddd xmm1, xmm10
cvttps2dq xmm7, xmm1
movdqa xmm1, xmm8
pmuludq xmm1, xmm7
pshufd xmm1, xmm1, 0xe8
pshufd xmm7, xmm7, 0xf5
pmuludq xmm7, xmm8
pshufd xmm7, xmm7, 0xe8
punpckldq xmm1, xmm7
por xmm1, xmm5
pslld xmm4, 0x17
paddd xmm4, xmm10
cvttps2dq xmm5, xmm4
movdqa xmm4, xmm8
pmuludq xmm4, xmm5
pshufd xmm4, xmm4, 0xe8
pshufd xmm5, xmm5, 0xf5
pmuludq xmm5, xmm8
pshufd xmm5, xmm5, 0xe8
punpckldq xmm4, xmm5
por xmm4, xmm0
movdqa xmm5, xmm1
pxor xmm5, xmm6
movdqa xmm0, xmm2
pxor xmm0, xmm6
por xmm0, xmm5
movdqa xmm5, xmm14
pandn xmm5, xmm1
pandn xmm1, xmm14
por xmm1, xmm5
movdqa xmm5, xmm14
pandn xmm5, xmm2
pandn xmm2, xmm14
por xmm2, xmm5
pxor xmm2, xmm1
pxor xmm0, xmm6
por xmm0, xmm2
movdqa xmm2, xmm4
pxor xmm2, xmm6
movdqa xmm1, xmm3
pxor xmm1, xmm6
por xmm1, xmm2
movdqa xmm2, xmm15
pandn xmm2, xmm4
pandn xmm4, xmm15
por xmm4, xmm2
movdqa xmm2, xmm15
pandn xmm2, xmm3
pandn xmm3, xmm15
por xmm3, xmm2
pxor xmm3, xmm4
pxor xmm1, xmm6
por xmm1, xmm3
add rbx, 0x10
add rdi, 0xfffffffffffffffe
jne 0x50f160
test r8, r8
je 0x50f4cc
movq xmm2, qword [rdx + rbx*2]
movq xmm3, qword [rdx + rbx*2 + 8]
movdqa xmm4, xmm3
pcmpgtw xmm4, xmm9
punpcklwd xmm4, xmm4
psrad xmm4, 0x10
punpcklwd xmm3, xmm3
pslld xmm3, 0x17
paddd xmm3, xmm10
cvttps2dq xmm3, xmm3
movdqa xmm5, xmm8
pmuludq xmm5, xmm3
pshufd xmm5, xmm5, 0xe8
pshufd xmm3, xmm3, 0xf5
pmuludq xmm3, xmm8
pshufd xmm3, xmm3, 0xe8
punpckldq xmm5, xmm3
por xmm5, xmm4
movdqa xmm3, xmm5
pxor xmm3, xmm6
movdqa xmm4, xmm1
pxor xmm4, xmm6
por xmm4, xmm3
movdqa xmm7, xmmword [0x005fa820]
movdqa xmm3, xmm7
pandn xmm3, xmm5
pandn xmm5, xmm7
por xmm5, xmm3
movdqa xmm3, xmm7
pandn xmm3, xmm1
pandn xmm1, xmm7
por xmm1, xmm3
pxor xmm1, xmm5
pxor xmm4, xmm6
por xmm1, xmm4
movdqa xmm3, xmm2
pcmpgtw xmm3, xmm9
punpcklwd xmm3, xmm3
psrad xmm3, 0x10
punpcklwd xmm2, xmm2
pslld xmm2, 0x17
paddd xmm2, xmm10
cvttps2dq xmm2, xmm2
movdqa xmm4, xmm8
pmuludq xmm4, xmm2
pshufd xmm4, xmm4, 0xe8
pshufd xmm2, xmm2, 0xf5
pmuludq xmm2, xmm8
pshufd xmm2, xmm2, 0xe8
punpckldq xmm4, xmm2
por xmm4, xmm3
movdqa xmm2, xmm4
pand xmm2, xmm0
pxor xmm4, xmm0
por xmm4, xmm2
movdqa xmm0, xmm4
movdqa xmm2, xmm1
pxor xmm2, xmm6
movdqa xmm3, xmm0
pxor xmm3, xmm6
por xmm3, xmm2
movdqa xmm4, xmmword [0x005fa830]
movdqa xmm2, xmm4
pandn xmm2, xmm1
pandn xmm1, xmm4
por xmm1, xmm2
movdqa xmm2, xmm4
pandn xmm2, xmm0
pandn xmm0, xmm4
por xmm0, xmm2
pxor xmm0, xmm1
pxor xmm3, xmm6
por xmm3, xmm0
pshufd xmm0, xmm3, 0x4e
por xmm0, xmm3
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd edi, xmm1
cmp rbp, rax
lea rbx, [rsp + 0x30]
je 0x50f090
mov esi, edi
nop word [rax + rax]
movzx ecx, word [rdx + rbp*2]
mov edi, 1
shl edi, cl
cmp cx, 0x1f
cmovg edi, r12d
mov ecx, edi
and ecx, esi
xor edi, esi
or edi, ecx
add rbp, 1
mov esi, edi
cmp rax, rbp
jne 0x50f540
jmp 0x50f090
pxor xmm1, xmm1
xor ebx, ebx
test r8, r8
jne 0x50f3d3
jmp 0x50f4cc