Function at 0x180028970
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push rbp
push r12
push r13
push r14
push r15
sub rsp, 0x70
lea rbp, [rsp + 0x20]
mov qword [rbp + 0x80], rbx
mov qword [rbp + 0x88], rsi
mov qword [rbp + 0x90], rdi
movaps xmmword [rbp + 0x40], xmm6
movaps xmmword [rbp + 0x30], xmm7
movaps xmmword [rbp + 0x20], xmm8
mov rax, qword [0x180106020]
xor rax, rbp
mov qword [rbp + 0x10], rax
mov edi, r8d
mov r12d, r9d
mov rsi, rdx
mov rbx, rcx
cmp r8d, 3
jl 0x180028cfa
test byte [rcx + 0x30], 4
mov rax, qword [rcx + 0x38]
movss xmm7, dword [rax]
movss xmm8, dword [rax + 4]
je 0x180028c6c
movss xmm6, dword [rcx + 0xc0]
lea r13d, [rdi + rdi]
mov eax, r9d
mov dword [rbp + 8], r13d
lea edx, [rdi*8 - 6]
and eax, 0xffffff
add edx, edi
mov dword [rbp + 4], eax
mov r8d, r13d
call fcn.180027848
mov r14d, dword [rbx + 0x34]
mov r8d, 2
mov r10d, r8d
lea r9d, [r8 - 1]
mov rax, qword [rbx + 0x50]
movzx edx, r10w
add dx, dx
add r10d, r9d
add dx, r14w
movzx ecx, dx
mov word [rax], r14w
sub cx, r8w
mov rax, qword [rbx + 0x50]
mov word [rax + 2], cx
mov rax, qword [rbx + 0x50]
mov word [rax + 4], dx
add qword [rbx + 0x50], 6
cmp r10d, edi
jl 0x180028a1e
movsxd rax, edi
shl rax, 3
lea rcx, [rax + 0xf]
cmp rcx, rax
ja 0x180028a6f
movabs rcx, 0xffffffffffffff0
and rcx, 0xfffffffffffffff0
mov rax, rcx
call fcn.18004c470
sub rsp, rcx
movsxd rax, edi
mov rcx, rsi
mov rdx, rdi
lea r10, [rsp + 0x20]
lea rax, [rax*8 - 8]
movss xmm1, dword [rcx]
movss xmm2, dword [rcx + 4]
subss xmm1, dword [rax + rsi]
subss xmm2, dword [rax + rsi + 4]
movaps xmm0, xmm1
movaps xmm3, xmm2
mulss xmm0, xmm1
mulss xmm3, xmm2
addss xmm3, xmm0
comiss xmm3, dword [0x1800ff230]
jbe 0x180028acf
rsqrtss xmm0, xmm3
mulss xmm1, xmm0
mulss xmm2, xmm0
xorps xmm1, xmmword [0x1800ffa00]
movss dword [rax + r10 + 4], xmm1
movss dword [rax + r10], xmm2
mov rax, rcx
sub rax, rsi
add rcx, 8
sub rdx, r9
jne 0x180028a94
movss xmm4, dword [0x1800ff2c0]
lea r15, [rsi + 4]
mov r11, r10
mulss xmm6, xmm4
sub r11, rsi
lea r13d, [rdi - 1]
mov esi, dword [rbp + 4]
xor ecx, ecx
mov dword [rbp], ecx
movss xmm2, dword [r11 + r15 - 4]
movss xmm3, dword [r11 + r15]
movsxd rax, r13d
addss xmm2, dword [r10 + rax*8]
addss xmm3, dword [r10 + rax*8 + 4]
mulss xmm2, xmm4
mulss xmm3, xmm4
movaps xmm0, xmm2
mulss xmm0, xmm2
movaps xmm1, xmm3
mulss xmm1, xmm3
addss xmm1, xmm0
comiss xmm1, dword [0x1800ff248]
jbe 0x180028b74
movss xmm0, dword [0x1800ff314]
divss xmm0, xmm1
movss xmm1, dword [0x1800ff490]
minss xmm1, xmm0
mulss xmm2, xmm1
mulss xmm3, xmm1
movss xmm0, dword [r15 - 4]
movzx r8d, cx
mov rax, qword [rbx + 0x48]
add r13w, r13w
mulss xmm2, xmm6
add r8w, r8w
mulss xmm3, xmm6
lea ecx, [r14 + r13]
subss xmm0, xmm2
lea edx, [r14 + r8]
movss dword [rax], xmm0
movss xmm1, dword [r15]
mov rax, qword [rbx + 0x48]
subss xmm1, xmm3
movss dword [rax + 4], xmm1
mov rax, qword [rbx + 0x48]
movss dword [rax + 8], xmm7
movss dword [rax + 0xc], xmm8
mov rax, qword [rbx + 0x48]
mov dword [rax + 0x10], r12d
addss xmm2, dword [r15 - 4]
mov rax, qword [rbx + 0x48]
movss dword [rax + 0x14], xmm2
addss xmm3, dword [r15]
mov rax, qword [rbx + 0x48]
add r15, 8
movss dword [rax + 0x18], xmm3
mov rax, qword [rbx + 0x48]
movss dword [rax + 0x1c], xmm7
movss dword [rax + 0x20], xmm8
mov rax, qword [rbx + 0x48]
mov dword [rax + 0x24], esi
mov rax, qword [rbx + 0x50]
add qword [rbx + 0x48], 0x28
mov word [rax], dx
mov rax, qword [rbx + 0x50]
mov word [rax + 2], cx
lea ecx, [r14 + 1]
mov rax, qword [rbx + 0x50]
add ecx, r13d
mov word [rax + 4], cx
mov rax, qword [rbx + 0x50]
mov word [rax + 6], cx
lea eax, [r14 + 1]
mov ecx, dword [rbp]
add r8w, ax
mov rax, qword [rbx + 0x50]
mov r13d, ecx
add ecx, r9d
mov dword [rbp], ecx
mov word [rax + 8], r8w
mov rax, qword [rbx + 0x50]
mov word [rax + 0xa], dx
add qword [rbx + 0x50], 0xc
cmp ecx, edi
jl 0x180028b14
mov r13d, dword [rbp + 8]
movzx eax, r13w
jmp 0x180028cf7
lea eax, [rdi - 2]
mov r8d, edi
lea edx, [rax + rax*2]
call fcn.180027848
mov rcx, rdi
mov r9d, 1
mov rax, qword [rbx + 0x48]
movsd xmm0, qword [rsi]
lea rsi, [rsi + 8]
movsd qword [rax], xmm0
mov rax, qword [rbx + 0x48]
movss dword [rax + 8], xmm7
movss dword [rax + 0xc], xmm8
mov rax, qword [rbx + 0x48]
mov dword [rax + 0x10], r12d
add qword [rbx + 0x48], 0x14
sub rcx, r9
jne 0x180028c83
lea r8d, [rcx + 2]
mov rcx, qword [rbx + 0x50]
movzx eax, word [rbx + 0x34]
mov word [rcx], ax
movzx ecx, r8w
add cx, word [rbx + 0x34]
mov rax, qword [rbx + 0x50]
sub cx, r9w
mov word [rax + 2], cx
movzx ecx, r8w
mov rax, qword [rbx + 0x50]
add r8d, r9d
add cx, word [rbx + 0x34]
mov word [rax + 4], cx
add qword [rbx + 0x50], 6
cmp r8d, edi
jl 0x180028cb8
movzx eax, di
add dword [rbx + 0x34], eax
mov rcx, qword [rbp + 0x10]
xor rcx, rbp
call fcn.18004b1c0
mov rbx, qword [rbp + 0x80]
mov rsi, qword [rbp + 0x88]
mov rdi, qword [rbp + 0x90]
movaps xmm6, xmmword [rbp + 0x40]
movaps xmm7, xmmword [rbp + 0x30]
movaps xmm8, xmmword [rbp + 0x20]
lea rsp, [rbp + 0x50]
pop r15
pop r14
pop r13
pop r12
pop rbp
ret