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

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
test dl, dl
je 0x51ec63
add esp, 0xfffffff0
call fcn.00404588
mov byte [ebp - 1], dl
mov ebx, eax
mov edi, dword [0x544afc]
xor eax, eax
mov dword [ebx + 0x28], eax
xor eax, eax
mov dword [ebx + 0x2c], eax
xor eax, eax
mov dword [ebx + 0x30], eax
xor eax, eax
mov dword [ebx + 0x34], eax
xor eax, eax
mov dword [ebx + 0x38], eax
xor eax, eax
mov dword [ebx + 0x3c], eax
xor eax, eax
mov dword [ebx + 0x40], eax
xor eax, eax
mov dword [ebx + 8], eax
xor eax, eax
mov dword [ebx + 0xc], eax
xor eax, eax
mov dword [ebx + 0x10], eax
mov dl, 1
mov eax, dword [0x419498]
call fcn.00404220
mov dword [ebx + 0x64], eax
mov dl, 1
mov eax, dword [0x419498]
call fcn.00404220
mov dword [ebx + 0x34d8], eax
mov dl, 1
mov eax, dword [0x419498]
call fcn.00404220
mov dword [ebx + 0x34dc], eax
mov dl, 1
mov eax, dword [0x419498]
call fcn.00404220
mov dword [ebx + 0x34e0], eax
mov dl, 1
mov eax, dword [0x419498]
call fcn.00404220
mov dword [ebx + 0x34e4], eax
mov dl, 1
mov eax, dword [0x419498]
call fcn.00404220
mov dword [ebx + 0x34e8], eax
call sub.kernel32.dll_GetTickCount_1
mov dword [ebx + 0x34ec], eax
mov byte [ebx + 0x34f0], 0
mov eax, dword [edi]
mov ecx, dword [eax + 4]
mov dl, 1
mov eax, dword [0x431f7c]
call fcn.0043469c
mov esi, eax
mov dword [ebx + 0x34cc], esi
mov edx, dword [edi]
mov eax, esi
mov ecx, dword [eax]
call dword [ecx + 0x68]
xor edx, edx
mov eax, esi
call fcn.00433a08
xor edx, edx
mov eax, esi
call fcn.0043dfa8
mov dl, 1
mov eax, esi
call fcn.00444a08
xor edx, edx
mov eax, esi
call fcn.0043d7f8
mov edx, 0xfa
mov eax, esi
call fcn.0043d81c
mov edx, 0x12c
mov eax, esi
call fcn.0043d844
mov edx, 0x96
mov eax, esi
call fcn.0043d868
mov eax, dword [edi]
mov ecx, dword [eax + 4]
mov dl, 1
mov eax, dword [0x4314a8]
call fcn.0043392c
mov esi, eax
mov dword [ebx + 0x34d0], esi
mov edx, dword [edi]
mov eax, esi
mov ecx, dword [eax]
call dword [ecx + 0x68]
mov dl, 1
mov eax, esi
call fcn.00433a08
xor edx, edx
mov eax, esi
call fcn.0043dfa8
mov edx, 0x46
mov eax, esi
call fcn.00433a54
mov dl, 1
mov eax, esi
call fcn.00444a08
mov edx, dword [0x54461c]
mov edx, dword [edx]
sub edx, 0xc2
sar edx, 1
jns 0x51ede3
adc edx, 0
mov eax, esi
call fcn.0043d7f8
mov edx, dword [0x54460c]
mov edx, dword [edx]
sub edx, 0xc8
mov eax, esi
call fcn.0043d81c
mov edx, 0xc
mov eax, esi
call fcn.0043d868
mov edx, 0xc2
mov eax, esi
call fcn.0043d844
mov eax, dword [edi]
mov ecx, dword [eax + 4]
mov dl, 1
mov eax, dword [0x4314a8]
call fcn.0043392c
mov esi, eax
mov dword [ebx + 0x34d4], esi
mov edx, dword [edi]
mov eax, esi
mov ecx, dword [eax]
call dword [ecx + 0x68]
mov dl, 1
mov eax, esi
call fcn.00433a08
xor edx, edx
mov eax, esi
call fcn.0043dfa8
mov edx, 0x46
mov eax, esi
call fcn.00433a54
mov dl, 1
mov eax, esi
call fcn.00444a08
mov edx, dword [0x54461c]
mov edx, dword [edx]
sub edx, 0xc2
sar edx, 1
jns 0x51ee75
adc edx, 0
mov eax, esi
call fcn.0043d7f8
mov edx, dword [0x54460c]
mov edx, dword [edx]
sub edx, 0xb0
mov eax, esi
call fcn.0043d81c
mov edx, 0xc
mov eax, esi
call fcn.0043d868
mov edx, 0xc2
mov eax, esi
call fcn.0043d844
call sub.kernel32.dll_GetTickCount_1
mov dword [ebx + 0x48], eax
call sub.kernel32.dll_GetTickCount_1
mov dword [ebx + 0x50], eax
xor eax, eax
mov dword [ebx + 0x54], eax
xor eax, eax
mov dword [ebx + 0x4c], eax
mov eax, dword [edi]
mov ecx, dword [eax + 4]
mov dl, 1
mov eax, dword [0x435710]
call fcn.00435dfc
mov esi, eax
mov dword [ebx + 0x60], esi
push ebx
push 0x51f080
mov eax, esi
call fcn.00435fa4
mov edx, 1
mov eax, esi
call fcn.00435f94
xor edx, edx
mov eax, esi
call fcn.00435f84
mov eax, ebx
cmp byte [ebp - 1], 0
je 0x51ef12
call fcn.004045e0
pop dword fs:[0]
add esp, 0xc
mov eax, ebx
pop edi
pop esi
pop ebx
pop ecx
pop ebp
ret