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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1a0
xor eax, eax
mov dword [ebp - 0x60], ecx
mov ecx, 0xa28
mov dword [ebp - 0x70], 0x15
mov dword [ebp - 0x6c], 0x19
mov edx, eax
mov dword [ebp - 0x68], 0x8f6
sub ecx, dword [ebp + edx*4 - 0x70]
inc edx
cmp edx, 3
jl 0x40e3aa
push ebx
push esi
push edi
mov esi, 0x401668
mov dword [ebp - 0x5c], ecx
lea edi, [ebp - 0x70]
mov dword [ebp - 0x40], 0xc1c3ecc4
push 0xd
pop ecx
movsd dword es:[edi], dword [esi]
mov byte [ebp - 0x25], cl
mov ecx, dword [0x44d430]
add ecx, 0x1a896b1e
mov dword [ebp - 0x3c], 0xb9a499a6
movsd dword es:[edi], dword [esi]
mov dword [ebp - 4], ecx
mov ecx, eax
mov dword [ebp - 0x38], 0x5e71eac8
mov dword [ebp - 0x34], 0x98a2fa38
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x30], 0xb81cf33c
mov dword [ebp - 0x2c], 0xf5b74e17
mov word [ebp - 0x28], 0x85bc
movsw word es:[edi], word [esi]
mov byte [ebp - 0x26], 0xf4
mov edi, eax
mov dword [ebp - 0x24], 0x3c855a4
mov dword [ebp - 0x20], 0xeaa4781a
mov dword [ebp - 0x1c], 0xd353d2a7
mov dword [ebp - 0x18], 0x53a1e410
mov byte [ebp + ecx - 0x170], cl
inc ecx
cmp ecx, 0x100
jb 0x40e430
mov esi, eax
xor edx, edx
mov bl, byte [ebp + esi - 0x170]
push 0xd
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x70]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x170]
mov byte [ebp + esi - 0x170], al
inc esi
mov byte [ebp + edi - 0x170], bl
cmp esi, 0x100
jb 0x40e442
xor ebx, ebx
mov edi, ebx
mov esi, ebx
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x170]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x170]
mov byte [ebp + edi - 0x170], al
mov byte [ebp + ebx - 0x170], cl
movzx eax, byte [ebp + edi - 0x170]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x170]
xor al, byte [ebp + esi - 0x40]
mov byte [ebp + esi - 0x1a0], al
inc esi
cmp esi, 0x2c
jb 0x40e485
mov eax, dword [0x401678]
xor ebx, ebx
mov dword [ebp - 0x14], eax
mov edi, ebx
mov ax, word [0x40167c]
mov word [ebp - 0x10], ax
mov eax, ebx
mov byte [ebp - 0x174], bl
mov dword [ebp - 0xc], 0xbe6813b9
mov word [ebp - 8], 0x8853
mov byte [ebp + eax - 0x170], al
inc eax
cmp eax, 0x100
jb 0x40e500
mov esi, ebx
xor edx, edx
mov bl, byte [ebp + esi - 0x170]
push 5
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x14]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x170]
mov byte [ebp + esi - 0x170], al
mov eax, dword [ebp - 4]
xor eax, 0xb6c71adb
mov byte [ebp + edi - 0x170], bl
inc esi
mov dword [ebp - 4], eax
mov dword [0x44d430], eax
cmp esi, 0x100
jb 0x40e511
xor ebx, ebx
mov edi, ebx
mov esi, ebx
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x170]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x170]
mov byte [ebp + edi - 0x170], al
mov byte [ebp + ebx - 0x170], cl
movzx eax, byte [ebp + edi - 0x170]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x170]
xor al, byte [ebp + esi - 0xc]
mov byte [ebp + esi - 0x6c], al
inc esi
cmp esi, 6
jb 0x40e564
mov eax, dword [ebp - 0x5c]
lea ecx, [ebp - 0x6c]
add eax, eax
xor ebx, ebx
mov dword [ebp - 0x5c], eax
lea eax, [ebp - 0x5c]
push eax
push dword [ebp - 0x60]
mov byte [ebp - 0x66], bl
push 2
call fcn.0041e657
mov edx, eax
lea ecx, [ebp - 0x1a0]
call fcn.0041e636
call eax
test eax, eax
jne 0x40e7a5
mov esi, dword [0x44d430]
push 7
pop eax
and esi, 0x22470
mov byte [ebp - 0x55], al
mov byte [ebp - 0x43], al
or esi, 0xd280c804
mov word [ebp - 0x58], 0xef70
mov eax, ebx
mov byte [ebp - 0x56], 0xf5
mov dword [ebp - 0x54], 0x781f2bf9
mov dword [ebp - 0x50], 0xf1819045
mov dword [ebp - 0x4c], 0x29f0ecad
mov dword [ebp - 0x48], 0xa3eb049d
mov byte [ebp - 0x44], 0x7a
mov word [ebp - 0x42], 0x9226
mov dword [ebp - 0xc], 0x7373656d
mov dword [ebp - 8], 0x656761
mov dword [ebp - 4], ebx
mov byte [ebp + eax - 0x170], al
inc eax
cmp eax, 0x100
jb 0x40e644
mov edi, ebx
mov ecx, 0x4017c4
mov al, 0x74
sub al, 0x30
cmp al, 9
ja 0x40e66b
inc ecx
mov al, byte [ecx]
test al, al
jne 0x40e65c
jmp 0x40e671
and esi, 0x693c33d8
imul eax, esi, 0x4893ba2c
mov dword [0x44d430], eax
call dword [sym.imp.KERNEL32.dll_GetLargePageMinimum]
xor edx, edx
mov bl, byte [ebp + edi - 0x170]
push 7
pop ecx
lea esi, [eax + 0x6d42b83c]
mov eax, edi
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0xc]
add eax, dword [ebp - 4]
add ecx, eax
movzx edx, cl
mov dword [ebp - 4], edx
mov al, byte [ebp + edx - 0x170]
mov byte [ebp + edi - 0x170], al
inc edi
mov byte [ebp + edx - 0x170], bl
cmp edi, 0x100
jb 0x40e655
xor ebx, ebx
mov dword [ebp - 4], ebx
mov edi, ebx
lea eax, [ebx + 1]
movzx ebx, al
mov eax, dword [ebp - 4]
mov cl, byte [ebp + ebx - 0x170]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 4], eax
mov al, byte [ebp + eax - 0x170]
mov byte [ebp + ebx - 0x170], al
mov eax, dword [ebp - 4]
mov byte [ebp + eax - 0x170], cl
mov ecx, 0x4019c4
movzx eax, byte [ebp + ebx - 0x170]
add eax, edx
movzx eax, al
mov dl, byte [ebp + eax - 0x170]
mov al, 0x62
sub al, 0x30
cmp al, 9
ja 0x40e72d
inc ecx
mov al, byte [ecx]
test al, al
jne 0x40e71e
jmp 0x40e733
add esi, 0xf0ce13d
mov al, byte [ebp + edi - 0x58]
and esi, 0x660c03cc
xor al, dl
mov byte [ebp + edi - 0x30], al
inc edi
cmp edi, 0x18
jb 0x40e6d0
xor ebx, ebx
mov dword [0x44d430], esi
push 0x29
mov byte [ebp - 0x18], bl
mov dword [ebp - 0xc], 0xa
mov dword [ebp - 8], 0xffffffcd
pop edi
add edi, dword [ebp + ebx*4 - 0xc]
inc ebx
cmp ebx, 2
jl 0x40e765
lea ecx, [ebp - 0x30]
call fcn.004361ab
mov esi, eax
mov ecx, esi
call fcn.004369fb
add eax, eax
push eax
push esi
push dword [ebp - 0x60]
call fcn.00436044
mov ecx, esi
call fcn.004369fb
push eax
push edi
push esi
call fcn.004360de
add esp, 0x18
mov ecx, esi
call fcn.0041e600
pop edi
pop esi
pop ebx
leave
ret