Function at 0x401610
Capabilities:
Accept command line arguments
Create process on windows

Disassembly:
sub esp, 0x110
push ebx
push edi
xor ebx, ebx
push 0x41a17c
push ebx
call dword [sym.imp.MSVCRT.dll_setlocale]
add esp, 8
call fcn.0040a320
push ebx
call dword [sym.imp.ole32.dll_CoInitialize]
call fcn.0040a120
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x15]
mov byte [esp + 0x14], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov dword [esp + 8], ebx
stosb byte es:[edi], al
call fcn.00401540
cmp eax, ebx
jne 0x4016c3
lea eax, [esp + 0x14]
push 0x104
lea ecx, [esp + 0xc]
push eax
push ecx
call fcn.004086f0
add esp, 0xc
test eax, eax
je 0x4016da
push 0x24
push 0x41a0e0
push 0x41a154
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 6
jne 0x4016b0
push 5
push ebx
lea edx, [esp + 0x1c]
push ebx
push edx
push str.open
push ebx
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
pop edi
xor eax, eax
pop ebx
add esp, 0x110
ret 0x10
cmp dword [esp + 8], ebx
je 0x4016da
pop edi
xor eax, eax
pop ebx
add esp, 0x110
ret 0x10
cmp eax, 1
je 0x4016da
cmp eax, 2
jne 0x4016da
pop edi
xor eax, eax
pop ebx
add esp, 0x110
ret 0x10
mov eax, dword [esp + 0x11c]
push ebp
push esi
push ebx
push eax
push ebx
mov ecx, 0x41ea78
call fcn.00401c50
call fcn.00409ea0
call fcn.00407150
call fcn.00409cb0
mov esi, 3
call fcn.00409a70
call fcn.00409830
dec esi
jne 0x401704
call fcn.00408f70
call fcn.00409190
call fcn.00408c40
push 0x41a148
call fcn.00407240
push 0x41a144
call fcn.00407240
push 0x41a140
call fcn.00407240
push 0x41a13c
call fcn.00407240
add esp, 0x10
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.USER32.dll_DefWindowProcA]
lea ecx, [esp + 0x14]
push ecx
mov dword [esp + 0x18], 8
mov dword [esp + 0x1c], 0x404
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
mov edx, dword [esp + 0x130]
mov eax, dword [esp + 0x12c]
push edx
push eax
call fcn.00401000
mov ecx, dword [0x41eb20]
add esp, 8
add ecx, 0x1c
mov ebp, eax
push ecx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov esi, dword [0x41eb04]
cmp esi, ebx
je 0x4017bc
cmp dword [esi + 4], ebx
jle 0x4017ba
mov edx, dword [esi]
mov eax, dword [edx]
push eax
call dword [sym.imp.USER32.dll_DestroyWindow]
mov esi, dword [0x41eb04]
cmp esi, ebx
mov edi, dword [sym.imp.MSVCRT.dll_free]
je 0x4017e1
mov eax, dword [esi]
cmp eax, ebx
je 0x4017d2
push eax
call edi
add esp, 4
mov dword [esi], ebx
push esi
mov dword [esi + 4], ebx
mov dword [esi + 8], ebx
call fcn.00414a60
add esp, 4
mov ecx, dword [0x41eb20]
mov dword [0x41eb04], ebx
add ecx, 0x1c
push ecx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov esi, dword [0x41eb00]
cmp esi, ebx
je 0x40182b
mov eax, dword [esi]
cmp eax, ebx
je 0x40180f
push eax
call edi
add esp, 4
mov dword [esi], ebx
mov eax, dword [esi + 4]
cmp eax, ebx
je 0x40181f
push eax
call edi
add esp, 4
mov dword [esi + 4], ebx
push esi
mov dword [esi + 8], ebx
call fcn.00414a60
add esp, 4
mov edx, 0x41ea78
test edx, edx
je 0x4018ef
mov esi, dword [0x41ea88]
cmp esi, ebx
je 0x401873
cmp dword [esi], ebx
je 0x401873
mov edi, 0x64
mov eax, dword [esi + 0x10]
cmp eax, ebx
je 0x401858
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push ebx
mov dword [esi + 0x10], ebx
call dword [esi + 0x20]
cmp dword [0x41ea78], edi
jne 0x40186c
add esi, 0x1c
jmp 0x40186f
add esi, 0x24
cmp dword [esi], ebx
jne 0x40184b
mov esi, dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
push 0x41ea94
call esi
push 0x41eaac
call esi
push 0x41eac4
call esi
mov esi, dword [0x41eaf8]
cmp esi, ebx
je 0x4018b0
mov edx, dword [esi + 4]
push edx
call dword [esi]
mov edi, dword [esi + 8]
push esi
call fcn.00414a60
add esp, 4
cmp edi, ebx
mov esi, edi
jne 0x401898
cmp dword [0x41ea90], ebx
je 0x4018ef
cmp byte [0x41eae4], bl
je 0x4018ef
mov eax, dword [0x41eaf0]
mov edi, dword [sym.imp.KERNEL32.dll_HeapDestroy]
cmp eax, ebx
je 0x4018e6
xor esi, esi
mov eax, dword [0x41eaf0]
mov ecx, dword [eax + esi*4]
push ecx
call edi
mov eax, dword [0x41eaec]
inc esi
cmp esi, eax
jbe 0x4018d1
mov edx, dword [0x41ea90]
push edx
call edi
call dword [sym.imp.ole32.dll_CoUninitialize]
mov eax, ebp
pop esi
pop ebp
pop edi
pop ebx
add esp, 0x110
ret 0x10