Function at 0x837200
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 0x837241
test r9, r9
je 0x837241
mov ecx, dword [rcx + 4]
movzx r8d, byte [r11]
and ecx, 0x100
jne 0x8372b0
cmp r8, 0x7f
jbe 0x8372b0
lea rdi, [r9 + 1]
xor ebx, ebx
mov eax, edi
mov rsi, rdi
jmp 0x837252
xor esi, esi
mov eax, 1
xor ebx, ebx
mov edi, 1
xor r9d, r9d
test rdx, rdx
je 0x8372a3
mov r10, qword [rdx]
test r10, r10
je 0x8372a3
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 0x8372a0
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 0x837280
add qword [rdx], rdi
pop rbx
pop rsi
pop rdi
ret
test ecx, ecx
je 0x8372d0
cmp r8, 0x80
jbe 0x8372e0
lea rdi, [r9 + 1]
mov ebx, 0xffffffff
mov eax, edi
jmp 0x83723c
mov rdi, r9
xor ebx, ebx
jmp 0x83723c
mov rdi, r9
mov ebx, 0xffffffff
jne 0x83723c
cmp r9, 1
jbe 0x8374d7
lea rax, [r9 - 2]
lea r8, [r9 - 1]
cmp rax, 0xe
jbe 0x8374e3
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 0x837323
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 0x8374c0
movzx r8d, byte [r11 + rcx]
or eax, r8d
lea r8, [rcx + 1]
cmp r9, r8
jbe 0x8374c0
movzx r8d, byte [r11 + rcx + 1]
or eax, r8d
lea r8, [rcx + 2]
cmp r9, r8
jbe 0x8374c0
movzx r8d, byte [r11 + rcx + 2]
or eax, r8d
lea r8, [rcx + 3]
cmp r9, r8
jbe 0x8374c0
movzx r8d, byte [r11 + rcx + 3]
or eax, r8d
lea r8, [rcx + 4]
cmp r9, r8
jbe 0x8374c0
movzx r8d, byte [r11 + rcx + 4]
or eax, r8d
lea r8, [rcx + 5]
cmp r9, r8
jbe 0x8374c0
movzx r8d, byte [r11 + rcx + 5]
or eax, r8d
lea r8, [rcx + 6]
cmp r9, r8
jbe 0x8374c0
movzx r8d, byte [r11 + rcx + 6]
or eax, r8d
lea r8, [rcx + 7]
cmp r9, r8
jbe 0x8374c0
movzx r8d, byte [r11 + rcx + 7]
or eax, r8d
lea r8, [rcx + 8]
cmp r9, r8
jbe 0x8374c0
movzx r8d, byte [r11 + rcx + 8]
or eax, r8d
lea r8, [rcx + 9]
cmp r9, r8
jbe 0x8374c0
movzx r8d, byte [r11 + rcx + 9]
or eax, r8d
lea r8, [rcx + 0xa]
cmp r9, r8
jbe 0x8374c0
movzx r8d, byte [r11 + rcx + 0xa]
or eax, r8d
lea r8, [rcx + 0xb]
cmp r9, r8
jbe 0x8374c0
movzx r8d, byte [r11 + rcx + 0xb]
or eax, r8d
lea r8, [rcx + 0xc]
cmp r9, r8
jbe 0x8374c0
movzx r8d, byte [r11 + rcx + 0xc]
or eax, r8d
lea r8, [rcx + 0xd]
cmp r9, r8
jbe 0x8374c0
movzx r8d, byte [r11 + rcx + 0xd]
or eax, r8d
lea r8, [rcx + 0xe]
cmp r9, r8
jbe 0x8374c0
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 0x83723c
mov edi, 1
xor ebx, ebx
jmp 0x83723c
xor eax, eax
mov ecx, 1
jmp 0x837397