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
in eax, 7
stc
xor eax, 0xaa205f5
push ds
inc esp
scasd eax, dword es:[edi]
mov bh, 0x91
cmp dword [eax + 0x65656565], ebx
push edi
mov ecx, esp
sub al, ah
loopne 0x42153e
mov byte [0x575ae0c3], al
cmpsb byte [esi], byte es:[edi]
cmc
pushfd
mov esp, 0x9cbc9c9c
mov cs, word [esi - 0x6d6d7172]
xchg edx, eax
std
std
push ebp
push ebp
push ebp
cmp dword [ecx], edi
cmp dword [ebp - 3], edx
xchg edx, eax
or dword [ecx], ecx
in al, dx
in al, dx
iretd
cmpsb byte [esi], byte es:[edi]
inc eax
sub ch, byte [edx]
add al, 0x39
enter 0x39c8, 0xffffffffffffffb7
test al, 0x60
pushal
pushal
pushal
pushal
ja 0x42161d
push ebp
cmp dword [ebp - 0x49], edx
mov bh, 0xb7
pushal
pushal
pushal
pushal
pushal
ja 0x42161b
push 0x77777777
push esp
push esp
push esp
xchg edx, eax
pushal
pushal
ja 0x4215bd
std
std
cmpsb byte [esi], byte es:[edi]
cmpsb byte [esi], byte es:[edi]
cmpsb byte [esi], byte es:[edi]
std
std
std
inc eax
jne 0x42154c
pushal
pop es
pushal
pushal
pushal
pushal
pushal
pushal
pushal
pushal
xchg ecx, eax
xchg ecx, eax
xchg ecx, eax
xchg ecx, eax
pushal
pushal
pushal
pushal
pushal
pushal
pushal
pushal
pushal
pushal
pushal
pushal
pushal
pushal
pushal
pushal
pushal
pop es
pop es
pop es
xor esi, dword [ebx]
xor eax, dword [edi]
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
rol ecx, 0x33
pop es
pop es
pop es
rol ecx, 0xc1
shl dword [esi + 0x33], 0x77
out dx, eax
retf 0x6666
push ecx
jecxz 0x421601
jecxz 0x4215be
lahf
bound esp, qword [esi]
cld
mov dword [0xa3a3a3a3], eax
test eax, 0x15151515
sbb byte [edi + 0x67], ah
sbb eax, 0x3913131d
adc eax, 0x18151515
sbb eax, 0x3913131d
fcomp st(0)
loop 0x421656
dec byte [edx - 0x51b6cd1e]
mov dword [ecx - 0x54547377], ecx
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
inc ecx
inc ecx
invalid
push ds
push cs
rcr byte [edx], 1
sbb edx, esi
push ss
push ss
mov cl, 0x3f
jnp 0x4216de
jnp 0x42166a
add eax, 0x9f515151
bound edi, qword [ebx - 0x78]
mov byte [esp + ebp*2 - 0x5d], ch
mov dword [0x616161a9], eax
popal
popal
test eax, 0x6c6c6ca3
insb byte es:[edi], dx
dec edx
movsb byte es:[edi], byte [esi]
jnp 0x4216fd
dec esi
notrack jmp 0x421628
fcomp st(0)
xor al, 0x27
stosd dword es:[edi], eax
and dl, byte [edi + 0x57]
mov esi, dword [esp + esi]
daa
daa
daa
daa
daa
retf 0xae6f
jnp 0x421773
mov dl, 0xb2
mov dl, 0xb2
mov dl, 0xb2
mov dl, 0xfc
insb byte es:[edi], dx
div dh
test dl, 0xc2
ret 0x6ac2
in eax, dx
mov esi, 0x21797979
jns 0x4217f0
jns 0x42179a
and dword [ecx], esp
and ebp, esp
mov bh, 0xa8
in eax, 0x4d
dec ebp
or al, 0xc
dec ebp
cmpsb byte [esi], byte es:[edi]
test al, 0x20
mov bh, 0xb7
invalid