Function at 0x405c93
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 + 8]
mov dword [0x4129e0], eax
push 4
push 0x1000
push 0x1218
push 0
call sub.KERNEL32.DLL_VirtualAlloc
mov dword [0x4129ec], eax
add eax, 0x800
mov dword [0x4129f8], eax
add eax, 0x108
mov dword [0x4129cc], eax
add eax, 0x108
mov dword [0x4128ba], eax
add eax, 0x200
mov dword [0x4129f4], eax
add eax, 0x400
mov dword [0x4129f0], eax
push 0x310
push 0x40
call sub.KERNEL32.DLL_GlobalAlloc
mov dword [0x4129fc], 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 0x405d50
cmp dword [ebp - 0xc8], 0
jne 0x405d41
mov dword [0x4129c8], 1
jmp 0x405e8f
mov dword [0x4129c8], 2
jmp 0x405e8f
push str.msvcrt.dll
call sub.KERNEL32.DLL_LoadLibraryA
or eax, eax
je 0x405dd2
mov edi, eax
push str._get_winmajor
push edi
call sub.KERNEL32.DLL_GetProcAddress
or eax, eax
je 0x405d96
push dword [ebp - 0xcc]
lea ecx, [ebp - 0xcc]
push ecx
call eax
pop eax
pop eax
cmp eax, dword [ebp - 0xcc]
je 0x405d96
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 0x405dcc
push dword [ebp - 0xc8]
lea ecx, [ebp - 0xc8]
push ecx
call eax
pop eax
pop eax
cmp eax, dword [ebp - 0xc8]
je 0x405dcc
mov byte [ebp - 0xbc], 0
mov dword [ebp - 4], 1
push edi
call sub.KERNEL32.DLL_FreeLibrary
cmp dword [ebp - 0xc0], 2
jne 0x405e8f
cmp dword [ebp - 0xcc], 5
jge 0x405df7
mov dword [0x4129c8], 3
jmp 0x405e8f
cmp dword [ebp - 0xcc], 6
jle 0x405e0f
mov dword [0x4129c8], 0xa
jmp 0x405e8f
cmp dword [ebp - 0xcc], 5
jle 0x405e70
cmp dword [ebp - 0xc8], 3
jle 0x405e25
jmp 0x405e00
cmp dword [ebp - 0xc8], 2
jle 0x405e3a
mov dword [0x4129c8], 9
jmp 0x405e8f
cmp dword [ebp - 0xc8], 1
jle 0x405e4f
mov dword [0x4129c8], 8
jmp 0x405e8f
cmp dword [ebp - 0xc8], 0
jle 0x405e64
mov dword [0x4129c8], 7
jmp 0x405e8f
mov dword [0x4129c8], 6
jmp 0x405e8f
cmp dword [ebp - 0xc8], 0
jne 0x405e85
mov dword [0x4129c8], 4
jmp 0x405e8f
mov dword [0x4129c8], 5
cmp dword [ebp - 4], 0
je 0x405eb0
lea eax, [ebp - 0xbc]
push eax
push str.CSDVersion
push str.SOFTWAREMicrosoftWindows_NTCurrentVersion
push 0x80000002
call fcn.0040d783
cmp dword [ebp + 0x1c], 0
je 0x405ec9
cmp dword [0x4129c8], 3
jl 0x405ec9
mov dword [0x4129b4], 1
cmp byte [ebp - 0xbc], 0
je 0x405ee4
lea eax, [ebp - 0xbc]
push eax
push dword [0x4129cc]
call sub.KERNEL32.DLL_lstrcpyA
push 4
push 0x3000
push 0x800
push 0
call sub.KERNEL32.DLL_VirtualAlloc
mov dword [0x41287a], eax
add eax, 0x20c
mov dword [0x41289e], eax
add eax, 0x20c
mov dword [0x41287e], eax
add eax, 0x20c
mov dword [0x412882], eax
cmp dword [ebp + 0x14], 0
je 0x405f2e
push dword [0x412882]
push dword [ebp + 0x14]
call fcn.00401d7a
push dword [0x41287e]
push dword [ebp + 0x10]
call fcn.00401d7a
cmp dword [0x4129b4], 0
je 0x405f4c
call sub.KERNEL32.DLL_GetCommandLineW
jmp 0x405f51
call sub.KERNEL32.DLL_GetCommandLineA
mov ebx, eax
mov ax, word [ebx]
cmp dword [0x4129b4], 0
jne 0x405f61
xor ah, ah
cmp ax, 0x22
jne 0x405f86
inc ebx
cmp dword [0x4129b4], 0
je 0x405f7c
inc ebx
push 0x22
push ebx
call fcn.0040cf5c
jmp 0x405fbb
push 0x22
push ebx
call fcn.0040cf35
jmp 0x405fbb
cmp dword [0x4129b4], 0
je 0x405fa6
push 0x20
push ebx
call fcn.0040cf5c
cmp eax, 0xffffffff
jne 0x405fbb
push 9
push ebx
call fcn.0040cf5c
jmp 0x405fbb
push 0x20
push ebx
call fcn.0040cf35
cmp eax, 0xffffffff
jne 0x405fbb
push 9
push ebx
call fcn.0040cf35
cmp eax, 0xffffffff
jne 0x405fc7
push ebx
call fcn.004067f4
dec eax
inc eax
cmp dword [0x4129b4], 0
je 0x405fd3
shl eax, 1
add ebx, eax
push ebx
push dword [0x41287a]
call fcn.004067d2
push dword [0x41287a]
call fcn.0040e732
push 0x208
push dword [0x41289e]
push dword [ebp + 8]
cmp dword [0x4129b4], 0
je 0x40600a
call sub.KERNEL32.DLL_GetModuleFileNameW
jmp 0x40600f
call sub.KERNEL32.DLL_GetModuleFileNameA
push 0x5c
push dword [0x41289e]
call fcn.0040cf89
cmp eax, 0xffffffff
je 0x406037
cmp dword [0x4129b4], 0
je 0x40602c
shl eax, 1
add eax, dword [0x41289e]
mov word [eax], 0
mov dword [ebp - 0x34], 4
lea eax, [ebp - 0x34]
push eax
push 2
push 0x800
push dword [0x41287a]
call sub.KERNEL32.DLL_VirtualProtect
push 0x18
push 1
push dword [0x4129e0]
cmp dword [0x4129b4], 0
je 0x40606e
call sub.KERNEL32.DLL_FindResourceW
jmp 0x406073
call sub.KERNEL32.DLL_FindResourceA
or eax, eax
je 0x406081
mov dword [0x412a04], 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 [0x412990], eax
push 0x5a
push ebx
call sub.gdi32.dll_GetDeviceCaps
mov ecx, eax
mov eax, 0x5a0
xor edx, edx
div ecx
mov dword [0x412994], 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 [0x412998], eax
push ebx
push 0
call sub.user32.dll_ReleaseDC
push 0x400
push 0x40
call sub.KERNEL32.DLL_GlobalAlloc
mov dword [0x4129d0], eax
mov dword [0x4129c4], 0x3fc
push 0x9040
push 0
push 0
push 2
push 0x7f00
push 0
call fcn.00406723
mov dword [0x4129d8], eax
push 0x9040
push 0
push 0
push 2
push 0x7f02
push 0
call fcn.00406723
mov dword [0x4129dc], eax
mov dword [ebp - 0x34], 0x30
mov dword [ebp - 0x30], 8
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0x20
push dword [ebp + 8]
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 + 0xc]
push str.EC2RUNDIALOGBOX
call sub.KERNEL32.DLL_lstrcatW
push dword [ebp + 0xc]
push str.EC2RUNMDIWINDOW
call sub.KERNEL32.DLL_lstrcatW
push dword [ebp + 0xc]
push str.EC2RUNMDICHILDWINDOW
call sub.KERNEL32.DLL_lstrcatW
push dword [ebp + 0xc]
push str.EC2RUNWINDOW
call sub.KERNEL32.DLL_lstrcatW
mov dword [ebp - 0x2c], 0x408b3b
push dword [0x4129f0]
push str.EC2RUNMDIWINDOW
call fcn.00401d7a
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x34]
push eax
call fcn.00407948
push dword [0x4129f0]
push str.EC2RUNMDICHILDWINDOW
call fcn.00401d7a
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x34]
push eax
call fcn.00407948
push dword [0x4129f0]
push str.EC2RUNWINDOW
call fcn.00401d7a
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x34]
push eax
call fcn.00407948
push dword [0x4129f0]
push str.EC2RUNDIALOGBOX
call fcn.00401d7a
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x34]
push eax
call fcn.00407948
push dword [0x4129f0]
push 0x413738
call fcn.00401d7a
push eax
mov edx, eax
add edx, 2
cmp dword [0x4129b4], 0
je 0x40624e
add edx, 2
lea ecx, [ebp - 0x34]
push ecx
push edx
push 0
cmp dword [0x4129b4], 0
je 0x406265
call sub.user32.dll_GetClassInfoExW
jmp 0x40626a
call sub.user32.dll_GetClassInfoExA
or dword [ebp - 0x30], 8
mov eax, dword [ebp - 0x2c]
mov dword [0x412a84], eax
mov dword [ebp - 0x2c], 0x408935
mov dword [ebp - 0x24], 0x20
pop eax
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x34]
push eax
call fcn.00407948
push dword [0x4129f0]
push 0x413750
call fcn.00401d7a
mov edx, eax
lea ecx, [ebp - 0x34]
push ecx
push edx
push 0
cmp dword [0x4129b4], 0
je 0x4062ba
call sub.user32.dll_GetClassInfoExW
jmp 0x4062bf
call sub.user32.dll_GetClassInfoExA
mov eax, dword [ebp - 0x2c]
mov dword [0x4129e4], eax
mov dword [ebp - 0x34], 0x30
mov dword [ebp - 0x30], 8
mov eax, dword [ebp + 8]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x2c], 0x408b3b
push dword [0x4129f0]
push str.ECGROUP
call fcn.00401d7a
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], 0
lea eax, [ebp - 0x34]
push eax
call fcn.00407948
mov dword [ebp - 0x34], 0x30
mov dword [ebp - 0x30], 8
push dword [ebp + 8]
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], 0x408b3b
push dword [0x4129f0]
push str.ECPICTURE
call fcn.00401d7a
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x34]
push eax
call fcn.00407948
cmp dword [ebp + 0x18], 1
jne 0x406374
lea eax, str.EC2RUNDIALOGBOX
jmp 0x406388
cmp dword [ebp + 0x18], 2
jne 0x406382
lea eax, str.EC2RUNMDIWINDOW
jmp 0x406388
lea eax, str.EC2RUNWINDOW
push dword [0x4129f0]
push eax
call fcn.00401d7a
push dword [0x4129f0]
push 0x40b067
call sub.user32.dll_EnumWindows
pop edi
pop edx
pop ecx
pop ebx
leave
ret 0x18