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

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 8
push 0
push 0
dec ecx
jne 0x547aa5
push ecx
xchg dword [ebp - 4], ecx
push ebx
push esi
push edi
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x547ecf
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 0xd], 0
mov eax, dword [ebp - 8]
sub eax, 0x2e
jae 0x547eac
imul eax, dword [ebp - 8], 0x35
cmp byte [eax + 0x5d7100], 0
je 0x547eac
cmp byte [0x5d8744], 0
jne 0x547e10
lea eax, [ebp - 0x1c]
imul edx, dword [ebp - 8], 0x35
add edx, 0x5d7100
call fcn.00404678
xor esi, esi
mov eax, dword [0x5d7004]
mov ebx, dword [eax + 8]
dec ebx
test ebx, ebx
jl 0x547bad
inc ebx
mov dword [ebp - 0x14], 0
mov edx, dword [ebp - 0x14]
mov eax, dword [0x5d7004]
call fcn.00419afc
mov esi, eax
lea eax, [ebp - 0x28]
mov edx, esi
call fcn.00404678
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x1c]
call fcn.00404820
jne 0x547ba3
mov eax, dword [esi + 0xf]
cmp eax, dword [ebp - 0xc]
je 0x547bad
mov eax, dword [ebp - 0x14]
inc eax
mov edx, dword [0x5d7004]
mov edi, dword [edx + 8]
dec edi
sub edi, eax
jl 0x547bad
inc edi
mov dword [ebp - 0x18], eax
mov edx, dword [ebp - 0x18]
mov eax, dword [0x5d7004]
call fcn.00419afc
mov ebx, eax
lea eax, [ebp - 0x2c]
mov edx, ebx
call fcn.00404678
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x1c]
call fcn.00404820
jne 0x547b9b
mov eax, dword [ebx + 0xf]
cmp eax, dword [ebp - 0xc]
jne 0x547b9b
mov esi, ebx
jmp 0x547bad
inc dword [ebp - 0x18]
dec edi
jne 0x547b69
jmp 0x547bad
inc dword [ebp - 0x14]
dec ebx
jne 0x547b25
mov edx, esi
mov eax, 0x547ee0
call fcn.00402afc
test eax, eax
jle 0x547bd8
call sub.kernel32.dll_GetTickCount_1
sub eax, dword [0x5d70d4]
cmp eax, 0x258
jb 0x547eac
jmp 0x547c6e
test esi, esi
je 0x547c34
mov eax, dword [ebp - 0xc]
call fcn.005c6fec
push eax
call sub.kernel32.dll_GetTickCount_1
pop edx
sub eax, edx
xor edx, edx
push edx
push eax
imul eax, dword [esi + 0x22], 0x3e8
cdq
cmp edx, dword [esp + 4]
jne 0x547c0c
cmp eax, dword [esp]
pop edx
pop eax
ja 0x547eac
jmp 0x547c14
pop edx
pop eax
jg 0x547eac
call sub.kernel32.dll_GetTickCount_1
sub eax, dword [0x5d70d4]
cmp eax, 0x3e8
jb 0x547eac
call sub.kernel32.dll_GetTickCount_1
mov dword [esi + 0x2a], eax
jmp 0x547c6e
mov eax, dword [ebp - 0x1c]
call fcn.005c6d08
test al, al
je 0x547c58
call sub.kernel32.dll_GetTickCount_1
sub eax, dword [0x5d70d4]
cmp eax, 0x1f4
jb 0x547eac
jmp 0x547c6e
call sub.kernel32.dll_GetTickCount_1
sub eax, dword [0x5d70d4]
cmp eax, 0x7d0
jb 0x547eac
call sub.kernel32.dll_GetTickCount_1
mov dword [0x5d70d4], eax
imul ebx, dword [ebp - 8], 0x35
lea esi, [ebx + 0x5d7100]
mov edi, 0x5d8744
mov ecx, 0xd
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov byte [ebx + 0x5d7100], 0
xor eax, eax
mov dword [ebx + 0x5d712c], eax
call sub.kernel32.dll_GetTickCount
mov dword [0x5d8c98], eax
jmp 0x547cf6
mov eax, 0x5d6cb4
mov edx, 0x547f18
call fcn.00404468
mov eax, dword [0x5d8440]
call fcn.005cc6fc
mov eax, dword [ebp - 4]
call fcn.0053ec88
mov byte [ebp - 0xd], 1
call fcn.0040adbc
add esp, 0xfffffff8
fstp qword [esp]
wait
lea eax, [ebp - 0x24]
push eax
lea ecx, [ebp - 0x22]
lea edx, [ebp - 0x20]
lea eax, [ebp - 0x1e]
call fcn.0040aa98
push 0xffffff
lea edx, [ebp - 0x34]
movzx eax, word [ebp - 0x1e]
call fcn.00408cf0
push dword [ebp - 0x34]
push 0x547f2c
lea edx, [ebp - 0x38]
movzx eax, word [ebp - 0x20]
call fcn.00408cf0
push dword [ebp - 0x38]
push 0x547f2c
lea edx, [ebp - 0x3c]
movzx eax, word [ebp - 0x22]
call fcn.00408cf0
push dword [ebp - 0x3c]
push 0x547f38
lea eax, [ebp - 0x40]
mov edx, 0x5d8744
call fcn.00404678
push dword [ebp - 0x40]
push 0x547f4c
lea eax, [ebp - 0x30]
mov edx, 8
call fcn.00404794
mov edx, dword [ebp - 0x30]
mov ecx, 0xff
mov eax, dword [0x5d70a4]
call fcn.005b2b94
lea eax, [ebp - 0x44]
mov edx, 0x5d8744
call fcn.00404678
mov eax, dword [ebp - 0x44]
call fcn.005c6dac
mov ebx, eax
test ebx, ebx
je 0x547ded
mov eax, dword [ebp - 4]
mov byte [eax + 0x72c], 1
mov eax, dword [ebp - 4]
add eax, 0x730
mov edx, ebx
call fcn.00404678
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x734], edx
lea eax, [ebp - 0x48]
mov edx, 0x5d8744
call fcn.00404678
mov ecx, dword [ebp - 0x48]
mov edx, dword [0x5d8770]
mov eax, dword [ebp - 4]
call fcn.00534198
jmp 0x547eac
call sub.kernel32.dll_GetTickCount_1
sub eax, dword [0x5d70d4]
cmp eax, 0x2710
jbe 0x547eac
cmp byte [0x5d8744], 0
je 0x547eac
mov byte [0x5d8744], 0
inc dword [0x5d8844]
cmp dword [0x5d8844], 2
jle 0x547e6d
push 0xffffff
mov ecx, 0xff
mov edx, 0x547f58
mov eax, dword [0x5d70a4]
call fcn.005b2b94
mov edx, 0x2710
mov eax, dword [ebp - 4]
call fcn.005520f8
jmp 0x547eac
call sub.kernel32.dll_GetTickCount_1
mov dword [0x5d6eec], eax
mov eax, 0x5d6ee8
mov edx, 0x547f90
call fcn.00404468
mov byte [0x5d6b91], 1
call sub.kernel32.dll_GetTickCount_1
mov dword [0x5d6b94], eax
push 0
push 0
push 0
xor ecx, ecx
mov edx, 0x51
mov eax, dword [ebp - 4]
call fcn.00533510
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x547ed6
lea eax, [ebp - 0x48]
mov edx, 9
call fcn.00404438
lea eax, [ebp - 0x1c]
call fcn.00404414
ret