Function at 0x4058a0
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x168
push ebx
push esi
push edi
mov dword [ebp - 0x24], ecx
lea edi, [ebp - 0x68]
push 9
pop ecx
mov esi, 0x42c45c
mov dword [ebp - 0x20], edx
rep movsd dword es:[edi], dword [esi]
push 7
pop ecx
mov esi, 0x42ce6c
mov dword [ebp - 0x18], 0x4a782484
lea edi, [ebp - 0x44]
mov dword [ebp - 0x14], 0x7fe9b773
rep movsd dword es:[edi], dword [esi]
xor ebx, ebx
mov dword [ebp - 0x10], 0xc7ca6666
mov dword [ebp - 0xc], 0x1e99880d
mov dword [ebp - 8], 0xadd43258
movsw word es:[edi], word [esi]
cmp byte [ebp - 0x44], 0x6f
mov dword [ebp - 4], 0x18c7cc6a
jne 0x40591a
mov al, 0x6f
test al, al
je 0x40591a
cmp byte [ebp + ebx - 0x44], 0
je 0x40591a
mov al, byte [ebx + 0x42d011]
inc ebx
cmp al, byte [ebp + ebx - 0x44]
je 0x405902
call fcn.004048d1
mov esi, dword [ebp - 0x20]
mov edi, dword [0x4340a4]
cmp esi, ebx
jae 0x405947
call fcn.004048d1
cmp esi, 0x1a37
jne 0x40593f
imul edi, edi, 0x3b5f088
call fcn.004045e1
inc esi
jmp 0x405928
and dword [ebp - 0x1c], 0
xor eax, eax
mov byte [ebp + eax - 0x168], al
inc eax
cmp eax, 0x100
jb 0x40594d
xor esi, esi
xor edx, edx
mov bl, byte [ebp + esi - 0x168]
push 0x23
mov eax, esi
or edi, 0x1ae293e1
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x68]
add eax, dword [ebp - 0x1c]
add ecx, eax
movzx ecx, cl
mov dword [ebp - 0x1c], ecx
mov al, byte [ebp + ecx - 0x168]
mov byte [ebp + esi - 0x168], al
inc esi
mov byte [ebp + ecx - 0x168], bl
cmp esi, 0x100
jb 0x40595e
mov dword [0x4340a4], edi
xor ebx, ebx
xor edi, edi
xor esi, esi
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x168]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x168]
mov byte [ebp + edi - 0x168], al
mov byte [ebp + ebx - 0x168], cl
movzx eax, byte [ebp + edi - 0x168]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x168]
xor al, byte [ebp + esi - 0x18]
mov byte [ebp + esi - 0x60], al
inc esi
cmp esi, 0x18
jb 0x4059b1
xor ebx, ebx
lea eax, [ebp - 0x1c]
push eax
push ebx
push ebx
push ebx
push dword [ebp + 8]
lea edx, [ebp - 0x60]
mov byte [ebp - 0x48], bl
push ebx
push 7
pop ecx
call fcn.0040a2e6
call eax
test eax, eax
jne 0x405a3f
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x24]
mov edx, dword [edx]
call fcn.0040b929
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x20]
mov edx, dword [edx + 4]
call fcn.0040b929
jmp 0x405b75
push 6
pop ecx
mov esi, 0x42c500
mov dword [ebp - 0x18], 0x89404343
lea edi, [ebp - 0x40]
mov dword [ebp - 0x14], 0xdb9de67f
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x10], 0x6dac6fce
mov eax, ebx
mov dword [ebp - 0xc], 0x425a5179
mov dword [ebp - 8], 0xb894398c
movsw word es:[edi], word [esi]
mov dword [ebp - 4], 0x4efdb24f
mov edi, ebx
mov byte [ebp + eax - 0x168], al
inc eax
cmp eax, 0x100
jb 0x405a7c
mov esi, ebx
xor edx, edx
mov bl, byte [ebp + esi - 0x168]
push 0x19
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x40]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x168]
mov byte [ebp + esi - 0x168], al
inc esi
mov byte [ebp + edi - 0x168], bl
cmp esi, 0x100
jb 0x405a8d
xor ebx, ebx
xor edi, edi
xor esi, esi
lea eax, [edi + 1]
xor dword [0x4340a4], 0x8438aaaa
movzx edi, al
mov cl, byte [ebp + edi - 0x168]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x168]
mov byte [ebp + edi - 0x168], al
mov byte [ebp + ebx - 0x168], cl
movzx eax, byte [ebp + edi - 0x168]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x168]
xor al, byte [ebp + esi - 0x18]
mov byte [ebp + esi - 0x40], al
inc esi
cmp esi, 0x18
jb 0x405ad0
lea ecx, [ebp - 0x40]
mov byte [ebp - 0x28], 0
call fcn.0040b628
mov esi, eax
mov ecx, esi
call fcn.0040b8f4
add eax, eax
push eax
push esi
push dword [ebp - 0x24]
call fcn.0040b543
mov ecx, esi
call fcn.0040b8f4
add eax, eax
push eax
push esi
push dword [ebp - 0x20]
call fcn.0040b543
mov ecx, esi
call fcn.0040b8f4
push eax
push 0
push esi
call fcn.0040b587
add esp, 0x24
mov ecx, esi
call fcn.0040a2d2
pop edi
pop esi
pop ebx
leave
ret