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

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0xc
push 0
push 0
dec ecx
jne 0x54c258
push ecx
push ebx
push esi
push edi
mov dword [ebp - 4], eax
mov ebx, 0x5d6de8
mov edi, 0x5d8440
xor eax, eax
push ebp
push 0x54cc53
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [edi], 0
je 0x54cc1e
mov eax, dword [edi]
cmp byte [eax + 0x78], 0
jne 0x54cc1e
cmp byte [0x5d6b91], 0
jne 0x54cc1e
cmp byte [ebx + 0x52], 0
je 0x54c388
xor eax, eax
mov dword [ebp - 0xc], eax
mov eax, dword [0x5d70f0]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x54c368
inc eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 8], 0
mov eax, dword [0x5d70f0]
mov eax, dword [eax + 0x10]
mov edx, dword [ebp - 8]
call fcn.00419afc
mov esi, eax
cmp byte [esi + 0x78], 0
jne 0x54c35c
movzx eax, word [esi + 0x122]
push eax
movzx ecx, word [esi + 0x120]
mov eax, dword [edi]
movzx edx, word [eax + 0x122]
mov eax, dword [edi]
movzx eax, word [eax + 0x120]
call fcn.005c40a0
cmp eax, dword [ebx + 0x53]
jg 0x54c35c
push 0x54cc6c
push dword [esi + 0x11c]
push 0x54cc6c
lea eax, [ebp - 0x24]
mov edx, 3
call fcn.00404794
mov eax, dword [ebp - 0x24]
push eax
push 0x54cc6c
push dword [ebx + 0x5b]
push 0x54cc6c
lea eax, [ebp - 0x28]
mov edx, 3
call fcn.00404794
mov edx, dword [ebp - 0x28]
pop eax
call fcn.00404a18
test eax, eax
jle 0x54c35c
inc dword [ebp - 0xc]
inc dword [ebp - 8]
dec dword [ebp - 0x20]
jne 0x54c2ce
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebx + 0x57]
jl 0x54c388
lea eax, [ebp - 0x18]
mov edx, 0x54cc78
call fcn.004044ac
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 4]
call fcn.005560fc
mov byte [ebp - 0x19], 0
mov byte [ebp - 0x1b], 0
mov byte [ebp - 0x1a], 0
mov eax, dword [edi]
movzx eax, word [eax + 0x9c]
imul dword [ebx + 0x33]
mov dword [ebp - 0x2c], eax
fild dword [ebp - 0x2c]
fdiv dword [0x54cc94]
call fcn.00402bcc
mov esi, eax
cmp byte [ebx + 0x2e], 0
je 0x54c404
cmp byte [0x5d703d], 0
je 0x54c404
mov eax, dword [edi]
movzx eax, word [eax + 0x98]
cmp esi, eax
jl 0x54c404
push 0x54cca0
lea edx, [ebp - 0x34]
mov eax, dword [ebx + 0x33]
call fcn.00408cf0
push dword [ebp - 0x34]
push 0x54ccb4
lea eax, [ebp - 0x30]
mov edx, 3
call fcn.00404794
mov edx, dword [ebp - 0x30]
mov cl, 1
mov eax, dword [ebp - 4]
call fcn.005561f4
mov byte [ebp - 0x1a], al
mov eax, dword [edi]
movzx eax, word [eax + 0x9c]
imul dword [ebx + 0x2a]
mov dword [ebp - 0x2c], eax
fild dword [ebp - 0x2c]
fdiv dword [0x54cc94]
call fcn.00402bcc
mov esi, eax
cmp byte [ebx + 0x25], 0
je 0x54c47a
cmp byte [0x5d703d], 0
je 0x54c47a
mov eax, dword [edi]
movzx eax, word [eax + 0x98]
cmp esi, eax
jl 0x54c47a
cmp byte [ebp - 0x1a], 0
jne 0x54c47a
push 0x54cca0
lea edx, [ebp - 0x3c]
mov eax, dword [ebx + 0x2a]
call fcn.00408cf0
push dword [ebp - 0x3c]
push 0x54ccb4
lea eax, [ebp - 0x38]
mov edx, 3
call fcn.00404794
mov edx, dword [ebp - 0x38]
mov cl, 1
mov eax, dword [ebp - 4]
call fcn.005561f4
mov byte [ebp - 0x1a], al
mov eax, dword [edi]
movzx eax, word [eax + 0x9c]
imul dword [ebx + 0x21]
mov dword [ebp - 0x2c], eax
fild dword [ebp - 0x2c]
fdiv dword [0x54cc94]
call fcn.00402bcc
mov esi, eax
cmp byte [ebx + 0x1c], 0
je 0x54c4ed
cmp byte [0x5d703d], 0
je 0x54c4ed
mov eax, dword [edi]
movzx eax, word [eax + 0x98]
cmp esi, eax
jl 0x54c4ed
cmp byte [ebp - 0x1a], 0
jne 0x54c4ed
push 0x54cca0
lea edx, [ebp - 0x44]
mov eax, dword [ebx + 0x21]
call fcn.00408cf0
push dword [ebp - 0x44]
push 0x54ccb4
lea eax, [ebp - 0x40]
mov edx, 3
call fcn.00404794
mov edx, dword [ebp - 0x40]
mov cl, 1
mov eax, dword [ebp - 4]
call fcn.005561f4
mov eax, dword [edi]
movzx eax, word [eax + 0x9e]
imul dword [ebx + 0x46]
mov dword [ebp - 0x2c], eax
fild dword [ebp - 0x2c]
fdiv dword [0x54cc94]
call fcn.00402bcc
mov esi, eax
cmp byte [ebx + 0x41], 0
je 0x54c55d
cmp byte [0x5d703d], 0
je 0x54c55d
mov eax, dword [edi]
movzx eax, word [eax + 0x9a]
cmp esi, eax
jl 0x54c55d
push 0x54ccc0
lea edx, [ebp - 0x4c]
mov eax, dword [ebx + 0x46]
call fcn.00408cf0
push dword [ebp - 0x4c]
push 0x54ccb4
lea eax, [ebp - 0x48]
mov edx, 3
call fcn.00404794
mov edx, dword [ebp - 0x48]
mov cl, 1
mov eax, dword [ebp - 4]
call fcn.005561f4
mov byte [ebp - 0x1a], al
mov eax, dword [edi]
movzx eax, word [eax + 0x9e]
imul dword [ebx + 0x4e]
mov dword [ebp - 0x2c], eax
fild dword [ebp - 0x2c]
fdiv dword [0x54cc94]
call fcn.00402bcc
mov esi, eax
cmp byte [ebx + 0x3c], 0
je 0x54c5d3
cmp byte [0x5d703d], 0
je 0x54c5d3
mov eax, dword [edi]
movzx eax, word [eax + 0x9a]
cmp esi, eax
jl 0x54c5d3
cmp byte [ebp - 0x1a], 0
jne 0x54c5d3
push 0x54ccc0
lea edx, [ebp - 0x54]
mov eax, dword [ebx + 0x4e]
call fcn.00408cf0
push dword [ebp - 0x54]
push 0x54ccb4
lea eax, [ebp - 0x50]
mov edx, 3
call fcn.00404794
mov edx, dword [ebp - 0x50]
mov cl, 1
mov eax, dword [ebp - 4]
call fcn.005561f4
mov byte [ebp - 0x1a], al
mov eax, dword [edi]
movzx eax, word [eax + 0x9e]
imul dword [ebx + 0x4a]
mov dword [ebp - 0x2c], eax
fild dword [ebp - 0x2c]
fdiv dword [0x54cc94]
call fcn.00402bcc
mov esi, eax
cmp byte [ebx + 0x37], 0
je 0x54c646
cmp byte [0x5d703d], 0
je 0x54c646
mov eax, dword [edi]
movzx eax, word [eax + 0x9a]
cmp esi, eax
jl 0x54c646
cmp byte [ebp - 0x1a], 0
jne 0x54c646
push 0x54ccc0
lea edx, [ebp - 0x5c]
mov eax, dword [ebx + 0x4a]
call fcn.00408cf0
push dword [ebp - 0x5c]
push 0x54ccb4
lea eax, [ebp - 0x58]
mov edx, 3
call fcn.00404794
mov edx, dword [ebp - 0x58]
mov cl, 1
mov eax, dword [ebp - 4]
call fcn.005561f4
mov eax, dword [edi]
movzx eax, word [eax + 0x9c]
mov edx, dword [edi]
movzx edx, word [edx + 0x98]
sub eax, edx
mov dword [ebp - 8], eax
mov eax, dword [edi]
movzx esi, word [eax + 0x9e]
mov eax, dword [edi]
movzx eax, word [eax + 0x9a]
sub esi, eax
cmp byte [ebx], 0
je 0x54c845
mov eax, dword [edi]
movzx eax, word [eax + 0x9c]
imul dword [ebx + 2]
mov dword [ebp - 0x2c], eax
fild dword [ebp - 0x2c]
fdiv dword [0x54cc94]
call fcn.00402bcc
push edx
push eax
mov eax, dword [edi]
movzx eax, word [eax + 0x98]
xor edx, edx
cmp edx, dword [esp + 4]
jne 0x54c6b7
cmp eax, dword [esp]
pop edx
pop eax
ja 0x54c845
jmp 0x54c6bf
pop edx
pop eax
jg 0x54c845
mov eax, dword [edi]
movzx eax, word [eax + 0x9c]
imul dword [ebx + 0xb]
mov dword [ebp - 0x2c], eax
fild dword [ebp - 0x2c]
fdiv dword [0x54cc94]
call fcn.00402bcc
push edx
push eax
mov eax, dword [edi]
movzx eax, word [eax + 0x98]
xor edx, edx
cmp edx, dword [esp + 4]
jne 0x54c6f8
cmp eax, dword [esp]
pop edx
pop eax
jbe 0x54c727
jmp 0x54c6fc
pop edx
pop eax
jle 0x54c727
lea edx, [ebp - 0x10]
mov eax, dword [ebp - 8]
call fcn.005c7318
test al, al
jne 0x54c716
lea edx, [ebp - 0x10]
mov eax, dword [ebp - 8]
call fcn.005c702c
test al, al
jne 0x54c750
lea edx, [ebp - 0x10]
mov eax, dword [ebp - 8]
call fcn.005c77f8
jmp 0x54c750
lea edx, [ebp - 0x10]
mov eax, dword [ebp - 8]
call fcn.005c702c
test al, al
jne 0x54c741
lea edx, [ebp - 0x10]
mov eax, dword [ebp - 8]
call fcn.005c7318
test al, al
jne 0x54c750
lea edx, [ebp - 0x10]
mov eax, dword [ebp - 8]
call fcn.005c77f8
test al, al
je 0x54c77b
lea eax, [ebp - 0x60]
imul edx, dword [ebp - 0x10], 0x35
add edx, 0x5d7100
call fcn.00404678
mov edx, dword [ebp - 0x60]
xor ecx, ecx
mov eax, dword [ebp - 4]
call fcn.0054cd0c
mov byte [ebp - 0x19], al
jmp 0x54c845
call fcn.005c1398
cmp eax, 5
jge 0x54c82c
mov eax, 0x5d6ee8
mov edx, 0x54ccd0
call fcn.00404468
call sub.kernel32.dll_GetTickCount_1
mov dword [0x5d6eec], eax
cmp byte [0x5d6b74], 0
je 0x54c845
call sub.kernel32.dll_GetTickCount_1
sub eax, dword [0x5d6b70]
cmp eax, 0xc8
jbe 0x54c845
xor eax, eax
cmp byte [0x5d6b75], 0
je 0x54c7d7
xor eax, eax
call fcn.005c4a18
cmp byte [0x5d6b76], 0
je 0x54c7ee
test al, al
jne 0x54c7ee
mov eax, 1
call fcn.005c4a18
cmp byte [0x5d6b77], 0
je 0x54c805
test al, al
jne 0x54c805
mov eax, 2
call fcn.005c4a18
cmp byte [0x5d6b78], 0
je 0x54c81c
test al, al
jne 0x54c81c
mov eax, 5
call fcn.005c4a18
test al, al
je 0x54c845
call sub.kernel32.dll_GetTickCount_1
mov dword [0x5d6b70], eax
jmp 0x54c845
mov eax, 0x5d6ee8
mov edx, 0x54ccec
call fcn.00404468
call sub.kernel32.dll_GetTickCount_1
mov dword [0x5d6eec], eax
mov dword [ebp - 0xc], 0x7fffffff
lea eax, [ebp - 0x14]
call fcn.00404414
cmp byte [ebx + 0x72], 0
je 0x54c88c
cmp byte [ebp - 0x19], 0
jne 0x54c88c
mov edx, dword [edi]
movzx edx, word [edx + 0x98]
mov eax, dword [ebx + 0x77]
cmp edx, eax
jg 0x54c88c
mov dword [ebp - 0xc], eax
xor edx, edx
mov eax, dword [ebx + 0x73]
call fcn.005c4798
test al, al
je 0x54c88c
lea eax, [ebp - 0x14]
mov edx, dword [ebx + 0x73]
call fcn.004044ac
cmp byte [ebx + 0x7b], 0
je 0x54c8d2
mov eax, dword [ebx + 0x80]
cmp eax, dword [ebp - 0xc]
jge 0x54c8d2
cmp byte [ebp - 0x19], 0
jne 0x54c8d2
mov edx, dword [edi]
movzx edx, word [edx + 0x98]
mov eax, dword [ebx + 0x80]
cmp edx, eax
jg 0x54c8d2
mov dword [ebp - 0xc], eax
xor edx, edx
mov eax, dword [ebx + 0x7c]
call fcn.005c4798
test al, al
je 0x54c8d2
lea eax, [ebp - 0x14]
mov edx, dword [ebx + 0x7c]
call fcn.004044ac
cmp byte [ebx + 0x84], 0
je 0x54c91c
mov eax, dword [ebx + 0x89]
cmp eax, dword [ebp - 0xc]
jge 0x54c91c
cmp byte [ebp - 0x19], 0
jne 0x54c91c
mov eax, dword [edi]
movzx eax, word [eax + 0x98]
cmp eax, dword [ebx + 0x89]
jg 0x54c91c
xor edx, edx
mov eax, dword [ebx + 0x85]
call fcn.005c4798
test al, al
je 0x54c91c
lea eax, [ebp - 0x14]
mov edx, dword [ebx + 0x85]
call fcn.004044ac
cmp dword [ebp - 0x14], 0
je 0x54c935
cmp byte [ebp - 0x19], 0
jne 0x54c935
xor ecx, ecx
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 4]
call fcn.0054cd0c
cmp byte [ebx + 1], 0
je 0x54cb0d
cmp byte [ebp - 0x1b], 0
jne 0x54cb0d
mov eax, dword [edi]
movzx eax, word [eax + 0x9e]
imul dword [ebx + 6]
mov dword [ebp - 0x2c], eax
fild dword [ebp - 0x2c]
fdiv dword [0x54cc94]
call fcn.00402bcc
push edx
push eax
mov eax, dword [edi]
movzx eax, word [eax + 0x9a]
xor edx, edx
cmp edx, dword [esp + 4]
jne 0x54c986
cmp eax, dword [esp]
pop edx
pop eax
ja 0x54cb0d
jmp 0x54c98e
pop edx
pop eax
jg 0x54cb0d
cmp byte [ebx + 0xa], 0
jne 0x54c9d1
mov eax, dword [edi]
movzx eax, word [eax + 0x9e]
imul dword [ebx + 0xb]
mov dword [ebp - 0x2c], eax
fild dword [ebp - 0x2c]
fdiv dword [0x54cc94]
call fcn.00402bcc
push edx
push eax
mov eax, dword [edi]
movzx eax, word [eax + 0x9a]
xor edx, edx
cmp edx, dword [esp + 4]
jne 0x54c9cd
cmp eax, dword [esp]
pop edx
pop eax
jbe 0x54c9f9
jmp 0x54c9d1
pop edx
pop eax
jle 0x54c9f9
lea edx, [ebp - 0x10]
mov eax, esi
call fcn.005c7658
test al, al
jne 0x54c9e9
lea edx, [ebp - 0x10]
mov eax, esi
call fcn.005c74b8
test al, al
jne 0x54ca1f
lea edx, [ebp - 0x10]
mov eax, esi
call fcn.005c7860
jmp 0x54ca1f
lea edx, [ebp - 0x10]
mov eax, esi
call fcn.005c74b8
test al, al
jne 0x54ca11
lea edx, [ebp - 0x10]
mov eax, esi
call fcn.005c7658
test al, al
jne 0x54ca1f
lea edx, [ebp - 0x10]
mov eax, esi
call fcn.005c7860
test al, al
je 0x54ca4d
lea eax, [ebp - 0x64]
imul edx, dword [ebp - 0x10], 0x35
add edx, 0x5d7100
call fcn.00404678
mov edx, dword [ebp - 0x64]
mov ecx, 1
mov eax, dword [ebp - 4]
call fcn.0054cd0c
mov byte [ebp - 0x1b], al
jmp 0x54cb0d
call fcn.005c1398
cmp eax, 6
jge 0x54caf4
mov eax, 0x5d6ee8
mov edx, 0x54ccd0
call fcn.00404468
cmp byte [0x5d6b74], 0
je 0x54cb0d
call sub.kernel32.dll_GetTickCount_1
sub eax, dword [0x5d6b70]
cmp eax, 0xc8
jbe 0x54cb0d
xor eax, eax
cmp byte [0x5d6b75], 0
je 0x54ca9f
xor eax, eax
call fcn.005c4a18
cmp byte [0x5d6b76], 0
je 0x54cab6
test al, al
jne 0x54cab6
mov eax, 1
call fcn.005c4a18
cmp byte [0x5d6b77], 0
je 0x54cacd
test al, al
jne 0x54cacd
mov eax, 2
call fcn.005c4a18
cmp byte [0x5d6b78], 0
je 0x54cae4
test al, al
jne 0x54cae4
mov eax, 5
call fcn.005c4a18
test al, al
je 0x54cb0d
call sub.kernel32.dll_GetTickCount_1
mov dword [0x5d6b70], eax
jmp 0x54cb0d
mov eax, 0x5d6ee8
mov edx, 0x54cd00
call fcn.00404468
call sub.kernel32.dll_GetTickCount_1
mov dword [0x5d6eec], eax
mov dword [ebp - 0xc], 0x7fffffff
lea eax, [ebp - 0x14]
call fcn.00404414
cmp byte [ebx + 0x8d], 0
je 0x54cb63
cmp byte [ebp - 0x1b], 0
jne 0x54cb63
mov edx, dword [edi]
movzx edx, word [edx + 0x9a]
mov eax, dword [ebx + 0x92]
cmp edx, eax
jg 0x54cb63
mov dword [ebp - 0xc], eax
mov edx, 1
mov eax, dword [ebx + 0x8e]
call fcn.005c4798
test al, al
je 0x54cb63
lea eax, [ebp - 0x14]
mov edx, dword [ebx + 0x8e]
call fcn.004044ac
cmp byte [ebx + 0x96], 0
je 0x54cbb5
mov eax, dword [ebx + 0x9b]
cmp eax, dword [ebp - 0xc]
jge 0x54cbb5
cmp byte [ebp - 0x1b], 0
jne 0x54cbb5
mov edx, dword [edi]
movzx edx, word [edx + 0x9a]
mov eax, dword [ebx + 0x9b]
cmp edx, eax
jg 0x54cbb5
mov dword [ebp - 0xc], eax
mov edx, 1
mov eax, dword [ebx + 0x97]
call fcn.005c4798
test al, al
je 0x54cbb5
lea eax, [ebp - 0x14]
mov edx, dword [ebx + 0x97]
call fcn.004044ac
cmp byte [ebx + 0x9f], 0
je 0x54cc02
mov eax, dword [ebx + 0xa4]
cmp eax, dword [ebp - 0xc]
jge 0x54cc02
cmp byte [ebp - 0x1b], 0
jne 0x54cc02
mov eax, dword [edi]
movzx eax, word [eax + 0x9a]
cmp eax, dword [ebx + 0xa4]
jg 0x54cc02
mov edx, 1
mov eax, dword [ebx + 0xa0]
call fcn.005c4798
test al, al
je 0x54cc02
lea eax, [ebp - 0x14]
mov edx, dword [ebx + 0xa0]
call fcn.004044ac
cmp dword [ebp - 0x14], 0
je 0x54cc1e
cmp byte [ebp - 0x1b], 0
jne 0x54cc1e
mov ecx, 1
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 4]
call fcn.0054cd0c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x54cc5a
lea eax, [ebp - 0x64]
mov edx, 0xe
call fcn.00404438
lea eax, [ebp - 0x28]
mov edx, 2
call fcn.00404438
lea eax, [ebp - 0x18]
mov edx, 2
call fcn.00404438
ret