Function at 0x140028b00
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push rbx
sub rsp, 0x30
mov ecx, 0x988
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0xf0
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x560
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov byte [rsp + 0x40], 1
mov ecx, 0x86
movzx eax, byte [rsp + 0x40]
mov byte [rsp + 0x40], 0
movzx eax, byte [rsp + 0x40]
mov byte [rsp + 0x40], al
mov dword [rsp + 0x40], 0x118
mov eax, dword [rsp + 0x40]
cdq
sub eax, edx
sar eax, 1
lea eax, [rax*2 + 2]
mov dword [rsp + 0x40], eax
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov dword [rsp + 0x40], 0xa8
mov eax, 0x66666667
mov ecx, dword [rsp + 0x40]
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + rdx*4]
add eax, eax
sub ecx, eax
mov dword [rsp + 0x40], ecx
mov ecx, 0x28
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
movss xmm0, dword [0x14002db6c]
xor edx, edx
mov dword [rsp + 0x48], 0x3f
mov byte [rsp + 0x40], 0x18
movss dword [rsp + 0x20], xmm0
movd xmm1, dword [rsp + 0x48]
cvtdq2ps xmm1, xmm1
addss xmm1, dword [rsp + 0x20]
cvtps2pd xmm0, xmm1
movsd qword [rsp + 0x28], xmm0
movd xmm1, dword [rsp + 0x48]
cvtdq2pd xmm1, xmm1
mulsd xmm1, qword [rsp + 0x28]
cvttsd2si eax, xmm1
mov dword [rsp + 0x50], eax
movd xmm1, dword [rsp + 0x50]
movsd xmm0, qword [rsp + 0x28]
cvtdq2pd xmm1, xmm1
subsd xmm1, xmm0
cvttsd2si rax, xmm1
mov dword [rsp + 0x58], eax
mov eax, dword [rsp + 0x58]
mov ecx, dword [rsp + 0x48]
div ecx
mov word [rsp + 0x40], ax
movsx ecx, word [rsp + 0x40]
mov eax, dword [rsp + 0x58]
add eax, ecx
mov dword [rsp + 0x40], eax
mov ecx, dword [rsp + 0x40]
mov eax, dword [rsp + 0x50]
cmp ecx, eax
seta byte [rsp + 0x40]
movzx eax, byte [rsp + 0x40]
test al, al
mov eax, dword [rsp + 0x48]
jne 0x140028c41
mov eax, dword [rsp + 0x50]
mov dword [rsp + 0x40], eax
xor edx, edx
mov eax, dword [rsp + 0x40]
mov byte [rsp + 0x40], al
movsx eax, byte [rsp + 0x40]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
addss xmm0, dword [rsp + 0x20]
movss dword [rsp + 0x40], xmm0
movss xmm0, dword [rsp + 0x40]
cvtps2pd xmm1, xmm0
mulsd xmm1, qword [rsp + 0x28]
movsd qword [rsp + 0x48], xmm1
movsd xmm0, qword [rsp + 0x48]
cvttsd2si eax, xmm0
mov dword [rsp + 0x48], eax
movd xmm1, dword [rsp + 0x48]
movss xmm0, dword [rsp + 0x40]
cvtdq2ps xmm1, xmm1
subss xmm1, xmm0
cvttss2si rax, xmm1
mov dword [rsp + 0x50], eax
mov eax, dword [rsp + 0x50]
mov ecx, dword [rsp + 0x48]
div ecx
mov word [rsp + 0x40], ax
movsx ecx, word [rsp + 0x40]
mov eax, dword [rsp + 0x50]
add eax, ecx
mov dword [rsp + 0x50], eax
mov ecx, dword [rsp + 0x50]
mov eax, dword [rsp + 0x48]
cmp ecx, eax
seta byte [rsp + 0x40]
movzx eax, byte [rsp + 0x40]
test al, al
mov eax, dword [rsp + 0x48]
jne 0x140028ce4
mov eax, dword [rsp + 0x50]
movsd xmm0, qword [0x14002d520]
mov dword [rsp + 0x40], eax
mov eax, 0x66666667
mov ecx, dword [rsp + 0x40]
mov byte [rsp + 0x40], cl
mov dword [rsp + 0x40], 0x10b
mov ecx, dword [rsp + 0x40]
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + rdx*4]
add eax, eax
sub ecx, eax
mov dword [rsp + 0x40], ecx
mov ecx, 0x1f0
movsd qword [rsp + 0x40], xmm0
movsd xmm1, qword [rsp + 0x40]
divsd xmm1, qword [0x14002d4a8]
movsd qword [rsp + 0x40], xmm1
movsd xmm0, qword [rsp + 0x40]
movsd qword [rsp + 0x40], xmm0
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov dword [rsp + 0x40], 0xfa
mov eax, dword [rsp + 0x40]
xor eax, 0xff
mov dword [rsp + 0x40], eax
xor ebx, ebx
mov eax, dword [rsp + 0x40]
mov edx, ebx
mov dword [rsp + 0x40], eax
mov dword [rsp + 0x20], 0xc4
mov dword [rsp + 0x50], 1
mov dword [rsp + 0x40], ebx
mov dword [rsp + 0x58], ebx
mov dword [rsp + 0x48], 1
mov ecx, dword [rsp + 0x40]
mov eax, dword [rsp + 0x20]
nop word [rax + rax]
cmp edx, 7
jge 0x140028df0
mov eax, dword [rsp + 0x40]
cmp eax, 0x418937
jg 0x140028de8
mov ecx, dword [rsp + 0x48]
inc edx
mov eax, dword [rsp + 0x58]
add ecx, eax
mov dword [rsp + 0x40], ecx
mov eax, dword [rsp + 0x48]
mov dword [rsp + 0x58], eax
mov eax, dword [rsp + 0x40]
mov dword [rsp + 0x48], eax
mov eax, dword [rsp + 0x50]
inc eax
mov dword [rsp + 0x50], eax
mov ecx, dword [rsp + 0x40]
mov eax, dword [rsp + 0x20]
cmp ecx, eax
jne 0x140028da0
jmp 0x140028df0
mov dword [rsp + 0x40], 0xffffffff
mov eax, dword [rsp + 0x50]
mov ecx, 0x910
mov dword [rsp + 0x40], eax
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov dword [rsp + 0x40], 0x58
mov ecx, 0x130
mov dword [rsp + 0x48], 0xf8
movd xmm0, dword [rsp + 0x40]
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x14002d498]
divsd xmm0, qword [0x14002daa8]
mulsd xmm0, qword [0x14002d508]
movsd qword [rsp + 0x50], xmm0
movd xmm0, dword [rsp + 0x48]
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [rsp + 0x50]
movsd qword [rsp + 0x48], xmm0
movd xmm1, dword [rsp + 0x40]
cvtdq2pd xmm1, xmm1
addsd xmm1, qword [rsp + 0x48]
movsd qword [rsp + 0x40], xmm1
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov dword [rsp + 0x20], 0x108
mov dword [rsp + 0x50], 1
mov dword [rsp + 0x40], ebx
mov dword [rsp + 0x58], ebx
mov dword [rsp + 0x48], 1
mov ecx, dword [rsp + 0x40]
mov eax, dword [rsp + 0x20]
nop word [rax + rax]
cmp ebx, 7
jge 0x140028ef0
mov eax, dword [rsp + 0x40]
cmp eax, 0x418937
jg 0x140028ee8
mov ecx, dword [rsp + 0x48]
inc ebx
mov eax, dword [rsp + 0x58]
add ecx, eax
mov dword [rsp + 0x40], ecx
mov eax, dword [rsp + 0x48]
mov dword [rsp + 0x58], eax
mov eax, dword [rsp + 0x40]
mov dword [rsp + 0x48], eax
mov eax, dword [rsp + 0x50]
inc eax
mov dword [rsp + 0x50], eax
mov ecx, dword [rsp + 0x40]
mov eax, dword [rsp + 0x20]
cmp ecx, eax
jne 0x140028ea0
jmp 0x140028ef0
mov dword [rsp + 0x40], 0xffffffff
mov eax, dword [rsp + 0x50]
mov ecx, 0x200
mov dword [rsp + 0x40], eax
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x938
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov byte [rsp + 0x40], 1
mov ecx, 0x208
movzx eax, byte [rsp + 0x40]
mov byte [rsp + 0x40], 0
movzx eax, byte [rsp + 0x40]
mov byte [rsp + 0x40], al
mov dword [rsp + 0x40], 0xca
mov eax, dword [rsp + 0x40]
sub eax, 0x64
mov dword [rsp + 0x40], eax
mov eax, dword [rsp + 0x40]
mov dword [rsp + 0x40], eax
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x100
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x8a0
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x1f0
add rsp, 0x30
pop rbx
jmp qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]