Function at 0x18016a980
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rdi
imul r10d, ecx, 0x9a209
lea r9, [0x18022ddd0]
mov edi, ecx
mov eax, 0x1f
sub r10d, 0x3fe1f
sar r10d, 0x15
sub eax, r10d
imul r11d, r10d, 0xffe56cb1
movsxd rdx, eax
mov r9, qword [r9 + rdx*8]
sar r11d, 0x13
mov rax, r9
shr rax, 0x19
add r11d, ecx
mov ecx, 0x28
mov r8, r9
sub r8, rax
sub ecx, r11d
shr r8, cl
lea eax, [rdi - 2]
mov rdx, r9
shr rdx, 0x18
add rdx, r9
shr rdx, cl
lea ebx, [r8 + 1]
cmp eax, 1
mov eax, 0xcccccccd
cmovbe ebx, r8d
mul edx
shr edx, 3
lea eax, [rdx + rdx*4]
add eax, eax
cmp eax, ebx
jb 0x18016a6ea
imul ecx, edx, 0xc28f5c29
inc r10d
xor r8d, r8d
mov eax, ecx
shr ecx, 2
shl eax, 0x1e
or eax, ecx
cmp eax, 0x28f5c28
ja 0x18016a6ad
nop dword [rax]
imul ecx, eax, 0xc28f5c29
mov edx, eax
add r8d, 2
mov eax, ecx
shr ecx, 2
shl eax, 0x1e
or eax, ecx
cmp eax, 0x28f5c28
jbe 0x18016a690
imul eax, edx, 0xcccccccd
mov ecx, eax
shr eax, 1
shl ecx, 0x1f
or ecx, eax
mov eax, r8d
or eax, 1
cmp ecx, 0x19999999
cmova eax, r8d
add eax, r10d
shl rax, 0x20
cmp ecx, 0x19999999
cmova ecx, edx
or rax, rcx
mov rbx, qword [rsp + 8]
mov rdi, qword [rsp + 0x10]
ret
mov ecx, 0x27
lea eax, [rdi + 0x23]
sub ecx, r11d
shr r9, cl
inc r9d
shr r9d, 1
test eax, eax
jne 0x18016a710
test r9b, 1
lea ecx, [r9 - 1]
cmove ecx, r9d
jmp 0x18016a71c
mov ecx, r9d
cmp r9d, ebx
jae 0x18016a71c
lea ecx, [r9 + 1]
mov rbx, qword [rsp + 8]
mov rdi, qword [rsp + 0x10]
mov eax, r10d
shl rax, 0x20
or rax, rcx
ret
sub rsp, 0x48
movd eax, xmm0
mov edx, eax
shr eax, 0x17
and edx, 0x7fffff
movzx r8d, al
test al, al
je 0x18016a9b8
add r8d, 0xffffff6a
test edx, edx
jne 0x18016a9b2
mov ecx, r8d
add rsp, 0x48
jmp 0x18016a5e0
bts edx, 0x17
jmp 0x18016a9cd
test edx, edx
jne 0x18016a9c7
xor r9d, r9d
mov eax, r9d
add rsp, 0x48
ret
mov r8d, 0xffffff6b
mov qword [rsp + 0x50], rbx
mov ecx, 1
mov qword [rsp + 0x60], rbp
movzx ebx, dl
mov qword [rsp + 0x68], rsi
not bl
mov qword [rsp + 0x40], rdi
and bl, 1
mov qword [rsp + 0x38], r12
lea r12, [0x18022dec8]
imul ebp, r8d, 0x4d105
mov qword [rsp + 0x30], r13
lea r13d, [rdx + rdx]
mov qword [rsp + 0x28], r14
mov qword [rsp + 0x20], r15
sar ebp, 0x14
sub ecx, ebp
imul edi, ecx, 0x1a934f
movsxd rax, ecx
mov ecx, 0x3f
mov r12, qword [r12 + rax*8]
mov eax, r13d
or eax, 1
sar edi, 0x13
add edi, r8d
mov rsi, r12
sub ecx, edi
shr rsi, cl
mov ecx, edi
shl eax, cl
mov ecx, eax
mov rax, r12
shl rcx, 0x20
mul rcx
mov rax, rdx
shr rax, 0x20
test edx, edx
mov dword [rsp + 0x58], eax
mov r11, rax
sete byte [rsp + 0x5c]
xor r9d, r9d
imul r10, rax, 0x51eb851f
lea r14d, [r9 + 0x40]
shr r10, 0x25
lea r15d, [r9 + 0x20]
imul eax, r10d, 0x64
sub r11d, eax
cmp r11d, esi
jae 0x18016ab48
test r11d, r11d
jne 0x18016ab80
mov rax, qword [rsp + 0x58]
xor bl, 1
shr rax, 0x20
test bl, al
je 0x18016ab80
dec r10d
mov r11d, 0x64
shr esi, 1
lea eax, [r10 + r10*4]
sub r11d, esi
add r11d, 5
imul edx, r11d, 0x199a
movzx ebx, r11b
not bl
and bl, 1
mov ecx, edx
shr ecx, 0x10
lea r8d, [rcx + rax*2]
cmp dx, 0x199a
jae 0x18016ab0f
sub r14d, edi
mov edx, r13d
imul rdx, r12
movzx ecx, r14b
sub r15d, edi
mov rax, rdx
shr rax, cl
movzx ecx, r15b
shr rdx, cl
and al, 1
cmp al, bl
jne 0x18016ab0c
test edx, edx
sete r9b
test r8d, r9d
je 0x18016ab0f
dec r8d
mov eax, ebp
shl rax, 0x20
mov ecx, r8d
or rax, rcx
mov r14, qword [rsp + 0x28]
mov r13, qword [rsp + 0x30]
mov r12, qword [rsp + 0x38]
mov rdi, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x68]
mov rbp, qword [rsp + 0x60]
mov rbx, qword [rsp + 0x50]
mov r15, qword [rsp + 0x20]
add rsp, 0x48
ret
ja 0x18016aab0
lea r8d, [r13 - 1]
movzx eax, bl
imul r8, r12
mov ecx, r14d
sub ecx, edi
mov rdx, r8
shr rdx, cl
mov ecx, r15d
sub ecx, edi
and dl, 1
shr r8, cl
mov ecx, r9d
test r8d, r8d
cmove ecx, eax
or cl, dl
je 0x18016aab0
imul ecx, r10d, 0xc28f5c29
mov eax, ecx
shr ecx, 2
shl eax, 0x1e
or eax, ecx
cmp eax, 0x28f5c28
ja 0x18016abbe
nop dword [rax + rax]
imul ecx, eax, 0xc28f5c29
mov r10d, eax
add r9d, 2
mov eax, ecx
shr ecx, 2
shl eax, 0x1e
or eax, ecx
cmp eax, 0x28f5c28
jbe 0x18016aba0
imul eax, r10d, 0xcccccccd
mov ecx, eax
shr eax, 1
shl ecx, 0x1f
or ecx, eax
mov eax, r9d
cmp ecx, 0x19999999
cmovbe r10d, ecx
or eax, 1
cmp ecx, 0x19999999
mov dword [rsp + 0x58], r10d
cmova eax, r9d
inc eax
add eax, ebp
mov dword [rsp + 0x5c], eax
mov rax, qword [rsp + 0x58]
jmp 0x18016ab1b