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

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
mov eax, 0x1524
call fcn.004037d0
mov eax, dword [0x404034]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
xor eax, eax
push esi
push edi
push 8
pop ecx
push 0xa
lea edi, [ebp - 0x14b8]
xor edx, edx
rep stosd dword es:[edi], eax
pop ecx
lea edi, [ebp - 0x1520]
mov dword [ebp - 0x14c4], edx
rep stosd dword es:[edi], eax
push 0x208
xor edi, edi
mov dword [ebp - 0x14bc], edx
lea eax, [ebp - 0x210]
mov dword [ebp - 0x14c8], edx
push edi
push eax
mov dword [ebp - 0x14cc], edx
mov dword [ebp - 0x14d0], edx
mov dword [ebp - 0x14d4], edx
call sub.msvcrt.dll_memset
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov esi, eax
mov dword [ebp - 0x14f0], edi
push ecx
lea eax, [ebp - 0xc38]
mov dword [ebp - 0x14f4], edi
push eax
lea ecx, [ebp - 0x14e0]
mov dword [ebp - 0x14ec], edi
mov dword [ebp - 0x14e8], edi
call fcn.00401a72
push edi
push edi
push 1
push edi
mov dword [ebp - 0x14e4], edi
call dword [sym.imp.KERNEL32.dll_HeapSetInformation]
test eax, eax
jne 0x401ce9
or ebx, 0xffffffff
jmp 0x401f95
mov ecx, esi
call fcn.00402943
mov dword [0x4043a0], ebx
call fcn.00401bbb
push 0x104
lea ecx, [ebp - 0x210]
mov dword [0x40439c], eax
push ecx
push 0x7d1
push eax
call dword [sym.imp.USER32.dll_LoadStringW]
mov eax, dword [0x4043a0]
push 0x65
push dword [0x40439c]
mov dword [ebp - 0x1520], 3
mov dword [ebp - 0x151c], 0x402540
mov dword [ebp - 0x1518], edi
mov dword [ebp - 0x1514], edi
mov dword [ebp - 0x1510], eax
call dword [sym.imp.USER32.dll_LoadIconW]
push 0x7f00
push edi
mov dword [ebp - 0x150c], eax
call dword [sym.imp.USER32.dll_LoadCursorW]
push edi
mov dword [ebp - 0x1508], eax
call dword [sym.imp.GDI32.dll_GetStockObject]
mov dword [ebp - 0x1504], eax
mov edi, 0x40134c
lea eax, [ebp - 0x210]
mov dword [ebp - 0x14fc], edi
mov dword [ebp - 0x1500], eax
lea eax, [ebp - 0x1520]
push eax
call dword [sym.imp.USER32.dll_RegisterClassW]
xor eax, eax
push eax
push dword [0x4043a0]
push eax
push eax
push 0xc8
push 0x12c
push eax
push eax
push 0xcf0000
lea eax, [ebp - 0x210]
push eax
push edi
xor edi, edi
push edi
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov ebx, eax
mov dword [ebp - 0x14c0], ebx
test ebx, ebx
je 0x401f1b
mov dword [ebp - 0x14b4], ebx
call fcn.00401b48
mov dword [0x4043a4], eax
test eax, eax
jne 0x401df8
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
jmp 0x401f95
lea eax, [ebp - 0x14e4]
mov ecx, esi
push eax
lea edx, [ebp - 0x14c8]
call fcn.00402563
test eax, eax
js 0x401f1b
call fcn.004018fa
cmp dword [section..data], 5
mov esi, 0x4000
jbe 0x401ea1
mov ecx, dword [0x40400c]
mov eax, edi
and ecx, esi
or eax, ecx
je 0x401ea1
mov ecx, dword [0x404014]
mov eax, ecx
and eax, esi
cmp edi, dword [0x404010]
jne 0x401ea1
cmp eax, ecx
jne 0x401ea1
lea eax, [ebp - 0x14c8]
mov dword [ebp - 0x1478], 0x40139c
mov dword [ebp - 0x1474], edi
mov dword [ebp - 0x1470], 0xc
mov dword [ebp - 0x146c], edi
mov dword [ebp - 0x1468], eax
mov dword [ebp - 0x1464], edi
mov dword [ebp - 0x1460], 4
mov dword [ebp - 0x145c], edi
lea eax, [ebp - 0x1498]
mov edx, 0x401499
push eax
sub esp, 0xc
call fcn.00401989
push dword [0x40401c]
push dword [0x404018]
call dword [sym.imp.ADVAPI32.dll_EventUnregister]
mov eax, dword [ebp - 0x14c8]
mov dword [0x404018], edi
mov dword [0x40401c], edi
mov dword [section..data], edi
test eax, 0x2000
je 0x401f20
push 0x820
lea eax, [ebp - 0x1458]
push edi
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [ebp - 0x1458]
push 0x410
push eax
push 0x7d7
push dword [0x40439c]
call dword [sym.imp.USER32.dll_LoadStringW]
push 0x40
lea eax, [ebp - 0x210]
push eax
lea eax, [ebp - 0x1458]
push eax
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
xor ebx, ebx
inc ebx
jmp 0x401f95
test eax, 0x1000
je 0x401f5a
push 7
push dword [0x4043a4]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test edi, edi
je 0x401f90
mov ecx, edi
call dword [0x405130]
mov esi, esp
call edi
cmp esi, esp
je 0x401f52
mov ecx, 4
int 0x29
test eax, eax
jns 0x401f90
mov ebx, eax
jmp 0x401f93
test eax, 0x800
je 0x402057
push 0xb
push dword [0x4043a4]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test edi, edi
je 0x401f90
mov ecx, edi
call dword [0x405130]
mov esi, esp
call edi
cmp esi, esp
je 0x401f90
mov ecx, 4
int 0x29
xor ebx, ebx
inc ebx
xor edi, edi
mov ecx, dword [ebp - 0x14bc]
test ecx, ecx
je 0x401fc2
mov dword [ebp - 0x14bc], edi
mov edi, esp
mov eax, dword [ecx]
push ecx
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x405130]
call esi
cmp edi, esp
je 0x401fc2
mov ecx, 4
int 0x29
mov ecx, dword [ebp - 0x14c4]
test ecx, ecx
je 0x401ff0
and dword [ebp - 0x14c4], 0
mov edi, esp
mov eax, dword [ecx]
push ecx
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x405130]
call esi
cmp edi, esp
je 0x401ff0
mov ecx, 4
int 0x29
mov eax, dword [0x4043a4]
test eax, eax
je 0x402007
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
and dword [0x4043a4], 0
mov eax, dword [0x40439c]
test eax, eax
je 0x40201e
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
and dword [0x40439c], 0
and dword [ebp - 0x14e4], 0
lea ecx, [ebp - 0x14e0]
call fcn.00401aa6
and dword [ebp - 0x14e8], 0
lea ecx, [ebp - 0x14f4]
call fcn.00401aa6
mov ecx, dword [ebp - 4]
mov eax, ebx
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00403260
mov esp, ebp
pop ebp
ret 0x10
test esi, eax
je 0x402062
push 6
jmp 0x401f67
test eax, 0x8000
je 0x402070
push 5
jmp 0x401f67
test al, al
jns 0x40207b
push 0x16
jmp 0x401f67
mov edx, dword [ebp - 0x14e0]
mov ecx, 0x4011ec
mov ebx, dword [ebp - 0x14e4]
test al, 7
je 0x4020a4
test ebx, ebx
jne 0x40209c
mov dword [ebp - 0x14cc], ecx
jmp 0x4020ee
mov dword [ebp - 0x14cc], edx
jmp 0x4020ee
test eax, 0x100
je 0x4020bf
test ebx, ebx
jne 0x4020b7
mov dword [ebp - 0x14d0], ecx
jmp 0x4020ee
mov dword [ebp - 0x14d0], edx
jmp 0x4020ee
test eax, 0x200
je 0x4020da
test ebx, ebx
jne 0x4020d2
mov dword [ebp - 0x14d4], ecx
jmp 0x4020ee
mov dword [ebp - 0x14d4], edx
jmp 0x4020ee
test ebx, ebx
je 0x4020ee
or dword [ebp - 0x14ac], 0x80000000
mov dword [ebp - 0x14b0], edx
mov eax, dword [0x4043a4]
test eax, eax
je 0x401f1b
push 0x401400
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x14f8], eax
test eax, eax
je 0x401f1b
mov esi, 0x4013e8
mov dword [ebp - 0x14b8], 0x20
lea edi, [ebp - 0x14a8]
lea ecx, [ebp - 0x14b8]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, esp
xor edi, edi
push edi
push ecx
lea ecx, [ebp - 0x14c4]
push ecx
lea ecx, [ebp - 0x14bc]
push ecx
mov ecx, eax
call dword [0x405130]
call dword [ebp - 0x14f8]
cmp esi, esp
je 0x402161
mov ecx, 4
int 0x29
mov esi, eax
test esi, esi
jns 0x402204
push 0x208
lea eax, [ebp - 0x418]
push edi
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
cmp esi, 0x80040108
je 0x4021cb
cmp esi, 0x80040116
je 0x4021c4
cmp esi, 0x8004011b
je 0x4021bd
cmp esi, 0x80070005
je 0x4021b6
xor eax, eax
cmp esi, 0x8007000e
sete al
dec eax
and eax, 0xfffffff7
add eax, 0x7dc
jmp 0x4021d0
mov eax, 0x7dd
jmp 0x4021d0
mov eax, 0x7de
jmp 0x4021d0
mov eax, 0x7df
jmp 0x4021d0
mov eax, 0x7e1
push 0x104
lea ecx, [ebp - 0x418]
push ecx
push eax
push dword [0x40439c]
call dword [sym.imp.USER32.dll_LoadStringW]
lea eax, [ebp - 0x210]
push 0x10
push eax
lea eax, [ebp - 0x418]
push eax
push dword [ebp - 0x14c0]
jmp 0x401f15
mov eax, dword [ebp - 0x14c8]
test al, 0x10
je 0x402234
mov eax, dword [ebp - 0x14c4]
mov edi, esp
push 0
push dword [ebp - 0x14bc]
mov esi, dword [eax]
push eax
mov ecx, dword [esi + 0x24]
call dword [0x405130]
call dword [esi + 0x24]
cmp edi, esp
jmp 0x401f87
test al, 0x40
je 0x402263
mov eax, dword [ebp - 0x14c4]
mov edi, esp
push dword [ebp - 0x14c0]
push 0
mov esi, dword [eax]
push 0
push 8
push dword [ebp - 0x14bc]
mov ecx, dword [esi + 0x3c]
push eax
call dword [0x405130]
call dword [esi + 0x3c]
jmp 0x40222d
test al, 0x20
je 0x4022a3
mov ecx, 0x4011ec
test ebx, ebx
je 0x402276
mov ecx, dword [ebp - 0x14e0]
mov eax, dword [ebp - 0x14c4]
mov edi, esp
push 0
push ecx
push 0x80000008
push dword [ebp - 0x14c0]
mov esi, dword [eax]
push dword [ebp - 0x14bc]
push eax
mov ecx, dword [esi + 0x2c]
call dword [0x405130]
call dword [esi + 0x2c]
jmp 0x40222d
test al, 1
je 0x40235e
push ecx
push dword [ebp - 0x14cc]
lea ecx, [ebp - 0x14f4]
call fcn.00401ae6
test eax, eax
js 0x401f1b
mov ecx, 0x4011ea
cmp dword [ebp - 0x14e8], edi
je 0x4022d8
mov ecx, dword [ebp - 0x14f4]
mov eax, dword [ebp - 0x14c4]
mov edi, esp
push ecx
push 0
push dword [ebp - 0x14bc]
mov esi, dword [eax]
push eax
mov ecx, dword [esi + 0x28]
call dword [0x405130]
call dword [esi + 0x28]
cmp edi, esp
je 0x402303
mov ecx, 4
int 0x29
test eax, eax
jns 0x401f90
cmp eax, 0x80040113
je 0x401f90
push 0x208
xor edi, edi
lea eax, [ebp - 0x620]
push edi
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [ebp - 0x620]
push 0x104
push eax
push 0x7e3
push dword [0x40439c]
call dword [sym.imp.USER32.dll_LoadStringW]
lea eax, [ebp - 0x210]
push 0x10
push eax
lea eax, [ebp - 0x620]
jmp 0x4021f8
test al, 4
je 0x402408
push 9
push dword [0x4043a4]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test edi, edi
je 0x401f90
mov ecx, dword [ebp - 0x14c8]
mov esi, esp
and ecx, 8
push ecx
push dword [ebp - 0x14cc]
mov ecx, edi
push 0
push dword [ebp - 0x14bc]
call dword [0x405130]
call edi
cmp esi, esp
je 0x4023ad
mov ecx, 4
int 0x29
test eax, eax
jns 0x401f90
cmp eax, 0x80040113
je 0x401f90
push 0x208
xor edi, edi
lea eax, [ebp - 0x828]
push edi
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [ebp - 0x828]
push 0x104
push eax
push 0x7e5
push dword [0x40439c]
call dword [sym.imp.USER32.dll_LoadStringW]
lea eax, [ebp - 0x210]
push 0x10
push eax
lea eax, [ebp - 0x828]
jmp 0x4021f8
test al, 2
je 0x4024b2
push 8
push dword [0x4043a4]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test edi, edi
je 0x401f90
mov ecx, dword [ebp - 0x14c8]
mov esi, esp
and ecx, 8
push ecx
push dword [ebp - 0x14cc]
mov ecx, edi
push 0
push dword [ebp - 0x14bc]
call dword [0x405130]
call edi
cmp esi, esp
je 0x402457
mov ecx, 4
int 0x29
test eax, eax
jns 0x401f90
cmp eax, 0x80040113
je 0x401f90
push 0x208
xor edi, edi
lea eax, [ebp - 0xa30]
push edi
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [ebp - 0xa30]
push 0x104
push eax
push 0x7e6
push dword [0x40439c]
call dword [sym.imp.USER32.dll_LoadStringW]
lea eax, [ebp - 0x210]
push 0x10
push eax
lea eax, [ebp - 0xa30]
jmp 0x4021f8
test eax, 0x100
je 0x4024fa
push 0xa
push dword [0x4043a4]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test edi, edi
je 0x401f90
mov esi, esp
mov ecx, edi
push dword [ebp - 0x14d0]
push dword [ebp - 0x14bc]
push dword [ebp - 0x14c4]
push dword [ebp - 0x14c0]
call dword [0x405130]
call edi
jmp 0x401f85
test eax, 0x200
je 0x401f1b
push 0x17
push dword [0x4043a4]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test edi, edi
je 0x401f90
mov esi, esp
mov ecx, edi
push dword [ebp - 0x14d4]
push dword [ebp - 0x14bc]
push dword [ebp - 0x14c0]
call dword [0x405130]
call edi
jmp 0x401f85