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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1c
push ebx
push esi
push edi
call fcn.0040dbf0
call fcn.004119e0
call fcn.004165f0
call fcn.00419810
mov ebx, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, 0x5d91bc
nop dword [eax + eax]
cmp dword [esi + 4], 0
je 0x51c6b3
call ebx
cmp dword [esi], eax
ja 0x51c6b3
mov eax, dword [esi - 8]
test eax, eax
js 0x51c698
cmp eax, 0x1194
jge 0x51c698
mov ecx, dword [eax*4 + 0x20a514c]
cmp dword [ecx + 4], 3
jne 0x51c698
mov eax, dword [esi - 4]
test eax, eax
js 0x51c698
cmp eax, 0x1194
jge 0x51c698
mov eax, dword [eax*4 + 0x20a514c]
cmp dword [eax + 4], 3
jne 0x51c698
push eax
push ecx
call fcn.00424e90
mov dword [esi], 0
mov dword [esi - 8], 0xffffffff
jmp 0x51c6a5
mov dword [esi - 8], 0xffffffff
mov dword [esi], 0
mov dword [esi - 4], 0xffffffff
mov dword [esi + 4], 0
add esi, 0x10
cmp esi, 0x5d97fc
jl 0x51c640
call fcn.00431790
call fcn.00441710
call fcn.00446ce0
call fcn.0047efe0
call ebx
sub eax, dword [0x64acfc]
cmp eax, 0x3e8
jb case.0x51c762.0
call ebx
push 0
mov dword [0x64acfc], eax
call fcn.0052d9f5
add esp, 4
mov esi, eax
mov eax, dword [0x64ad14]
push edx
cdq
push esi
push edx
push eax
call fcn.0052d9b0
mov eax, dword [0x64acec]
add esp, 0x10
cmp dword [0xbdcd4c], 0
fstp qword [esp + 0x10]
cvttsd2si ecx, qword [esp + 0x10]
mov dword [0x64acf0], ecx
jne 0x51c73d
cmp dword [0xbd8f1c], 0xffffffff
je 0x51c75d
mov dword [0xbd8f1c], 0xffffffff
jmp 0x51c75d
cmp eax, 1
jne 0x51c74a
mov dword [0xbd8f1c], ecx
jmp 0x51c75d
cmp dword [0xbd8f1c], 0
je 0x51c75d
mov dword [0xbd8f1c], 0
cmp eax, 4
ja case.0x51c762.0
jmp dword [eax*4 + 0x51cca0]
call fcn.0047d110
jmp case.0x51c762.0
call fcn.0047d350
jmp case.0x51c762.0
call fcn.0047d5b0
jmp case.0x51c762.0
call fcn.0047e650
cmp dword [0x64acf0], 0
jg case.0x51c762.0
mov ecx, 0x64ace8
mov dword [0x64acec], 1
call fcn.0047da50
call ebx
sub eax, dword [0x6396c0]
cmp eax, 0x3e8
jb 0x51c8d8
call ebx
push 0
mov dword [0x6396c0], eax
call fcn.0052d9f5
add esp, 4
mov esi, eax
mov eax, dword [0x6396b4]
push edx
cdq
push esi
push edx
push eax
call fcn.0052d9b0
mov eax, dword [0x6396ac]
add esp, 0x10
cmp dword [0x6396cc], 0
fstp qword [esp + 0x10]
cvttsd2si ecx, qword [esp + 0x10]
mov dword [0x6396b0], ecx
jne 0x51c80b
cmp dword [0xbd8f20], 0xffffffff
je 0x51c82b
mov dword [0xbd8f20], 0xffffffff
jmp 0x51c82b
cmp eax, 1
jne 0x51c818
mov dword [0xbd8f20], ecx
jmp 0x51c82b
cmp dword [0xbd8f20], 0
je 0x51c82b
mov dword [0xbd8f20], 0
sub eax, 0
je 0x51c8d8
sub eax, 1
je 0x51c8d3
sub eax, 1
jne 0x51c8d8
test ecx, ecx
jg 0x51c8d8
lea eax, [esp + 0x10]
mov dword [esp + 0x10], 0x21f
push eax
lea eax, [esp + 0x20]
mov ecx, 0xa9b83c
push eax
call fcn.00405650
mov eax, dword [esp + 0x24]
mov ecx, dword [0xa9b83c]
cmp byte [eax + 0xd], 0
jne 0x51c883
cmp dword [eax + 0x10], 0x21f
jle 0x51c885
mov eax, ecx
cmp eax, ecx
jne 0x51c8a8
push 0x21f
push str.Could_not_find_message__d_
push 0xa9b7bc
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
mov eax, 0xa9b7bc
jmp 0x51c8ab
add eax, 0x18
push eax
push 0
push 0
push 0
push 0
push 0
push 0
push 0xb90558
call fcn.004cdd70
add esp, 0x20
mov ecx, 0x6396a8
push 1
call fcn.00450f70
jmp 0x51c8d8
call fcn.00450bf0
call fcn.0044d640
call fcn.0045a610
mov edi, 0x63c3a4
call ebx
sub eax, dword [edi]
cmp eax, 0x3e8
jb 0x51c991
call ebx
push 0
mov dword [edi], eax
call fcn.0052d9f5
add esp, 4
mov esi, eax
mov eax, dword [edi - 4]
push edx
cdq
push esi
push edx
push eax
call fcn.0052d9b0
add esp, 0x10
call fcn.00545cc0
cmp dword [0xbdcc6c], 0
mov ecx, eax
mov dword [edi - 8], ecx
jne 0x51c93e
cmp dword [0xbd8f0c], 0xffffffff
je 0x51c96b
mov dword [0xbd8f0c], 0xffffffff
jmp 0x51c96b
test ecx, ecx
js 0x51c96b
mov eax, dword [0xbd8f0c]
cmp ecx, eax
jl 0x51c94f
test eax, eax
jg 0x51c96b
cmp dword [edi - 0xc], 1
jne 0x51c95d
mov dword [0xbd8f0c], ecx
jmp 0x51c96b
test eax, eax
je 0x51c96b
mov dword [0xbd8f0c], 0
mov eax, dword [edi - 0xc]
sub eax, 0
je 0x51c991
sub eax, 1
je 0x51c988
sub eax, 1
jne 0x51c991
lea eax, [edi - 0x10]
push eax
call fcn.0045faf0
jmp 0x51c991
lea eax, [edi - 0x10]
push eax
call fcn.0045f7d0
add edi, 0x50
cmp edi, 0x63cb24
jl 0x51c8e7
xor eax, eax
mov dword [esp + 0x10], eax
nop word [eax + eax]
imul edi, eax, 0x730
add edi, 0x64023c
call ebx
sub eax, dword [edi + 0x14]
cmp eax, 0x3e8
jb case.0x51ca5a.0
call ebx
push 0
mov dword [edi + 0x14], eax
call fcn.0052d9f5
add esp, 4
mov esi, eax
mov eax, dword [edi + 0x10]
push edx
cdq
push esi
push edx
push eax
call fcn.0052d9b0
add esp, 0x10
call fcn.00545cc0
cmp dword [esp + 0x10], 0
mov dword [edi + 0xc], eax
jne 0x51ca33
cmp dword [0xbdaea4], 0
jne 0x51ca1b
mov eax, dword [0xbd8ef8]
cmp eax, 0xffffffff
je 0x51ca38
mov dword [0xbd8ef8], 0xffffffff
jmp 0x51ca52
cmp dword [edi + 4], 1
jne 0x51ca28
mov dword [0xbd8ef8], eax
jmp 0x51ca38
mov eax, dword [0xbd8ef8]
test eax, eax
jne 0x51ca48
jmp 0x51ca38
mov eax, dword [0xbd8ef8]
test eax, eax
jle 0x51ca52
mov eax, dword [edi + 4]
cmp eax, 1
je 0x51ca52
test eax, eax
je 0x51ca52
mov dword [0xbd8ef8], 0
mov eax, dword [edi + 4]
cmp eax, 4
ja case.0x51ca5a.0
jmp dword [eax*4 + 0x51ccb4]
push edi
call fcn.00467890
jmp case.0x51ca5a.0
push edi
call fcn.00467b20
jmp case.0x51ca5a.0
push edi
call fcn.00467d20
jmp case.0x51ca5a.0
push edi
call fcn.00468800
cmp dword [edi + 0xc], 0
jg case.0x51ca5a.0
push edi
mov ecx, 0x640238
mov dword [edi + 4], 1
call fcn.00468200
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x10], eax
cmp eax, 7
jl 0x51c9b0
call fcn.00469a30
mov edi, 0x645fdc
call ebx
sub eax, dword [edi]
cmp eax, 0x3e8
jb 0x51cb5f
call ebx
push 0
mov dword [edi], eax
call fcn.0052d9f5
add esp, 4
mov esi, eax
mov eax, dword [edi - 4]
push edx
cdq
push esi
push edx
push eax
call fcn.0052d9b0
add esp, 0x10
call fcn.00545cc0
mov dword [edi - 8], eax
mov eax, dword [edi - 0xc]
sub eax, 0
je 0x51cb5f
sub eax, 1
je 0x51cb15
sub eax, 1
jne 0x51cb5f
lea esi, [edi - 0x10]
push esi
call fcn.004749c0
push esi
call fcn.00474ad0
cmp dword [edi - 8], 0
jg 0x51cb5f
push 0
jmp 0x51cb59
lea esi, [edi - 0x10]
push esi
call fcn.004749c0
push esi
call fcn.00474ad0
mov ecx, dword [edi + 4]
xor eax, eax
test ecx, ecx
js 0x51cb36
cmp ecx, 0x1194
setl al
mov ecx, dword [edi + 8]
test ecx, ecx
js 0x51cb46
cmp ecx, 0x1194
jge 0x51cb46
inc eax
cmp eax, 2
jb 0x51cb57
push esi
call fcn.004767f0
cmp dword [edi - 8], 0
jg 0x51cb5f
push 2
push esi
call fcn.004745c0
add edi, 0x44
cmp edi, 0x6460ec
jl 0x51cab3
xor eax, eax
mov dword [esp + 0x10], eax
nop dword [eax]
nop dword [eax + eax]
imul edi, eax, 0x2ac
add edi, 0x9d2b6c
call ebx
sub eax, dword [edi + 0x14]
cmp eax, 0x3e8
jb case.0x51cc2a.0
call ebx
push 0
mov dword [edi + 0x14], eax
call fcn.0052d9f5
add esp, 4
mov esi, eax
mov eax, dword [edi + 0x10]
push edx
cdq
push esi
push edx
push eax
call fcn.0052d9b0
add esp, 0x10
call fcn.00545cc0
cmp dword [esp + 0x10], 0
mov dword [edi + 0xc], eax
jne 0x51cc03
cmp dword [0xbdaed8], 0
jne 0x51cbeb
mov eax, dword [0xbd8f00]
cmp eax, 0xffffffff
je 0x51cc08
mov dword [0xbd8f00], 0xffffffff
jmp 0x51cc22
cmp dword [edi + 4], 1
jne 0x51cbf8
mov dword [0xbd8f00], eax
jmp 0x51cc08
mov eax, dword [0xbd8f00]
test eax, eax
jne 0x51cc18
jmp 0x51cc08
mov eax, dword [0xbd8f00]
test eax, eax
jle 0x51cc22
mov eax, dword [edi + 4]
cmp eax, 1
je 0x51cc22
test eax, eax
je 0x51cc22
mov dword [0xbd8f00], 0
mov eax, dword [edi + 4]
cmp eax, 4
ja case.0x51cc2a.0
jmp dword [eax*4 + 0x51ccc8]
push edi
call fcn.0048ac60
jmp case.0x51cc2a.0
push edi
call fcn.0048aec0
jmp case.0x51cc2a.0
push edi
call fcn.0048b200
jmp case.0x51cc2a.0
push edi
call fcn.0048c190
cmp dword [edi + 0xc], 0
jg case.0x51cc2a.0
push edi
mov ecx, 0x9d2b68
mov dword [edi + 4], 1
call fcn.0048b530
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x10], eax
cmp eax, 6
jl 0x51cb80
call fcn.0048e060
call fcn.004927c0
call fcn.004ade50
call fcn.004caf50
call fcn.004f37c0
call fcn.004c7aa0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret