Function at 0x406bc8
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 0x406d8c
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.00401d28
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.00401d28
lea eax, [ebp - 0x6c]
mov edx, 0x10
call fcn.00401d28
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 0x406d6f
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 0x406ca9
call sub.rtl120.bpl__System__TryFinallyExit_qqrv
jmp 0x406d76
test edi, edi
je 0x406cb2
mov eax, dword [ebp - 0x64]
mov dword [edi], eax
test esi, esi
jbe 0x406d16
cmp byte [ebp + 0x10], 0
je 0x406d01
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
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 0x406cec
mov byte [ebp - 0x11], 0
call sub.kernel32.dll_GetTickCount
sub eax, edi
cmp esi, eax
jbe 0x406d16
cmp ebx, 0x102
je 0x406cc3
jmp 0x406d16
push esi
mov eax, dword [ebp - 0x6c]
push eax
call sub.kernel32.dll_WaitForSingleObject
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x406d16
mov byte [ebp - 0x11], 0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x406d76
cmp byte [ebp - 0x11], 0
jne 0x406d31
call sub.kernel32.dll_GetLastError
mov dword [ebp - 0xc], eax
cmp dword [ebp + 8], 0
je 0x406d4c
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 0x406d59
push eax
call sub.kernel32.dll_CloseHandle
mov eax, dword [ebp - 0x68]
test eax, eax
je 0x406d66
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 0x406d93
lea eax, [ebp - 4]
call sub.rtl120.bpl__System__UStrClr_qqrpv
ret