Function at 0x4e5920
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push rdi
push rsi
push rbx
movsxd r9, dword [rcx]
mov r11, qword [rcx + 8]
mov rax, r9
test r11, r11
je 0x4e5961
test r9, r9
je 0x4e5961
mov ecx, dword [rcx + 4]
movzx r8d, byte [r11]
and ecx, 0x100
jne 0x4e59d0
cmp r8, 0x7f
jbe 0x4e59d0
lea rdi, [r9 + 1]
xor ebx, ebx
mov eax, edi
mov rsi, rdi
jmp 0x4e5972
xor esi, esi
mov eax, 1
xor ebx, ebx
mov edi, 1
xor r9d, r9d
test rdx, rdx
je 0x4e59c3
mov r10, qword [rdx]
test r10, r10
je 0x4e59c3
mov ecx, ebx
sub rsi, r9
mov byte [r10], bl
lea r8, [r9 - 1]
and ecx, 1
add r10, rsi
movzx ecx, cl
test r9, r9
je 0x4e59c0
nop dword [rax]
movzx r9d, byte [r11 + r8]
xor r9d, ebx
movzx r9d, r9b
add ecx, r9d
mov byte [r10 + r8], cl
sub r8, 1
shr ecx, 8
cmp r8, 0xffffffffffffffff
jne 0x4e59a0
add qword [rdx], rdi
pop rbx
pop rsi
pop rdi
ret
test ecx, ecx
je 0x4e59f0
cmp r8, 0x80
jbe 0x4e5a00
lea rdi, [r9 + 1]
mov ebx, 0xffffffff
mov eax, edi
jmp 0x4e595c
mov rdi, r9
xor ebx, ebx
jmp 0x4e595c
mov rdi, r9
mov ebx, 0xffffffff
jne 0x4e595c
cmp r9, 1
jbe 0x4e5bf7
lea rax, [r9 - 2]
lea r8, [r9 - 1]
cmp rax, 0xe
jbe 0x4e5c03
mov rcx, r8
pxor xmm3, xmm3
pxor xmm4, xmm4
mov rax, r11
and rcx, 0xfffffffffffffff0
pxor xmm2, xmm2
add rcx, r11
movdqu xmm0, xmmword [rax + 1]
add rax, 0x10
movdqa xmm1, xmm0
punpckhbw xmm0, xmm4
movdqa xmm5, xmm0
punpcklbw xmm1, xmm4
punpcklwd xmm0, xmm2
punpckhwd xmm5, xmm2
por xmm0, xmm5
movdqa xmm5, xmm1
punpcklwd xmm1, xmm2
punpckhwd xmm5, xmm2
por xmm1, xmm5
por xmm0, xmm1
por xmm3, xmm0
cmp rax, rcx
jne 0x4e5a43
movdqa xmm0, xmm3
mov r10, r8
psrldq xmm0, 8
and r10, 0xfffffffffffffff0
por xmm3, xmm0
lea rcx, [r10 + 1]
movdqa xmm0, xmm3
psrldq xmm0, 4
por xmm3, xmm0
movd eax, xmm3
cmp r8, r10
je 0x4e5be0
movzx r8d, byte [r11 + rcx]
or eax, r8d
lea r8, [rcx + 1]
cmp r9, r8
jbe 0x4e5be0
movzx r8d, byte [r11 + rcx + 1]
or eax, r8d
lea r8, [rcx + 2]
cmp r9, r8
jbe 0x4e5be0
movzx r8d, byte [r11 + rcx + 2]
or eax, r8d
lea r8, [rcx + 3]
cmp r9, r8
jbe 0x4e5be0
movzx r8d, byte [r11 + rcx + 3]
or eax, r8d
lea r8, [rcx + 4]
cmp r9, r8
jbe 0x4e5be0
movzx r8d, byte [r11 + rcx + 4]
or eax, r8d
lea r8, [rcx + 5]
cmp r9, r8
jbe 0x4e5be0
movzx r8d, byte [r11 + rcx + 5]
or eax, r8d
lea r8, [rcx + 6]
cmp r9, r8
jbe 0x4e5be0
movzx r8d, byte [r11 + rcx + 6]
or eax, r8d
lea r8, [rcx + 7]
cmp r9, r8
jbe 0x4e5be0
movzx r8d, byte [r11 + rcx + 7]
or eax, r8d
lea r8, [rcx + 8]
cmp r9, r8
jbe 0x4e5be0
movzx r8d, byte [r11 + rcx + 8]
or eax, r8d
lea r8, [rcx + 9]
cmp r9, r8
jbe 0x4e5be0
movzx r8d, byte [r11 + rcx + 9]
or eax, r8d
lea r8, [rcx + 0xa]
cmp r9, r8
jbe 0x4e5be0
movzx r8d, byte [r11 + rcx + 0xa]
or eax, r8d
lea r8, [rcx + 0xb]
cmp r9, r8
jbe 0x4e5be0
movzx r8d, byte [r11 + rcx + 0xb]
or eax, r8d
lea r8, [rcx + 0xc]
cmp r9, r8
jbe 0x4e5be0
movzx r8d, byte [r11 + rcx + 0xc]
or eax, r8d
lea r8, [rcx + 0xd]
cmp r9, r8
jbe 0x4e5be0
movzx r8d, byte [r11 + rcx + 0xd]
or eax, r8d
lea r8, [rcx + 0xe]
cmp r9, r8
jbe 0x4e5be0
movzx ecx, byte [r11 + rcx + 0xe]
or eax, ecx
nop word cs:[rax + rax]
test eax, eax
setne dil
mov ebx, edi
and edi, 1
add rdi, r9
neg ebx
mov eax, edi
jmp 0x4e595c
mov edi, 1
xor ebx, ebx
jmp 0x4e595c
xor eax, eax
mov ecx, 1
jmp 0x4e5ab7