Function at 0x74c860
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push rbp
sub rsp, 0x50
mov rbp, rsp
mov qword [rbp + 0x60], rcx
mov dword [rbp + 0x68], edx
mov qword [rbp + 0x70], r8
mov qword [rbp + 0x78], r9
mov rax, qword [rbp + 0x60]
mov rax, qword [rax + 0x40]
mov qword [rbp + 0x28], rax
mov rax, qword [rbp + 0x60]
mov rcx, qword [rbp + 0x60]
mov ecx, dword [rcx + 0x38]
shl ecx, 5
mov rdx, qword [rbp + 0x28]
movzx rdx, byte [rdx + 2]
xor ecx, edx
and ecx, 0x3fff
mov dword [rax + 0x38], ecx
mov rax, qword [rbp + 0x60]
mov rax, qword [rax + 0x30]
mov rcx, qword [rbp + 0x60]
movsxd rcx, dword [rcx + 0x38]
mov rax, qword [rax + rcx*8]
mov qword [rbp + 0x30], rax
mov rax, qword [rbp + 0x60]
mov rax, qword [rax + 0x30]
mov rcx, qword [rbp + 0x60]
movsxd rcx, dword [rcx + 0x38]
mov rdx, qword [rbp + 0x28]
mov qword [rax + rcx*8], rdx
mov rax, qword [rbp + 0x60]
mov rax, qword [rax + 0x28]
mov rcx, qword [rbp + 0x60]
mov edx, dword [rbp + 0x28]
and edx, dword [rcx + 0x94]
movsxd rdx, edx
mov rcx, qword [rbp + 0x30]
mov qword [rax + rdx*8], rcx
mov rax, qword [rbp + 0x60]
mov eax, dword [rax + 0x48]
sub eax, dword [rbp + 0x28]
mov dword [rbp + 0x40], eax
mov rax, qword [rbp + 0x60]
mov ecx, dword [rbp + 0x40]
cmp ecx, dword [rax + 0x50]
jle 0x74c918
mov rax, qword [rbp + 0x60]
mov eax, dword [rax + 0x50]
mov dword [rbp + 0x40], eax
mov eax, dword [rbp + 0x68]
cmp eax, dword [rbp + 0x40]
jle 0x74c926
mov eax, dword [rbp + 0x40]
mov dword [rbp + 0x68], eax
mov rax, qword [rbp + 0x78]
cmp dword [rax], 0
jne 0x74c938
mov dword [rbp + 0x48], 2
jmp 0x74c96e
mov rax, qword [rbp + 0x78]
mov ecx, dword [rbp + 0x40]
cmp ecx, dword [rax]
jge 0x74c965
mov byte [rbp + 0x4f], 0
mov rax, qword [rbp + 0x70]
mov dword [rax], 0
mov rax, qword [rbp + 0x70]
mov rcx, qword [rbp + 0x28]
movzx rcx, byte [rcx]
mov byte [rax + 8], cl
jmp 0x74caf9
mov rax, qword [rbp + 0x78]
mov eax, dword [rax]
mov dword [rbp + 0x48], eax
mov rax, qword [rbp + 0x28]
movzx rax, byte [rax]
mov byte [rbp + 0xf], al
mov rax, qword [rbp + 0x28]
mov ecx, dword [rbp + 0x48]
sub ecx, 1
movsxd rcx, ecx
movzx rax, byte [rax + rcx]
mov byte [rbp + 0xe], al
mov eax, dword [rbp + 0x48]
cmp eax, dword [rbp + 0x68]
jl 0x74c9ab
mov rax, qword [rbp + 0x60]
mov ecx, 4
mov eax, dword [rax + 0x24]
cdq
idiv ecx
mov dword [rbp + 0x3c], eax
jmp 0x74c9b5
mov rax, qword [rbp + 0x60]
mov eax, dword [rax + 0x24]
mov dword [rbp + 0x3c], eax
mov dword [rbp + 0x44], 0
jmp 0x74ca86
mov rax, qword [rbp + 0x30]
movzx rax, byte [rax]
cmp al, byte [rbp + 0xf]
jne 0x74ca5c
mov rax, qword [rbp + 0x30]
movsxd rcx, dword [rbp + 0x48]
movzx rax, byte [rax + rcx - 1]
cmp al, byte [rbp + 0xe]
jne 0x74ca5c
mov dword [rbp + 0x24], 1
mov rax, qword [rbp + 0x28]
lea rax, [rax + 1]
mov qword [rbp + 0x10], rax
mov rax, qword [rbp + 0x30]
lea rax, [rax + 1]
mov qword [rbp + 0x18], rax
jmp 0x74ca14
add qword [rbp + 0x10], 1
add qword [rbp + 0x18], 1
add dword [rbp + 0x24], 1
mov eax, dword [rbp + 0x24]
cmp eax, dword [rbp + 0x40]
jge 0x74ca2c
mov rax, qword [rbp + 0x18]
mov rcx, qword [rbp + 0x10]
movzx rax, byte [rax]
cmp al, byte [rcx]
je 0x74ca06
mov eax, dword [rbp + 0x24]
cmp eax, dword [rbp + 0x48]
jle 0x74ca5c
mov eax, dword [rbp + 0x24]
mov dword [rbp + 0x48], eax
mov eax, dword [rbp + 0x28]
sub eax, dword [rbp + 0x30]
mov dword [rbp + 0x44], eax
mov rax, qword [rbp + 0x28]
movsxd rcx, dword [rbp + 0x48]
movzx rax, byte [rax + rcx - 1]
mov byte [rbp + 0xe], al
mov eax, dword [rbp + 0x48]
cmp eax, dword [rbp + 0x68]
jge 0x74caa2
sub dword [rbp + 0x3c], 1
cmp dword [rbp + 0x3c], 0
je 0x74caa2
mov rax, qword [rbp + 0x60]
mov rax, qword [rax + 0x28]
mov rcx, qword [rbp + 0x60]
mov edx, dword [rbp + 0x30]
and edx, dword [rcx + 0x94]
movsxd rdx, edx
mov rax, qword [rax + rdx*8]
mov qword [rbp + 0x30], rax
mov rax, qword [rbp + 0x60]
mov rax, qword [rax + 0x70]
cmp rax, qword [rbp + 0x30]
ja 0x74caa2
mov rax, qword [rbp + 0x30]
cmp rax, qword [rbp + 0x28]
jb 0x74c9c1
nop
cmp dword [rbp + 0x48], 3
jl 0x74cab4
mov rax, qword [rbp + 0x78]
mov ecx, dword [rbp + 0x48]
cmp ecx, dword [rax]
jg 0x74cad3
mov byte [rbp + 0x4f], 0
mov rax, qword [rbp + 0x70]
mov dword [rax], 0
mov rax, qword [rbp + 0x70]
mov rcx, qword [rbp + 0x28]
movzx rcx, byte [rcx]
mov byte [rax + 8], cl
jmp 0x74caf9
mov byte [rbp + 0x4f], 1
mov rax, qword [rbp + 0x70]
mov ecx, dword [rbp + 0x48]
mov dword [rax], ecx
mov rax, qword [rbp + 0x70]
mov ecx, dword [rbp + 0x44]
mov dword [rax + 4], ecx
mov rax, qword [rbp + 0x70]
mov rcx, qword [rbp + 0x28]
movzx rcx, byte [rcx]
mov byte [rax + 8], cl
movzx rax, byte [rbp + 0x4f]
lea rsp, [rbp + 0x50]
pop rbp
ret