Function at 0x4148ee
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 [0x401944], eax
call dword [sym.imp.KERNEL32.DLL_GetProcessHeap]
mov dword [0x401948], eax
push str.USER32.DLL
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleA]
or eax, eax
je 0x41495c
mov ebx, eax
push str.SetGestureConfig
push ebx
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
or eax, eax
je 0x41495c
mov esi, eax
push str.GetGestureInfo
push ebx
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
or eax, eax
je 0x41495c
mov edi, eax
push str.CloseGestureInfoHandle
push ebx
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
or eax, eax
je 0x41495c
mov dword [0x40100c], eax
mov dword [0x401004], esi
mov dword [0x401008], edi
call dword [sym.imp.KERNEL32.DLL_GetCommandLineA]
mov esi, eax
mov edi, 0x406b40
lodsb al, byte [esi]
cmp al, 0x20
je 0x414969
cmp al, 0x22
je 0x41498e
cmp al, 0xd
je 0x41499d
or al, al
jne 0x41497d
dec esi
jmp 0x41499d
stosb byte es:[edi], al
lodsb al, byte [esi]
cmp al, 0x20
je 0x41499d
cmp al, 0xd
je 0x41499d
or al, al
jne 0x41497d
dec esi
jmp 0x41499d
lodsb al, byte [esi]
cmp al, 0x22
je 0x41499d
cmp al, 0xd
je 0x41499d
stosb byte es:[edi], al
or al, al
jne 0x41498e
dec esi
mov dword [0x4019ac], esi
mov ebx, edi
cmp ebx, 0x406b40
je 0x4149c0
dec ebx
mov al, byte [ebx]
cmp al, 0x5c
je 0x4149c0
cmp al, 0x2f
je 0x4149c0
cmp al, 0x2e
jne 0x4149a5
mov edi, ebx
jmp 0x4149a5
mov eax, 0x696e692e
stosd dword es:[edi], eax
xor al, al
stosb byte es:[edi], al
push 0x4019c0
push 0x406b40
push 0x1000
push 0x406b40
call dword [sym.imp.KERNEL32.DLL_GetFullPathNameA]
mov esi, 0x406b40
mov ecx, dword [0x4019c0]
sub ecx, esi
mov edi, 0x407b40
rep movsb byte es:[edi], byte [esi]
mov eax, 0x6c636e69
stosd dword es:[edi], eax
mov eax, 0x656475
stosd dword es:[edi], eax
push 0x406b40
call dword [sym.imp.KERNEL32.DLL_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x414a2d
push 0x406b40
push 0x407b40
push str.Include
push str.Environment
call dword [sym.imp.KERNEL32.DLL_WritePrivateProfileStringA]
mov dword [0x401990], 0
push 1
push 0x401990
push str.OneInstanceOnly
push 0x401253
push 0x406b40
call fcn.00417cfa
cmp dword [0x401990], 0
je 0x414a70
push 0
push str.FASMGW
call dword [sym.imp.USER32.DLL_FindWindowA]
or eax, eax
jne 0x414cf9
push 0x7f01
push 0
call dword [sym.imp.USER32.DLL_LoadCursorA]
mov dword [0x40eb74], eax
mov dword [0x40eb5c], 0x4008
mov dword [0x40eb60], 0x410000
mov eax, dword [0x401944]
mov dword [0x40eb6c], eax
mov dword [0x40eb68], 4
xor eax, eax
mov dword [0x40eb78], eax
mov dword [0x40eb64], eax
mov dword [0x40eb7c], eax
mov dword [0x40eb80], 0x401035
push 0x40eb5c
call dword [sym.imp.USER32.DLL_RegisterClassA]
or eax, eax
je 0x414d98
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 0x414d98
mov dword [0x40ed78], eax
mov edi, 0x40ee34
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 0x414b13
mov edi, section..bss
mov ecx, 0x100
xor al, al
stosb byte es:[edi], al
inc al
loop 0x414b2c
mov esi, 0x42a061
mov edi, 0x42a041
mov ecx, 0x1a
rep movsb byte es:[edi], byte [esi]
mov edi, section..bss
mov esi, 0x428006
mov ecx, 0x19
xor eax, eax
lodsb al, byte [esi]
mov byte [edi + eax], 0
loop 0x414b53
push 0x191
push dword [0x401944]
call dword [sym.imp.USER32.DLL_LoadIconA]
mov dword [0x40eb70], eax
push 0x7f00
push 0
call dword [sym.imp.USER32.DLL_LoadCursorA]
mov dword [0x40eb74], eax
mov dword [0x40eb5c], 0
mov dword [0x40eb60], 0x414da4
mov dword [0x40eb64], 0
mov dword [0x40eb68], 0
mov eax, dword [0x401944]
mov dword [0x40eb6c], eax
mov dword [0x40eb78], 0x10
mov dword [0x40eb7c], 0
mov dword [0x40eb80], 0x40102e
push 0x40eb5c
call dword [sym.imp.USER32.DLL_RegisterClassA]
push 0x65
push dword [0x401944]
call dword [sym.imp.USER32.DLL_LoadMenuA]
mov dword [0x401950], eax
push 1
push eax
call dword [sym.imp.USER32.DLL_GetSubMenu]
mov dword [0x401954], eax
push 0x66
push dword [0x401944]
call dword [sym.imp.USER32.DLL_LoadMenuA]
push 0
push eax
call dword [sym.imp.USER32.DLL_GetSubMenu]
mov dword [0x401958], eax
push 0xc9
push dword [0x401944]
call dword [sym.imp.USER32.DLL_LoadAcceleratorsA]
mov dword [0x40195c], eax
push 0
push dword [0x401944]
push dword [0x401950]
push 0
push 0x1f4
push 0x1f4
push 0x40
push 0x40
push 0x6cf0000
push str.flat_assembler_2__g.kcm8_
push str.FASMGW
push 0
call dword [sym.imp.USER32.DLL_CreateWindowExA]
or eax, eax
je 0x414d98
mov dword [0x401964], eax
mov eax, 5
test dword [0x40ec20], 2
je 0x414c88
mov eax, 3
push eax
push dword [0x401964]
call dword [sym.imp.USER32.DLL_ShowWindow]
push dword [0x401964]
call dword [sym.imp.USER32.DLL_UpdateWindow]
push 0
push 0
push 0
push 0x40eb40
call dword [sym.imp.USER32.DLL_GetMessageA]
or eax, eax
je 0x414d98
push 0x40eb40
push dword [0x40195c]
push dword [0x401964]
call dword [sym.imp.USER32.DLL_TranslateAccelerator]
or eax, eax
jne 0x414ca1
cmp dword [0x40eb44], 0x100
je 0x414cec
push 0x40eb40
call dword [sym.imp.USER32.DLL_TranslateMessage]
push 0x40eb40
call dword [sym.imp.USER32.DLL_DispatchMessageA]
jmp 0x414ca1
mov ebx, eax
push 0x40ec1c
push ebx
call dword [sym.imp.USER32.DLL_GetWindowPlacement]
mov eax, 1
cmp dword [0x40ec24], 3
jne 0x414d1a
mov eax, 3
push eax
push ebx
call dword [sym.imp.USER32.DLL_ShowWindow]
push ebx
call dword [sym.imp.USER32.DLL_SetForegroundWindow]
push 0x40ab40
push 0x4000
call dword [sym.imp.KERNEL32.DLL_GetCurrentDirectoryA]
inc eax
mov dword [0x40ed6c], eax
mov dword [0x40ed70], 0x40ab40
mov dword [0x40ed68], 1
push 0x40ed68
push 0
push 0x4a
push ebx
call dword [sym.imp.USER32.DLL_SendMessageA]
mov edi, dword [0x4019ac]
mov dword [0x40ed70], edi
or ecx, 0xffffffff
xor al, al
repne scasb al, byte es:[edi]
neg ecx
mov dword [0x40ed6c], ecx
mov dword [0x40ed68], 0
push 0x40ed68
push 0
push 0x4a
push ebx
call dword [sym.imp.USER32.DLL_SendMessageA]
push dword [0x40eb48]
call dword [sym.imp.KERNEL32.DLL_ExitProcess]