Function at 0x6c286e50
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
mov eax, dword [rcx + 0x44]
mov rdx, 0xfffffffffffffffe
mov ebx, dword [rcx + 0x9c]
mov rsi, rdx
mov rbp, rcx
mov qword [rsp + 0x40], rdx
xor r15d, r15d
mov r12, rax
mov qword [rsp + 0x28], rax
add rax, rax
mov qword [rsp + 0x30], rax
lea eax, [r12 - 1]
add rax, rax
sub rsi, rax
mov eax, r12d
mov qword [rsp + 0x38], rsi
lea esi, [r12 - 0x106]
mov r13d, esi
jmp 0x6c286f12
test r9d, r9d
jne 0x6c287060
add ebx, r9d
cmp ebx, 2
mov dword [rbp + 0x9c], ebx
jbe 0x6c286efe
mov edx, dword [rbp + 0x94]
mov rax, qword [rbp + 0x50]
mov rcx, rdx
movzx edx, byte [rax + rdx]
add ecx, 1
mov dword [rbp + 0x70], edx
movzx eax, byte [rax + rcx]
mov ecx, dword [rbp + 0x80]
shl edx, cl
xor eax, edx
and eax, dword [rbp + 0x7c]
cmp ebx, 0x105
mov dword [rbp + 0x70], eax
ja 0x6c2870d0
mov rax, qword [rbp]
mov r9d, dword [rax + 8]
test r9d, r9d
je 0x6c2870d0
mov eax, dword [rbp + 0x44]
mov r9d, dword [rbp + 0x58]
mov edx, dword [rbp + 0x94]
add eax, r13d
sub r9d, ebx
sub r9d, edx
cmp edx, eax
jae 0x6c286fa0
mov rsi, qword [rbp]
mov edi, dword [rsi + 8]
test edi, edi
je 0x6c28704d
cmp r9d, edi
mov ebx, dword [rbp + 0x9c]
jb 0x6c286eb0
xor eax, eax
mov r10, qword [rbp + 0x50]
mov r9d, dword [rbp + 0x94]
mov dword [rsi + 8], eax
mov rax, qword [rsi + 0x28]
mov eax, dword [rax + 0x2c]
cmp eax, 1
je 0x6c287070
cmp eax, 2
je 0x6c2870a0
mov ecx, ebx
mov rdx, qword [rsi]
mov r14d, edi
add rcx, r9
mov r8, r14
add rcx, r10
call sym.memcpy
add qword [rsi], r14
add dword [rsi + 0xc], edi
mov r9d, edi
mov ebx, dword [rbp + 0x9c]
jmp 0x6c286eb9
mov rcx, qword [rbp + 0x50]
mov rax, qword [rsp + 0x28]
mov dword [rsp + 0x20], r9d
lea rdx, [rcx + rax]
mov r8, rax
call sym.memcpy
mov ecx, dword [rbp + 0x74]
mov rax, qword [rbp + 0x68]
mov r8, qword [rsp + 0x40]
sub dword [rbp + 0x98], r12d
sub dword [rbp + 0x94], r12d
mov r9d, dword [rsp + 0x20]
sub dword [rbp + 0x84], r12d
mov rdx, rcx
lea rax, [rax + rcx*2]
sub edx, 1
add rdx, rdx
sub r8, rdx
add r8, rax
sub rax, 2
movzx ecx, word [rax]
mov edx, ecx
sub edx, r12d
cmp r12d, ecx
cmova edx, r15d
cmp rax, r8
mov word [rax], dx
jne 0x6c286ff3
mov rax, qword [rsp + 0x30]
add rax, qword [rbp + 0x60]
mov rdi, qword [rsp + 0x38]
lea r8, [rax + rdi]
sub rax, 2
movzx ecx, word [rax]
mov edx, ecx
sub edx, r12d
cmp r12d, ecx
cmova edx, r15d
cmp rax, r8
mov word [rax], dx
jne 0x6c287020
mov rsi, qword [rbp]
add r9d, r12d
mov edi, dword [rsi + 8]
test edi, edi
jne 0x6c286f38
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov eax, edi
mov edi, r9d
sub eax, r9d
jmp 0x6c286f49
mov ecx, dword [rsi + 0x4c]
mov rdx, qword [rsi]
mov r8d, edi
mov dword [rsp + 0x4c], r9d
mov qword [rsp + 0x20], r10
call dbg.adler32
mov r10, qword [rsp + 0x20]
mov dword [rsi + 0x4c], eax
mov r9d, dword [rsp + 0x4c]
jmp 0x6c286f70
mov ecx, dword [rsi + 0x4c]
mov rdx, qword [rsi]
mov r8d, edi
mov dword [rsp + 0x4c], r9d
mov qword [rsp + 0x20], r10
call dbg.crc32
mov r9d, dword [rsp + 0x4c]
mov dword [rsi + 0x4c], eax
mov r10, qword [rsp + 0x20]
jmp 0x6c286f70
mov edx, dword [rbp + 0x1718]
mov eax, dword [rbp + 0x58]
cmp edx, eax
jae 0x6c28704d
add ebx, dword [rbp + 0x94]
cmp edx, ebx
jae 0x6c28713a
sub eax, ebx
mov edx, 0x102
cmp eax, 0x102
cmovbe edx, eax
mov eax, ebx
add rax, qword [rbp + 0x50]
cmp edx, 8
jb 0x6c287173
lea rdi, [rax + 8]
mov ecx, edx
mov qword [rax], 0
mov qword [rax + rcx - 8], 0
and rdi, 0xfffffffffffffff8
sub rax, rdi
lea ecx, [rdx + rax]
xor eax, eax
shr ecx, 3
rep stosq qword [rdi], rax
add edx, ebx
mov dword [rbp + 0x1718], edx
jmp 0x6c28704d
lea ecx, [rbx + 0x102]
cmp edx, ecx
jae 0x6c28704d
sub ebx, edx
sub eax, edx
mov rcx, rdx
add ebx, 0x102
cmp eax, ebx
cmovbe ebx, eax
add rcx, qword [rbp + 0x50]
xor edx, edx
mov r8d, ebx
call sym.memset
add dword [rbp + 0x1718], ebx
jmp 0x6c28704d
test dl, 4
jne 0x6c287191
test edx, edx
je 0x6c28712d
test dl, 2
mov byte [rax], 0
je 0x6c28712d
mov ecx, edx
xor r8d, r8d
mov word [rax + rcx - 2], r8w
jmp 0x6c28712d
mov ecx, edx
mov dword [rax], 0
mov dword [rax + rcx - 4], 0
jmp 0x6c28712d