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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x184
mov eax, dword [0x44d4a0]
push ebx
push esi
push edi
mov esi, 0x401680
mov dword [ebp - 0x3c], ecx
lea edi, [ebp - 0x4c]
mov dword [ebp - 0x40], edx
or eax, 0xa4608cf0
mov dword [ebp - 0x18], 0xa9dbedb4
mov dword [ebp - 0x38], eax
xor eax, eax
movsd dword es:[edi], dword [esi]
mov ecx, eax
mov dword [ebp - 0x14], 0x11e7149c
mov dword [ebp - 0x10], 0xf4b54fce
mov dword [ebp - 0xc], 0x6b3cd5bc
movsd dword es:[edi], dword [esi]
mov dword [ebp - 8], 0xee892e4c
mov dword [ebp - 4], 0x523639d7
movsd dword es:[edi], dword [esi]
mov edi, eax
mov byte [ebp + ecx - 0x14c], cl
inc ecx
cmp ecx, 0x100
jb 0x40e804
mov esi, eax
xor edx, edx
mov bl, byte [ebp + esi - 0x14c]
push 0xb
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x4c]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x14c]
mov byte [ebp + esi - 0x14c], al
inc esi
mov byte [ebp + edi - 0x14c], bl
cmp esi, 0x100
jb 0x40e816
xor ebx, ebx
mov edi, ebx
mov esi, ebx
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x14c]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x14c]
mov byte [ebp + edi - 0x14c], al
mov byte [ebp + ebx - 0x14c], cl
movzx eax, byte [ebp + edi - 0x14c]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x14c]
xor al, byte [ebp + esi - 0x18]
mov byte [ebp + esi - 0x168], al
inc esi
cmp esi, 0x18
jb 0x40e859
mov esi, 0x40168c
mov dword [ebp - 8], 0x34a1adb
lea edi, [ebp - 0x4c]
mov word [ebp - 4], 0xabc8
xor ebx, ebx
mov byte [ebp - 0x150], bl
mov eax, ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov edi, ebx
mov byte [ebp + eax - 0x14c], al
inc eax
cmp eax, 0x100
jb 0x40e8ce
mov esi, ebx
xor edx, edx
mov bl, byte [ebp + esi - 0x14c]
push 9
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x4c]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x14c]
mov byte [ebp + esi - 0x14c], al
inc esi
mov byte [ebp + edi - 0x14c], bl
cmp esi, 0x100
jb 0x40e8df
mov eax, dword [ebp - 0x38]
xor ebx, ebx
or eax, 0x5f1f55c5
mov edi, ebx
mov dword [0x44d4a0], eax
mov esi, ebx
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x14c]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x14c]
mov byte [ebp + edi - 0x14c], al
mov byte [ebp + ebx - 0x14c], cl
movzx eax, byte [ebp + edi - 0x14c]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x14c]
xor al, byte [ebp + esi - 8]
mov byte [ebp + esi - 0x48], al
inc esi
cmp esi, 6
jb 0x40e92f
xor ebx, ebx
mov dword [ebp - 0x14], 0xa
mov byte [ebp - 0x42], bl
mov edx, ebx
mov dword [ebp - 0x10], 0xf
mov eax, ebx
mov dword [ebp - 0xc], 0x10
mov dword [ebp - 8], 0x5f
mov dword [ebp - 4], 0xffffff78
sub edx, dword [ebp + eax*4 - 0x14]
inc eax
cmp eax, 5
jl 0x40e9a8
push 0x27
pop esi
mov dword [ebp - 8], 0x38
mov eax, ebx
mov dword [ebp - 4], 0xffffffa1
add esi, dword [ebp + eax*4 - 8]
inc eax
cmp eax, 2
jl 0x40e9c5
push 3
mov ecx, ebx
mov dword [ebp - 0xc], 0x22
mov dword [ebp - 8], 0x4f
mov eax, ebx
mov dword [ebp - 4], 0xffffff8f
pop edi
sub ecx, dword [ebp + eax*4 - 0xc]
inc eax
cmp eax, edi
jl 0x40e9eb
mov dword [ebp - 0xc], edi
xorps xmm1, xmm1
mov dword [ebp - 0x10], 0x18
lea edi, [ebp - 0x1c]
mov dword [ebp - 8], 0xc
mov dword [ebp - 4], 0xffffffd9
movups xmm0, xmmword [ebp - 0x10]
push edi
psubd xmm1, xmm0
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
push eax
push ecx
push esi
push dword [ebp + 8]
lea ecx, [ebp - 0x48]
push edx
call fcn.0041e657
mov edx, eax
lea ecx, [ebp - 0x168]
call fcn.0041e636
call eax
test eax, eax
jne 0x40ea79
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x3c]
mov edx, dword [edx]
call fcn.00436ba5
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x40]
mov edx, dword [edx + 4]
call fcn.00436ba5
jmp 0x40ec8b
push 5
pop ecx
mov esi, 0x401698
mov dword [ebp - 0x34], 0x83b08676
lea edi, [ebp - 0x18]
mov dword [ebp - 0x30], 0xe2aceef3
rep movsd dword es:[edi], dword [esi]
push 0x72
mov dword [ebp - 0x2c], 0xdf59d107
mov ecx, 0x1b1d
mov dword [ebp - 0x28], 0x5b1d9a22
mov eax, 0x401960
movsw word es:[edi], word [esi]
mov dword [ebp - 0x24], 0x7dd55d59
mov dword [ebp - 0x20], 0x96f0633e
pop edx
movsb byte es:[edi], byte [esi]
mov esi, dword [0x44d4a0]
add esi, 0x964fd5a
and esi, 0x3eae1be3
add ecx, edx
lea eax, [eax + 2]
cmp ecx, 0x27c
ja 0x40eae8
movzx edx, word [eax]
test edx, edx
jne 0x40ead2
jmp 0x40eaf3
call fcn.0040cc68
sub esi, 0x14b8acf8
and esi, 0x87b1682c
mov edi, ebx
add esi, 0x1454b7f9
mov eax, ebx
mov dword [0x44d4a0], esi
mov byte [ebp + eax - 0x14c], al
inc eax
cmp eax, 0x100
jb 0x40eb09
mov esi, ebx
xor edx, edx
mov bl, byte [ebp + esi - 0x14c]
push 0x16
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x18]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x14c]
mov byte [ebp + esi - 0x14c], al
inc esi
mov byte [ebp + edi - 0x14c], bl
cmp esi, 0x100
jb 0x40eb1a
xor ebx, ebx
mov edi, ebx
mov esi, ebx
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x14c]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x14c]
mov byte [ebp + edi - 0x14c], al
mov byte [ebp + ebx - 0x14c], cl
movzx eax, byte [ebp + edi - 0x14c]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x14c]
xor al, byte [ebp + esi - 0x34]
mov byte [ebp + esi - 0x184], al
inc esi
cmp esi, 0x18
jb 0x40eb5d
xor ebx, ebx
mov dword [ebp - 8], 0x12
push 0x27
mov byte [ebp - 0x16c], bl
mov eax, ebx
mov dword [ebp - 4], 0xffffffc7
pop edi
add edi, dword [ebp + eax*4 - 8]
inc eax
cmp eax, 2
jl 0x40ebc8
lea ecx, [ebp - 0x184]
call fcn.004361ab
imul ecx, dword [0x44d4a0], 0x7583babc
mov esi, eax
mov dword [0x44d4a0], ecx
mov ecx, esi
call fcn.004369fb
add eax, eax
push eax
push esi
push dword [ebp - 0x3c]
call fcn.00436044
mov ecx, esi
call fcn.004369fb
add eax, eax
push eax
push esi
push dword [ebp - 0x40]
call fcn.00436044
add esp, 0x18
cmp byte [0x44d488], bl
je 0x40ec58
inc ebx
cmp ebx, 0x23ef
je 0x40ec41
cmp byte [ebx + 0x44d488], 0
jne 0x40ec20
cmp ebx, 0x212f
jle 0x40ec58
mov eax, dword [0x44d4a0]
jmp 0x40ec50
call fcn.0040cdc3
mov eax, dword [0x44d4a0]
add eax, 0x7cfc08d
imul eax, eax, 0x6810b0b4
jmp 0x40ec62
imul eax, dword [0x44d4a0], 0x72ae66a4
imul eax, eax, 0x7915bc8e
mov dword [0x44d4a0], eax
call fcn.0040cc68
mov ecx, esi
call fcn.004369fb
push eax
push edi
push esi
call fcn.004360de
add esp, 0xc
mov ecx, esi
call fcn.0041e600
pop edi
pop esi
pop ebx
leave
ret