Function at 0x4e5560
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 0x4e55a1
test r9, r9
je 0x4e55a1
mov ecx, dword [rcx + 4]
movzx r8d, byte [r11]
and ecx, 0x100
jne 0x4e5610
cmp r8, 0x7f
jbe 0x4e5610
lea rdi, [r9 + 1]
xor ebx, ebx
mov eax, edi
mov rsi, rdi
jmp 0x4e55b2
xor esi, esi
mov eax, 1
xor ebx, ebx
mov edi, 1
xor r9d, r9d
test rdx, rdx
je 0x4e5603
mov r10, qword [rdx]
test r10, r10
je 0x4e5603
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 0x4e5600
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 0x4e55e0
add qword [rdx], rdi
pop rbx
pop rsi
pop rdi
ret
test ecx, ecx
je 0x4e5630
cmp r8, 0x80
jbe 0x4e5640
lea rdi, [r9 + 1]
mov ebx, 0xffffffff
mov eax, edi
jmp 0x4e559c
mov rdi, r9
xor ebx, ebx
jmp 0x4e559c
mov rdi, r9
mov ebx, 0xffffffff
jne 0x4e559c
cmp r9, 1
jbe 0x4e5837
lea rax, [r9 - 2]
lea r8, [r9 - 1]
cmp rax, 0xe
jbe 0x4e5843
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 0x4e5683
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 0x4e5820
movzx r8d, byte [r11 + rcx]
or eax, r8d
lea r8, [rcx + 1]
cmp r9, r8
jbe 0x4e5820
movzx r8d, byte [r11 + rcx + 1]
or eax, r8d
lea r8, [rcx + 2]
cmp r9, r8
jbe 0x4e5820
movzx r8d, byte [r11 + rcx + 2]
or eax, r8d
lea r8, [rcx + 3]
cmp r9, r8
jbe 0x4e5820
movzx r8d, byte [r11 + rcx + 3]
or eax, r8d
lea r8, [rcx + 4]
cmp r9, r8
jbe 0x4e5820
movzx r8d, byte [r11 + rcx + 4]
or eax, r8d
lea r8, [rcx + 5]
cmp r9, r8
jbe 0x4e5820
movzx r8d, byte [r11 + rcx + 5]
or eax, r8d
lea r8, [rcx + 6]
cmp r9, r8
jbe 0x4e5820
movzx r8d, byte [r11 + rcx + 6]
or eax, r8d
lea r8, [rcx + 7]
cmp r9, r8
jbe 0x4e5820
movzx r8d, byte [r11 + rcx + 7]
or eax, r8d
lea r8, [rcx + 8]
cmp r9, r8
jbe 0x4e5820
movzx r8d, byte [r11 + rcx + 8]
or eax, r8d
lea r8, [rcx + 9]
cmp r9, r8
jbe 0x4e5820
movzx r8d, byte [r11 + rcx + 9]
or eax, r8d
lea r8, [rcx + 0xa]
cmp r9, r8
jbe 0x4e5820
movzx r8d, byte [r11 + rcx + 0xa]
or eax, r8d
lea r8, [rcx + 0xb]
cmp r9, r8
jbe 0x4e5820
movzx r8d, byte [r11 + rcx + 0xb]
or eax, r8d
lea r8, [rcx + 0xc]
cmp r9, r8
jbe 0x4e5820
movzx r8d, byte [r11 + rcx + 0xc]
or eax, r8d
lea r8, [rcx + 0xd]
cmp r9, r8
jbe 0x4e5820
movzx r8d, byte [r11 + rcx + 0xd]
or eax, r8d
lea r8, [rcx + 0xe]
cmp r9, r8
jbe 0x4e5820
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 0x4e559c
mov edi, 1
xor ebx, ebx
jmp 0x4e559c
xor eax, eax
mov ecx, 1
jmp 0x4e56f7