Function at 0x4118ee
Capabilities:
Accept command line arguments
Check if file exists
Create a process with modified i/o handles and window
Create process on windows
Get common file path
Get file attributes
Get file size
Get graphical window text
Hide graphical window
Query or enumerate registry value
Read .ini file
Read file on windows
Set current directory
Terminate process
Write and execute a file
Write file on windows

Disassembly:
push 0
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleA]
mov dword [0x4015bc], eax
push str.USER32.DLL
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleA]
or eax, eax
je 0x411951
mov ebx, eax
push str.SetGestureConfig
push ebx
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
or eax, eax
je 0x411951
mov esi, eax
push str.GetGestureInfo
push ebx
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
or eax, eax
je 0x411951
mov edi, eax
push str.CloseGestureInfoHandle
push ebx
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
or eax, eax
je 0x411951
mov dword [0x4015b8], eax
mov dword [0x4015b0], esi
mov dword [0x4015b4], edi
call dword [sym.imp.KERNEL32.DLL_GetCommandLineA]
mov esi, eax
mov edi, 0x4067b4
lodsb al, byte [esi]
cmp al, 0x20
je 0x41195e
cmp al, 0x22
je 0x411983
cmp al, 0xd
je 0x411992
or al, al
jne 0x411972
dec esi
jmp 0x411992
stosb byte es:[edi], al
lodsb al, byte [esi]
cmp al, 0x20
je 0x411992
cmp al, 0xd
je 0x411992
or al, al
jne 0x411972
dec esi
jmp 0x411992
lodsb al, byte [esi]
cmp al, 0x22
je 0x411992
cmp al, 0xd
je 0x411992
stosb byte es:[edi], al
or al, al
jne 0x411983
dec esi
mov dword [0x401628], esi
mov ebx, edi
cmp ebx, 0x4067b4
je 0x4119b5
dec ebx
mov al, byte [ebx]
cmp al, 0x5c
je 0x4119b5
cmp al, 0x2f
je 0x4119b5
cmp al, 0x2e
jne 0x41199a
mov edi, ebx
jmp 0x41199a
mov eax, 0x494e492e
stosd dword es:[edi], eax
xor al, al
stosb byte es:[edi], al
push 0x401634
push 0x4067b4
push 0x1000
push 0x4067b4
call dword [sym.imp.KERNEL32.DLL_GetFullPathNameA]
mov esi, 0x4067b4
mov ecx, dword [0x401634]
sub ecx, esi
mov edi, 0x4077b4
rep movsb byte es:[edi], byte [esi]
mov eax, 0x4c434e49
stosd dword es:[edi], eax
mov eax, 0x454455
stosd dword es:[edi], eax
push 0x4067b4
call dword [sym.imp.KERNEL32.DLL_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x411a22
push 0x4067b4
push 0x4077b4
push str.Include
push str.Environment
call dword [sym.imp.KERNEL32.DLL_WritePrivateProfileStringA]
mov dword [0x40160c], 0
push 1
push 0x40160c
push str.OneInstanceOnly
push 0x401286
push 0x4067b4
call fcn.00414ce4
cmp dword [0x40160c], 0
je 0x411a65
push 0
push str.FASMW_IDE32
call dword [sym.imp.USER32.DLL_FindWindowA]
or eax, eax
jne 0x411ced
push 0x7f01
push 0
call dword [sym.imp.USER32.DLL_LoadCursorA]
mov dword [0x40c7e8], eax
mov dword [0x40c7d0], 0x4008
mov dword [0x40c7d4], 0x40d000
mov eax, dword [0x4015bc]
mov dword [0x40c7e0], eax
mov dword [0x40c7dc], 4
xor eax, eax
mov dword [0x40c7ec], eax
mov dword [0x40c7d8], eax
mov dword [0x40c7f0], eax
mov dword [0x40c7f4], 0x401023
push 0x40c7d0
call dword [sym.imp.USER32.DLL_RegisterClassA]
or eax, eax
je 0x411d8c
push 0
push 1
push 0
push 0
push 6
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.GDI32.DLL_CreateFontA]
or eax, eax
je 0x411d8c
mov dword [0x40c9ec], eax
mov edi, 0x40caa8
xor ebx, ebx
mov esi, 0x100
push ebx
call dword [sym.imp.USER32.DLL_CharUpperA]
stosb byte es:[edi], al
inc bl
dec esi
jne 0x411b08
mov edi, 0x43119b
mov ecx, 0x100
xor al, al
stosb byte es:[edi], al
inc al
loop 0x411b21
mov esi, 0x4311fc
mov edi, 0x4311dc
mov ecx, 0x1a
rep movsb byte es:[edi], byte [esi]
mov edi, 0x43119b
mov esi, 0x42a646
movzx ecx, byte [esi - 1]
xor eax, eax
lodsb al, byte [esi]
mov byte [edi + eax], 0
loop 0x411b47
push 0x191
push dword [0x4015bc]
call dword [sym.imp.USER32.DLL_LoadIconA]
mov dword [0x40c7e4], eax
push 0x7f00
push 0
call dword [sym.imp.USER32.DLL_LoadCursorA]
mov dword [0x40c7e8], eax
mov dword [0x40c7d0], 0
mov dword [0x40c7d4], 0x411d98
mov dword [0x40c7d8], 0
mov dword [0x40c7dc], 0
mov eax, dword [0x4015bc]
mov dword [0x40c7e0], eax
mov dword [0x40c7ec], 0x10
mov dword [0x40c7f0], 0
mov dword [0x40c7f4], 0x401017
push 0x40c7d0
call dword [sym.imp.USER32.DLL_RegisterClassA]
push 0x65
push dword [0x4015bc]
call dword [sym.imp.USER32.DLL_LoadMenuA]
mov dword [0x4015c4], eax
push 1
push eax
call dword [sym.imp.USER32.DLL_GetSubMenu]
mov dword [0x4015c8], eax
push 0x66
push dword [0x4015bc]
call dword [sym.imp.USER32.DLL_LoadMenuA]
push 0
push eax
call dword [sym.imp.USER32.DLL_GetSubMenu]
mov dword [0x4015cc], eax
push 0xc9
push dword [0x4015bc]
call dword [sym.imp.USER32.DLL_LoadAcceleratorsA]
mov dword [0x4015d0], eax
push 0
push dword [0x4015bc]
push dword [0x4015c4]
push 0
push 0x144
push 0x180
push 0x40
push 0x60
push 0x6cf0000
push str.flat_assembler_1.73.32
push str.FASMW_IDE32
push 0
call dword [sym.imp.USER32.DLL_CreateWindowExA]
or eax, eax
je 0x411d8c
mov dword [0x4015d8], eax
mov eax, 5
test dword [0x40c894], 2
je 0x411c7c
mov eax, 3
push eax
push dword [0x4015d8]
call dword [sym.imp.USER32.DLL_ShowWindow]
push dword [0x4015d8]
call dword [sym.imp.USER32.DLL_UpdateWindow]
push 0
push 0
push 0
push 0x40c7b4
call dword [sym.imp.USER32.DLL_GetMessageA]
or eax, eax
je 0x411d8c
push 0x40c7b4
push dword [0x4015d0]
push dword [0x4015d8]
call dword [sym.imp.USER32.DLL_TranslateAccelerator]
or eax, eax
jne 0x411c95
cmp dword [0x40c7b8], 0x100
je 0x411ce0
push 0x40c7b4
call dword [sym.imp.USER32.DLL_TranslateMessage]
push 0x40c7b4
call dword [sym.imp.USER32.DLL_DispatchMessageA]
jmp 0x411c95
mov ebx, eax
push 0x40c890
push ebx
call dword [sym.imp.USER32.DLL_GetWindowPlacement]
mov eax, 1
cmp dword [0x40c898], 3
jne 0x411d0e
mov eax, 3
push eax
push ebx
call dword [sym.imp.USER32.DLL_ShowWindow]
push ebx
call dword [sym.imp.USER32.DLL_SetForegroundWindow]
push 0x4087b4
push 0x4000
call dword [sym.imp.KERNEL32.DLL_GetCurrentDirectoryA]
inc eax
mov dword [0x40c9e0], eax
mov dword [0x40c9e4], 0x4087b4
mov dword [0x40c9dc], 1
push 0x40c9dc
push 0
push 0x4a
push ebx
call dword [sym.imp.USER32.DLL_SendMessageA]
mov edi, dword [0x401628]
mov dword [0x40c9e4], edi
or ecx, 0xffffffff
xor al, al
repne scasb al, byte es:[edi]
neg ecx
mov dword [0x40c9e0], ecx
mov dword [0x40c9dc], 0
push 0x40c9dc
push 0
push 0x4a
push ebx
call dword [sym.imp.USER32.DLL_SendMessageA]
push dword [0x40c7bc]
call dword [sym.imp.KERNEL32.DLL_ExitProcess]