Function at 0x402009
Capabilities:
Check for time delay via gettickcount

Disassembly:
call fcn.00406ed5
push rbp
mov rbp, rsp
sub rsp, 0xb0
mov qword [rbp + 0x10], rcx
mov rax, qword [sym.imp.KERNEL32.dll_GetTickCount]
call rax
mov dword [rbp - 0xc], eax
mov ecx, 0
mov rax, qword [sym.imp.USER32.dll_GetSystemMetrics]
call rax
mov dword [rbp - 0x10], eax
mov ecx, 1
mov rax, qword [sym.imp.USER32.dll_GetSystemMetrics]
call rax
mov dword [rbp - 0x14], eax
mov eax, dword [rbp - 0x14]
add eax, 1
imul eax, dword [rbp - 0x10]
cdqe
shl rax, 2
mov r9d, 4
mov r8d, 0x3000
mov rdx, rax
mov ecx, 0
mov rax, qword [sym.imp.KERNEL32.dll_VirtualAlloc]
call rax
mov qword [rbp - 0x20], rax
mov dword [rbp - 4], 0
mov ecx, 0
mov rax, qword [sym.imp.USER32.dll_GetDC]
call rax
mov qword [rbp - 0x28], rax
mov rax, qword [rbp - 0x28]
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_CreateCompatibleDC]
call rax
mov qword [rbp - 0x30], rax
mov edx, dword [rbp - 0x14]
mov eax, dword [rbp - 0x10]
mov rcx, qword [rbp - 0x20]
mov qword [rsp + 0x20], rcx
mov r9d, 0x20
mov r8d, 1
mov ecx, eax
mov rax, qword [sym.imp.GDI32.dll_CreateBitmap]
call rax
mov qword [rbp - 0x38], rax
mov rdx, qword [rbp - 0x38]
mov rax, qword [rbp - 0x30]
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_SelectObject]
call rax
mov ecx, dword [rbp - 0x10]
mov rax, qword [rbp - 0x30]
mov dword [rsp + 0x40], 0x330008
mov dword [rsp + 0x38], 0
mov dword [rsp + 0x30], 0
mov rdx, qword [rbp - 0x28]
mov qword [rsp + 0x28], rdx
mov edx, dword [rbp - 0x14]
mov dword [rsp + 0x20], edx
mov r9d, ecx
mov r8d, 0
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_BitBlt]
call rax
mov eax, dword [rbp - 0x10]
imul eax, dword [rbp - 0x14]
lea edx, [rax*4]
mov rcx, qword [rbp - 0x20]
mov rax, qword [rbp - 0x38]
mov r8, rcx
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_GetBitmapBits]
call rax
mov dword [rbp - 0x3c], 0
mov byte [rbp - 0x3d], 0
mov rax, qword [sym.imp.KERNEL32.dll_GetTickCount]
call rax
mov edx, eax
mov eax, dword [rbp - 0xc]
sub edx, eax
mov eax, edx
cmp eax, 0xea60
seta al
test al, al
je 0x4021b1
call sym.rand
mov ecx, eax
movsxd rax, ecx
imul rax, rax, 0xffffffff80808081
shr rax, 0x20
add eax, ecx
sar eax, 7
mov edx, eax
mov eax, ecx
sar eax, 0x1f
sub edx, eax
mov eax, edx
mov edx, eax
shl edx, 8
sub edx, eax
mov eax, ecx
sub eax, edx
mov byte [rbp - 0x3d], al
mov dword [rbp - 8], 0
jmp 0x4022c6
mov eax, dword [rbp - 8]
cdq
idiv dword [rbp - 0x14]
mov eax, edx
test eax, eax
jne 0x4021f8
call sym.rand
mov ecx, eax
mov edx, 0x51eb851f
mov eax, ecx
imul edx
sar edx, 5
mov eax, ecx
sar eax, 0x1f
sub edx, eax
mov eax, edx
imul eax, eax, 0x64
sub ecx, eax
mov eax, ecx
test eax, eax
jne 0x4021f8
mov eax, 1
jmp 0x4021fd
mov eax, 0
test al, al
je 0x40221c
call sym.rand
mov edx, eax
mov eax, edx
sar eax, 0x1f
shr eax, 0x1f
add edx, eax
and edx, 1
sub edx, eax
mov eax, edx
mov dword [rbp - 0x3c], eax
call sym.rand
mov ecx, eax
mov edx, 0x55555556
mov eax, ecx
imul edx
mov eax, ecx
sar eax, 0x1f
sub edx, eax
mov eax, edx
mov dword [rbp - 0x44], eax
mov edx, dword [rbp - 0x44]
mov eax, edx
add eax, eax
add eax, edx
sub ecx, eax
mov eax, ecx
mov dword [rbp - 0x44], eax
mov eax, dword [rbp - 8]
cdq
idiv dword [rbp - 0x10]
mov dword [rbp - 0x48], edx
mov eax, dword [rbp - 8]
cdq
idiv dword [rbp - 0x10]
mov dword [rbp - 0x4c], eax
mov eax, dword [rbp - 0x48]
lea edx, [rax + rax]
mov eax, dword [rbp - 8]
add eax, edx
mov dword [rbp - 0x50], eax
mov eax, dword [rbp - 0x4c]
lea edx, [rax + rax]
mov eax, dword [rbp - 8]
add eax, edx
mov dword [rbp - 0x54], eax
mov eax, dword [rbp - 8]
shl eax, 2
movsxd rdx, eax
mov eax, dword [rbp - 0x48]
cdqe
add rdx, rax
mov eax, dword [rbp - 0x4c]
cdqe
add rdx, rax
mov eax, dword [rbp - 0x44]
cdqe
add rdx, rax
mov rax, qword [rbp - 0x20]
add rdx, rax
mov eax, dword [rbp - 0x48]
movsxd rcx, eax
mov eax, dword [rbp - 0x4c]
cdqe
add rax, rcx
lea rcx, [rax*4]
mov rax, qword [rbp - 0x20]
add rax, rcx
movzx eax, byte [rax]
mov byte [rdx], al
add dword [rbp - 8], 1
mov eax, dword [rbp - 0x10]
imul eax, dword [rbp - 0x14]
cmp eax, dword [rbp - 8]
jg 0x4021bd
mov eax, dword [rbp - 0x10]
imul eax, dword [rbp - 0x14]
shl eax, 2
mov ecx, eax
mov rdx, qword [rbp - 0x20]
mov rax, qword [rbp - 0x38]
mov r8, rdx
mov edx, ecx
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_SetBitmapBits]
call rax
mov ecx, dword [rbp - 0x10]
mov rax, qword [rbp - 0x28]
mov dword [rsp + 0x40], 0x330008
mov dword [rsp + 0x38], 0
mov dword [rsp + 0x30], 0
mov rdx, qword [rbp - 0x30]
mov qword [rsp + 0x28], rdx
mov edx, dword [rbp - 0x14]
mov dword [rsp + 0x20], edx
mov r9d, ecx
mov r8d, 0
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_BitBlt]
call rax
mov rax, qword [rbp - 0x38]
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_DeleteObject]
call rax
mov rax, qword [rbp - 0x30]
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_DeleteObject]
call rax
mov rax, qword [rbp - 0x28]
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_DeleteObject]
call rax
add dword [rbp - 4], 1
mov ecx, dword [rbp - 4]
mov edx, 0x55555556
mov eax, ecx
imul edx
mov eax, ecx
sar eax, 0x1f
sub edx, eax
mov eax, edx
add eax, eax
add eax, edx
sub ecx, eax
mov eax, ecx
mov dword [rbp - 4], eax
jmp 0x402083