Function at 0x140156b90
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov qword [rsp + 0x18], rbx
mov dword [rsp + 0x10], edx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x60
movsxd rax, edx
lea rsi, [rcx + 0x908]
mov rbx, rcx
movsxd rdi, r9d
lea rdx, [rsp + 0x20]
mov qword [rsp + 0xa0], rax
mov rcx, r8
call qword [rbx + rax*8 + 0xbf40]
mov r15d, dword [rsp + 0x20]
movsxd r13, eax
mov eax, 2
sub r15d, r13d
mov dword [rsp + 0xb8], r15d
mov word [rsp + r13*2 + 0x30], ax
lea ecx, [r13 + 1]
movsxd rdx, ecx
mov word [rsp + rdx*2 + 0x30], ax
mov eax, 1
movsx r11, word [rsp + 0x34]
mov edx, 1
movsx r9, word [rsp + 0x32]
sub eax, r11d
movsx r10d, word [rsp + 0x30]
movsxd r8, eax
sub edx, r10d
lea rax, [r11 + 1]
and r11d, 0x8000
or r8, rax
movabs rax, 0x200000000
and r8, rax
mov eax, 1
sub eax, r9d
movsxd rcx, eax
lea rax, [r9 + 1]
or rcx, rax
and r9d, 0x10000
or r11d, r9d
movabs rax, 0x100000000
and rcx, rax
lea eax, [r13 - 1]
or r8, rcx
movsxd r12, eax
lea ecx, [r10 + 1]
sar r8, 0x1f
or rdx, rcx
and r10d, 0x20000
shr rdx, 0x1f
or r11d, r10d
or r8, rdx
sar r11d, 0xf
lea rdx, [0x140000000]
mov rax, rdi
shl rax, 4
mov ecx, 3
add rax, r12
movzx ebp, byte [r8 + rdx + 0x31ef80]
sub ecx, ebp
shr r11d, cl
lea rax, [rax*4]
add rax, rbp
movzx ecx, byte [rdx + rax*2 + 0x2ff1f1]
movzx edx, byte [rdx + rax*2 + 0x2ff1f0]
mov rax, qword [rbx + 0x920]
sub dword [rbx + 0x928], ecx
shl rax, cl
mov ecx, dword [rbx + 0x928]
or rdx, rax
mov qword [rbx + 0x920], rdx
cmp ecx, 0x20
jg 0x140156d3b
shl rdx, cl
shr rdx, 0x20
mov eax, edx
mov ecx, edx
and eax, 0xff00
shl ecx, 0x10
add ecx, eax
mov eax, edx
shr eax, 8
and eax, 0xff00
shl ecx, 8
add ecx, eax
shr edx, 0x18
mov rax, qword [rbx + 0x910]
add ecx, edx
mov dword [rax], ecx
add qword [rbx + 0x910], 4
mov r8d, dword [rbx + 0x928]
mov rdx, qword [rsi + 0x18]
add r8d, 0x20
jmp 0x140156d42
mov r8d, dword [rbx + 0x928]
xor r10d, r10d
cmp r13d, 0xa
jle 0x140156d55
mov edi, 1
cmp ebp, 3
jb 0x140156d58
mov edi, r10d
sub r8d, ebp
mov eax, r11d
mov ecx, ebp
mov dword [rbx + 0x928], r8d
shl rdx, cl
or rdx, rax
mov qword [rbx + 0x920], rdx
cmp r8d, 0x20
jg 0x140156dd1
mov ecx, r8d
shl rdx, cl
shr rdx, 0x20
mov eax, edx
mov ecx, edx
and eax, 0xff00
shl ecx, 0x10
add ecx, eax
mov eax, edx
shr eax, 8
and eax, 0xff00
shl ecx, 8
add ecx, eax
shr edx, 0x18
mov rax, qword [rbx + 0x910]
add ecx, edx
mov dword [rax], ecx
add dword [rbx + 0x928], 0x20
mov r9d, dword [rbx + 0x928]
mov r8d, r9d
add qword [rbx + 0x910], 4
mov rdx, qword [rbx + 0x920]
jmp 0x140156dd4
mov r9d, r8d
cmp ebp, r13d
jge 0x140157193
movsx r11, word [rsp + rbp*2 + 0x30]
mov eax, r11d
mov r8d, r11d
sar eax, 0x1f
or eax, 1
cmp ebp, 3
cmovb r10d, eax
lea eax, [r11 + 0x40]
sub r8d, r10d
cmp eax, 0x80
jae 0x140156ebf
movsxd rax, r8d
lea r14, [0x140000000]
shl rdi, 7
mov r8d, r9d
add rax, rdi
movzx ecx, byte [r14 + rax*4 + 0x498882]
movzx r10d, word [r14 + rax*4 + 0x498880]
sub r8d, ecx
shl rdx, cl
or r10, rdx
mov dword [rbx + 0x928], r8d
mov qword [rbx + 0x920], r10
cmp r8d, 0x20
jg 0x140156ead
mov ecx, r8d
shl r10, cl
shr r10, 0x20
mov eax, r10d
mov ecx, r10d
and eax, 0xff00
shl ecx, 0x10
add ecx, eax
mov eax, r10d
shr eax, 8
and eax, 0xff00
shl ecx, 8
add ecx, eax
shr r10d, 0x18
mov rax, qword [rbx + 0x910]
add ecx, r10d
mov dword [rax], ecx
lea rax, [rdi + r11]
add dword [rbx + 0x928], 0x20
add qword [rbx + 0x910], 4
mov r9d, dword [rbx + 0x928]
mov r8d, r9d
movzx r11d, byte [r14 + rax*4 + 0x498883]
jmp 0x140156edd
lea rax, [rdi + r11]
mov r9d, r8d
movzx r11d, byte [r14 + rax*4 + 0x498883]
jmp 0x140156edd
mov edx, edi
mov rcx, rbx
call fcn.1401569e0
mov r9d, dword [rbx + 0x928]
lea r14, [0x140000000]
mov r8d, r9d
mov r11d, eax
lea eax, [rbp + 1]
cmp eax, r13d
jge 0x140157193
lea rbp, [rsp + 0x30]
mov r15d, r13d
lea rbp, [rbp + rax*2]
sub r15d, eax
nop dword [rax]
movsx rdx, word [rbp]
lea eax, [rdx + 0x40]
cmp eax, 0x80
jae 0x140156fcf
mov rax, qword [rbx + 0x920]
mov r8d, dword [rbx + 0x928]
movsxd rcx, r11d
shl rcx, 7
add rcx, rdx
lea r10, [rcx*4 + 0x100]
movzx ecx, byte [r10 + r14 + 0x498782]
movzx edx, word [r10 + r14 + 0x498780]
sub r8d, ecx
shl rax, cl
or rdx, rax
mov dword [rbx + 0x928], r8d
mov qword [rbx + 0x920], rdx
cmp r8d, 0x20
jg 0x140156fbe
mov ecx, r8d
shl rdx, cl
shr rdx, 0x20
mov eax, edx
mov ecx, edx
and eax, 0xff00
shl ecx, 0x10
add ecx, eax
mov eax, edx
shr eax, 8
and eax, 0xff00
shl ecx, 8
add ecx, eax
shr edx, 0x18
mov rax, qword [rbx + 0x910]
add ecx, edx
mov dword [rax], ecx
add dword [rbx + 0x928], 0x20
add qword [rbx + 0x910], 4
mov r9d, dword [rbx + 0x928]
mov r8d, r9d
movzx r11d, byte [r10 + r14 + 0x498783]
jmp 0x14015717d
movzx r11d, byte [r10 + r14 + 0x498783]
mov r9d, r8d
jmp 0x14015717d
mov eax, edx
mov ecx, r11d
sar eax, 0x1f
mov edi, reloc.WS2_32.dll_ntohs
mov r14d, eax
mov r8d, 0x8000
xor r14d, edx
sub r14d, eax
lea r9d, [r14 + r14]
sub r9d, eax
sub r9d, 2
mov edx, r9d
sar edx, cl
cmp edx, edi
jge 0x140157022
mov eax, 1
inc edx
shl eax, cl
add edx, r11d
mov rcx, rsi
lea r8d, [rax - 1]
and r8d, r9d
add r8d, eax
call fcn.1400c6d60
jmp 0x140157142
mov eax, edi
shl eax, cl
sub r9d, eax
test r11d, r11d
lea edx, [r9 - 0xf]
cmovne edx, r9d
cmp edx, 0x1000
jl 0x140157070
cmp dword [rbx + 0x3034], 0x64
jl 0x140157066
mov eax, 0x1000
mov ecx, listen
nop
sub edx, eax
rol r8d, 1
inc ecx
mov eax, 1
shl eax, cl
inc edi
cmp edx, eax
jge 0x140157050
jmp 0x140157070
mov dword [rbx + 0x6454], 1
mov r9, qword [rsi + 0x18]
lea ecx, [rdi + 1]
mov r10d, dword [rsi + 0x20]
shl r9, cl
sub r10d, ecx
or r9, 1
mov dword [rsi + 0x20], r10d
mov qword [rsi + 0x18], r9
cmp r10d, 0x20
jg 0x1401570d7
mov ecx, r10d
shl r9, cl
shr r9, 0x20
mov eax, r9d
mov ecx, r9d
and eax, 0xff00
shl ecx, 0x10
add ecx, eax
mov eax, r9d
shr eax, 8
and eax, 0xff00
shl ecx, 8
add ecx, eax
shr r9d, 0x18
mov rax, qword [rsi + 8]
add ecx, r9d
mov dword [rax], ecx
add qword [rsi + 8], 4
mov r10d, dword [rsi + 0x20]
add r10d, 0x20
ror r8d, 3
lea ecx, [rdi - 3]
mov eax, edx
sub r10d, ecx
mov dword [rsi + 0x20], r10d
lea r9d, [r8 - 1]
and r9, rax
mov rax, qword [rsi + 0x18]
shl rax, cl
or r9, rax
mov qword [rsi + 0x18], r9
cmp r10d, 0x20
jg 0x140157142
mov ecx, r10d
shl r9, cl
shr r9, 0x20
mov eax, r9d
mov ecx, r9d
and eax, 0xff00
shl ecx, 0x10
add ecx, eax
mov eax, r9d
shr eax, 8
and eax, 0xff00
shl ecx, 8
add ecx, eax
shr r9d, 0x18
mov rax, qword [rsi + 8]
add ecx, r9d
mov dword [rax], ecx
add dword [rsi + 0x20], 0x20
add qword [rsi + 8], 4
mov r9d, dword [rbx + 0x928]
lea r10, [0x140000000]
test r11d, r11d
mov edx, 1
mov r8d, r9d
cmovne edx, r11d
movsxd rax, edx
lea r11d, [rdx + 1]
movzx ecx, word [r10 + rax*2 + 0x31ef70]
cmp r14d, ecx
lea r14, [0x140000000]
cmovle r11d, edx
add rbp, 2
sub r15, 1
jne 0x140156f00
mov r15d, dword [rsp + 0xb8]
cmp dword [rsp + 0xa8], 3
lea r10, [0x140000000]
jne 0x140157255
mov ecx, dword [rbx + 0x5f90]
mov eax, 8
sar eax, cl
cmp r13d, eax
jge 0x1401572f9
movsxd rax, r15d
inc rax
cmp dword [rbx + 0x3138], 1
jne 0x1401571dc
lea rax, [rax + r12*4]
movzx eax, word [r10 + rax*2 + 0x2ff6d0]
jmp 0x1401571e9
lea rax, [rax + r12*8]
movzx eax, word [r10 + rax*2 + 0x2ff6f0]
mov r9, qword [rbx + 0x920]
movzx edx, ax
shr edx, 8
sub dword [rbx + 0x928], edx
mov ecx, edx
mov r8d, dword [rbx + 0x928]
shl r9, cl
movzx ecx, al
or r9, rcx
mov qword [rbx + 0x920], r9
cmp r8d, 0x20
jg 0x1401572f9
mov ecx, r8d
shl r9, cl
shr r9, 0x20
mov ecx, r9d
mov eax, r9d
and eax, 0xff00
shl ecx, 0x10
add ecx, eax
mov eax, r9d
shr eax, 8
and eax, 0xff00
shl ecx, 8
add ecx, eax
shr r9d, 0x18
add ecx, r9d
jmp 0x1401572da
mov rax, qword [rsp + 0xa0]
cmp r13b, byte [rax + r10 + 0x31ef88]
jae 0x1401572f9
shl r12, 4
mov r8d, r9d
movsxd rax, r15d
add r12, rax
mov rax, qword [rbx + 0x920]
movzx ecx, byte [r10 + r12*2 + 0x2ff4f3]
movzx edx, byte [r10 + r12*2 + 0x2ff4f2]
sub r8d, ecx
shl rax, cl
or rdx, rax
mov dword [rbx + 0x928], r8d
mov qword [rbx + 0x920], rdx
cmp r8d, 0x20
jg 0x1401572f9
mov ecx, r8d
shl rdx, cl
shr rdx, 0x20
mov ecx, edx
mov eax, edx
and eax, 0xff00
shl ecx, 0x10
add ecx, eax
mov eax, edx
shr eax, 8
and eax, 0xff00
shl ecx, 8
add ecx, eax
shr edx, 0x18
add ecx, edx
mov rax, qword [rbx + 0x910]
mov dword [rax], ecx
add dword [rbx + 0x928], 0x20
add qword [rbx + 0x910], 4
mov r8d, dword [rbx + 0x928]
movsxd rax, dword [rsp + 0x24]
mov ecx, dword [r10 + rax*4 + 0x458780]
mov edx, ecx
mov rax, qword [rbx + 0x920]
and edx, 0x1f
sar ecx, 5
sub r8d, edx
mov r9d, ecx
mov ecx, edx
shl rax, cl
or r9, rax
mov dword [rbx + 0x928], r8d
mov qword [rbx + 0x920], r9
cmp r8d, 0x20
jg 0x140157380
mov ecx, r8d
shl r9, cl
shr r9, 0x20
mov eax, r9d
mov ecx, r9d
and eax, 0xff00
shl ecx, 0x10
add ecx, eax
mov eax, r9d
shr eax, 8
and eax, 0xff00
shl ecx, 8
add ecx, eax
shr r9d, 0x18
mov rax, qword [rbx + 0x910]
add ecx, r9d
mov dword [rax], ecx
add dword [rbx + 0x928], 0x20
add qword [rbx + 0x910], 4
mov rbx, qword [rsp + 0xb0]
mov eax, r13d
add rsp, 0x60
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret