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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1a0
push ebx
push esi
push edi
mov esi, 0x401c14
mov dword [ebp - 0x38], edx
lea edi, [ebp - 0x44]
mov dword [ebp - 0x34], ecx
xor ebx, ebx
mov dword [ebp - 0x24], 0x66ae9a49
mov dword [ebp - 0x20], 0xe0b56997
mov edx, ebx
movsd dword es:[edi], dword [esi]
mov eax, ebx
mov dword [ebp - 0x1c], 0x361bc5ee
mov dword [ebp - 0x18], 0x9c898f20
mov dword [ebp - 0x14], 0xb6296c1f
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x10], 0xd6d47ede
movsb byte es:[edi], byte [esi]
mov byte [ebp + eax - 0x148], al
inc eax
cmp eax, 0x100
jb 0x40e783
mov esi, dword [0x44a374]
mov edi, ebx
mov cl, byte [ebp + edi - 0x148]
mov eax, edi
and eax, 7
mov byte [ebp - 1], cl
movzx ecx, cl
mov dword [ebp - 8], 0x23be
movzx eax, byte [ebp + eax - 0x44]
add eax, edx
add ecx, eax
movzx eax, cl
movzx ecx, byte [0x44a30c]
mov dword [ebp - 0xc], eax
mov eax, 0x44a30c
mov edx, ecx
test ecx, ecx
je 0x40e7f0
add dword [ebp - 8], edx
inc eax
cmp dword [ebp - 8], 0x1980
ja 0x40e7ea
movzx edx, byte [eax]
test edx, edx
jne 0x40e7d4
jmp 0x40e7f0
or esi, 0x19fb6113
mov eax, dword [ebp - 0xc]
mov edx, 0x2672
imul esi, esi, 0xaa206a00
mov al, byte [ebp + eax - 0x148]
mov byte [ebp + edi - 0x148], al
mov eax, 0x44a30c
and esi, 0x93260958
jmp 0x40e82b
add edx, ecx
inc eax
cmp edx, 0x2693
ja 0x40ea73
movzx ecx, byte [eax]
test ecx, ecx
jne 0x40e819
imul esi, esi, 0x96ec9003
or esi, 0x43d70395
push ecx
mov edx, esi
call fcn.0040cec2
mov edx, dword [ebp - 0xc]
add esp, 4
mov al, byte [ebp - 1]
inc edi
mov byte [ebp + edx - 0x148], al
cmp edi, 0x100
jb 0x40e79a
mov dword [ebp - 8], ebx
mov edi, ebx
lea eax, [ebx + 1]
xor esi, 0x70eb21e9
movzx ebx, al
add esi, 0xee09756e
mov eax, dword [ebp - 8]
mov cl, byte [ebp + ebx - 0x148]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 8], eax
mov al, byte [ebp + eax - 0x148]
mov byte [ebp + ebx - 0x148], al
mov eax, dword [ebp - 8]
mov byte [ebp + eax - 0x148], cl
movzx eax, byte [ebp + ebx - 0x148]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x148]
xor al, byte [ebp + edi - 0x24]
mov byte [ebp + edi - 0x164], al
inc edi
cmp edi, 0x18
jb 0x40e865
mov dword [ebp - 8], esi
lea edi, [ebp - 0x1c]
mov esi, 0x401c20
mov dword [ebp - 0x2c], 0x7e4df8f6
xor ebx, ebx
mov word [ebp - 0x28], 0x1784
mov byte [ebp - 0x14c], bl
mov eax, ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov edi, ebx
mov byte [ebp + eax - 0x148], al
inc eax
cmp eax, 0x100
jb 0x40e8f1
push 0xf
mov esi, ebx
pop ecx
xor edx, edx
mov bl, byte [ebp + esi - 0x148]
mov eax, esi
div ecx
movzx ecx, bl
push 0xf
movzx eax, byte [ebp + edx - 0x1c]
add eax, edi
add ecx, eax
movzx edi, cl
pop ecx
mov al, byte [ebp + edi - 0x148]
mov byte [ebp + esi - 0x148], al
inc esi
mov byte [ebp + edi - 0x148], bl
cmp esi, 0x100
jb 0x40e905
xor ebx, ebx
mov edi, ebx
mov esi, ebx
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x148]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x148]
mov byte [ebp + edi - 0x148], al
mov byte [ebp + ebx - 0x148], cl
movzx eax, byte [ebp + edi - 0x148]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x148]
xor al, byte [ebp + esi - 0x2c]
mov byte [ebp + esi - 0x44], al
inc esi
cmp esi, 6
jb 0x40e948
mov ecx, dword [ebp - 8]
xor ebx, ebx
push 0x59
mov byte [ebp - 0x3e], bl
sub ecx, 0xe2533f1
pop edx
mov dword [ebp - 0x30], 4
mov eax, ebx
mov dword [ebp - 0x2c], 0x27
mov dword [ebp - 0x28], 0xffffff7c
add edx, dword [ebp + eax*4 - 0x30]
inc eax
cmp eax, 3
jl 0x40e9bd
push 7
mov dword [ebp - 0x28], edx
mov eax, ebx
pop edx
mov dword [ebp - 0x18], 2
mov dword [ebp - 0x14], 0x63
mov dword [ebp - 0x10], 0xffffff94
add edx, dword [ebp + eax*4 - 0x18]
inc eax
cmp eax, 3
jl 0x40e9e4
mov dword [ebp - 0x1c], 0x36
mov dword [ebp - 0x18], 0x2c
mov dword [ebp - 0x14], 5
mov dword [ebp - 0x10], 0xffffff76
movups xmm1, xmmword [ebp - 0x1c]
push 0x41
mov dword [ebp - 0x48], edx
mov edx, ebx
movaps xmm0, xmm1
mov dword [ebp - 0x1c], 0x3a
psrldq xmm0, 8
paddd xmm1, xmm0
mov dword [ebp - 0x14], 0x47
movups xmm0, xmm1
mov dword [ebp - 0x10], 0xfffffefd
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
add eax, 0x23
mov dword [ebp - 8], eax
pop eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x18], eax
push 0x6e
mov esi, 0x401df0
pop edi
lea eax, [edi - 0x30]
cmp ax, 9
ja 0x40ea89
add esi, 2
movzx eax, word [esi]
mov edi, eax
test ax, ax
jne 0x40ea5b
jmp 0x40ea8f
call fcn.0040cdc6
xor esi, 0x6eb63ffe
add esi, 0xdc8743d5
jmp 0x40e835
and ecx, 0x36ac51f3
mov eax, dword [ebp - 0xc]
sub ecx, 0x20ac25b4
add eax, dword [ebp + edx*4 - 0x1c]
inc edx
mov dword [ebp - 0xc], eax
cmp edx, 4
jl 0x40ea53
mov dword [0x44a374], ecx
lea ecx, [ebp - 0xc]
push ecx
push eax
push dword [ebp - 8]
lea ecx, [ebp - 0x44]
push dword [ebp - 0x48]
push dword [ebp + 8]
push dword [ebp - 0x28]
call fcn.0041d4e5
mov edx, eax
lea ecx, [ebp - 0x164]
call fcn.0041d4c4
call eax
test eax, eax
jne 0x40eaf7
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x34]
mov edx, dword [edx]
call fcn.00434a4c
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x38]
mov edx, dword [edx + 4]
call fcn.00434a4c
jmp 0x40eccc
push 7
pop ecx
mov esi, 0x401c30
mov dword [ebp - 0x24], 0xd3736c60
lea edi, [ebp - 0x1a0]
mov dword [ebp - 0x20], 0xd0f09ce1
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x1c], 0x32404869
mov eax, ebx
mov dword [ebp - 0x18], 0xf1f6bf3
mov dword [ebp - 0x14], 0x9db391d7
movsw word es:[edi], word [esi]
mov dword [ebp - 0x10], 0x11c9c245
mov edi, ebx
mov byte [ebp + eax - 0x148], al
inc eax
cmp eax, 0x100
jb 0x40eb37
mov esi, ebx
xor edx, edx
mov bl, byte [ebp + esi - 0x148]
push 0x1d
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x1a0]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x148]
mov byte [ebp + esi - 0x148], al
inc esi
mov byte [ebp + edi - 0x148], bl
cmp esi, 0x100
jb 0x40eb48
mov esi, dword [0x44a374]
xor edx, edx
mov ecx, edx
mov edi, edx
and esi, 0xb3b5d140
mov ebx, edx
lea eax, [edi + 1]
movzx edi, al
mov al, byte [ebp + edi - 0x148]
mov byte [ebp - 1], al
movzx eax, al
add eax, ecx
mov ecx, 0x401f50
movzx eax, al
mov dword [ebp - 8], eax
mov eax, edx
add ecx, 2
inc eax
cmp eax, 0x2589
jg 0x40ebdd
cmp word [ecx], dx
jne 0x40ebbe
cmp eax, 0x1bcc
jg 0x40ebf0
or esi, 0x87c0ca00
jmp 0x40ebf6
push ecx
mov edx, esi
call fcn.0040cec2
add esp, 4
or esi, 0xb9740347
xor edx, edx
or esi, 0xa93c47f4
mov ecx, dword [ebp - 8]
and esi, 0xa2382043
mov al, byte [ebp + ecx - 0x148]
mov byte [ebp + edi - 0x148], al
mov al, byte [ebp - 1]
mov byte [ebp + ecx - 0x148], al
movzx ecx, byte [ebp + edi - 0x148]
movzx eax, al
add ecx, eax
movzx eax, cl
mov ecx, dword [ebp - 8]
mov al, byte [ebp + eax - 0x148]
xor al, byte [ebp + ebx - 0x24]
mov byte [ebp + ebx - 0x180], al
inc ebx
cmp ebx, 0x18
jb 0x40eb9c
push 0x46
mov byte [ebp - 0x168], dl
xor esi, 0x785c96d3
pop edi
mov dword [ebp - 0x18], 0x30
mov dword [ebp - 0x14], 0x5b
mov dword [ebp - 0x10], 0xffffff2f
add edi, dword [ebp + edx*4 - 0x18]
inc edx
cmp edx, 3
jl 0x40ec6a
or esi, 0xf6485087
lea ecx, [ebp - 0x180]
mov dword [0x44a374], esi
call fcn.0043430e
mov esi, eax
mov ecx, esi
call fcn.004348f7
add eax, eax
push eax
push esi
push dword [ebp - 0x34]
call fcn.004341ae
mov ecx, esi
call fcn.004348f7
add eax, eax
push eax
push esi
push dword [ebp - 0x38]
call fcn.004341ae
mov ecx, esi
call fcn.004348f7
push eax
push edi
push esi
call fcn.0043423a
add esp, 0x24
mov ecx, esi
call fcn.0041d467
pop edi
pop esi
pop ebx
leave
ret