Function at 0x4028a0
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebp
mov ebp, esp
push edi
mov edi, edx
lea edx, [ebp - 0x14]
push esi
push ebx
sub esp, 0x2c
mov ebx, ecx
mov dword [ebp - 0x20], eax
mov eax, str.master
mov dword [ebp - 0x14], 0xffffffff
mov dword [ebp - 0x10], 0xffffffff
mov dword [ebp - 0x1c], 0xffffffff
mov dword [ebp - 0x18], 0xffffffff
mov dword [esp], ecx
lea ecx, [ebp - 0x10]
call fcn.00402580
test eax, eax
mov edx, 0xffffffff
js 0x402c00
test edi, edi
je 0x402910
mov dword [esp], ebx
lea edx, [ebp - 0x1c]
mov eax, str.stderr_master
lea ecx, [ebp - 0x18]
call fcn.00402580
test eax, eax
mov edx, 0xffffffff
js 0x402c00
mov dword [esp], 0x1e
mov ebx, 0x401340
mov dword [esp + 4], ebx
call sub.msys_1.0.dll_signal
cmp byte [0x409011], 0
mov byte [0x409068], 0
jne 0x402c10
call sub.msys_1.0.dll___errno
mov dword [eax], 2
call sub.msys_1.0.dll_fork
cmp eax, 0xffffffff
mov ebx, eax
je 0x402f50
test eax, eax
jne 0x402bb2
mov esi, dword [ebp - 0x18]
mov edi, dword [ebp - 0x10]
test esi, esi
js 0x402f00
mov dword [esp], 0x1e
xor ecx, ecx
mov edx, 0x401340
mov dword [0x406008], ecx
mov dword [esp + 4], edx
call sub.msys_1.0.dll_signal
mov dword [0x406010], edi
mov eax, ebx
mov edi, 0x409018
cld
mov ecx, 9
rep stosd dword es:[edi], eax
mov dword [0x40600c], esi
mov eax, dword [0x406014]
xor esi, esi
mov byte [0x409068], 0
test eax, eax
mov dword [0x409048], esi
js 0x4029da
cmp byte [0x409011], 0
jne 0x402e70
mov dword [esp], eax
mov esi, 0xffffffff
call sub.msys_1.0.dll_close
mov dword [0x406014], esi
mov eax, dword [0x406004]
test eax, eax
js 0x402a02
cmp byte [0x409011], 0
jne 0x402ea0
mov dword [esp], eax
call sub.msys_1.0.dll_close
mov eax, 0xffffffff
mov dword [0x406004], eax
cmp byte [0x409011], 0
jne 0x402d60
call sub.KERNEL32.dll_GetTickCount
mov dword [esp], 5
mov esi, eax
call sub.msys_1.0.dll_sleep
call sub.KERNEL32.dll_GetTickCount
cmp byte [0x409011], 0
mov ebx, eax
jne 0x402d30
mov ecx, dword [ebp - 0x14]
mov dword [esp], ecx
call sub.msys_1.0.dll_close
mov eax, dword [ebp - 0x1c]
test eax, eax
js 0x402a50
mov dword [esp], eax
call sub.msys_1.0.dll_close
cmp byte [0x409011], 0
jne 0x402d06
call sub.msys_1.0.dll_setsid
inc eax
je 0x402fa8
cmp byte [0x409011], 0
jne 0x402e04
mov edx, dword [ebp - 0x18]
test edx, edx
js 0x402e30
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
call sub.msys_1.0.dll_ttyname
mov ebx, eax
mov eax, dword [ebp - 0x18]
mov esi, ebx
cmp eax, dword [ebp - 0x10]
je 0x402aa2
mov dword [esp], eax
call sub.msys_1.0.dll_ttyname
mov esi, eax
movzx eax, byte [0x409011]
test al, al
jne 0x402c60
mov edx, dword [ebp - 0x10]
test edx, edx
je 0x402c35
test al, al
jne 0x402cdf
mov dword [esp], 0
call sub.msys_1.0.dll_close
xor edx, edx
mov dword [esp + 4], edx
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
call sub.msys_1.0.dll_dup2
movzx eax, byte [0x409011]
mov edi, dword [ebp - 0x10]
dec edi
je 0x402f07
test al, al
je 0x402b1b
mov esi, 1
call sub.msys_1.0.dll_getpid
mov dword [esp + 0xc], esi
mov ebx, dword [ebp - 0x10]
mov dword [esp + 4], eax
mov dword [esp], str.e_33_40mPID:_u_changing_stdout:__i_____ie_m_r_n
mov dword [esp + 8], ebx
call fcn.004012b0
mov dword [esp], 1
call sub.msys_1.0.dll_close
mov edx, 1
mov dword [esp + 4], edx
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
call sub.msys_1.0.dll_dup2
movzx eax, byte [0x409011]
mov edi, 1
mov dword [0x406010], edi
cmp dword [ebp - 0x18], 2
je 0x402e40
test al, al
jne 0x402ed0
mov dword [esp], 2
call sub.msys_1.0.dll_close
mov edx, 2
mov dword [esp + 4], edx
mov eax, dword [ebp - 0x18]
mov dword [esp], eax
call sub.msys_1.0.dll_dup2
mov edi, 2
mov dword [0x40600c], edi
mov eax, dword [ebp - 0x10]
cmp eax, 2
jg 0x402df4
mov edx, dword [ebp - 0x18]
cmp edx, eax
je 0x402ba6
cmp edx, 2
jg 0x402cd0
xor edx, edx
add esp, 0x2c
mov eax, edx
pop ebx
pop esi
pop edi
pop ebp
ret
cmp byte [0x409011], 0
mov dword [0x406008], eax
jne 0x402db2
mov eax, dword [ebp - 0x10]
test eax, eax
js 0x402bd3
mov dword [esp], eax
call sub.msys_1.0.dll_close
mov eax, dword [ebp - 0x18]
test eax, eax
js 0x402be2
mov dword [esp], eax
call sub.msys_1.0.dll_close
mov edx, dword [ebp - 0x20]
test edx, edx
je 0x402bf1
mov ebx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x20]
mov dword [ecx], ebx
test edi, edi
je 0x402bfa
mov esi, dword [ebp - 0x1c]
mov dword [edi], esi
mov edx, dword [0x406008]
add esp, 0x2c
mov eax, edx
pop ebx
pop esi
pop edi
pop ebp
ret
call sub.msys_1.0.dll_getpgrp
mov esi, eax
call sub.msys_1.0.dll_getpid
mov dword [esp + 4], eax
mov dword [esp + 8], esi
mov dword [esp], str.e_31_40me_KPID:_u_calling_fork__pgid_i_e_m_r_n
call fcn.004012b0
jmp 0x402939
test al, al
je 0x402b1b
call sub.msys_1.0.dll_getpid
mov ecx, dword [ebp - 0x10]
mov dword [esp + 4], eax
mov dword [esp], str.e_33_40mPID:_u_stdin_is_already__ie_m_r_n
mov dword [esp + 8], ecx
call fcn.004012b0
jmp 0x402ae1
call sub.msys_1.0.dll_getpid
test ebx, ebx
mov edx, eax
mov eax, ebx
je 0x402f3c
mov dword [esp + 0xc], eax
mov ecx, dword [ebp - 0x10]
mov dword [esp + 4], edx
mov dword [esp], str.e_33_40mPID:_u_ttyname__i___s_e_m_r_n
mov dword [esp + 8], ecx
call fcn.004012b0
mov edx, dword [ebp - 0x10]
cmp dword [ebp - 0x18], edx
je 0x402f30
call sub.msys_1.0.dll_getpid
test esi, esi
mov edx, eax
mov eax, esi
je 0x402f46
mov dword [esp + 0xc], eax
mov edi, dword [ebp - 0x10]
mov dword [esp + 4], edx
mov dword [esp], str.e_33_40mPID:_u_ttyname__i___s_e_m_r_n
mov dword [esp + 8], edi
call fcn.004012b0
movzx eax, byte [0x409011]
jmp 0x402ab1
mov dword [esp], edx
call sub.msys_1.0.dll_close
xor edx, edx
jmp 0x402ba8
xor esi, esi
call sub.msys_1.0.dll_getpid
mov dword [esp + 0xc], esi
mov ebx, dword [ebp - 0x10]
mov dword [esp + 4], eax
mov dword [esp], str.e_33_40mPID:_u_changing_stdin:__i_____ie_m_r_n
mov dword [esp + 8], ebx
call fcn.004012b0
jmp 0x402ac4
call sub.msys_1.0.dll_getpid
mov ebx, dword [ebp - 0x18]
mov dword [esp + 0xc], ebx
mov edi, dword [ebp - 0x10]
mov dword [esp + 4], eax
mov dword [esp], str.e_33_40mPID:_u_ce_forkpty_child:_std_i__err_ie_m_r_n
mov dword [esp + 8], edi
call fcn.004012b0
jmp 0x402a5d
call sub.msys_1.0.dll_getpid
mov dword [esp + 4], eax
xor edx, edx
cmp byte [0x409068], 0
mov dword [esp], str.e_33_40me_KPID:_u_child_process_continues_after__u_ms__SIGUSR1_u_e_m_r_n
setne dl
sub ebx, esi
mov dword [esp + 0xc], edx
mov dword [esp + 8], ebx
call fcn.004012b0
jmp 0x402a36
call sub.msys_1.0.dll_getpgrp
mov ebx, eax
call sub.msys_1.0.dll_getpid
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
mov dword [esp], str.e_33_40me_KPID:_u_child_created__pgid_i_e_m_r_n
call fcn.004012b0
cmp byte [0x409011], 0
je 0x402a0f
call sub.msys_1.0.dll_getpgrp
mov esi, eax
call sub.msys_1.0.dll_getpid
mov dword [esp + 4], eax
mov dword [esp + 8], esi
mov dword [esp], str.e_33_40me_KPID:_u_child_process_wating_for_SIGUSR1__pgid_i_e_m_r_n
call fcn.004012b0
jmp 0x402a0f
call sub.msys_1.0.dll_getpgrp
mov esi, eax
mov eax, dword [0x406008]
mov dword [esp], eax
call sub.msys_1.0.dll_getpgid
mov ebx, eax
call sub.msys_1.0.dll_getpid
mov dword [esp + 0xc], ebx
mov ebx, dword [0x406008]
mov dword [esp + 0x10], esi
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
mov dword [esp], str.e_31_40me_KPID:_u_child_pid_i_pgid_i_was_created__ourpgid_i_e_m_r_n
call fcn.004012b0
jmp 0x402bc4
mov dword [esp], eax
call sub.msys_1.0.dll_close
mov eax, dword [ebp - 0x10]
jmp 0x402b96
call sub.msys_1.0.dll_getpgrp
mov esi, eax
call sub.msys_1.0.dll_getpid
mov dword [esp + 4], eax
mov dword [esp + 8], esi
mov dword [esp], str.e_33_40me_KPID:_u_setsid_executed__pgid_i_e_m_r_n
call fcn.004012b0
mov edx, dword [ebp - 0x18]
test edx, edx
jns 0x402a81
nop
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x18], eax
jmp 0x402a84
test al, al
je 0x402b7f
call sub.msys_1.0.dll_getpid
mov ecx, dword [ebp - 0x18]
mov dword [esp + 4], eax
mov dword [esp], str.e_33_40mPID:_u_stderr_is_already__ie_m_r_n
mov dword [esp + 8], ecx
call fcn.004012b0
jmp 0x402b7f
call sub.msys_1.0.dll_getpid
mov dword [esp + 4], eax
mov ebx, dword [0x406014]
mov dword [esp], str._r_ne_31_40mPID:_u_closing_log_file___i_e_m_r_n
mov dword [esp + 8], ebx
call fcn.004012b0
mov eax, dword [0x406014]
jmp 0x4029c7
call sub.msys_1.0.dll_getpid
mov dword [esp + 4], eax
mov edi, dword [0x406004]
mov dword [esp], str._r_ne_31_40mPID:_u_closing_log_file___i_e_m_r_n
mov dword [esp + 8], edi
call fcn.004012b0
mov eax, dword [0x406004]
jmp 0x4029f0
mov esi, 2
call sub.msys_1.0.dll_getpid
mov dword [esp + 0xc], esi
mov ebx, dword [ebp - 0x18]
mov dword [esp + 4], eax
mov dword [esp], str.e_33_40mPID:_u_changing_stderr:__i_____ie_m_r_n
mov dword [esp + 8], ebx
call fcn.004012b0
jmp 0x402b5f
mov esi, edi
jmp 0x40296a
test al, al
je 0x402b42
call sub.msys_1.0.dll_getpid
mov ecx, dword [ebp - 0x10]
mov dword [esp + 4], eax
mov dword [esp], str.e_33_40mPID:_u_stdout_is_already__ie_m_r_n
mov dword [esp + 8], ecx
call fcn.004012b0
jmp 0x402b3b
movzx eax, byte [0x409011]
jmp 0x402ab4
mov eax, str._null_
jmp 0x402c71
mov eax, str._null_
jmp 0x402ca9
mov ecx, 0xffffffff
mov dword [0x406008], ecx
call sub.msys_1.0.dll___errno
mov edi, dword [eax]
call sub.msys_1.0.dll___errno
mov eax, dword [eax]
mov dword [esp], eax
call sub.msys_1.0.dll_strerror
mov ebx, eax
call sub.msys_1.0.dll_getpid
mov dword [esp + 4], eax
mov edx, str.fork_failed
mov dword [esp + 8], edx
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], edi
mov dword [esp], str.e_30_41me_KPID:_u__s___i_:__se_m_r_n
call fcn.004012b0
call fcn.004013a0
mov edx, 0xffffffff
jmp 0x402c00
call sub.msys_1.0.dll___errno
mov eax, dword [eax]
mov dword [esp], eax
call sub.msys_1.0.dll_strerror
mov ebx, eax
call sub.msys_1.0.dll___errno
mov edi, eax
call sub.msys_1.0.dll_getpid
mov dword [esp + 0xc], ebx
mov esi, dword [edi]
mov dword [esp + 4], eax
mov dword [esp], str.e_30_41me_KPID:_u_setsid___failed___i_:__se_m_r_n
mov dword [esp + 8], esi
call fcn.004012b0
mov edx, 0xffffffff
jmp 0x402c00