Function at 0x14004c638
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x38
mov r12d, dword [rcx + 0x24]
mov rbx, rcx
mov r10d, dword [rcx + 0x2c]
mov edx, r12d
mov r9d, dword [rcx + 0x54]
and edx, 0x7fff
mov r11d, dword [rcx + 0x50]
xor edi, edi
mov esi, dword [rcx + 0x28]
mov r13, qword [rcx + 0x30]
mov r15, qword [rcx + 0x38]
mov dword [rsp + 0x80], edx
mov dword [rsp + 0x20], r12d
mov dword [rsp + 0x90], r10d
mov dword [rsp + 0x88], r9d
mov dword [rsp + 0x98], r11d
mov r14d, 1
mov rcx, qword [rbx + 0xb8]
test rcx, rcx
jne 0x14004c6bc
cmp dword [rbx + 0xa8], edi
je 0x14004cbad
test esi, esi
je 0x14004cbad
mov ebp, 0x1000
lea r14d, [rsi + r12]
and r14d, 0x7fff
sub ebp, esi
cmp rcx, rbp
jae 0x14004c6d9
mov ebp, dword [rbx + 0xb8]
mov eax, ebp
add esi, ebp
sub rcx, rax
mov qword [rbx + 0xb8], rcx
test ebp, ebp
je 0x14004c794
mov rdx, qword [rbx + 0xb0]
mov eax, 0x8000
lea rcx, [rbx + 0xc8]
sub eax, r14d
mov r12d, ebp
cmp eax, ebp
cmovb r12d, eax
mov eax, r14d
add rcx, rax
mov r8d, r12d
call fcn.14005fdc0
cmp r14d, 0x101
jae 0x14004c750
mov rdx, qword [rbx + 0xb0]
lea rcx, [rbx + 0x80c8]
mov eax, 0x101
sub eax, r14d
cmp r12d, eax
cmovb eax, r12d
mov r8d, eax
mov eax, r14d
add rcx, rax
call fcn.14005fdc0
add r14d, r12d
mov eax, r12d
add qword [rbx + 0xb0], rax
and r14d, 0x7fff
mov rdx, qword [rbx + 0xb0]
sub ebp, r12d
jne 0x14004c6f6
mov r10d, dword [rsp + 0x90]
mov r11d, dword [rsp + 0x98]
mov r12d, dword [rsp + 0x20]
mov r9d, dword [rsp + 0x88]
mov edx, dword [rsp + 0x80]
mov eax, 0x8000
sub eax, esi
cmp eax, r10d
cmovb r10d, eax
mov dword [rsp + 0x90], r10d
cmp dword [rbx + 0xa8], edi
jne 0x14004c7be
cmp esi, 0x1000
jb 0x14004cba7
mov r14d, 1
cmp esi, 4
jb 0x14004ca7c
mov eax, edx
mov r8d, r14d
lea r14, [rbx + 0xc8]
add r14, rax
mov qword [rsp + 0x90], r14
mov ebp, dword [r14]
and ebp, 0xffffff
mov eax, ebp
mov ecx, ebp
shr rcx, 0x11
xor rcx, rax
movzx eax, r12w
and ecx, 0xfff
movzx edx, word [rbx + rcx*2 + 0x292aa]
sub ax, dx
mov word [rbx + rcx*2 + 0x292aa], r12w
movzx r12d, ax
cmp r12d, r10d
ja 0x14004c96a
and edx, 0x7fff
lea r9, [rbx + 0xc8]
add r9, rdx
mov eax, dword [r9]
and eax, 0xffffff
cmp eax, ebp
jne 0x14004c96a
mov r8, r14
mov r14d, 0x20
add r9, 2
add r8, 2
movzx eax, word [r9]
cmp word [r8], ax
jne 0x14004c89a
add r9, 2
add r8, 2
movzx eax, word [r9]
cmp word [r8], ax
jne 0x14004c89a
add r9, 2
add r8, 2
movzx eax, word [r9]
cmp word [r8], ax
jne 0x14004c89a
add r9, 2
add r8, 2
movzx eax, word [r9]
cmp word [r8], ax
jne 0x14004c89a
add r14d, 0xffffffff
jne 0x14004c84c
mov al, byte [r9]
mov ecx, edi
mov rdx, r8
sub rdx, qword [rsp + 0x90]
sar rdx, 1
cmp byte [r8], al
sete cl
lea eax, [rcx + rdx*2]
test r14d, r14d
jne 0x14004c8c7
mov eax, r12d
neg eax
sbb eax, eax
and eax, 0x102
mov r9d, 3
cmp eax, r9d
jb 0x14004c95f
jne 0x14004c8e1
cmp r12d, 0x2000
jae 0x14004c95f
cmp eax, esi
lea rbp, [0x140000000]
mov r14d, 1
mov r8d, esi
cmovb r8d, eax
dec r12d
mov word [r13 + 1], r12w
mov al, r8b
sub al, r9b
mov edx, r12d
mov byte [r13], al
mov al, byte [r15]
shr al, 1
or al, 0x80
shr rdx, 8
mov byte [r15], al
mov eax, r12d
and eax, 0x1ff
cmp r12d, 0x200
movzx ecx, byte [rax + rbp + 0x71570]
movzx eax, byte [rdx + rbp + 0x71190]
cmovb eax, ecx
add word [rbx + rax*2 + 0x840a], r14w
lea eax, [r8 - 3]
movzx eax, word [rbp + rax*2 + 0x71770]
add word [rbx + rax*2 + 0x81ca], r14w
mov rax, r9
jmp 0x14004c987
mov r14d, 1
mov r8d, r14d
jmp 0x14004c970
mov r14d, 1
movzx eax, bpl
mov byte [r13], al
shr byte [r15], 1
add word [rbx + rax*2 + 0x81ca], r14w
mov rax, r14
mov r9d, dword [rsp + 0x88]
lea rdx, [rax + r13]
mov r12d, dword [rsp + 0x20]
lea r13, [rdx + 1]
add r11d, 0xffffffff
mov eax, 8
mov ecx, r11d
cmove r11d, eax
test ecx, ecx
mov rax, rdx
mov dword [rsp + 0x98], r11d
cmovne rax, r15
cmovne r13, rdx
mov edx, dword [rsp + 0x80]
add r9d, r8d
add r12d, r8d
mov dword [rsp + 0x88], r9d
mov r15, rax
mov dword [rsp + 0x20], r12d
lea eax, [r8 + r10]
mov ecx, 0x8000
cmp eax, ecx
mov r10d, ecx
cmovb r10d, eax
add edx, r8d
and edx, 0x7fff
mov dword [rsp + 0x90], r10d
sub esi, r8d
mov dword [rsp + 0x80], edx
lea rax, [rbx + 0x192a2]
cmp r13, rax
jbe 0x14004c7c4
xor edx, edx
mov dword [rbx + 0x24], r12d
mov rcx, rbx
mov dword [rbx + 0x28], esi
mov dword [rbx + 0x2c], r10d
mov dword [rbx + 0x54], r9d
mov qword [rbx + 0x30], r13
mov qword [rbx + 0x38], r15
mov dword [rbx + 0x50], r11d
call fcn.14004c0b8
test eax, eax
jne 0x14004cbcd
mov r9d, dword [rbx + 0x54]
mov r11d, dword [rbx + 0x50]
mov r13, qword [rbx + 0x30]
mov r15, qword [rbx + 0x38]
mov r10d, dword [rsp + 0x90]
mov edx, dword [rsp + 0x80]
mov dword [rsp + 0x88], r9d
mov dword [rsp + 0x98], r11d
jmp 0x14004c7c4
test esi, esi
je 0x14004c69c
lea r14, [rbx + 0x192a2]
mov ecx, 1
mov eax, dword [rsp + 0x80]
lea r8, [r13 + 1]
mov ebp, dword [rsp + 0x88]
mov rdx, r13
add ebp, ecx
mov dword [rsp + 0x88], ebp
movzx r9d, byte [rax + rbx + 0xc8]
mov byte [r13], r9b
mov r13d, 8
shr byte [r15], 1
add r11d, 0xffffffff
mov ecx, r11d
mov eax, r11d
cmove r11d, r13d
neg eax
lea eax, [r10 + 1]
mov dword [rsp + 0x98], r11d
sbb r13, r13
mov r10d, 0x8000
add r13, 2
add r13, rdx
mov edx, dword [rsp + 0x80]
test ecx, ecx
mov ecx, 1
cmovne r8, r15
add word [rbx + r9*2 + 0x81ca], cx
add r12d, ecx
mov r15, r8
cmp eax, r10d
mov dword [rsp + 0x20], r12d
inc edx
cmovb r10d, eax
and edx, 0x7fff
dec esi
mov dword [rsp + 0x90], r10d
mov dword [rsp + 0x80], edx
cmp r13, r14
jbe 0x14004cb97
xor edx, edx
mov dword [rbx + 0x24], r12d
mov rcx, rbx
mov dword [rbx + 0x28], esi
mov dword [rbx + 0x2c], r10d
mov dword [rbx + 0x54], ebp
mov qword [rbx + 0x30], r13
mov qword [rbx + 0x38], r8
mov dword [rbx + 0x50], r11d
call fcn.14004c0b8
test eax, eax
jne 0x14004cbcd
mov r9d, dword [rbx + 0x54]
lea ecx, [rax + 1]
mov r11d, dword [rbx + 0x50]
mov r13, qword [rbx + 0x30]
mov r15, qword [rbx + 0x38]
mov r10d, dword [rsp + 0x90]
mov edx, dword [rsp + 0x80]
mov dword [rsp + 0x88], r9d
mov dword [rsp + 0x98], r11d
jmp 0x14004cb9a
mov r9d, ebp
test esi, esi
jne 0x14004ca90
jmp 0x14004c696
mov r14d, 1
mov dword [rbx + 0x24], r12d
mov eax, r14d
mov dword [rbx + 0x28], esi
mov dword [rbx + 0x2c], r10d
mov dword [rbx + 0x54], r9d
mov qword [rbx + 0x30], r13
mov qword [rbx + 0x38], r15
mov dword [rbx + 0x50], r11d
jmp 0x14004cbd3
setns dil
mov eax, edi
add rsp, 0x38
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret