Function at 0x4012c3
Capabilities:
Allocate or change rwx memory
Enumerate gui resources
Execute shellcode via windows callback function
Get common file path
Get graphical window text

Disassembly:
sub esp, 0x188
push ebx
push ebp
push esi
push edi
xor ebp, ebp
push ebp
push 0x40102c
mov dword [esp + 0x1c], ecx
mov dword [0x40407c], ebp
call dword [sym.imp.USER32.dll_EnumWindows]
cmp dword [0x40407c], ebp
jne 0x401300
push 0x10
push str.zPickit_Error
push str.Warcraft_III_not_loaded__run_game_BEFORE_installing
push ebp
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp dword [0x40407c], ebp
mov dword [esp + 0x10], ebp
jg 0x40131b
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x188
ret
xor ebp, ebp
mov eax, dword [esp + 0x10]
mov eax, dword [eax*4 + section..data]
push 0x404050
push eax
mov dword [0x40404c], eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
push dword [0x404050]
push ebp
push 0x1f0fff
call dword [sym.imp.KERNEL32.dll_OpenProcess]
cmp eax, ebp
mov dword [0x404054], eax
je 0x401569
push str.war3.exe
push dword [0x404050]
call fcn.0040107d
test eax, eax
je 0x401578
push 0x40
mov ebx, fcn.004011ea
push 0x1000
sub ebx, 0x401196
lea eax, [ebx + 0x200]
push eax
push ebp
push dword [0x404054]
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
push 0xffffffffffffffe8
push dword [0x40404c]
mov esi, eax
call dword [sym.imp.USER32.dll_GetClassLongA]
mov edi, eax
cmp edi, ebp
je 0x401586
push str.nview
push 0x4033f4
push 0x404064
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push str.Kernel32.dll
mov dword [0x404040], 0xd1ab101d
mov dword [0x404048], esi
mov dword [0x404044], 0x60001
mov dword [0x404074], edi
mov dword [0x404078], 6
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov ebp, eax
test ebp, ebp
je 0x401594
push str.LoadLibraryA
push ebp
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
mov dword [0x404058], eax
je 0x4015a2
push str.FreeLibrary
push ebp
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
mov dword [0x40405c], eax
je 0x4015b0
push 0x4033b4
push ebp
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
mov dword [0x404060], eax
je 0x4015be
xor eax, eax
cmp dword [esp + 0x14], 0xd1ab101d
push 0x7f
setne al
mov ebp, eax
lea eax, [esp + 0x11c]
push eax
push dword [0x40404c]
call dword [sym.imp.USER32.dll_GetWindowTextA]
push ebx
push 0x401196
push esi
push dword [0x404054]
call fcn.004011ea
test eax, eax
je 0x4015d2
push 0x3c
push 0x404040
lea ebx, [esi + 0x200]
push ebx
push dword [0x404054]
call fcn.004011ea
test eax, eax
je 0x4015d2
lea eax, [esp + 0x18]
push eax
push 0xff
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea eax, [esp + 0x18]
push str._nview.dll
push eax
call fcn.00402000
lea eax, [esp + 0x20]
push eax
call fcn.00401f60
add esp, 0xc
inc eax
push eax
lea eax, [esp + 0x1c]
push eax
add ebx, 0x3c
push ebx
push dword [0x404054]
call fcn.004011ea
test eax, eax
je 0x4015d2
push 6
push esi
push edi
mov ebx, 0xe9
push ebx
push dword [0x404054]
call fcn.0040125a
xor eax, eax
cmp ebp, eax
je 0x401518
push eax
jmp 0x40151a
push 1
push eax
push 0x8000
push dword [0x40404c]
call dword [sym.imp.USER32.dll_SendMessageA]
push 6
push edi
push esi
push ebx
push dword [0x404054]
call fcn.0040125a
push 0x8000
push 0
push esi
push dword [0x404054]
call dword [sym.imp.KERNEL32.dll_VirtualFreeEx]
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, dword [0x40407c]
jl 0x401319
jmp 0x40130c
push 0x10
push str.zPickit_Error_
push str.Cant_get_Diablo_IIs_process_handle.
push ebp
jmp 0x4015cc
push 0x10
push str.zPickit_Error_
push str.Unable_to_find_a_patch_location.
jmp 0x401575
push 0x10
push str.zPickit_Error_
push str.Unable_to_find_WinProc_entrypoint.
jmp 0x401575
push 0x10
push str.zPickit_Error_
push str.Unable_to_get_handle_of_KERNEL32.DLL.
jmp 0x4015ca
push 0x10
push str.zPickit_Error_
push str.Unable_to_get_address_of_LoadLibraryA_in_KERNEL32.DLL.
jmp 0x4015ca
push 0x10
push str.zPickit_Error_
push str.Unable_to_get_address_of_FreeLibrary_in_KERNEL32.DLL.
jmp 0x4015ca
push 0x10
push str.zPickit_Error_
push str.Unable_to_get_address_of_GetModuleHandleA_in_KERNEL32.DLL.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
or eax, 0xffffffff
jmp 0x40130e