Function at 0x406fb4
Capabilities:
Check for time delay via gettickcount
Create process on windows

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff94
push ebx
push esi
push edi
mov dword [ebp - 8], ecx
mov esi, edx
mov dword [ebp - 4], eax
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 4]
call sub.rtl120.bpl__System__UStrAddRef_qqrpv
xor eax, eax
push ebp
push 0x407178
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
mov dword [ebp - 0xc], eax
mov byte [ebp - 0x11], 0
xor eax, eax
mov dword [ebp - 0x18], eax
lea eax, [ebp - 4]
call sub.rtl120.bpl__System__EnsureUnicodeString_qqrr20System_UnicodeString
call sub.rtl120.bpl__System__UStrLen_qqrx20System_UnicodeString
mov ebx, eax
inc ebx
mov eax, ebx
call sub.rtl120.bpl__Sysutils_StrAlloc_qqrui
mov dword [ebp - 0x10], eax
mov edx, ebx
add edx, edx
mov eax, dword [ebp - 0x10]
call fcn.00401948
mov ecx, ebx
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x10]
call sub.rtl120.bpl__Sysutils_StrPLCopy_qqrpbx20System_UnicodeStringui
lea eax, [ebp - 0x5c]
mov edx, 0x44
call fcn.00401948
lea eax, [ebp - 0x6c]
mov edx, 0x10
call fcn.00401948
mov dword [ebp - 0x5c], 0x44
mov dword [ebp - 0x30], 1
movzx eax, word [ebp - 8]
mov word [ebp - 0x2c], ax
xor edx, edx
push ebp
push 0x40715b
push dword fs:[edx]
mov dword fs:[edx], esp
lea eax, [ebp - 0x6c]
push eax
lea eax, [ebp - 0x5c]
push eax
push 0
push 0
push 0
push 0
push 0
push 0
mov eax, dword [ebp - 0x10]
push eax
push 0
call sub.kernel32.dll_CreateProcessW
cmp eax, 1
sbb eax, eax
inc eax
mov byte [ebp - 0x11], al
cmp byte [ebp - 0x11], 0
jne 0x407095
call sub.rtl120.bpl__System__TryFinallyExit_qqrv
jmp 0x407162
test edi, edi
je 0x40709e
mov eax, dword [ebp - 0x64]
mov dword [edi], eax
test esi, esi
jbe 0x407102
cmp byte [ebp + 0x10], 0
je 0x4070ed
call sub.kernel32.dll_GetTickCount
mov edi, eax
push 0
mov eax, dword [ebp - 0x6c]
push eax
call sub.kernel32.dll_WaitForSingleObject
mov ebx, eax
push 0xa
call sub.kernel32.dll_Sleep_1
mov eax, dword [sym.imp.vcl120.bpl__Forms_Application]
mov eax, dword [eax]
call sub.vcl120.bpl__Forms_TApplication_ProcessMessages_qqrv
cmp ebx, 0xffffffff
jne 0x4070d8
mov byte [ebp - 0x11], 0
call sub.kernel32.dll_GetTickCount
sub eax, edi
cmp esi, eax
jbe 0x407102
cmp ebx, 0x102
je 0x4070af
jmp 0x407102
push esi
mov eax, dword [ebp - 0x6c]
push eax
call sub.kernel32.dll_WaitForSingleObject
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x407102
mov byte [ebp - 0x11], 0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x407162
cmp byte [ebp - 0x11], 0
jne 0x40711d
call sub.kernel32.dll_GetLastError
mov dword [ebp - 0xc], eax
cmp dword [ebp + 8], 0
je 0x407138
lea eax, [ebp - 0x18]
push eax
mov eax, dword [ebp - 0x6c]
push eax
call sub.kernel32.dll_GetExitCodeProcess
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x18]
mov dword [eax], edx
mov eax, dword [ebp - 0x6c]
test eax, eax
je 0x407145
push eax
call sub.kernel32.dll_CloseHandle
mov eax, dword [ebp - 0x68]
test eax, eax
je 0x407152
push eax
call sub.kernel32.dll_CloseHandle
mov eax, dword [ebp - 0x10]
call sub.rtl120.bpl__Sysutils_StrDispose_qqrpb
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40717f
lea eax, [ebp - 4]
call sub.rtl120.bpl__System__UStrClr_qqrpv
ret