Function at 0x412be6
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 [0x401fd8], eax
push str.USER32.DLL
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleA]
or eax, eax
je 0x412c49
mov ebx, eax
push str.SetGestureConfig
push ebx
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
or eax, eax
je 0x412c49
mov esi, eax
push str.GetGestureInfo
push ebx
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
or eax, eax
je 0x412c49
mov edi, eax
push str.CloseGestureInfoHandle
push ebx
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
or eax, eax
je 0x412c49
mov dword [0x401fd4], eax
mov dword [0x401fcc], esi
mov dword [0x401fd0], edi
call dword [sym.imp.KERNEL32.DLL_GetCommandLineA]
mov esi, eax
mov edi, 0x4071d0
lodsb al, byte [esi]
cmp al, 0x20
je 0x412c56
cmp al, 0x22
je 0x412c7b
cmp al, 0xd
je 0x412c8a
or al, al
jne 0x412c6a
dec esi
jmp 0x412c8a
stosb byte es:[edi], al
lodsb al, byte [esi]
cmp al, 0x20
je 0x412c8a
cmp al, 0xd
je 0x412c8a
or al, al
jne 0x412c6a
dec esi
jmp 0x412c8a
lodsb al, byte [esi]
cmp al, 0x22
je 0x412c8a
cmp al, 0xd
je 0x412c8a
stosb byte es:[edi], al
or al, al
jne 0x412c7b
dec esi
mov dword [0x402044], esi
mov ebx, edi
cmp ebx, 0x4071d0
je 0x412cad
dec ebx
mov al, byte [ebx]
cmp al, 0x5c
je 0x412cad
cmp al, 0x2f
je 0x412cad
cmp al, 0x2e
jne 0x412c92
mov edi, ebx
jmp 0x412c92
mov eax, 0x494e492e
stosd dword es:[edi], eax
xor al, al
stosb byte es:[edi], al
push 0x402050
push 0x4071d0
push 0x1000
push 0x4071d0
call dword [sym.imp.KERNEL32.DLL_GetFullPathNameA]
mov esi, 0x4071d0
mov ecx, dword [0x402050]
sub ecx, esi
mov edi, 0x4081d0
rep movsb byte es:[edi], byte [esi]
mov eax, 0x4c434e49
stosd dword es:[edi], eax
mov eax, 0x454455
stosd dword es:[edi], eax
push 0x4071d0
call dword [sym.imp.KERNEL32.DLL_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x412d1a
push 0x4071d0
push 0x4081d0
push str.Include
push str.Environment
call dword [sym.imp.KERNEL32.DLL_WritePrivateProfileStringA]
mov dword [0x402028], 0
push 1
push 0x402028
push str.OneInstanceOnly
push 0x401293
push 0x4071d0
call fcn.004166c7
cmp dword [0x402028], 0
je 0x412d5d
push 0
push str.FASMW_IDE32
call dword [sym.imp.USER32.DLL_FindWindowA]
or eax, eax
jne 0x412fe5
push 0x7f01
push 0
call dword [sym.imp.USER32.DLL_LoadCursorA]
mov dword [0x40d204], eax
mov dword [0x40d1ec], 0x4008
mov dword [0x40d1f0], 0x40e000
mov eax, dword [0x401fd8]
mov dword [0x40d1fc], eax
mov dword [0x40d1f8], 4
xor eax, eax
mov dword [0x40d208], eax
mov dword [0x40d1f4], eax
mov dword [0x40d20c], eax
mov dword [0x40d210], 0x401030
push 0x40d1ec
call dword [sym.imp.USER32.DLL_RegisterClassA]
or eax, eax
je 0x413084
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 0x413084
mov dword [0x40d418], eax
mov edi, 0x40d4e4
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 0x412e00
mov edi, 0x43219b
mov ecx, 0x100
xor al, al
stosb byte es:[edi], al
inc al
loop 0x412e19
mov esi, 0x4321fc
mov edi, 0x4321dc
mov ecx, 0x1a
rep movsb byte es:[edi], byte [esi]
mov edi, 0x43219b
mov esi, 0x42c2e7
movzx ecx, byte [esi - 1]
xor eax, eax
lodsb al, byte [esi]
mov byte [edi + eax], 0
loop 0x412e3f
push 0x191
push dword [0x401fd8]
call dword [sym.imp.USER32.DLL_LoadIconA]
mov dword [0x40d200], eax
push 0x7f00
push 0
call dword [sym.imp.USER32.DLL_LoadCursorA]
mov dword [0x40d204], eax
mov dword [0x40d1ec], 0
mov dword [0x40d1f0], 0x413090
mov dword [0x40d1f4], 0
mov dword [0x40d1f8], 0
mov eax, dword [0x401fd8]
mov dword [0x40d1fc], eax
mov dword [0x40d208], 0x10
mov dword [0x40d20c], 0
mov dword [0x40d210], 0x401024
push 0x40d1ec
call dword [sym.imp.USER32.DLL_RegisterClassA]
push 0x65
push dword [0x401fd8]
call dword [sym.imp.USER32.DLL_LoadMenuA]
mov dword [0x401fe0], eax
push 1
push eax
call dword [sym.imp.USER32.DLL_GetSubMenu]
mov dword [0x401fe4], eax
push 0x66
push dword [0x401fd8]
call dword [sym.imp.USER32.DLL_LoadMenuA]
push 0
push eax
call dword [sym.imp.USER32.DLL_GetSubMenu]
mov dword [0x401fe8], eax
push 0xc9
push dword [0x401fd8]
call dword [sym.imp.USER32.DLL_LoadAcceleratorsA]
mov dword [0x401fec], eax
push 0
push dword [0x401fd8]
push dword [0x401fe0]
push 0
push 0x144
push 0x180
push 0x40
push 0x60
push 0x6cf0000
push str.flat_assembler___X_RAY_KT___1.73.32
push str.FASMW_IDE32
push 0
call dword [sym.imp.USER32.DLL_CreateWindowExA]
or eax, eax
je 0x413084
mov dword [0x401ff4], eax
mov eax, 5
test dword [0x40d2b0], 2
je 0x412f74
mov eax, 3
push eax
push dword [0x401ff4]
call dword [sym.imp.USER32.DLL_ShowWindow]
push dword [0x401ff4]
call dword [sym.imp.USER32.DLL_UpdateWindow]
push 0
push 0
push 0
push 0x40d1d0
call dword [sym.imp.USER32.DLL_GetMessageA]
or eax, eax
je 0x413084
push 0x40d1d0
push dword [0x401fec]
push dword [0x401ff4]
call dword [sym.imp.USER32.DLL_TranslateAccelerator]
or eax, eax
jne 0x412f8d
cmp dword [0x40d1d4], 0x100
je 0x412fd8
push 0x40d1d0
call dword [sym.imp.USER32.DLL_TranslateMessage]
push 0x40d1d0
call dword [sym.imp.USER32.DLL_DispatchMessageA]
jmp 0x412f8d
mov ebx, eax
push 0x40d2ac
push ebx
call dword [sym.imp.USER32.DLL_GetWindowPlacement]
mov eax, 1
cmp dword [0x40d2b4], 3
jne 0x413006
mov eax, 3
push eax
push ebx
call dword [sym.imp.USER32.DLL_ShowWindow]
push ebx
call dword [sym.imp.USER32.DLL_SetForegroundWindow]
push 0x4091d0
push 0x4000
call dword [sym.imp.KERNEL32.DLL_GetCurrentDirectoryA]
inc eax
mov dword [0x40d40c], eax
mov dword [0x40d410], 0x4091d0
mov dword [0x40d408], 1
push 0x40d408
push 0
push 0x4a
push ebx
call dword [sym.imp.USER32.DLL_SendMessageA]
mov edi, dword [0x402044]
mov dword [0x40d410], edi
or ecx, 0xffffffff
xor al, al
repne scasb al, byte es:[edi]
neg ecx
mov dword [0x40d40c], ecx
mov dword [0x40d408], 0
push 0x40d408
push 0
push 0x4a
push ebx
call dword [sym.imp.USER32.DLL_SendMessageA]
push dword [0x40d1d8]
call dword [sym.imp.KERNEL32.DLL_ExitProcess]