Function at 0x401000
Capabilities:
Accept command line arguments
Check if file exists
Create process on windows
Create process suspended

Disassembly:
sub esp, 0x688
push ebx
push ebp
push esi
xor esi, esi
push edi
mov dword [esp + 0x20], esi
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, dword [sym.imp.KERNEL32.dll_CreateEventA]
mov edi, eax
push str.WARCRAFT_III_LAUNCHER
push esi
add edi, 0x61a8
push esi
push esi
mov dword [esp + 0x28], edi
call ebx
mov ebp, dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 0x1c], eax
call ebp
cmp eax, 0xb7
jne 0x40105f
mov eax, dword [esp + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x688
ret 0x10
push str.Warcraft_III_Game_Application
push 0
push 0
push 0
call ebx
mov dword [esp + 0x10], eax
call ebp
cmp eax, 0xb7
jne 0x4010d8
mov esi, dword [esp + 0x69c]
mov edi, dword [sym.imp.USER32.dll_LoadStringA]
lea ecx, [esp + 0x3c]
push 0x104
push ecx
push 0xc
push esi
call edi
lea edx, [esp + 0x244]
push 0x104
push edx
push 0xd
push esi
call edi
lea eax, [esp + 0x244]
push 0
lea ecx, [esp + 0x40]
push eax
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x688
ret 0x10
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
call fcn.00401b40
push str.WARCRAFT_III_OK
push 0
push 0
push 0
mov dword [0x40aacc], eax
call ebx
mov dword [esp + 0x10], eax
call ebp
cmp eax, 0xb7
je 0x401398
mov ebx, dword [esp + 0x69c]
mov ebp, dword [sym.imp.USER32.dll_LoadStringA]
mov ecx, 0x11
xor eax, eax
lea edi, [esp + 0x348]
lea edx, [esp + 0x594]
rep stosd dword es:[edi], eax
xor ecx, ecx
push 0x104
mov dword [esp + 0x28], ecx
push edx
mov dword [esp + 0x30], ecx
push 1
mov dword [esp + 0x38], ecx
push ebx
mov dword [esp + 0x40], ecx
call ebp
lea eax, [esp + 0x490]
push 0x104
push eax
push 7
push ebx
call ebp
lea ecx, [esp + 0x594]
push ecx
call fcn.00401d4e
lea edx, [esp + 0x494]
push edx
call fcn.00401d4e
add esp, 8
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
mov esi, eax
push 0x408034
push esi
call fcn.00401cd8
add esp, 8
test eax, eax
jne 0x4011c9
mov cl, byte [eax + 0x408034]
mov byte [esp + eax + 0x3c], cl
inc eax
test cl, cl
jne 0x401195
lea edx, [esp + 0x3c]
mov eax, esi
sub edx, esi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x4011ac
xor eax, eax
mov cl, byte [eax + 0x408034]
mov byte [esp + eax + 0x3c], cl
inc eax
test cl, cl
jne 0x4011b8
jmp 0x4011db
lea edx, [esp + 0x3c]
mov eax, esi
sub edx, esi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x4011d1
lea eax, [esp + 0x3c]
push eax
call fcn.00401d4e
add esp, 4
xor eax, eax
mov cl, byte [eax + 0x40aac8]
mov byte [esp + eax + 0x244], cl
inc eax
test cl, cl
jne 0x4011ea
lea ecx, [esp + 0x490]
lea edx, [esp + 0x3c]
push ecx
push edx
call fcn.00401cd8
lea ecx, [esp + 0x44]
lea edx, [esp + 0x44]
sub eax, ecx
push eax
lea eax, [esp + 0x250]
push edx
push eax
call fcn.00401c10
lea edi, [esp + 0x5a8]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x14
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x244]
mov eax, ecx
mov esi, edi
mov edi, edx
mov edx, eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x244]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x244]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ax, word [0x408030]
mov cl, byte [0x408032]
dec edi
mov word [edi], ax
xor eax, eax
mov byte [edi + 2], cl
mov edi, dword [esp + 0x6a4]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
mov edx, eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x24]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x34c]
lea edx, [esp + 0x248]
push ecx
push 0
push 0
push 0
push 1
push 0
push 0
push edx
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
jne 0x401347
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
lea eax, [esp + 0x38c]
push 0x104
push eax
push 2
push ebx
call ebp
lea ecx, [esp + 0x140]
push 0x104
push ecx
push 9
push ebx
call ebp
push 0
call fcn.00401ba0
mov ecx, dword [0x40aacc]
add esp, 4
lea edx, [esp + 0x38c]
lea eax, [esp + 0x140]
push 0x40005
push edx
push eax
push ecx
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 2
jne 0x401118
jmp 0x401394
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
lea ecx, [esp + 0x38]
push 0
push ecx
push 2
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], eax
call dword [sym.imp.KERNEL32.dll_WaitForMultipleObjects]
lea edx, [esp + 0x38c]
push 0x104
push edx
push 2
push ebx
mov esi, eax
call ebp
mov eax, esi
sub eax, 0
je 0x4013c9
dec eax
jne 0x401118
push 0
call fcn.00401ba0
add esp, 4
mov edi, dword [esp + 0x18]
push edi
call fcn.00401ba0
add esp, 4
call fcn.00401bf0
mov eax, dword [esp + 0x10]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push eax
call edi
mov ecx, dword [esp + 0x1c]
push ecx
call edi
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x688
ret 0x10
mov ecx, dword [esp + 0x24]
lea eax, [esp + 0x20]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
mov eax, dword [esp + 0x20]
cmp eax, 0xd
ja case.default.0x4013ea
xor edx, edx
mov dl, byte [eax + 0x4014a8]
jmp dword [edx*4 + 0x401494]
lea eax, [esp + 0x140]
push 0x104
push eax
push 4
jmp 0x401455
lea ecx, [esp + 0x140]
push 0x104
push ecx
push 5
jmp 0x401455
lea edx, [esp + 0x140]
push 0x104
push edx
push 6
jmp 0x401455
lea eax, [esp + 0x140]
push 0x104
push eax
push 0xa
jmp 0x401455
lea ecx, [esp + 0x140]
push 0x104
push ecx
push 3
jmp 0x401455
lea edx, [esp + 0x140]
push 0x104
push edx
push 8
push ebx
call ebp
push 0
call fcn.00401ba0
mov edx, dword [0x40aacc]
add esp, 4
lea eax, [esp + 0x38c]
lea ecx, [esp + 0x140]
push 0x40005
push eax
push ecx
push edx
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 2
jne 0x401118
jmp 0x401394
and al, 0x94
add byte [eax], al
add byte [ecx + 0x50], dl
push esi
call ebp
push 0xc8f0
push esi
call dword [sym.imp.GDI32.dll_SetTextColor]
push 0
push esi
call dword [sym.imp.GDI32.dll_SetBkColor]
push 1
push esi
call dword [sym.imp.GDI32.dll_SetBkMode]
mov edi, dword [esp + 0x14]
push 0x11
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
sub eax, ecx
sub eax, 8
add ecx, eax
add edx, eax
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x20]
mov eax, ebx
mov dword [esp + 0x1c], edx
sub eax, ecx
sub eax, 0x10
cdq
sub eax, edx
lea edx, [esp + 0x90]
sar eax, 1
add eax, 8
add ecx, eax
add edi, eax
mov dword [esp + 0x20], ecx
lea ecx, [esp + 0x18]
mov dword [esp + 0x18], edi
push ecx
lea edi, [esp + 0x94]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
push esi
call ebp
lea eax, [esp + 0x4c]
mov ecx, dword [esp + 0x890]
push eax
push ecx
call dword [sym.imp.USER32.dll_EndPaint]
pop edi
pop esi
pop ebp
pop ebx
xor eax, eax
add esp, 0x87c
ret 0x10
lea eax, [ecx + 0x41]
inc ecx
cld
cld
std
cmp edi, esi
and esi, edi
invalid
cld
cld
loopne 0x421578
loopne 0x42157a
loopne 0x421598
cld
adc esp, eax
loopne 0x42159d
loopne 0x4215b7
and eax, 0x15e3e3e3
out 0xfa, al
fucom st(3)
daa
sti
loopne 0x4215d3
fcom qword [ebx]
adc al, 0x15
out 0xe6, al
out 0xdf, al
out 0xe3, al
and eax, 0x2525fb25
cld
cld
sti
sti
daa
cli
cli
cli
sti
sti
cli
cli
out 0x8e, al
stc
stc
clc
clc
sub bh, al
invalid
clc
clc
stc
cli
cli
out 0xf8, al
div edi
imul eax
clc
dec edx
clc
out 0xf9, eax
stc
stc
cli
sti
inc esp
cli
cli
sti
sti
sti
inc ecx
sti
sti
sti
sti
daa
loope 0x4215de
in eax, 0x19
in al, dx
add dword [ecx], eax
in eax, 0xe4
psraw mm2, qword [edi]
push ss
daa
loopne 0x421626
and eax, 0xfa474025
sub byte [eax], ch
call 0xfa292df7
out 0xe7, al
sub dh, ah
adc eax, 0x47282847
inc edi
sub byte [eax], ch
inc edi
inc edi
daa
daa
mov gs, word [eax]
stc
dec edx
dec edx
sub dword [eax], ebp
daa
jecxz 0x421608
and eax, 0x25fb25e0
cld
and eax, 0x25fc25fc
sti
sti
and eax, 0x21fdfdfc
std
loopne 0x42164d
sti
and eax, 0x25fc25fc
cld
and eax, 0xfc25fbfb
std
std
and ebp, edi
cmp edi, ebp
and dword [ebp + edi*8 - 0x2c402c2], ecx
inc ecx
inc esp
and eax, 0x8d444441
inc esp
inc esp
inc edi
daa
test dword [edi + 0x47], eax
inc edi
inc edi
xor bh, byte [esi + 0x4b]
sub cl, byte [ebx + ecx*2 + 0x7e]
dec ebx
dec ebx
dec ebx
dec ebx
dec edx
inc edi
daa
inc ecx
inc ecx
inc esp
cld
sub byte [edi], 0x41
das
inc ecx
inc esp
inc esp
and eax, 0x41fb8d41
cli
inc edi
inc esp
cli
xor dword [ebp + 0x4b4b4a8e], eax
mov es, word [ebx + edi*8 + 0x41]
sti
and eax, 0xfb8dfb8d
sti
inc esp
inc esp
sti
cld
cld
std
fdivr qword ds:[esi]
and edi, esp
cld
sti
inc esp
stc
dec edx
dec edx
dec edx
invalid