Function at 0x402890
Capabilities:
Encode data using xor
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, dword [ebp + 0x10]
mov cl, byte [eax]
mov dl, byte [eax + 1]
sub esp, 0xc
push ebx
push esi
xor esi, esi
cmp dword [ebp + 0xc], esi
push edi
jle 0x4029b3
movzx edi, cl
mov ecx, dword [0x407514]
movzx ebx, dl
jmp 0x4028c0
lea eax, [edi + 1]
cdq
mov edi, 0xcd
idiv edi
movzx edi, dl
movzx eax, byte [ecx + edi]
add ecx, edi
add eax, ebx
mov byte [esp + 0x12], dl
cdq
mov ebx, 0xcd
idiv ebx
mov eax, dword [0x407514]
movzx ebx, dl
add eax, ebx
mov byte [esp + 0x13], dl
mov dword [esp + 0x14], eax
call fcn.004029c0
movzx eax, byte [ecx]
mov ecx, dword [esp + 0x14]
movzx edx, byte [ecx]
add eax, edx
cdq
mov ecx, 0xcd
idiv ecx
mov eax, dword [sym.imp.MSVCP90.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov byte [esp + 0x11], dl
mov edx, dword [sym.imp.MSVCP90.dll_class_std::basic_ostream_char__struct_std::char_traits_char______cdecl_std::endl_class_std::basic_ostream_char__struct_std::char_traits_char____]
push edx
push ecx
push eax
call fcn.00403530
add esp, 8
mov ecx, eax
call dword [sym.imp.MSVCP90.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
mov ecx, dword [sym.imp.MSVCP90.dll_class_std::basic_ostream_char__struct_std::char_traits_char______cdecl_std::endl_class_std::basic_ostream_char__struct_std::char_traits_char____]
mov edx, dword [sym.imp.MSVCP90.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
push ecx
push ecx
push edx
call fcn.00403530
add esp, 8
mov ecx, eax
call dword [sym.imp.MSVCP90.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
mov eax, dword [sym.imp.MSVCP90.dll_class_std::basic_ostream_char__struct_std::char_traits_char______cdecl_std::endl_class_std::basic_ostream_char__struct_std::char_traits_char____]
push eax
push ecx
mov ecx, dword [sym.imp.MSVCP90.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
push ecx
call fcn.00403530
add esp, 8
mov ecx, eax
call dword [sym.imp.MSVCP90.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
mov edx, dword [sym.imp.MSVCP90.dll_class_std::basic_ostream_char__struct_std::char_traits_char______cdecl_std::endl_class_std::basic_ostream_char__struct_std::char_traits_char____]
mov eax, dword [sym.imp.MSVCP90.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
push edx
push ecx
push eax
call fcn.00403530
add esp, 8
mov ecx, eax
call dword [sym.imp.MSVCP90.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
movzx edx, byte [esp + 0x11]
mov ecx, dword [0x407514]
mov dl, byte [edx + ecx]
mov eax, dword [ebp + 8]
xor byte [esi + eax], dl
inc esi
cmp esi, dword [ebp + 0xc]
jl 0x4028c0
mov cl, byte [esp + 0x12]
mov eax, dword [ebp + 0x10]
mov dl, byte [esp + 0x13]
pop edi
pop esi
mov byte [eax + 1], dl
mov byte [eax], cl
pop ebx
mov esp, ebp
pop ebp
ret