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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 0xc], edx
mov eax, edi
movzx esi, byte [eax]
inc eax
cmp byte [esi + str.________________________________________________456789:_________], 0x3f
jbe 0x401170
sub eax, edi
add eax, 2
cdq
and edx, 3
add eax, edx
sar eax, 2
lea eax, [eax + eax*2]
inc eax
push eax
call fcn.00408644
mov esi, eax
add esp, 4
mov dword [ebp - 8], esi
mov ecx, edi
nop
movzx edx, byte [ecx]
inc ecx
cmp byte [edx + str.________________________________________________456789:_________], 0x3f
jbe 0x4011a0
sub ecx, edi
dec ecx
lea eax, [ecx + 3]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea ebx, [eax + eax*2]
mov dword [ebp - 4], ebx
cmp ecx, 4
jle 0x401249
lea eax, [ecx - 5]
shr eax, 2
inc eax
mov dword [ebp - 0x10], eax
neg eax
mov ebx, dword [ebp - 0x10]
lea ecx, [ecx + eax*4]
nop dword [eax]
movzx eax, byte [edi]
movzx edx, byte [eax + str.________________________________________________456789:_________]
movzx eax, byte [edi + 1]
shl dl, 2
movzx eax, byte [eax + str.________________________________________________456789:_________]
shr al, 4
or dl, al
mov byte [esi], dl
movzx eax, byte [edi + 2]
movzx edx, byte [eax + str.________________________________________________456789:_________]
movzx eax, byte [edi + 1]
shr dl, 2
movzx eax, byte [eax + str.________________________________________________456789:_________]
shl al, 4
or dl, al
mov byte [esi + 1], dl
movzx eax, byte [edi + 2]
movzx edx, byte [edi + 3]
add edi, 4
movzx eax, byte [eax + str.________________________________________________456789:_________]
shl al, 6
or al, byte [edx + str.________________________________________________456789:_________]
mov byte [esi + 2], al
add esi, 3
sub ebx, 1
jne 0x4011e0
mov ebx, dword [ebp - 4]
cmp ecx, 1
jle 0x4012af
movzx eax, byte [edi + 1]
mov dl, byte [eax + str.________________________________________________456789:_________]
movzx eax, byte [edi]
shr dl, 4
mov al, byte [eax + str.________________________________________________456789:_________]
shl al, 2
or dl, al
mov byte [esi], dl
inc esi
cmp ecx, 2
jle 0x4012af
movzx eax, byte [edi + 2]
mov dl, byte [eax + str.________________________________________________456789:_________]
movzx eax, byte [edi + 1]
shr dl, 2
mov al, byte [eax + str.________________________________________________456789:_________]
shl al, 4
or dl, al
mov byte [esi], dl
inc esi
cmp ecx, 3
jle 0x4012af
movzx eax, byte [edi + 2]
mov dl, byte [eax + str.________________________________________________456789:_________]
movzx eax, byte [edi + 3]
shl dl, 6
or dl, byte [eax + str.________________________________________________456789:_________]
mov byte [esi], dl
inc esi
neg ecx
mov byte [esi], 0
mov esi, dword [ebp - 0xc]
and ecx, 3
sub ebx, ecx
mov dword [ebp - 4], ebx
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x4012c2
lea eax, [ebx + 1]
sub esi, ecx
push eax
call fcn.00408644
mov ebx, eax
add esp, 4
mov eax, dword [ebp - 4]
xor edi, edi
test eax, eax
jle 0x401303
sub dword [ebp - 8], ebx
mov eax, edi
lea ecx, [edi + ebx]
cdq
inc edi
idiv esi
mov eax, dword [ebp - 0xc]
mov al, byte [edx + eax]
mov edx, dword [ebp - 8]
xor al, byte [edx + ecx]
mov byte [ecx], al
mov eax, dword [ebp - 4]
cmp edi, eax
jl 0x4012e5
pop edi
mov byte [ebx + eax], 0
mov eax, ebx
pop esi
pop ebx
mov esp, ebp
pop ebp
ret