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

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 0x99
push 0
push 0
dec ecx
jne 0x47784d
xchg dword [ebp - 4], ecx
push ebx
push esi
push edi
mov dword [ebp - 8], ecx
mov dword [ebp - 4], edx
mov ebx, eax
xor eax, eax
push ebp
push 0x477d3c
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 9], 0
xor eax, eax
mov dword [ebp - 0x18], eax
test ebx, ebx
je 0x477880
mov dword [ebp - 0x18], ebx
cmp dword [ebp - 4], 0
je 0x4778ba
mov ecx, dword [ebp - 4]
mov dl, 1
mov eax, dword [0x45d8d4]
call fcn.0045a858
mov dword [ebp - 0x18], eax
or ecx, 0xffffffff
mov edx, 0x227
mov eax, dword [ebp - 0x18]
call fcn.0045bcec
mov eax, dword [ebp - 4]
call fcn.0043c6b4
mov edx, eax
mov eax, dword [ebp - 0x18]
call fcn.00439e4c
push 0x477d54
lea eax, [ebp - 0x420]
push eax
call sub.kernel32.dll_lstrcpyA
lea eax, [ebp - 0x434]
lea edx, [ebp - 0x420]
mov ecx, 0x400
call fcn.00404c70
mov edx, dword [ebp - 0x434]
mov eax, dword [ebp - 0x18]
call fcn.0045e1dc
mov edx, 0x7530
mov eax, dword [ebp - 0x18]
call fcn.00476d48
mov eax, 0xbb8
call fcn.00476d1c
lea ecx, [ebp - 0x438]
mov edx, 0xcb
mov eax, dword [ebp - 0x18]
call fcn.0045b42c
mov edx, dword [ebp - 0x438]
lea eax, [ebp - 0x430]
call fcn.004053d0
lea ecx, [ebp - 0x43c]
mov edx, 0xcb
mov eax, dword [ebp - 0x18]
call fcn.0045b42c
mov edx, dword [ebp - 0x43c]
lea eax, [ebp - 0x1c]
mov ecx, 0x477d8c
call fcn.004061f4
xor eax, eax
push ebp
push 0x4779ac
push dword fs:[eax]
mov dword fs:[eax], esp
push 0x477d9c
push 0x477dac
lea eax, [ebp - 0x430]
push eax
lea eax, [ebp - 0x45c]
push eax
call fcn.00405314
add esp, 0xc
lea eax, [ebp - 0x45c]
push eax
lea eax, [ebp - 0x44c]
push eax
call fcn.00405314
add esp, 0xc
lea edx, [ebp - 0x44c]
lea eax, [ebp - 0x10]
call fcn.0040535c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4779be
mov eax, dword [ebp - 0x10]
call fcn.004048b8
mov ebx, eax
mov eax, ebx
mov edx, 0x477db4
xor ecx, ecx
call fcn.0045e340
test eax, eax
je 0x477a46
push 0x477dd8
lea edx, [ebp - 0x464]
mov eax, dword [ebp - 8]
call fcn.00409000
push dword [ebp - 0x464]
push 0x477df4
lea eax, [ebp - 0x460]
mov edx, 3
call fcn.00404780
mov eax, dword [ebp - 0x460]
call fcn.004048b8
push eax
mov eax, ebx
xor ecx, ecx
pop edx
call fcn.0045e340
test eax, eax
je 0x477a46
mov eax, ebx
mov edx, 0x477e00
xor ecx, ecx
call fcn.0045e340
test eax, eax
je 0x477a46
mov eax, ebx
mov edx, 0x477e0c
xor ecx, ecx
call fcn.0045e340
test eax, eax
jne 0x477a5d
cmp dword [ebp - 4], 0
je 0x477c82
mov eax, dword [ebp - 0x18]
call fcn.00403680
jmp 0x477c82
lea eax, [ebp - 0x468]
call fcn.004061b0
push eax
lea eax, [ebp - 0x478]
xor edx, edx
mov cl, 1
call fcn.004053e8
push dword [ebp - 0x46c]
push dword [ebp - 0x470]
push dword [ebp - 0x474]
push dword [ebp - 0x478]
lea eax, [ebp - 0x488]
mov edx, 0x477e30
call fcn.004053d8
push dword [ebp - 0x47c]
push dword [ebp - 0x480]
push dword [ebp - 0x484]
push dword [ebp - 0x488]
lea eax, [ebp - 0x48c]
call fcn.004061b0
push eax
mov eax, dword [ebp - 0x1c]
push eax
mov eax, dword [eax]
call dword [eax + 0x20]
call fcn.004062bc
mov eax, dword [ebp - 0x48c]
push eax
mov eax, dword [eax]
call dword [eax + 0x2c]
call fcn.004062bc
mov edx, dword [ebp - 0x468]
lea eax, [ebp - 0x20]
mov ecx, 0x477e40
call fcn.004061f4
cmp dword [ebp - 0x20], 0
je 0x477b51
push 0x477e50
push 0
push 0x477e30
push 0x477e5c
push 0x477e68
lea eax, [ebp - 0x430]
push eax
lea eax, [ebp - 0x4ac]
push eax
call fcn.00405314
add esp, 0xc
lea eax, [ebp - 0x4ac]
push eax
lea eax, [ebp - 0x49c]
push eax
call fcn.00405314
add esp, 0x14
lea eax, [ebp - 0x49c]
push eax
push 0
call fcn.00405314
add esp, 0xc
jmp 0x477b68
cmp dword [ebp - 4], 0
je 0x477c82
mov eax, dword [ebp - 0x18]
call fcn.00403680
jmp 0x477c82
mov eax, 0x3e8
call fcn.00476d1c
call sub.kernel32.dll_GetTickCount
mov dword [ebp - 0x14], eax
xor eax, eax
push ebp
push 0x477bd6
push dword fs:[eax]
mov dword fs:[eax], esp
push 0x477e70
push 0x477dac
lea eax, [ebp - 0x430]
push eax
lea eax, [ebp - 0x4cc]
push eax
call fcn.00405314
add esp, 0xc
lea eax, [ebp - 0x4cc]
push eax
lea eax, [ebp - 0x4bc]
push eax
call fcn.00405314
add esp, 0xc
lea edx, [ebp - 0x4bc]
lea eax, [ebp - 0x10]
call fcn.0040535c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x477be8
mov eax, dword [ebp - 0x10]
call fcn.004048b8
mov ebx, eax
mov eax, ebx
xor ecx, ecx
mov edx, dword [ebp - 8]
call fcn.0045e340
test eax, eax
jle 0x477c54
mov eax, ebx
mov edx, 0x477e80
xor ecx, ecx
call fcn.0045e340
test eax, eax
jle 0x477c54
mov eax, ebx
mov edx, 0x477e8c
xor ecx, ecx
call fcn.0045e340
test eax, eax
jle 0x477c54
mov byte [ebp - 9], 1
mov edx, 0x477e9c
mov eax, dword [ebp - 0x18]
call fcn.0045e1dc
mov edx, 0x7530
mov eax, dword [ebp - 0x18]
call fcn.00476d48
cmp dword [ebp - 4], 0
je 0x477c82
mov eax, dword [ebp - 0x18]
call fcn.00403680
jmp 0x477c82
call sub.kernel32.dll_GetTickCount
sub eax, dword [ebp - 0x14]
cmp eax, 0x7530
jb 0x477c73
cmp dword [ebp - 4], 0
je 0x477c82
mov eax, dword [ebp - 0x18]
call fcn.00403680
jmp 0x477c82
mov eax, 0x3e8
call fcn.00476d1c
jmp 0x477b7a
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x477d46
lea eax, [ebp - 0x4cc]
mov edx, dword [0x401110]
mov ecx, 4
call fcn.00404f2c
lea eax, [ebp - 0x48c]
call fcn.004061b0
lea eax, [ebp - 0x488]
mov edx, dword [0x401120]
mov ecx, 2
call fcn.00404f2c
lea eax, [ebp - 0x468]
call fcn.004061b0
lea eax, [ebp - 0x464]
mov edx, 2
call fcn.0040442c
lea eax, [ebp - 0x45c]
mov edx, dword [0x401110]
mov ecx, 2
call fcn.00404f2c
lea eax, [ebp - 0x43c]
mov edx, dword [0x4011d4]
mov ecx, 2
call fcn.00404f2c
lea eax, [ebp - 0x434]
call fcn.00404b24
lea eax, [ebp - 0x430]
call fcn.004053fc
lea eax, [ebp - 0x20]
call fcn.004061b0
lea eax, [ebp - 0x1c]
call fcn.004061b0
lea eax, [ebp - 0x10]
call fcn.00404408
ret