Function at 0x40618c
Capabilities:
Accept command line arguments
Allocate or change rwx memory
Check os version
Enumerate gui resources
Execute shellcode via indirect call
Execute shellcode via windows callback function

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff30
push ebx
push ecx
push edx
push edi
mov eax, dword [ebp + 0x20]
mov dword [0x417424], eax
mov eax, dword [ebp + 0x1c]
mov dword [0x417420], eax
mov ecx, dword [eax + 0x10]
mov dword [0x41747c], ecx
mov eax, dword [ebp + 0x24]
mov dword [0x417450], eax
push 4
push 0x1000
push 0x1218
push 0
call sub.kernel32.dll_VirtualAlloc
mov dword [0x417488], eax
add eax, 0x800
mov dword [0x417494], eax
add eax, 0x108
mov dword [0x417468], eax
add eax, 0x108
mov ecx, dword [0x417424]
mov dword [ecx + 0x10], eax
add eax, 0x200
mov dword [0x417490], eax
add eax, 0x400
mov dword [0x41748c], eax
push 0x310
push 0x40
call sub.kernel32.dll_GlobalAlloc
mov dword [0x417498], eax
mov dword [ebp - 4], 0
mov dword [ebp - 0xd0], 0x9c
lea eax, [ebp - 0xd0]
push eax
call sub.kernel32.dll_GetVersionExA
cmp dword [ebp - 0xc0], 1
jne 0x406266
cmp dword [ebp - 0xc8], 0
jne 0x406257
mov dword [0x417464], 1
jmp 0x406492
mov dword [0x417464], 2
jmp 0x406492
push 0x418362
call sub.kernel32.dll_LoadLibraryA
or eax, eax
je 0x4062e8
mov edi, eax
push str._get_winmajor
push edi
call sub.kernel32.dll_GetProcAddress
or eax, eax
je 0x4062ac
push dword [ebp - 0xcc]
lea ecx, [ebp - 0xcc]
push ecx
call eax
pop eax
pop eax
cmp eax, dword [ebp - 0xcc]
je 0x4062ac
mov byte [ebp - 0xbc], 0
mov dword [ebp - 4], 1
push str._get_winminor
push edi
call sub.kernel32.dll_GetProcAddress
or eax, eax
je 0x4062e2
push dword [ebp - 0xc8]
lea ecx, [ebp - 0xc8]
push ecx
call eax
pop eax
pop eax
cmp eax, dword [ebp - 0xc8]
je 0x4062e2
mov byte [ebp - 0xbc], 0
mov dword [ebp - 4], 1
push edi
call sub.kernel32.dll_FreeLibrary
cmp dword [ebp - 0xc0], 2
jne 0x406492
cmp dword [ebp - 0xcc], 5
jge 0x40630d
mov dword [0x417464], 3
jmp 0x406492
cmp dword [ebp - 0xcc], 6
jle 0x406385
cmp byte [ebp - 0x36], 1
jne 0x406346
cmp dword [ebp - 0xc4], 0x55ec
jl 0x406337
mov dword [0x417464], 0xb
jmp 0x406492
mov dword [0x417464], 0xa
jmp 0x406492
cmp dword [ebp - 0xc4], 0x55ec
jl 0x40635e
mov dword [0x417464], 0x14
jmp 0x406380
cmp dword [ebp - 0xc4], 0x44d7
jl 0x406376
mov dword [0x417464], 0x13
jmp 0x406380
mov dword [0x417464], 0x12
jmp 0x406492
cmp dword [ebp - 0xcc], 5
jle 0x40644d
cmp dword [ebp - 0xc8], 3
jg 0x4063a4
cmp dword [ebp - 0xcc], 0xa
jne 0x4063ae
jmp 0x406316
cmp dword [ebp - 0xc8], 2
jle 0x4063db
cmp byte [ebp - 0x36], 1
jne 0x4063cc
mov dword [0x417464], 9
jmp 0x406492
mov dword [0x417464], 0x11
jmp 0x406492
cmp dword [ebp - 0xc8], 1
jle 0x406408
cmp byte [ebp - 0x36], 1
jne 0x4063f9
mov dword [0x417464], 8
jmp 0x406492
mov dword [0x417464], 0x10
jmp 0x406492
cmp dword [ebp - 0xc8], 0
jle 0x40642f
cmp byte [ebp - 0x36], 1
jne 0x406423
mov dword [0x417464], 7
jmp 0x406492
mov dword [0x417464], 0xf
jmp 0x406492
cmp byte [ebp - 0x36], 1
jne 0x406441
mov dword [0x417464], 6
jmp 0x40644b
mov dword [0x417464], 0xe
jmp 0x406492
cmp dword [ebp - 0xc8], 0
jne 0x406462
mov dword [0x417464], 4
jmp 0x406492
test word [ebp - 0x38], 0x8000
je 0x406476
mov dword [0x417464], 0xd
jmp 0x406492
cmp byte [ebp - 0x36], 1
jne 0x406488
mov dword [0x417464], 5
jmp 0x406492
mov dword [0x417464], 0xc
cmp dword [ebp - 4], 0
je 0x4064b3
lea eax, [ebp - 0xbc]
push eax
push str.CSDVersion
push str.SOFTWAREMicrosoftWindows_NTCurrentVersion
push 0x80000002
call fcn.0040eaba
cmp dword [ebp + 0x18], 0
je 0x4064cc
cmp dword [0x417464], 3
jl 0x4064cc
mov dword [0x41744c], 1
cmp byte [ebp - 0xbc], 0
je 0x4064e7
lea eax, [ebp - 0xbc]
push eax
push dword [0x417468]
call sub.kernel32.dll_lstrcpyA
push 4
push 0x3000
push 0x800
push 0
call sub.kernel32.dll_VirtualAlloc
mov ecx, dword [0x417420]
mov dword [ecx + 4], eax
add eax, 0x20c
mov dword [ecx + 0x28], eax
add eax, 0x20c
mov dword [ecx + 8], eax
add eax, 0x20c
mov dword [ecx + 0xc], eax
cmp dword [ebp + 0x10], 0
je 0x40652f
push eax
push dword [ebp + 0x10]
call fcn.00401a0c
mov eax, dword [0x417420]
push dword [eax + 8]
push dword [ebp + 0xc]
call fcn.00401a0c
cmp dword [0x41744c], 0
je 0x40654a
call sub.kernel32.dll_GetCommandLineW
jmp 0x40654f
call sub.kernel32.dll_GetCommandLineA
mov ebx, eax
mov ax, word [ebx]
cmp dword [0x41744c], 0
jne 0x40655f
xor ah, ah
cmp ax, 0x22
jne 0x406584
inc ebx
cmp dword [0x41744c], 0
je 0x40657a
inc ebx
push 0x22
push ebx
call fcn.0040e1c0
jmp 0x4065b9
push 0x22
push ebx
call fcn.0040e199
jmp 0x4065b9
cmp dword [0x41744c], 0
je 0x4065a4
push 0x20
push ebx
call fcn.0040e1c0
cmp eax, 0xffffffff
jne 0x4065b9
push 9
push ebx
call fcn.0040e1c0
jmp 0x4065b9
push 0x20
push ebx
call fcn.0040e199
cmp eax, 0xffffffff
jne 0x4065b9
push 9
push ebx
call fcn.0040e199
cmp eax, 0xffffffff
jne 0x4065c5
push ebx
call fcn.00406e7f
dec eax
inc eax
cmp dword [0x41744c], 0
je 0x4065d1
shl eax, 1
add ebx, eax
mov eax, dword [0x417420]
push ebx
push dword [eax + 4]
call fcn.00406e5d
mov edx, dword [0x417420]
push dword [edx + 4]
call fcn.0040fd80
push 0x208
push dword [edx + 0x28]
push dword [edx + 0x10]
cmp dword [0x41744c], 0
je 0x40660a
call sub.kernel32.dll_GetModuleFileNameW
jmp 0x40660f
call sub.kernel32.dll_GetModuleFileNameA
mov edx, dword [0x417420]
push 0x5c
push dword [edx + 0x28]
call fcn.0040e1ed
cmp eax, 0xffffffff
je 0x406637
cmp dword [0x41744c], 0
je 0x40662f
shl eax, 1
add eax, dword [edx + 0x28]
mov word [eax], 0
mov dword [ebp - 0x34], 4
lea eax, [ebp - 0x34]
push eax
push 2
push 0x800
push dword [edx + 4]
call sub.kernel32.dll_VirtualProtect
push 0x18
push 1
push dword [0x41747c]
cmp dword [0x41744c], 0
je 0x40666b
call sub.kernel32.dll_FindResourceW
jmp 0x406670
call sub.kernel32.dll_FindResourceA
or eax, eax
je 0x40667e
mov dword [0x4174a0], 1
push 0
call sub.user32.dll_GetDC
mov ebx, eax
push 0x58
push ebx
call sub.gdi32.dll_GetDeviceCaps
mov ecx, eax
mov eax, 0x5a0
xor edx, edx
div ecx
mov dword [0x417428], eax
push 0x5a
push ebx
call sub.gdi32.dll_GetDeviceCaps
mov ecx, eax
mov eax, 0x5a0
xor edx, edx
div ecx
mov dword [0x41742c], eax
mov eax, ecx
mov ecx, 0x3e8
mul ecx
xor edx, edx
mov ecx, 0x60
idiv ecx
mov ecx, 0x48
mul ecx
xor edx, edx
mov ecx, 0x3e8
idiv ecx
mov dword [0x417430], eax
push ebx
push 0
call sub.user32.dll_ReleaseDC
push 0x400
push 0x40
call sub.kernel32.dll_GlobalAlloc
mov dword [0x41746c], eax
mov dword [0x417460], 0x3fc
push 0x9040
push 0
push 0
push 2
push 0x7f00
push 0
call fcn.00406dae
mov dword [0x417474], eax
push 0x9040
push 0
push 0
push 2
push 0x7f02
push 0
call fcn.00406dae
mov dword [0x417478], eax
mov dword [ebp - 0x34], 0x30
mov dword [ebp - 0x30], 8
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0x20
mov edx, dword [0x417420]
push dword [edx + 0x10]
pop dword [ebp - 0x20]
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 8], 0
push dword [ebp + 8]
push str.EC2RUNDIALOGBOX
call sub.kernel32.dll_lstrcatW
push dword [ebp + 8]
push str.EC2RUNMDIWINDOW
call sub.kernel32.dll_lstrcatW
push dword [ebp + 8]
push str.EC2RUNMDICHILDWINDOW
call sub.kernel32.dll_lstrcatW
push dword [ebp + 8]
push str.EC2RUNWINDOW
call sub.kernel32.dll_lstrcatW
mov dword [ebp - 0x2c], 0x4095a2
push dword [0x41748c]
push str.EC2RUNMDIWINDOW
call fcn.00401a0c
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x34]
push eax
call fcn.004083ef
push dword [0x41748c]
push str.EC2RUNMDICHILDWINDOW
call fcn.00401a0c
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x34]
push eax
call fcn.004083ef
push dword [0x41748c]
push str.EC2RUNWINDOW
call fcn.00401a0c
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x34]
push eax
call fcn.004083ef
push dword [0x41748c]
push str.EC2RUNDIALOGBOX
call fcn.00401a0c
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x34]
push eax
call fcn.004083ef
push dword [0x41748c]
push 0x4183c4
call fcn.00401a0c
push eax
mov edx, eax
add edx, 2
cmp dword [0x41744c], 0
je 0x406851
add edx, 2
lea ecx, [ebp - 0x34]
push ecx
push edx
push 0
cmp dword [0x41744c], 0
je 0x406868
call sub.user32.dll_GetClassInfoExW
jmp 0x40686d
call sub.user32.dll_GetClassInfoExA
or dword [ebp - 0x30], 8
mov eax, dword [ebp - 0x2c]
mov dword [0x417660], eax
mov dword [ebp - 0x2c], 0x40939c
mov dword [ebp - 0x24], 0x20
pop eax
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x34]
push eax
call fcn.004083ef
push dword [0x41748c]
push 0x4183dc
call fcn.00401a0c
mov edx, eax
lea ecx, [ebp - 0x34]
push ecx
push edx
push 0
cmp dword [0x41744c], 0
je 0x4068bd
call sub.user32.dll_GetClassInfoExW
jmp 0x4068c2
call sub.user32.dll_GetClassInfoExA
mov eax, dword [ebp - 0x2c]
mov dword [0x417480], eax
mov dword [ebp - 0x34], 0x30
mov dword [ebp - 0x30], 8
mov edx, dword [0x417420]
mov eax, dword [edx + 0x10]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x2c], 0x4095a2
push dword [0x41748c]
push str.ECGROUP
call fcn.00401a0c
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], 0
lea eax, [ebp - 0x34]
push eax
call fcn.004083ef
mov dword [ebp - 0x34], 0x30
mov dword [ebp - 0x30], 8
mov edx, dword [0x417420]
push dword [edx + 0x10]
pop dword [ebp - 0x20]
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 8], 0
mov dword [ebp - 0x2c], 0x4095a2
push dword [0x41748c]
push str.ECPICTURE
call fcn.00401a0c
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x34]
push eax
call fcn.004083ef
cmp dword [ebp + 0x14], 1
jne 0x406983
lea eax, str.EC2RUNDIALOGBOX
jmp 0x406997
cmp dword [ebp + 0x14], 2
jne 0x406991
lea eax, str.EC2RUNMDIWINDOW
jmp 0x406997
lea eax, str.EC2RUNWINDOW
push dword [0x41748c]
push eax
call fcn.00401a0c
push dword [0x41748c]
push 0x40c02d
call sub.user32.dll_EnumWindows
pop edi
pop edx
pop ecx
pop ebx
leave
ret 0x20