Function at 0x5642b8
Capabilities:
Check for time delay via gettickcount
Print debug messages

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff04
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0xf8], ecx
mov dword [ebp - 0xfc], ecx
mov dword [ebp - 0xf0], ecx
mov dword [ebp - 0xf4], ecx
mov dword [ebp - 0xe8], ecx
mov dword [ebp - 0xec], ecx
mov dword [ebp - 0x84], ecx
mov byte [ebp - 0xd1], dl
mov dword [ebp - 0x8c], eax
lea eax, [ebp - 0x80]
mov edx, dword [0x50ad94]
call fcn.00405e14
mov esi, dword [0x5865d0]
mov edi, dword [0x586a98]
xor eax, eax
push ebp
push 0x564c3a
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 0xd2], 0
mov eax, dword [ebp - 0x8c]
cmp dword [eax + 0xac], 0
jne 0x564354
mov eax, dword [edi]
mov edx, dword [eax + 0xb8]
mov eax, 0x564c58
call fcn.00405784
test eax, eax
je 0x564c03
mov byte [ebp - 0xe1], 0
xor eax, eax
mov dword [ebp - 0x98], eax
mov eax, dword [0x586404]
mov eax, dword [eax]
cmp byte [eax + 0x5cd], 0
je 0x56437d
mov dword [ebp - 0x98], 0x3e8
lea ecx, [ebp - 0xdc]
lea edx, [ebp - 0xd8]
mov eax, dword [edi]
call fcn.00515160
mov byte [ebp - 0xd2], al
mov eax, dword [ebp - 0x8c]
cmp dword [eax + 0xac], 0
je 0x564c03
cmp byte [ebp - 0xd2], 0
jne 0x56448d
mov eax, dword [ebp - 0x8c]
call fcn.0055b9a0
mov eax, dword [ebp - 0x8c]
cmp byte [eax + 0xd], 0
jne 0x564c03
xor ebx, ebx
call fcn.004b9988
mov dword [ebp - 0xa0], eax
jmp 0x56444d
push 0x64
call sub.kernel32.dll_Sleep_2
lea ecx, [ebp - 0xdc]
lea edx, [ebp - 0xd8]
mov eax, dword [edi]
call fcn.00515160
mov byte [ebp - 0xd2], al
cmp byte [ebp - 0xd2], 0
jne 0x564459
call fcn.004b9988
sub eax, dword [ebp - 0xa0]
cmp eax, 0x7530
ja 0x564459
call fcn.004b9988
sub eax, dword [ebp - 0xa0]
cmp eax, 0x7d0
jbe 0x56444d
test ebx, ebx
jne 0x56444d
mov eax, dword [ebp - 0x8c]
call fcn.0055b9a0
mov eax, dword [ebp - 0x8c]
cmp byte [eax + 0xd], 0
jne 0x564c03
inc ebx
mov eax, dword [ebp - 0x8c]
cmp byte [eax + 0xd], 0
je 0x5643e0
mov eax, dword [ebp - 0x8c]
cmp byte [eax + 0xd], 0
jne 0x564c03
cmp byte [ebp - 0xd2], 0
jne 0x56448d
mov eax, dword [edi]
mov edx, 0x564c64
call fcn.00521e50
push 0xbb8
call sub.kernel32.dll_Sleep_2
jmp 0x564c03
mov eax, dword [0x586404]
mov eax, dword [eax]
mov eax, dword [eax + 0x5d0]
test eax, eax
jne 0x5646c3
xor eax, eax
mov dword [ebp - 0xa4], eax
jmp 0x5646b3
inc dword [ebp - 0xa4]
cmp dword [ebp - 0xa4], 0xa
jg 0x5646c3
lea ecx, [ebp - 0x34]
mov eax, dword [esi]
mov edx, 0x564cb0
call fcn.0050d68c
test al, al
jne 0x5644ec
lea ecx, [ebp - 0x34]
mov eax, dword [esi]
mov edx, 0x564cd4
call fcn.0050d68c
test al, al
je 0x5646c3
xor ebx, ebx
mov eax, ebx
add eax, 0xfffffffe
sub eax, 3
jb 0x5645c5
dec eax
sub eax, 2
jb 0x5645c5
lea ecx, [ebp - 0x68]
mov eax, dword [esi]
mov edx, ebx
call fcn.0050c9b0
test al, al
je 0x5645c5
lea ecx, [ebp - 0x80]
mov eax, dword [edi]
mov edx, dword [ebp - 0x68]
call fcn.005170b8
test al, al
je 0x5645c5
cmp byte [ebp - 0x6b], 0x32
ja 0x5645c5
cmp byte [ebp - 0x58], 3
jne 0x5645c5
cmp dword [ebp - 0x4c], 0
jne 0x5645c5
mov eax, dword [esi]
mov ecx, 0x3f
mov edx, ebx
call fcn.0050f2cc
push 0x1f4
call sub.kernel32.dll_Sleep_2
push 0x564cf8
lea ecx, [ebp - 0xec]
mov edx, 2
mov eax, dword [ebp - 0x30]
call fcn.0040a0f4
push dword [ebp - 0xec]
push 0x564d10
lea eax, [ebp - 0xe8]
mov edx, 3
call fcn.0040553c
mov edx, dword [ebp - 0xe8]
mov eax, dword [edi]
call fcn.00512050
push 0x1f4
call sub.kernel32.dll_Sleep_2
mov eax, dword [esi]
mov ecx, ebx
mov edx, 0x3f
call fcn.0050f2cc
push 0x1f4
call sub.kernel32.dll_Sleep_2
jmp 0x5645cf
inc ebx
cmp ebx, 0xa
jne 0x5644ee
cmp dword [ebp - 0xa4], 6
jle 0x5646b3
mov eax, ebx
add eax, 0xfffffffe
sub eax, 3
jb 0x5646b3
dec eax
sub eax, 2
jb 0x5646b3
lea ecx, [ebp - 0x68]
mov eax, dword [esi]
mov edx, ebx
call fcn.0050c9b0
test al, al
je 0x5646b3
lea ecx, [ebp - 0x80]
mov eax, dword [edi]
mov edx, dword [ebp - 0x68]
call fcn.005170b8
test al, al
je 0x5646b3
cmp byte [ebp - 0x6b], 0x32
ja 0x5646b3
cmp byte [ebp - 0x58], 2
jne 0x5646b3
cmp dword [ebp - 0x4c], 0
jne 0x5646b3
mov eax, dword [esi]
mov ecx, 0x3f
mov edx, ebx
call fcn.0050f2cc
push 0x1f4
call sub.kernel32.dll_Sleep_2
push 0x564cf8
lea ecx, [ebp - 0xf4]
mov edx, 2
mov eax, dword [ebp - 0x30]
call fcn.0040a0f4
push dword [ebp - 0xf4]
push 0x564d10
lea eax, [ebp - 0xf0]
mov edx, 3
call fcn.0040553c
mov edx, dword [ebp - 0xf0]
mov eax, dword [edi]
call fcn.00512050
push 0x1f4
call sub.kernel32.dll_Sleep_2
mov eax, dword [esi]
mov ecx, ebx
mov edx, 0x3f
call fcn.0050f2cc
push 0x1f4
call sub.kernel32.dll_Sleep_2
jmp 0x5646c3
mov eax, dword [ebp - 0x8c]
cmp byte [eax + 0xd], 0
je 0x5644af
cmp byte [ebp - 0xd1], 0
jne 0x5646f5
mov eax, dword [0x586a9c]
mov eax, dword [eax]
cmp dword [eax + 0x8c], 0
jle 0x5646f5
push 0x1f4
call sub.kernel32.dll_Sleep_2
xor ecx, ecx
xor edx, edx
mov eax, dword [ebp - 0x8c]
call fcn.00567a40
push 0x12c
call sub.kernel32.dll_Sleep_2
mov eax, dword [0x586404]
mov eax, dword [eax]
cmp dword [eax + 0x5d0], 1
jne 0x564719
push 0x7d0
call sub.kernel32.dll_Sleep_2
mov eax, dword [0x586404]
mov eax, dword [eax]
cmp dword [eax + 0x5d0], 0
jne 0x56474e
mov eax, dword [ebp - 0x8c]
cmp dword [eax + 0x184], 0
jne 0x56474e
mov eax, 0x564d24
call fcn.00564108
mov edx, dword [ebp - 0x8c]
mov dword [edx + 0x184], eax
xor eax, eax
mov dword [ebp - 0xcc], eax
lea edx, [ebp - 0xe0]
mov eax, dword [ebp - 0x8c]
call fcn.0056e9d0
mov byte [ebp - 0xc8], al
mov eax, dword [edi]
mov ecx, 0x3e8
mov edx, dword [ebp - 0xd8]
call fcn.005220b8
test al, al
jne 0x56479b
mov eax, dword [ebp - 0x8c]
cmp byte [eax + 0xd], 0
jne 0x56479b
mov eax, dword [edi]
mov edx, 0x564d34
call fcn.00521e50
mov eax, dword [ebp - 0x98]
add eax, 0x32
push eax
call sub.kernel32.dll_Sleep_2
mov eax, dword [0x586404]
mov eax, dword [eax]
cmp dword [eax + 0x5d0], 1
jne 0x5647c4
push 0x7d0
call sub.kernel32.dll_Sleep_2
cmp byte [ebp - 0xe1], 0
jne 0x5648c6
mov eax, dword [edi]
cmp byte [eax + 0x18d], 0
je 0x5647e5
cmp dword [ebp - 0xdc], 0
jne 0x5647f2
xor edx, edx
mov eax, dword [ebp - 0x8c]
call fcn.00560628
mov eax, dword [edi]
cmp dword [eax + 0x180], 0
jle 0x5648c6
mov eax, dword [esi]
call fcn.0050f20c
mov edx, dword [edi]
mov edx, dword [edx + 0x180]
add edx, 0x186a0
cmp eax, edx
jle 0x56485d
mov eax, dword [esi]
call fcn.0050f20c
mov edx, dword [edi]
sub eax, dword [edx + 0x180]
mov ecx, 0x186a0
cdq
idiv ecx
imul eax, eax, 0x186a0
mov dword [ebp - 0xa4], eax
mov eax, dword [esi]
xor ecx, ecx
mov edx, dword [ebp - 0xa4]
call fcn.0050f4a0
mov eax, dword [ebp - 0x98]
add eax, 0x32
push eax
call sub.kernel32.dll_Sleep_2
jmp 0x5648c6
mov eax, dword [esi]
call fcn.0050f20c
mov edx, dword [edi]
cmp eax, dword [edx + 0x180]
jge 0x5648c6
mov eax, dword [esi]
call fcn.0050f20c
mov edx, dword [edi]
mov edx, dword [edx + 0x180]
sub edx, eax
mov dword [ebp - 0xa4], edx
mov eax, dword [esi]
mov eax, dword [eax + 0x78]
xor edx, edx
push edx
push eax
mov eax, dword [ebp - 0xa4]
cdq
cmp edx, dword [esp + 4]
jne 0x5648a4
cmp eax, dword [esp]
pop edx
pop eax
ja 0x5648c6
jmp 0x5648a8
pop edx
pop eax
jg 0x5648c6
mov eax, dword [esi]
xor ecx, ecx
mov edx, dword [ebp - 0xa4]
call fcn.005110dc
mov eax, dword [ebp - 0x98]
add eax, 0x32
push eax
call sub.kernel32.dll_Sleep_2
cmp dword [ebp - 0xdc], 0
je 0x56490c
mov eax, dword [0x586404]
mov eax, dword [eax]
mov eax, dword [eax + 0x5d0]
dec eax
sub eax, 0xc7
jae 0x56490c
mov eax, dword [ebp - 0x98]
add eax, 0xc8
push eax
call sub.kernel32.dll_Sleep_2
mov eax, 0x564d68
call fcn.004b8ff8
mov dl, 1
mov eax, dword [ebp - 0x8c]
call fcn.00560628
mov eax, 0x564d80
call fcn.004b8ff8
push 0x64
call sub.kernel32.dll_Sleep_2
cmp byte [ebp - 0xd1], 0
jne 0x564b4d
mov byte [ebp - 0x8d], 0
mov byte [ebp - 0xa9], 0
mov byte [ebp - 0xac], 0
mov byte [ebp - 0xa6], 0
mov byte [ebp - 0x99], 0
mov byte [ebp - 0xae], 0
mov byte [ebp - 0xa7], 0
mov byte [ebp - 0xa8], 0
mov byte [ebp - 0xaf], 0
mov byte [ebp - 0xb0], 0
mov byte [ebp - 0xbc], 0
mov byte [ebp - 0xb1], 0
mov byte [ebp - 0xad], 0
mov byte [ebp - 0xc1], 0
mov byte [ebp - 0xa5], 0
mov byte [ebp - 0xbd], 0
mov byte [ebp - 0xba], 0
mov byte [ebp - 0xb4], 0
mov byte [ebp - 0xc2], 0
mov byte [ebp - 0xbe], 0
mov byte [ebp - 0xbf], 0
mov byte [ebp - 0xc0], 0
mov byte [ebp - 0xab], 0
mov byte [ebp - 0xb7], 0
mov byte [ebp - 0xb6], 0
mov byte [ebp - 0xb5], 0
mov byte [ebp - 0xb8], 0
mov byte [ebp - 0xb9], 0
mov byte [ebp - 0xbb], 0
mov byte [ebp - 0xb2], 0
mov byte [ebp - 0xb3], 0
mov byte [ebp - 0xc6], 0
mov byte [ebp - 0xc3], 0
mov byte [ebp - 0xc4], 0
mov byte [ebp - 0xc5], 0
mov eax, dword [esi]
call fcn.0050de20
mov dword [ebp - 0x94], eax
mov eax, 0x564d9c
call fcn.004b8ff8
push ebp
xor eax, eax
call fcn.00561278
pop ecx
cmp dword [ebp - 0xdc], 0
je 0x564a6d
mov eax, 0x564db4
call fcn.004b8ff8
mov eax, dword [edi]
mov ecx, 0x3e8
mov edx, dword [ebp - 0xdc]
call fcn.00522184
push ebp
mov al, 1
call fcn.00561278
pop ecx
mov eax, dword [0x586404]
mov eax, dword [eax]
cmp dword [eax + 0x5d0], 0
jne 0x564b4d
cmp byte [ebp - 0xc8], 0
je 0x564afe
cmp dword [ebp - 0xcc], 0
jle 0x564afe
mov eax, dword [edi]
or ecx, 0xffffffff
xor edx, edx
call fcn.00523090
push 0x12c
call sub.kernel32.dll_Sleep_2
lea edx, [ebp - 0xfc]
mov eax, dword [ebp - 0xcc]
call fcn.00409fe0
mov ecx, dword [ebp - 0xfc]
lea eax, [ebp - 0xf8]
mov edx, 0x564dcc
call fcn.004054c0
mov eax, dword [ebp - 0xf8]
call fcn.00405638
push eax
call sub.kernel32.dll_OutputDebugStringA
mov edx, dword [ebp - 0xe0]
mov eax, dword [ebp - 0x8c]
call fcn.0056b028
push 0x12c
call sub.kernel32.dll_Sleep_2
jmp 0x564b4d
cmp byte [ebp - 0xc8], 0
je 0x564b4d
mov eax, dword [esi]
call fcn.00511bf8
test al, al
je 0x564b4d
mov eax, dword [ebp - 0x8c]
cmp dword [eax + 0x184], 0
jne 0x564b4d
mov ecx, 1
mov edx, dword [ebp - 0xe0]
mov eax, dword [ebp - 0x8c]
call fcn.0056bb48
mov ecx, 2
mov edx, dword [ebp - 0xe0]
mov eax, dword [ebp - 0x8c]
call fcn.0056bb48
cmp byte [ebp - 0xc8], 0
je 0x564b61
mov eax, dword [ebp - 0xe0]
call fcn.004041e0
cmp byte [ebp - 0xd1], 0
jne 0x564bbc
mov eax, dword [0x586a9c]
mov eax, dword [eax]
cmp byte [eax + 0x98], 0
je 0x564bbc
mov eax, dword [ebp - 0x8c]
cmp dword [eax + 0x5c], 1
jne 0x564bbc
mov eax, dword [esi]
call fcn.00511c74
cmp al, 3
jne 0x564bbc
push 0x12c
call sub.kernel32.dll_Sleep_2
mov eax, dword [ebp - 0x8c]
call fcn.0056ae60
push 0xc8
call sub.kernel32.dll_Sleep_2
mov eax, dword [ebp - 0x8c]
cmp byte [eax + 0xd], 0
jne 0x564c03
mov eax, dword [0x586404]
mov eax, dword [eax]
mov eax, dword [eax + 0x5d0]
test eax, eax
jne 0x564bd8
mov eax, dword [ebp - 0x8c]
call fcn.005650ac
mov eax, 0x564de0
call fcn.004b8ff8
mov eax, dword [edi]
mov byte [eax + 0x9d], 1
xor edx, edx
mov eax, dword [ebp - 0x8c]
call fcn.0056c144
mov eax, dword [ebp - 0x8c]
call fcn.0055dd58
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x564c41
lea eax, [ebp - 0xfc]
mov edx, 6
call fcn.004051cc
lea eax, [ebp - 0x84]
call fcn.004051a8
lea eax, [ebp - 0x80]
mov edx, dword [0x50ad94]
call fcn.00405ee4
ret