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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
mov eax, dword [0x4ff94c]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x10]
push ebx
push esi
xor ebx, ebx
push edi
push 0x82
push ebx
push 0x509ff8
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x54], ebx
mov dword [ebp - 0x50], ebx
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x4c], ebx
call sub.MSVCR100.dll_memset
mov edx, dword [ebp + 8]
mov word [0x509ff8], 0x1c04
mov cl, byte [edx]
add esp, 0xc
mov eax, 0x509ffa
cmp cl, bl
je 0x42080b
sub edx, eax
lea esp, [esp]
mov byte [eax], cl
mov cl, byte [edx + eax + 1]
inc eax
cmp cl, bl
jne 0x420800
cmp eax, 0x50a078
jae 0x420831
mov ecx, 0x509ff8
sub ecx, eax
lea esp, [esp]
mov dl, byte [ecx + eax]
xor dl, byte [eax - 1]
inc eax
mov byte [eax - 1], dl
cmp eax, 0x50a078
jb 0x420820
xor eax, eax
xor ecx, ecx
mov word [0x50a168], ax
lea ebx, [eax + 5]
mov word [0x50a100], cx
lea eax, [ecx + 0x1a]
mov ecx, 0x50a0cc
call fcn.00420770
mov ebx, 4
lea eax, [ebx + 0x15]
mov ecx, 0x50a104
call fcn.00420770
mov ebx, 3
lea eax, [ebx + 0x14]
mov ecx, 0x50a138
call fcn.00420770
mov ebx, 2
lea eax, [ebx + 0x13]
mov ecx, 0x50a0a0
call fcn.00420770
mov ebx, 1
lea eax, [ebx + 0x12]
mov ecx, 0x50a16c
call fcn.00420770
xor ebx, ebx
lea eax, [ebx + 0x11]
mov ecx, 0x50a07c
call fcn.00420770
mov ebx, 0x509ff8
mov ecx, 0x1b
lea esi, [ebp - 0x3c]
movzx eax, byte [ebx]
cdq
mov edi, 0x1c
idiv edi
dec ecx
add esi, 2
inc ebx
mov dx, word [edx*2 + 0x4f87fc]
mov word [esi - 2], dx
test cx, cx
jne 0x4208b6
mov eax, dword [ebp + 0xc]
movzx edi, byte [eax]
test di, di
je 0x420a4c
mov ebx, dword [ebp - 0x54]
lea esp, [esp]
movsx edx, word [ebp - 0x4c]
mov dx, word [edx*2 + 0x50a07c]
movsx eax, word [ebp - 0x48]
add dx, word [eax*2 + 0x50a16c]
movsx eax, word [ebp - 0x44]
add dx, word [eax*2 + 0x50a0a0]
mov ecx, dword [ebp - 0x58]
inc dword [ebp + 0xc]
movsx eax, cx
add dx, word [eax*2 + 0x50a138]
mov eax, dword [ebp - 0x50]
movsx esi, ax
add dx, word [esi*2 + 0x50a104]
movsx esi, bx
add dx, word [esi*2 + 0x50a0cc]
inc ebx
movzx edx, dx
mov dword [ebp - 0x54], edx
xor edx, edx
cmp bx, 0x1a
jl 0x42094f
xor ebx, ebx
inc eax
mov dword [ebp - 0x50], eax
cmp ax, 0x19
jl 0x42095c
mov dword [ebp - 0x50], edx
inc ecx
mov dword [ebp - 0x58], ecx
cmp cx, 0x17
jl 0x420969
mov dword [ebp - 0x58], edx
mov eax, dword [ebp - 0x44]
inc eax
mov dword [ebp - 0x44], eax
cmp ax, 0x15
jl 0x420979
mov dword [ebp - 0x44], edx
mov eax, dword [ebp - 0x48]
inc eax
mov dword [ebp - 0x48], eax
cmp ax, 0x13
jl 0x420989
mov dword [ebp - 0x48], edx
mov eax, dword [ebp - 0x4c]
inc eax
mov dword [ebp - 0x4c], eax
cmp ax, 0x11
jl 0x420999
mov dword [ebp - 0x4c], edx
lea esi, [ebp - 0x3c]
mov eax, 0x1a
mov cx, word [esi]
add esi, 2
and cx, word [ebp - 0x54]
je 0x4209b4
mov ecx, 1
jmp 0x4209b6
xor ecx, ecx
dec eax
add edx, ecx
test ax, ax
jns 0x4209a1
cmp di, 0xa
je 0x420a1d
cmp di, 0x20
je 0x420a1d
cmp di, 9
je 0x420a1d
movsx eax, dx
cdq
mov ecx, 0x1a
idiv ecx
sub edx, edi
sub edx, 0x25
and edx, 0xff
cmp dx, 0x61
jl 0x4209fa
cmp dx, 0x7a
jg 0x420a00
cmp di, 0x7a
jle 0x4209fa
add edx, ecx
cmp dx, 0x7a
jle 0x420a0b
lea eax, [edi - 0x61]
cmp ax, 0x19
ja 0x420a0b
sub edx, ecx
cmp dx, 0xa
je 0x420a1d
cmp dx, 0x20
je 0x420a1d
cmp dx, 9
jne 0x420a20
movzx edx, di
mov eax, dword [ebp - 0x40]
mov ecx, dword [ebp + 0xc]
mov byte [eax], dl
movzx edi, byte [ecx]
inc eax
mov dword [ebp - 0x40], eax
test di, di
jne 0x4208f0
pop edi
pop esi
mov byte [eax], 0
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004b7f56
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x40]
mov byte [ecx], 0
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004b7f56
mov esp, ebp
pop ebp
ret