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

Disassembly:
push 0xffffffffffffffff
push 0x420737
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x188
mov eax, dword [0x427550]
xor eax, esp
push ebx
push ebp
push esi
mov esi, dword [esp + 0x1a4]
mov dword [esp + 0x190], eax
mov eax, dword [0x4283f4]
mov ebp, ecx
push edi
mov ecx, 0x4283f4
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x14], eax
xor ebx, ebx
mov dword [esp + 0x1a0], ebx
mov dword [esp + 0x84], 0xf
mov dword [esp + 0x80], ebx
mov byte [esp + 0x70], bl
xor eax, eax
mov ecx, 0x11
lea edi, [esp + 0x28]
rep stosd dword es:[edi], eax
mov eax, dword [esi + 0x18]
xor ecx, ecx
cmp eax, 0x10
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], ecx
mov byte [esp + 0x1a0], 1
mov dword [esp + 0x28], 0x44
mov dword [esp + 0x24], ecx
jb 0x40a785
mov esi, dword [esi + 4]
jmp 0x40a788
add esi, 4
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x2c]
push eax
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
je 0x40a923
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
mov ecx, dword [esp + 0x18]
push 0xffffffffffffffff
push ecx
mov edi, eax
mov dword [esp + 0x18], ebx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
call esi
mov ecx, eax
sub ecx, edi
mov eax, 0x10624dd3
mul ecx
mov eax, dword [esp + 0x18]
mov esi, edx
lea edx, [esp + 0x10]
push edx
push eax
shr esi, 6
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
mov ecx, dword [esp + 0x10]
push ecx
push esi
lea edx, [esp + 0x1c]
push str.RunTime_d_retCode_d
push edx
call fcn.00407070
mov edi, dword [esp + 0x24]
mov eax, edi
add esp, 0x10
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40a806
sub eax, edx
push eax
push edi
lea ecx, [esp + 0x74]
call fcn.00405070
lea eax, [esp + 0x6c]
push eax
mov ecx, ebp
call fcn.004074e0
test eax, eax
je 0x40a8af
cmp esi, ebx
jbe 0x40a8af
mov ecx, ebp
call fcn.00407800
mov ecx, ebp
call fcn.00409e30
test eax, eax
push 0xffffffffffffffff
push ebx
je 0x40a87b
lea ecx, [ebp + 0x1a4]
push ecx
lea ecx, [esp + 0x78]
call fcn.00405180
cmp dword [esp + 0x84], 0x10
mov eax, dword [esp + 0x70]
jae 0x40a869
lea eax, [esp + 0x70]
push eax
push 2
push ebx
push 6
mov ecx, ebp
call fcn.004061b0
jmp 0x40aa01
lea edx, [ebp + 0x1a4]
push edx
lea ecx, [esp + 0x78]
call fcn.00405180
cmp dword [esp + 0x84], 0x10
mov eax, dword [esp + 0x70]
jae 0x40a89d
lea eax, [esp + 0x70]
push eax
push 3
push ebx
push 6
mov ecx, ebp
call fcn.004061b0
jmp 0x40aa01
mov eax, dword [esp + 0x84]
mov esi, dword [esp + 0x70]
mov edi, 0x10
cmp eax, edi
jae 0x40a8c7
lea esi, [esp + 0x70]
lea ecx, [esp + 0x88]
call fcn.00402d00
cmp dword [ebp + 0x184], edi
mov byte [esp + 0x1a0], 2
jb 0x40a8eb
mov ebp, dword [ebp + 0x170]
jmp 0x40a8f1
add ebp, 0x170
push esi
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 4
push 6
push ebp
lea ecx, [esp + 0x9c]
call fcn.00405720
lea ecx, [esp + 0x88]
mov byte [esp + 0x1a0], 1
call fcn.00402d80
jmp 0x40aa01
mov eax, dword [0x4283f4]
mov ecx, 0x4283f4
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x10], eax
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
mov byte [esp + 0x1a0], 3
call ebx
push eax
lea ecx, [esp + 0x14]
push str._CreateProcess_RunDownFile_failed_Err_d
push ecx
call fcn.00407070
mov esi, dword [esp + 0x1c]
mov eax, esi
add esp, 0xc
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40a963
sub eax, edx
push eax
push esi
lea ecx, [esp + 0x74]
call fcn.00405070
cmp dword [esp + 0x84], 0x10
mov edi, dword [esp + 0x70]
jae 0x40a989
lea edi, [esp + 0x70]
lea ecx, [esp + 0x88]
call fcn.00402d00
cmp dword [ebp + 0x184], 0x10
mov byte [esp + 0x1a0], 4
jb 0x40a9ae
mov ebp, dword [ebp + 0x170]
jmp 0x40a9b4
add ebp, 0x170
push edi
call ebx
push eax
push 0
push 6
push ebp
lea ecx, [esp + 0x9c]
call fcn.00405720
lea ecx, [esp + 0x88]
mov byte [esp + 0x1a0], 3
call fcn.00402d80
lea eax, [esi - 0x10]
mov byte [esp + 0x1a0], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40a9ff
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
xor ebx, ebx
mov eax, dword [esp + 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [esp + 0x84], 0x10
jb 0x40aa23
mov ecx, dword [esp + 0x70]
push ecx
call fcn.00412c1d
add esp, 4
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x84], 0xf
mov dword [esp + 0x80], ebx
mov byte [esp + 0x70], 0
mov dword [esp + 0x1a0], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
pop edi
pop esi
pop ebp
pop ebx
jg 0x40aa67
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov ecx, dword [esp + 0x188]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x184]
xor ecx, esp
mov eax, 1
call fcn.00413041
add esp, 0x194
ret 4