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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x154
push ebx
push esi
xor edx, edx
mov dword [ebp - 0x20], 0x34
push 5
mov ecx, 0x1b0
mov dword [ebp - 0x1c], 0x4e
mov dword [ebp - 0x18], 1
mov eax, edx
mov dword [ebp - 0x14], 0x24
mov dword [ebp - 0x10], 0xd9
pop ebx
sub ecx, dword [ebp + eax*4 - 0x20]
inc eax
cmp eax, ebx
jl 0x40cf08
mov eax, dword [0x401a80]
mov dword [ebp - 8], eax
mov ax, word [0x401a84]
push edi
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x24], 0xf4d21ddc
mov dword [ebp - 0x20], 0x69b8ef9d
mov dword [ebp - 0x1c], 0x516f772f
mov dword [ebp - 0x18], 0xbd8baa3a
mov dword [ebp - 0x14], 0x6cfc4b66
mov dword [ebp - 0x10], 0xc64ed3ca
mov word [ebp - 4], ax
mov eax, dword [0x44a2f8]
mov edi, edx
add eax, 0x2b1c1fe4
mov dword [0x44a314], eax
mov eax, edx
mov byte [ebp + eax - 0x154], al
inc eax
cmp eax, 0x100
jb 0x40cf64
mov esi, edx
xor edx, edx
mov bl, byte [ebp + esi - 0x154]
push 5
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 8]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x154]
mov byte [ebp + esi - 0x154], al
inc esi
mov byte [ebp + edi - 0x154], bl
cmp esi, 0x100
jb 0x40cf75
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x154]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x154]
mov byte [ebp + edi - 0x154], al
mov byte [ebp + ebx - 0x154], cl
movzx eax, byte [ebp + edi - 0x154]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x154]
xor al, byte [ebp + esi - 0x24]
mov byte [ebp + esi - 0x54], al
inc esi
cmp esi, 0x18
jb 0x40cfba
push 8
pop ecx
mov esi, 0x401a88
mov dword [ebp - 8], 0xe3b3639a
lea edi, [ebp - 0x2c]
mov word [ebp - 4], 0xa63
rep movsd dword es:[edi], dword [esi]
xor edx, edx
mov byte [ebp - 0x3c], dl
mov eax, edx
movsw word es:[edi], word [esi]
mov edi, edx
mov byte [ebp + eax - 0x154], al
inc eax
cmp eax, 0x100
jb 0x40d02c
mov esi, edx
xor edx, edx
mov bl, byte [ebp + esi - 0x154]
push 0x21
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x2c]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x154]
mov byte [ebp + esi - 0x154], al
inc esi
mov byte [ebp + edi - 0x154], bl
cmp esi, 0x100
jb 0x40d03d
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x154]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x154]
mov byte [ebp + edi - 0x154], al
mov byte [ebp + ebx - 0x154], cl
movzx eax, byte [ebp + edi - 0x154]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x154]
xor al, byte [ebp + esi - 8]
mov byte [ebp + esi - 0x38], al
inc esi
cmp esi, 6
jb 0x40d082
mov ecx, dword [ebp - 0x30]
xor ebx, ebx
mov esi, dword [ebp + 8]
mov dword [ebp - 0x1c], 0x10
mov dword [ebp - 0x18], 9
mov ecx, dword fs:[ecx]
mov dword [ebp - 0x14], 0x54
mov dword [ebp - 0x10], 0xffffff31
movups xmm1, xmmword [ebp - 0x1c]
mov byte [ebp - 0x32], bl
mov eax, dword [ecx + 0xa4]
movaps xmm0, xmm1
mov dword [esi], eax
mov eax, dword [ecx + 0xa8]
psrldq xmm0, 8
paddd xmm1, xmm0
mov dword [esi + 4], eax
movzx eax, word [ecx + 0xac]
movups xmm0, xmm1
psrldq xmm0, 4
mov ecx, ebx
paddd xmm1, xmm0
mov dword [esi + 8], eax
movd edx, xmm1
mov eax, 0x401dd0
pop edi
add edx, 0x63
inc ecx
lea eax, [eax + 2]
cmp ecx, 0x5c4
je 0x40d152
cmp word [eax], bx
jne 0x40d13f
jmp 0x40d161
mov eax, dword [0x44a314]
or eax, 0xd27f37b2
mov dword [0x44a2f8], eax
mov eax, dword [0x44a2d0]
xor eax, 0xa682e9c7
mov dword [0x44a36c], eax
xor eax, 0x450d4bea
lea ecx, [ebp - 0x38]
mov dword [0x44a2d0], eax
neg edx
lea eax, [esi + 0xc]
push eax
push edx
call fcn.0041d4e5
mov edx, eax
lea ecx, [ebp - 0x54]
call fcn.0041d4c4
call eax
mov eax, esi
pop esi
pop ebx
leave
ret