Function at 0x40ae00
Capabilities:
Check for time delay via gettickcount
Generate random numbers via winapi
Get memory capacity

Disassembly:
sub esp, 0xac
mov eax, dword [0x471d20]
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x2c], eax
call dword [sym.imp.USER32.dll_GetActiveWindow]
call fcn.0040a040
call dword [sym.imp.USER32.dll_GetCapture]
call fcn.0040a040
call dword [sym.imp.USER32.dll_GetClipboardOwner]
call fcn.0040a040
call dword [sym.imp.USER32.dll_GetClipboardViewer]
call fcn.0040a040
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
call esi
call fcn.0040a040
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
call fcn.0040a040
mov ebx, dword [sym.imp.KERNEL32.dll_GetCurrentThread]
call ebx
call fcn.0040a040
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
call fcn.0040a040
mov ebp, dword [sym.imp.KERNEL32.dll_GetTickCount]
call ebp
call fcn.0040a040
call dword [sym.imp.USER32.dll_GetDesktopWindow]
call fcn.0040a040
call dword [sym.imp.USER32.dll_GetFocus]
call fcn.0040a040
call dword [sym.imp.USER32.dll_GetInputState]
call fcn.0040a040
call dword [sym.imp.USER32.dll_GetMessagePos]
call fcn.0040a040
call dword [sym.imp.USER32.dll_GetMessageTime]
call fcn.0040a040
call dword [sym.imp.USER32.dll_GetOpenClipboardWindow]
call fcn.0040a040
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
call fcn.0040a040
call dword [sym.imp.USER32.dll_GetProcessWindowStation]
call fcn.0040a040
push 0x4bf
call dword [sym.imp.USER32.dll_GetQueueStatus]
call fcn.0040a040
lea ecx, [esp + 0x3c]
push ecx
call dword [sym.imp.USER32.dll_GetCaretPos]
lea edx, [esp + 0x3c]
push edx
mov edi, 8
call fcn.0040a500
add esp, 4
lea eax, [esp + 0x3c]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
lea ecx, [esp + 0x3c]
push ecx
call fcn.0040a500
add esp, 4
lea edx, [esp + 0x50]
mov edi, 0x20
push edx
mov dword [esp + 0x54], edi
call dword [sym.imp.KERNEL32.dll_GlobalMemoryStatus]
lea eax, [esp + 0x50]
push eax
call fcn.0040a500
add esp, 4
call ebx
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x28]
push edx
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x1c]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetThreadTimes]
lea eax, [esp + 0x10]
push eax
mov edi, 8
call fcn.0040a500
lea ecx, [esp + 0x1c]
add esp, 4
push ecx
call fcn.0040a500
lea edx, [esp + 0x28]
add esp, 4
push edx
call fcn.0040a500
lea eax, [esp + 0x34]
add esp, 4
push eax
call fcn.0040a500
add esp, 4
call esi
lea ecx, [esp + 0x30]
push ecx
mov esi, eax
lea edx, [esp + 0x28]
push edx
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x1c]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_GetProcessTimes]
lea edx, [esp + 0x10]
push edx
call fcn.0040a500
lea eax, [esp + 0x1c]
add esp, 4
push eax
call fcn.0040a500
lea ecx, [esp + 0x28]
add esp, 4
push ecx
call fcn.0040a500
lea edx, [esp + 0x34]
add esp, 4
push edx
call fcn.0040a500
add esp, 4
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x3c]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_GetProcessWorkingSetSize]
mov eax, dword [esp + 0x38]
call fcn.0040a040
mov eax, dword [esp + 0x20]
call fcn.0040a040
cmp dword [0x471d48], 0
jne 0x40b03a
lea edx, [esp + 0x70]
mov edi, 0x44
push edx
mov dword [esp + 0x74], edi
call dword [sym.imp.KERNEL32.dll_GetStartupInfoA]
lea eax, [esp + 0x70]
push eax
call fcn.0040a500
add esp, 4
mov dword [0x471d48], 1
lea ecx, [esp + 0x48]
push ecx
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x40b055
lea edx, [esp + 0x48]
push edx
mov edi, 8
jmp 0x40b065
call ebp
mov dword [esp + 0x44], eax
lea eax, [esp + 0x44]
push eax
mov edi, 4
call fcn.0040a500
mov eax, dword [0x4740f8]
add esp, 4
test eax, eax
je 0x40b09d
push 0x474100
push 0x140
push eax
call dword [sym.imp.ADVAPI32.dll_CryptGenRandom]
test eax, eax
je 0x40b09d
push 0x474100
mov edi, 0x140
call fcn.0040a500
add esp, 4
call fcn.0040a390
mov ecx, dword [esp + 0x2c]
pop edi
pop esi
pop ebp
mov dword [0x471d20], ecx
mov eax, 1
pop ebx
add esp, 0xac
ret