Function at 0x180025180
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push rbx
push rbp
push rdi
push r12
push r13
push r14
sub rsp, 0x58
mov qword [rsp + 0x50], rsi
mov r13, r8
mov qword [rsp + 0x48], r15
mov r14, rdx
lea r15, [r8 - 1]
mov qword [rsp + 0x30], r9
sar r15, 1
mov rbp, rcx
mov qword [rsp + 0x38], rdx
mov rsi, rdx
cmp rdx, r15
jge 0x1800252d1
nop
add rsi, rsi
imul rcx, rsi, 0xd0
add rcx, rbp
movzx eax, byte [rcx + 0x1a0]
cmp al, byte [rcx + 0xd0]
je 0x1800251e3
cmp al, 0x64
sete al
jmp 0x180025237
lea rdx, [rcx + 0x180]
add rcx, 0x250
cmp qword [rdx + 0x18], 0x10
mov rdi, qword [rdx + 0x10]
jb 0x1800251ff
mov rdx, qword [rdx]
cmp qword [rcx + 0x18], 0x10
mov rbx, qword [rcx + 0x10]
jb 0x18002520d
mov rcx, qword [rcx]
cmp rdi, rbx
mov r8, rbx
cmovb r8, rdi
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
jne 0x180025234
cmp rbx, rdi
jae 0x18002522c
mov eax, 0xffffffff
jmp 0x180025234
xor eax, eax
cmp rbx, rdi
seta al
shr eax, 0x1f
movzx ecx, al
xor rcx, 1
inc rcx
add rsi, rcx
imul rdi, rsi, 0xd0
imul rbx, r14, 0xd0
add rdi, rbp
movzx eax, byte [rdi]
lea rdx, [rdi + 8]
add rbx, rbp
lea rcx, [rbx + 8]
mov byte [rbx], al
call fcn.18001d0a0
lea rdx, [rdi + 0x28]
lea rcx, [rbx + 0x28]
call fcn.18001d0a0
lea rdx, [rdi + 0x48]
lea rcx, [rbx + 0x48]
call fcn.18001d0a0
lea rdx, [rdi + 0x68]
lea rcx, [rbx + 0x68]
call fcn.18001d0a0
mov rax, qword [rdi + 0x88]
lea rdx, [rdi + 0x90]
lea rcx, [rbx + 0x90]
mov qword [rbx + 0x88], rax
call fcn.18001d0a0
lea rdx, [rdi + 0xb0]
lea rcx, [rbx + 0xb0]
call fcn.18001d0a0
mov r14, rsi
cmp rsi, r15
jl 0x1800251c0
cmp rsi, r15
mov r15, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
jne 0x18002537a
test r13b, 1
jne 0x18002537a
imul rbx, r13, 0xd0
imul rdi, r14, 0xd0
add rbx, 0xffffffffffffff30
add rbx, rbp
movzx eax, byte [rbx]
lea rdx, [rbx + 8]
add rdi, rbp
lea rcx, [rdi + 8]
mov byte [rdi], al
call fcn.18001d0a0
lea rdx, [rbx + 0x28]
lea rcx, [rdi + 0x28]
call fcn.18001d0a0
lea rdx, [rbx + 0x48]
lea rcx, [rdi + 0x48]
call fcn.18001d0a0
lea rdx, [rbx + 0x68]
lea rcx, [rdi + 0x68]
call fcn.18001d0a0
mov rax, qword [rbx + 0x88]
lea rdx, [rbx + 0x90]
lea rcx, [rdi + 0x90]
mov qword [rdi + 0x88], rax
call fcn.18001d0a0
lea rdx, [rbx + 0xb0]
lea rcx, [rdi + 0xb0]
call fcn.18001d0a0
lea r14, [r13 - 1]
mov r9, qword [rsp + 0x30]
mov rdx, r14
mov r8, qword [rsp + 0x38]
mov rcx, rbp
add rsp, 0x58
pop r14
pop r13
pop r12
pop rdi
pop rbp
pop rbx
jmp 0x180025c30
push rbx
push rsi
push rdi
push r12
push r13
sub rsp, 0x40
mov qword [rsp + 0x20], r8
mov rdi, r9
mov rsi, r8
mov r13, rdx
mov r12, rcx
cmp r8, rdx
jge 0x180025d8d
mov qword [rsp + 0x80], rbp
mov qword [rsp + 0x38], r14
mov qword [rsp + 0x30], r15
nop dword [rax + rax]
lea rbp, [r13 - 1]
sar rbp, 1
imul r14, rbp, 0xd0
add r14, r12
movzx r15d, byte [r14]
cmp r15b, byte [rdi]
je 0x180025c93
cmp r15b, 0x64
sete al
jmp 0x180025cf2
cmp qword [rdi + 0xc8], 0x10
lea rcx, [r14 + 0xb0]
mov rsi, qword [rdi + 0xc0]
lea rdx, [rdi + 0xb0]
jb 0x180025cb5
mov rdx, qword [rdx]
cmp qword [rcx + 0x18], 0x10
mov rbx, qword [rcx + 0x10]
jb 0x180025cc3
mov rcx, qword [rcx]
cmp rsi, rbx
mov r8, rbx
cmovb r8, rsi
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
jne 0x180025cea
cmp rbx, rsi
jae 0x180025ce2
mov eax, 0xffffffff
jmp 0x180025cea
xor eax, eax
cmp rbx, rsi
seta al
mov rsi, qword [rsp + 0x20]
shr eax, 0x1f
test al, al
je 0x180025d7b
imul rbx, r13, 0xd0
lea rdx, [r14 + 8]
add rbx, r12
lea rcx, [rbx + 8]
mov byte [rbx], r15b
call fcn.18001d0a0
lea rdx, [r14 + 0x28]
lea rcx, [rbx + 0x28]
call fcn.18001d0a0
lea rdx, [r14 + 0x48]
lea rcx, [rbx + 0x48]
call fcn.18001d0a0
lea rdx, [r14 + 0x68]
lea rcx, [rbx + 0x68]
call fcn.18001d0a0
mov rax, qword [r14 + 0x88]
lea rdx, [r14 + 0x90]
lea rcx, [rbx + 0x90]
mov qword [rbx + 0x88], rax
call fcn.18001d0a0
lea rdx, [r14 + 0xb0]
lea rcx, [rbx + 0xb0]
call fcn.18001d0a0
mov r13, rbp
cmp rsi, rbp
jl 0x180025c70
mov r14, qword [rsp + 0x38]
mov rbp, qword [rsp + 0x80]
mov r15, qword [rsp + 0x30]
movzx eax, byte [rdi]
lea rdx, [rdi + 8]
imul rbx, r13, 0xd0
add rbx, r12
lea rcx, [rbx + 8]
mov byte [rbx], al
call fcn.18001d0a0
lea rdx, [rdi + 0x28]
lea rcx, [rbx + 0x28]
call fcn.18001d0a0
lea rdx, [rdi + 0x48]
lea rcx, [rbx + 0x48]
call fcn.18001d0a0
lea rdx, [rdi + 0x68]
lea rcx, [rbx + 0x68]
call fcn.18001d0a0
mov rax, qword [rdi + 0x88]
lea rdx, [rdi + 0x90]
lea rcx, [rbx + 0x90]
mov qword [rbx + 0x88], rax
call fcn.18001d0a0
lea rdx, [rdi + 0xb0]
lea rcx, [rbx + 0xb0]
add rsp, 0x40
pop r13
pop r12
pop rdi
pop rsi
pop rbx
jmp fcn.18001d0a0