Function at 0x408fb0
Capabilities:
Encode data using xor
Encrypt data using rc4 prga
Hash data with md5

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x424357
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x118
mov eax, dword [0x430040]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x18], esi
push dword [ebx + 8]
mov dword [ebp - 0x88], esi
lea ecx, [ebp - 0x80]
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x78], 0x67452301
mov dword [ebp - 0x74], 0xefcdab89
mov dword [ebp - 0x70], 0x98badcfe
mov dword [ebp - 0x6c], 0x10325476
call fcn.00408ed0
mov edx, dword [ebp - 0x80]
add esp, 4
mov ecx, dword [ebp - 0x7c]
mov eax, edx
shr eax, 8
mov byte [ebp - 0x1b], al
mov eax, edx
shr eax, 0x10
mov byte [ebp - 0x1a], al
mov eax, edx
shr eax, 0x18
mov byte [ebp - 0x19], al
mov eax, ecx
shr eax, 8
mov byte [ebp - 0x17], al
mov eax, ecx
shr eax, 0x10
mov byte [ebp - 0x16], al
mov eax, 0xfffffff7
mov byte [ebp - 0x1c], dl
shr edx, 3
sub eax, edx
mov byte [ebp - 0x18], cl
shr ecx, 0x18
and eax, 0x3f
inc eax
mov byte [ebp - 0x15], cl
push eax
mov edx, 0x42ce90
lea ecx, [ebp - 0x80]
call fcn.00408ed0
add esp, 4
lea edx, [ebp - 0x1c]
lea ecx, [ebp - 0x80]
push 8
call fcn.00408ed0
add esp, 4
xor eax, eax
nop dword [eax]
mov edx, eax
mov ecx, eax
and edx, 0xfffffffc
and ecx, 3
shl ecx, 3
mov edx, dword [ebp + edx - 0x78]
shr edx, cl
mov byte [ebp + eax - 0x24], dl
inc eax
cmp eax, 0x10
jl 0x4090b0
xorps xmm0, xmm0
movups xmmword [esi], xmm0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0xf
mov byte [esi], 0
push 0
push 0x21
mov dword [ebp - 4], 0
mov ecx, esi
push dword [ebp - 0x18]
mov dword [ebp - 0x8c], 1
push 0x21
call fcn.00407fa0
movzx eax, byte [ebp - 0x16]
xor edx, edx
cmp dword [0x4311cc], 2
mov dword [ebp - 0x90], eax
movzx eax, byte [ebp - 0x17]
mov dword [ebp - 0x94], eax
movzx eax, byte [ebp - 0x18]
movups xmm0, xmmword [0x42ce48]
mov dword [ebp - 0x98], eax
movzx eax, byte [ebp - 0x19]
mov dword [ebp - 0x9c], eax
movzx eax, byte [ebp - 0x1a]
mov dword [ebp - 0xa0], eax
movzx eax, byte [ebp - 0x1b]
mov dword [ebp - 0xa4], eax
movzx eax, byte [ebp - 0x1c]
movzx edi, byte [ebp - 0x15]
mov dword [ebp - 0xa8], eax
movzx eax, byte [ebp - 0x1d]
mov dword [ebp - 0xac], eax
movzx eax, byte [ebp - 0x1e]
mov dword [ebp - 0xb0], eax
movzx eax, byte [ebp - 0x1f]
mov dword [ebp - 0xb4], eax
movzx eax, byte [ebp - 0x20]
mov dword [ebp - 0xb8], eax
movzx eax, byte [ebp - 0x21]
movups xmmword [ebp - 0x108], xmm0
mov dword [ebp - 0xbc], eax
movups xmm0, xmmword [0x42ce58]
movzx eax, byte [ebp - 0x22]
mov dword [ebp - 0xc0], eax
movzx eax, byte [ebp - 0x23]
movups xmmword [ebp - 0xf8], xmm0
mov dword [ebp - 0x88], eax
movups xmm0, xmmword [0x42ce68]
movzx eax, byte [ebp - 0x24]
mov dword [ebp - 0x18], eax
mov al, byte [0x42ce88]
movups xmmword [ebp - 0xe8], xmm0
mov byte [ebp - 0xc8], al
movups xmm0, xmmword [0x42ce78]
mov dword [ebp - 0x84], edx
movups xmmword [ebp - 0xd8], xmm0
jl 0x409322
movaps xmm0, xmmword [0x42cf30]
movaps xmm4, xmmword [0x42cee0]
movaps xmm3, xmmword [0x42cf60]
movaps xmm5, xmmword [0x42cf00]
movaps xmm6, xmmword [0x42cf20]
movaps xmmword [ebp - 0x120], xmm0
mov ecx, dword [ebp - 0x120]
movd xmm0, edx
lea eax, [edx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, 4
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm5
psubd xmm2, xmm0
movd xmm0, ecx
andps xmm2, xmm6
packuswb xmm2, xmm2
packuswb xmm2, xmm2
paddb xmm2, xmm0
movd xmm0, dword [ebp + edx - 0x108]
xorps xmm2, xmm0
movd xmm0, eax
movd dword [ebp + edx - 0x108], xmm2
pshufd xmm2, xmm0, 0
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, 4
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm5
psubd xmm2, xmm0
movd xmm0, ecx
andps xmm2, xmm6
packuswb xmm2, xmm2
packuswb xmm2, xmm2
paddb xmm2, xmm0
movd xmm0, dword [ebp + edx - 0x104]
xorps xmm2, xmm0
movd dword [ebp + edx - 0x104], xmm2
add edx, 8
cmp edx, 0x40
jl 0x409232
mov dword [ebp - 0x84], edx
cmp edx, 0x41
jge 0x409359
mov eax, 0x5397829d
imul edx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0x84]
movsx eax, al
mov cl, dl
imul eax, eax, 0x31
sub cl, al
add cl, 0x34
xor byte [ebp + edx - 0x108], cl
inc edx
mov dword [ebp - 0x84], edx
cmp edx, 0x41
jl 0x409322
cmp dword [esi + 0x14], 0xf
mov eax, esi
jbe 0x409363
mov eax, dword [esi]
push edi
push dword [ebp - 0x90]
lea ecx, [ebp - 0x108]
push dword [ebp - 0x94]
push dword [ebp - 0x98]
push dword [ebp - 0x9c]
push dword [ebp - 0xa0]
push dword [ebp - 0xa4]
push dword [ebp - 0xa8]
push dword [ebp - 0xac]
push dword [ebp - 0xb0]
push dword [ebp - 0xb4]
push dword [ebp - 0xb8]
push dword [ebp - 0xbc]
push dword [ebp - 0xc0]
push dword [ebp - 0x88]
push dword [ebp - 0x18]
push ecx
push dword [esi + 0x10]
push eax
call fcn.004086e0
add esp, 0x4c
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0040a32b
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret