Function at 0x40178e
Capabilities:
Accept command line arguments
Link many functions at runtime

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x14e4
call fcn.00403160
mov eax, dword [0x40400c]
xor eax, esp
mov dword [esp + reloc.KERNEL32.dll_HeapAlloc], eax
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
xor edx, edx
push 7
pop ecx
xor eax, eax
push 9
mov dword [esp + 0x7c], edx
lea edi, [esp + 0x80]
rep stosd dword es:[edi], eax
pop ecx
mov dword [esp + 0x50], edx
lea edi, [esp + 0x54]
rep stosd dword es:[edi], eax
push 0x206
mov word [esp + 0x9c], ax
xor edi, edi
lea eax, [esp + 0x9e]
push edi
push eax
mov dword [esp + 0x20], edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x40], edx
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], edx
call sub.msvcrt.dll_memset
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov ebx, eax
mov eax, edi
mov dword [esp + 0x40], eax
lea edx, reloc.KERNEL32.dll_HeapAlloc
lea eax, [esp + 0x28]
mov dword [esp + 0x44], edi
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], edi
call fcn.0040160b
push edi
push edi
push 1
push edi
mov dword [esp + 0x34], edi
call dword [sym.imp.KERNEL32.dll_HeapSetInformation]
test eax, eax
jne 0x401852
or ebx, reloc.KERNEL32.dll_HeapAlloc
jmp 0x401e6c
mov edi, ebx
call fcn.004025cb
mov dword [0x40437c], esi
call fcn.0040172b
mov edi, dword [sym.imp.USER32.dll_LoadStringW]
push 0x104
lea ecx, [esp + 0x9c]
push ecx
push 0x7d1
push eax
mov dword [0x404378], eax
call edi
mov eax, dword [0x40437c]
push 0x65
push dword [0x404378]
xor esi, esi
mov dword [esp + 0x58], 3
mov dword [esp + 0x5c], 0x401ef2
mov dword [esp + 0x60], esi
mov dword [esp + 0x64], esi
mov dword [esp + 0x68], eax
call dword [sym.imp.USER32.dll_LoadIconW]
push 0x7f00
push esi
mov dword [esp + 0x6c], eax
call dword [sym.imp.USER32.dll_LoadCursorW]
push esi
mov dword [esp + 0x6c], eax
call dword [sym.imp.GDI32.dll_GetStockObject]
mov dword [esp + 0x6c], eax
lea eax, [esp + 0x98]
mov dword [esp + 0x70], eax
lea eax, [esp + 0x50]
mov esi, 0x4011c4
push eax
mov dword [esp + 0x78], esi
call dword [sym.imp.USER32.dll_RegisterClassW]
xor ecx, ecx
push ecx
push dword [0x40437c]
lea eax, [esp + 0xa0]
push ecx
push ecx
push 0xc8
push 0x12c
push ecx
push ecx
push 0xcf0000
push eax
push esi
push ecx
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov esi, eax
mov dword [esp + 0x10], esi
test esi, esi
je 0x4019c2
mov dword [esp + 0x7c], esi
call fcn.004016ae
mov dword [0x404380], eax
test eax, eax
jne 0x40194e
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
xor edi, edi
jmp 0x401e6c
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0x38]
push eax
mov ecx, ebx
call fcn.00401f18
test eax, eax
js 0x4019c2
mov ebx, dword [esp + 0x34]
test ebx, 0x2000
je 0x4019c7
xor eax, eax
push 0x81e
push eax
mov word [esp + 0xcd0], ax
lea eax, reloc.KERNEL32.dll_HeapAlloc
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
push 0x410
lea eax, reloc.KERNEL32.dll_HeapAlloc
push eax
push 0x7d7
push dword [0x404378]
call edi
push 0x40
lea eax, [esp + 0x9c]
push eax
lea eax, reloc.KERNEL32.dll_HeapAlloc
push eax
push esi
call dword [sym.imp.USER32.dll_MessageBoxW]
xor ebx, ebx
inc ebx
jmp 0x401947
test ebx, 0x1000
je 0x4019ec
push 7
push dword [0x404380]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x4019c2
call eax
test eax, eax
jns 0x4019c2
jmp 0x401945
test ebx, 0x800
je 0x401a0a
push 0xb
push dword [0x404380]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x4019c2
call eax
jmp 0x4019c2
test ebx, 0x4000
je 0x401a16
push 6
jmp 0x4019f6
test ebx, 0x8000
je 0x401a22
push 5
jmp 0x4019f6
test bl, bl
jns 0x401a2a
push 0x16
jmp 0x4019f6
mov ecx, 0x401064
test bl, 7
je 0x401a4c
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x401a42
mov dword [esp + 0x18], ecx
jmp 0x401aa8
mov eax, dword [esp + 0x28]
mov dword [esp + 0x18], eax
jmp 0x401aa8
test ebx, 0x100
je 0x401a6b
cmp dword [esp + 0x24], 0
jne 0x401a61
mov dword [esp + 0x1c], ecx
jmp 0x401aa8
mov eax, dword [esp + 0x28]
mov dword [esp + 0x1c], eax
jmp 0x401aa8
test ebx, 0x200
je 0x401a8a
cmp dword [esp + 0x24], 0
jne 0x401a80
mov dword [esp + 0x20], ecx
jmp 0x401aa8
mov eax, dword [esp + 0x28]
mov dword [esp + 0x20], eax
jmp 0x401aa8
mov eax, dword [esp + 0x24]
test eax, eax
je 0x401aa8
mov eax, dword [esp + 0x28]
or dword [esp + 0x84], 0x80000000
mov dword [esp + 0x80], eax
mov eax, dword [0x404380]
test eax, eax
je 0x4019c2
push 0x4012f8
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x4019c2
mov dword [esp + 0x78], 0x20
mov esi, 0x40126c
lea edi, [esp + 0x88]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
xor edi, edi
push edi
lea ecx, [esp + 0x7c]
push ecx
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x18]
push ecx
call eax
mov esi, eax
test esi, esi
jns 0x401baa
xor eax, eax
push 0x206
mov word [esp + 0x6b4], ax
lea eax, reloc.KERNEL32.dll_HeapAlloc
push edi
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
cmp esi, 0x80040108
je 0x401b6a
cmp esi, 0x80040116
je 0x401b63
cmp esi, 0x8004011b
je 0x401b5c
cmp esi, 0x80070005
je 0x401b55
xor eax, eax
cmp esi, 0x8007000e
sete al
dec eax
and eax, 0xfffffff7
add eax, 0x7dc
jmp 0x401b6f
mov eax, 0x7dd
jmp 0x401b6f
mov eax, 0x7de
jmp 0x401b6f
mov eax, 0x7df
jmp 0x401b6f
mov eax, 0x7e1
push 0x104
lea ecx, reloc.KERNEL32.dll_HeapAlloc
push ecx
push eax
push dword [0x404378]
call dword [sym.imp.USER32.dll_LoadStringW]
lea eax, [esp + 0x98]
push reloc.KERNEL32.dll_ResolveDelayLoadedAPI
push eax
lea eax, reloc.KERNEL32.dll_HeapAlloc
push eax
push dword [esp + 0x1c]
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x401e69
test bl, 0x10
je 0x401bc3
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
push edi
push dword [esp + 0x10]
push eax
call dword [ecx + 0x24]
jmp 0x401e69
test bl, 0x40
je 0x401bf4
push dword [esp + 0x10]
mov dword [esp + 0x3c], edi
xor eax, eax
lea edi, [esp + 0x40]
stosd dword es:[edi], eax
push dword [esp + 0x40]
mov eax, dword [esp + 0x1c]
push dword [esp + 0x40]
mov ecx, dword [eax]
push 8
push dword [esp + 0x1c]
push eax
call dword [ecx + 0x3c]
jmp 0x4019c2
test bl, 0x20
je 0x401c26
mov edx, 0x401064
cmp dword [esp + 0x24], edi
je 0x401c08
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
push edi
push edx
push 0x80000008
push dword [esp + 0x1c]
push dword [esp + 0x1c]
push eax
call dword [ecx + 0x2c]
jmp 0x401e69
test bl, 1
je 0x401ce9
mov edx, dword [esp + 0x18]
test edx, edx
je 0x401c5b
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, di
jne 0x401c3c
sub ecx, esi
lea eax, [esp + 0x40]
sar ecx, 1
push eax
call fcn.004024da
mov edx, dword [esp + 0x40]
jmp 0x401c5f
mov eax, edi
mov edx, eax
test eax, eax
js 0x401e69
cmp dword [esp + 0x4c], edi
jne 0x401c72
mov edx, 0x401060
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
push edx
push edi
push dword [esp + 0x14]
push eax
call dword [ecx + 0x28]
test eax, eax
jns 0x401e69
cmp eax, 0x80040113
je 0x401e69
xor eax, eax
push 0x206
mov word [esp + 0x2a4], ax
lea eax, reloc.KERNEL32.dll_HeapAlloc
push edi
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
push 0x104
lea eax, reloc.KERNEL32.dll_HeapAlloc
push eax
push 0x7e3
push dword [0x404378]
call dword [sym.imp.USER32.dll_LoadStringW]
lea eax, [esp + 0x98]
push reloc.KERNEL32.dll_ResolveDelayLoadedAPI
push eax
lea eax, reloc.KERNEL32.dll_HeapAlloc
jmp 0x401b9a
test bl, 4
je 0x401d7e
push 9
push dword [0x404380]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x401e69
and ebx, 8
push ebx
push dword [esp + 0x1c]
push edi
push dword [esp + 0x18]
call eax
test eax, eax
jns 0x401e69
cmp eax, 0x80040113
je 0x401e69
xor eax, eax
push 0x206
mov word [esp + 0x8bc], ax
lea eax, reloc.KERNEL32.dll_HeapAlloc
push edi
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
push 0x104
lea eax, reloc.KERNEL32.dll_HeapAlloc
push eax
push 0x7e5
push dword [0x404378]
call dword [sym.imp.USER32.dll_LoadStringW]
lea eax, [esp + 0x98]
push reloc.KERNEL32.dll_ResolveDelayLoadedAPI
push eax
lea eax, reloc.KERNEL32.dll_HeapAlloc
jmp 0x401b9a
test bl, 2
je 0x401e13
push 8
push dword [0x404380]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x401e69
and ebx, 8
push ebx
push dword [esp + 0x1c]
push edi
push dword [esp + 0x18]
call eax
test eax, eax
jns 0x401e69
cmp eax, 0x80040113
je 0x401e69
xor eax, eax
push 0x206
mov word [esp + 0x4ac], ax
lea eax, reloc.KERNEL32.dll_HeapAlloc
push edi
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
push 0x104
lea eax, reloc.KERNEL32.dll_HeapAlloc
push eax
push 0x7e6
push dword [0x404378]
call dword [sym.imp.USER32.dll_LoadStringW]
lea eax, [esp + 0x98]
push reloc.KERNEL32.dll_ResolveDelayLoadedAPI
push eax
lea eax, reloc.KERNEL32.dll_HeapAlloc
jmp 0x401b9a
test ebx, 0x100
je 0x401e41
push 0xa
push dword [0x404380]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x401e69
push dword [esp + 0x1c]
push dword [esp + 0x10]
push dword [esp + 0x1c]
push dword [esp + 0x1c]
call eax
jmp 0x401e69
test ebx, 0x200
je 0x401e69
push 0x17
push dword [0x404380]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x401e69
push dword [esp + 0x20]
push dword [esp + 0x10]
push dword [esp + 0x18]
call eax
xor ebx, ebx
inc ebx
mov ecx, dword [esp + 0xc]
test ecx, ecx
je 0x401e7e
mov dword [esp + 0xc], edi
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x401e90
mov dword [esp + 0x14], edi
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov eax, dword [0x404380]
mov esi, dword [sym.imp.KERNEL32.dll_FreeLibrary]
test eax, eax
je 0x401ea8
push eax
call esi
mov dword [0x404380], edi
mov eax, dword [0x404378]
test eax, eax
je 0x401eba
push eax
call esi
mov dword [0x404378], edi
lea esi, [esp + 0x28]
mov dword [esp + 0x24], edi
call fcn.00401637
lea esi, [esp + 0x40]
mov dword [esp + 0x4c], edi
call fcn.00401637
mov ecx, dword [esp + reloc.KERNEL32.dll_HeapAlloc]
pop edi
pop esi
mov eax, ebx
pop ebx
xor ecx, esp
call fcn.00402bf4
mov esp, ebp
pop ebp
ret 0x10