Function at 0x836ea0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push rsi
push rbx
sub rsp, 0x38
test r9, r9
je 0x837104
movzx r11d, byte [r8]
mov r10d, r11d
and r10d, 0xffffff80
test rdx, rdx
je 0x836ec5
movzx eax, r10b
mov dword [rdx], eax
cmp r9, 1
je 0x837131
movzx edx, byte [r8]
test dl, dl
jne 0x836f40
movzx eax, byte [r8 + 1]
and eax, 0xffffff80
cmp r10b, al
je 0x837160
lea rax, [r9 - 1]
test rcx, rcx
je 0x836f30
movsx edx, r11b
sub r9, rax
sar r11b, 7
lea r10, [rax - 1]
shr edx, 0x1f
add r8, r9
nop word cs:[rax + rax]
movzx r9d, byte [r8 + r10]
xor r9d, r11d
movzx r9d, r9b
add edx, r9d
mov byte [rcx + r10], dl
sub r10, 1
shr edx, 8
cmp r10, 0xffffffffffffffff
jne 0x836f10
add rsp, 0x38
pop rbx
pop rsi
ret
mov rax, r9
cmp dl, 0xff
jne 0x836eec
lea rax, [r9 - 2]
lea rbx, [r9 - 1]
cmp rax, 0xe
jbe 0x83718b
mov rdx, rbx
pxor xmm3, xmm3
pxor xmm4, xmm4
mov rax, r8
and rdx, 0xfffffffffffffff0
pxor xmm2, xmm2
add rdx, r8
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, rdx
jne 0x836f73
movdqa xmm0, xmm3
mov rsi, rbx
psrldq xmm0, 8
and rsi, 0xfffffffffffffff0
por xmm3, xmm0
lea rdx, [rsi + 1]
movdqa xmm0, xmm3
psrldq xmm0, 4
por xmm3, xmm0
movd eax, xmm3
cmp rbx, rsi
je 0x8370f4
movzx ebx, byte [r8 + rdx]
or eax, ebx
lea rbx, [rdx + 1]
cmp r9, rbx
jbe 0x8370f4
movzx ebx, byte [r8 + rdx + 1]
or eax, ebx
lea rbx, [rdx + 2]
cmp r9, rbx
jbe 0x8370f4
movzx ebx, byte [r8 + rdx + 2]
or eax, ebx
lea rbx, [rdx + 3]
cmp rbx, r9
jae 0x8370f4
movzx ebx, byte [r8 + rdx + 3]
or eax, ebx
lea rbx, [rdx + 4]
cmp r9, rbx
jbe 0x8370f4
movzx ebx, byte [r8 + rdx + 4]
or eax, ebx
lea rbx, [rdx + 5]
cmp r9, rbx
jbe 0x8370f4
movzx ebx, byte [r8 + rdx + 5]
or eax, ebx
lea rbx, [rdx + 6]
cmp r9, rbx
jbe 0x8370f4
movzx ebx, byte [r8 + rdx + 6]
or eax, ebx
lea rbx, [rdx + 7]
cmp r9, rbx
jbe 0x8370f4
movzx ebx, byte [r8 + rdx + 7]
or eax, ebx
lea rbx, [rdx + 8]
cmp r9, rbx
jbe 0x8370f4
movzx ebx, byte [r8 + rdx + 8]
or eax, ebx
lea rbx, [rdx + 9]
cmp r9, rbx
jbe 0x8370f4
movzx ebx, byte [r8 + rdx + 9]
or eax, ebx
lea rbx, [rdx + 0xa]
cmp r9, rbx
jbe 0x8370f4
movzx ebx, byte [r8 + rdx + 0xa]
or eax, ebx
lea rbx, [rdx + 0xb]
cmp r9, rbx
jbe 0x8370f4
movzx ebx, byte [r8 + rdx + 0xb]
or eax, ebx
lea rbx, [rdx + 0xc]
cmp r9, rbx
jbe 0x8370f4
movzx ebx, byte [r8 + rdx + 0xc]
or eax, ebx
lea rbx, [rdx + 0xd]
cmp r9, rbx
jbe 0x8370f4
movzx ebx, byte [r8 + rdx + 0xd]
or eax, ebx
lea rbx, [rdx + 0xe]
cmp r9, rbx
jbe 0x8370f4
movzx edx, byte [r8 + rdx + 0xe]
or eax, edx
test eax, eax
jne 0x836ed7
mov rax, r9
jmp 0x836eec
mov r8d, 0xde
mov edx, 0xe2
mov ecx, 0xd
mov dword [rsp + 0x20], 0x9a
lea r9, str.crypto_asn1_a_int.c
call fcn.00780b20
xor eax, eax
add rsp, 0x38
pop rbx
pop rsi
ret
mov eax, 1
test rcx, rcx
je 0x836f30
movzx edx, byte [r8]
mov r8d, edx
neg edx
test r11b, r11b
cmovns edx, r8d
mov byte [rcx], dl
add rsp, 0x38
pop rbx
pop rsi
ret
mov r8d, 0xdd
mov edx, 0xe2
mov ecx, 0xd
mov dword [rsp + 0x20], 0xbb
lea r9, str.crypto_asn1_a_int.c
call fcn.00780b20
xor eax, eax
jmp 0x836f30
mov edx, 1
xor eax, eax
jmp 0x836fe7