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

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x22
push 0
push 0
dec ecx
jne 0x53c228
push ebx
push esi
push edi
mov ebx, eax
xor eax, eax
push ebp
push 0x53cecd
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [0x5d8440], 0
je 0x53cea2
mov eax, 0xa
call fcn.00402e30
cmp eax, 4
jne 0x53c277
cmp dword [0x5d6850], 0x36ee80
jmp 0x53c277
mov ax, word [ebx + 0x9cc]
sub ax, 0x27a
jne 0x53cea2
mov dword [0x5d6774], 0xffffffff
mov dword [0x5d677c], 0xffffffff
mov dword [0x5d6778], 0xffffffff
mov dword [0x5d6780], 0xffffffff
mov dl, 1
mov eax, dword [ebx + 0x3a4]
call fcn.00465430
xor edx, edx
mov eax, dword [ebx + 0x634]
call fcn.00465430
mov dword [0x5d67d8], 0x1388
mov byte [0x5d6798], 0
xor eax, eax
mov dword [0x5d67b8], eax
call sub.kernel32.dll_GetTickCount_1
mov dword [0x5d67d4], eax
mov byte [0x5d6888], 1
call sub.kernel32.dll_GetTickCount_1
mov dword [0x5d688c], eax
mov byte [0x5d68e0], 0
mov byte [0x5d68e8], 0
mov byte [0x5d6b50], 0
call fcn.0040adbc
fstp qword [0x5d6958]
wait
xor eax, eax
mov dword [0x5d6960], eax
call sub.kernel32.dll_GetTickCount_1
sub eax, dword [0x5d6b94]
cmp eax, 0xea60
jbe 0x53c34a
push 0
xor ecx, ecx
mov edx, 0x53cee4
mov eax, dword [0x5d6fc8]
call fcn.0059dcbc
mov eax, dword [0x5d8440]
xor edx, edx
mov dword [eax + 0xc8], edx
mov byte [0x5d6ab3], 0
mov byte [0x5d6aa6], 0
mov byte [0x5d6a78], 0
call sub.kernel32.dll_GetTickCount_1
mov dword [0x5d6b68], eax
mov eax, dword [0x5d70ac]
mov edx, dword [eax + 0x7c]
mov eax, dword [0x5d6d48]
call fcn.005cbb8c
mov eax, dword [0x5d70ac]
mov dword [eax + 0x54], 0xffffffff
mov eax, dword [0x5d70ac]
mov dword [eax + 0x58], 0xffffffff
mov eax, dword [0x5d8440]
call fcn.005cc6fc
xor edx, edx
mov eax, dword [0x5d8440]
call fcn.005cf318
mov byte [0x5d6f72], 0
mov eax, ebx
call fcn.0053d048
call fcn.005c83a4
mov eax, dword [0x5d70f0]
call fcn.005b480c
xor eax, eax
mov dword [0x5d668c], eax
call fcn.005c83dc
mov eax, dword [0x5d6dc8]
mov edi, dword [eax + 8]
dec edi
test edi, edi
jl 0x53c406
inc edi
xor esi, esi
mov edx, esi
mov eax, dword [0x5d6dc8]
call fcn.00419afc
xor edx, edx
call fcn.00402734
inc esi
dec edi
jne 0x53c3ef
mov eax, dword [0x5d6dc8]
mov edx, dword [eax]
call dword [edx + 8]
mov eax, 0x5d70c4
call fcn.00404414
mov eax, dword [0x5d70ac]
xor edx, edx
mov dword [eax + 0x80], edx
mov dword [eax + 0x84], 0x3ff00000
mov eax, dword [0x5d70ac]
xor edx, edx
mov dword [eax + 0x88], edx
mov dword [eax + 0x8c], 0x3ff00000
mov eax, dword [0x5d6f9c]
push eax
push 2
lea eax, [ebp - 4]
mov edx, 0x5d6f89
call fcn.00404678
mov edx, dword [ebp - 4]
mov ecx, dword [0x5d6f98]
mov eax, dword [0x5d6fcc]
call fcn.005c1024
mov edi, eax
mov ecx, dword [ebx + 0x9d4]
mov edx, 0x53cef8
mov eax, dword [0x5d6fc8]
call fcn.005a8b08
movsx eax, word [ebx + 0x9ce]
push eax
movsx eax, word [ebx + 0x9d0]
push eax
movsx eax, word [ebx + 0x9d2]
push eax
push 0
push 0
mov eax, dword [ebx + 0x9d4]
push eax
xor ecx, ecx
mov edx, 0x27a
mov eax, dword [0x5d70f0]
call fcn.005b54e0
mov byte [0x5d8849], 0
movsx ecx, word [ebx + 0x9d0]
movsx edx, word [ebx + 0x9ce]
mov eax, dword [0x5d8440]
call fcn.005ccfd4
cmp byte [0x5d670c], 0
je 0x53c569
mov eax, dword [0x5d8440]
movzx eax, word [eax + 0x120]
cmp eax, dword [0x5d6710]
jne 0x53c562
mov eax, dword [0x5d8440]
movzx eax, word [eax + 0x122]
cmp eax, dword [0x5d6714]
jne 0x53c562
mov dword [0x5d6728], 0x12c
mov dword [0x5d672c], 2
xor eax, eax
mov dword [0x5d671c], eax
mov byte [0x5d6720], 1
cmp byte [0x5d6ba8], 0
jne 0x53c54c
mov eax, 0x5d87b4
mov edx, dword [0x5d6718]
call fcn.00404468
jmp 0x53c562
mov byte [0x5d6ba8], 0
mov eax, 0x5d87b4
mov edx, 0x53cf0c
call fcn.00404468
mov byte [0x5d670c], 0
mov dword [ebx + 0x794], 0xffffffff
mov dword [0x5d877c], 0xffffffff
xor eax, eax
mov dword [0x5d8784], eax
xor eax, eax
mov dword [0x5d879c], eax
xor eax, eax
mov dword [0x5d8794], eax
mov dword [0x5d8860], 0xffffffff
mov dword [0x5d8864], 0xffffffff
xor eax, eax
mov dword [0x5d8788], eax
xor eax, eax
mov dword [0x5d87ac], eax
xor eax, eax
mov dword [0x5d87b8], eax
mov eax, dword [0x5d70ac]
mov dword [eax + 0x6c], 0xffffffff
mov eax, dword [0x5d70ac]
mov dword [eax + 0x6c], 0xffffffff
xor eax, eax
mov dword [0x5d6fd8], eax
mov eax, dword [0x5d3738]
mov eax, dword [eax]
call fcn.00481d60
mov byte [0x5d8848], 0
mov byte [0x5d70dc], 0
xor eax, eax
mov dword [0x5d6fdc], eax
xor eax, eax
mov dword [0x5d6fe0], eax
xor eax, eax
mov dword [0x5d6fe4], eax
mov byte [0x5d703d], 0
xor eax, eax
mov dword [0x5d7044], eax
mov byte [0x5d7042], 1
mov dword [0x5d6f5c], 0xbb8
call sub.kernel32.dll_GetTickCount_1
mov dword [0x5d6f60], eax
call sub.kernel32.dll_GetTickCount_1
mov dword [ebx + 0x714], eax
mov dword [ebx + 0x718], 0xbb8
call sub.kernel32.dll_GetTickCount_1
mov dword [0x5d8890], eax
mov dword [0x5d8894], 0xbb8
mov dword [0x5d88a0], 0xbb8
call sub.kernel32.dll_GetTickCount_1
mov dword [0x5d88a4], eax
call sub.kernel32.dll_GetTickCount_1
mov dword [ebx + 0x71c], eax
mov dword [ebx + 0x720], 0x1388
mov eax, dword [ebx + 0x9a4]
mov edx, 0x53cf1c
call fcn.00404820
jne 0x53c69f
cmp byte [0x5d6a10], 0
je 0x53c6dc
mov eax, dword [0x5d70ac]
mov eax, dword [eax + 0x7c]
mov edx, dword [0x5d70ac]
mov edx, dword [edx + 0x78]
call fcn.00404820
je 0x53c6dc
cmp byte [0x5d6aa5], 0
je 0x53c6dc
cmp byte [0x5d6db9], 0
jmp 0x53c6dc
mov eax, dword [ebx + 0x544]
cmp byte [eax + 0x2e0], 0
je 0x53c70a
mov eax, dword [0x5d70ac]
mov eax, dword [eax + 0x78]
mov edx, dword [0x5d70ac]
mov edx, dword [edx + 0x7c]
call fcn.00404820
je 0x53c70a
mov eax, ebx
call fcn.00534f24
mov eax, dword [ebx + 0x9a4]
mov edx, 0x53cf1c
call fcn.00404820
je 0x53c72e
mov eax, dword [ebx + 0x9a4]
mov edx, 0x53cf40
call fcn.00404820
jne 0x53c74f
cmp dword [0x5d6fd0], 0
jne 0x53c74f
mov eax, dword [0x5d70ac]
mov eax, dword [eax + 0x78]
mov edx, dword [0x5d70ac]
mov edx, dword [edx + 0x7c]
call fcn.00404820
jne 0x53c758
cmp byte [0x5d6a10], 0
je 0x53c780
mov dword [0x5d6fd0], 0xffffffff
mov eax, dword [0x5d70f0]
mov dword [eax + 0x1b0], 0xffffffff
mov eax, dword [0x5d70f0]
mov dword [eax + 0x1b4], 0xffffffff
mov al, byte [0x5d6a10]
or al, byte [0x5d6b48]
je 0x53c79d
lea eax, [ebx + 0x9a4]
mov edx, 0x53cf50
call fcn.00404468
xor eax, eax
mov dword [0x5d6fd0], eax
mov byte [0x5d6b48], 0
mov byte [0x5d6a10], 0
mov eax, dword [0x5d70ac]
xor edx, edx
mov dword [eax + 0x80], edx
mov dword [eax + 0x84], 0x3ff00000
mov eax, dword [0x5d70ac]
xor edx, edx
mov dword [eax + 0x88], edx
mov dword [eax + 0x8c], 0x3ff00000
mov dword [0x5d6f10], 0xffffffff
call fcn.005c7e04
call fcn.005c7dd0
mov eax, dword [0x5d6fc8]
mov eax, dword [eax + 0x87c]
mov edx, 0x53cf40
call fcn.00404820
je 0x53c852
mov eax, dword [0x5d6fc8]
mov edx, dword [eax + 0x87c]
mov eax, 0x53cf64
call fcn.00404a18
test eax, eax
jg 0x53c852
mov eax, dword [0x5d6fc8]
mov eax, dword [eax + 0x87c]
mov edx, 0x53cf74
call fcn.00404820
je 0x53c852
mov eax, dword [0x5d6fc8]
mov eax, dword [eax + 0x87c]
mov edx, 0x53cf88
call fcn.00404820
jne 0x53c886
mov dword [0x5d6fd0], 0xffffffff
mov eax, dword [0x5d70f0]
mov dword [eax + 0x1b0], 0xffffffff
mov eax, dword [0x5d70f0]
mov dword [eax + 0x1b4], 0xffffffff
mov eax, dword [0x5d6fc8]
mov byte [eax + 0x894], 1
mov eax, dword [0x5d70ac]
mov eax, dword [eax + 0x78]
mov edx, dword [0x5d70ac]
mov edx, dword [edx + 0x7c]
call fcn.00404820
jne 0x53c8b9
mov eax, dword [ebx + 0x9a4]
mov edx, 0x53cf1c
call fcn.00404820
jne 0x53c8fc
cmp dword [0x5d6fd0], 0
jne 0x53c8fc
mov eax, dword [0x5d6fc8]
mov edx, dword [eax + 0x87c]
mov eax, 0x53cf9c
call fcn.00404a18
test eax, eax
jle 0x53c8fc
mov eax, dword [0x5d6fc8]
mov byte [eax + 0x894], 1
mov eax, dword [0x5d70f0]
mov dword [eax + 0x1b0], 0xffffffff
mov eax, dword [0x5d70f0]
mov dword [eax + 0x1b4], 0xffffffff
cmp byte [0x5d6db9], 0
je 0x53cdd2
mov eax, dword [ebx + 0x9a4]
mov edx, 0x53cf1c
call fcn.00404820
jne 0x53cdd2
cmp dword [0x5d6fd0], 0
jne 0x53cdd2
test edi, edi
jne 0x53ca93
lea eax, [ebp - 8]
mov edx, 0x5d6f74
call fcn.00404678
mov eax, dword [ebp - 8]
mov ecx, dword [0x5d6f9c]
mov edx, dword [0x5d6f98]
call fcn.005caf30
mov esi, eax
mov edx, 0x53cfa4
lea eax, [ebp - 0x2c]
call fcn.00402cf4
mov edx, 0x5d6f74
lea eax, [ebp - 0x2c]
mov cl, 0x1b
call fcn.00402cc4
lea edx, [ebp - 0x2c]
lea eax, [ebp - 0x4c]
call fcn.00402cf4
mov edx, 0x53cfac
lea eax, [ebp - 0x4c]
mov cl, 0x1c
call fcn.00402cc4
lea edx, [ebp - 0x4c]
lea eax, [ebp - 0x74]
call fcn.00402cf4
mov edx, 0x5d6f89
lea eax, [ebp - 0x74]
mov cl, 0x26
call fcn.00402cc4
lea edx, [ebp - 0x74]
lea eax, [ebp - 0x9c]
call fcn.00402cf4
mov edx, 0x53cfb0
lea eax, [ebp - 0x9c]
mov cl, 0x27
call fcn.00402cc4
lea edx, [ebp - 0x9c]
lea eax, [ebp - 0x10]
call fcn.00404678
push dword [ebp - 0x10]
lea edx, [ebp - 0xa0]
mov eax, esi
call fcn.00408cf0
push dword [ebp - 0xa0]
push 0x53cfbc
lea edx, [ebp - 0xa4]
mov eax, dword [0x5d6f98]
call fcn.00408cf0
push dword [ebp - 0xa4]
push 0x53cfbc
lea edx, [ebp - 0xa8]
mov eax, dword [0x5d6f9c]
call fcn.00408cf0
push dword [ebp - 0xa8]
push 0x53cfc8
lea eax, [ebp - 0xac]
mov edx, 0x5d6fb5
call fcn.00404678
push dword [ebp - 0xac]
push 0x53cfbc
lea edx, [ebp - 0xb0]
mov eax, dword [0x5d6fc0]
call fcn.00408cf0
push dword [ebp - 0xb0]
push 0x53cfbc
lea edx, [ebp - 0xb4]
mov eax, dword [0x5d6fc4]
call fcn.00408cf0
push dword [ebp - 0xb4]
push 0x53cfd4
lea eax, [ebp - 0xc]
mov edx, 0xd
call fcn.00404794
mov edx, dword [ebp - 0xc]
mov eax, ebx
call fcn.0055a548
jmp 0x53cdd2
lea eax, [ebp - 0xb8]
mov edx, edi
call fcn.00404678
mov eax, dword [ebp - 0xb8]
mov ecx, dword [edi + 0x28]
mov edx, dword [edi + 0x24]
call fcn.005caf30
mov esi, eax
mov edx, 0x53cfa4
lea eax, [ebp - 0x2c]
call fcn.00402cf4
mov edx, edi
lea eax, [ebp - 0x2c]
mov cl, 0x1b
call fcn.00402cc4
lea edx, [ebp - 0x2c]
lea eax, [ebp - 0x4c]
call fcn.00402cf4
mov edx, 0x53cfac
lea eax, [ebp - 0x4c]
mov cl, 0x1c
call fcn.00402cc4
lea edx, [ebp - 0x4c]
lea eax, [ebp - 0x74]
call fcn.00402cf4
lea edx, [edi + 0x15]
lea eax, [ebp - 0x74]
mov cl, 0x26
call fcn.00402cc4
lea edx, [ebp - 0x74]
lea eax, [ebp - 0x9c]
call fcn.00402cf4
mov edx, 0x53cfb0
lea eax, [ebp - 0x9c]
mov cl, 0x27
call fcn.00402cc4
lea edx, [ebp - 0x9c]
lea eax, [ebp - 0xc0]
call fcn.00404678
push dword [ebp - 0xc0]
lea edx, [ebp - 0xc4]
mov eax, esi
call fcn.00408cf0
push dword [ebp - 0xc4]
push 0x53cfbc
lea edx, [ebp - 0xc8]
mov eax, dword [edi + 0x24]
call fcn.00408cf0
push dword [ebp - 0xc8]
push 0x53cfbc
lea edx, [ebp - 0xcc]
mov eax, dword [edi + 0x28]
call fcn.00408cf0
push dword [ebp - 0xcc]
push 0x53cfc8
lea eax, [ebp - 0xd0]
lea edx, [edi + 0x41]
call fcn.00404678
push dword [ebp - 0xd0]
push 0x53cfbc
lea edx, [ebp - 0xd4]
mov eax, dword [edi + 0x4c]
call fcn.00408cf0
push dword [ebp - 0xd4]
push 0x53cfbc
lea edx, [ebp - 0xd8]
mov eax, dword [edi + 0x50]
call fcn.00408cf0
push dword [ebp - 0xd8]
push 0x53cfd4
lea eax, [ebp - 0xbc]
mov edx, 0xd
call fcn.00404794
mov edx, dword [ebp - 0xbc]
mov eax, ebx
call fcn.0055a548
jmp 0x53cdd2
cmp byte [0x5d6b90], 0
je 0x53ce4b
mov eax, dword [0x5d6fc8]
cmp byte [eax + 0x86c], 0
je 0x53ce4b
mov eax, dword [0x5d6fc8]
call fcn.005aaad4
mov eax, dword [0x5d6fc8]
mov byte [eax + 0x89c], 0
mov eax, dword [0x5d6fc8]
mov eax, dword [eax + 0x860]
mov edx, dword [eax]
call dword [edx + 0x44]
mov byte [0x5d6bcc], 0
cmp byte [0x5d6dad], 0
je 0x53ce32
push 0
xor ecx, ecx
mov edx, 0x53d00c
mov eax, dword [0x5d6fc8]
call fcn.0059dcbc
call sub.kernel32.dll_GetTickCount_1
mov dword [ebx + 0x710], eax
mov byte [ebx + 0x70c], 1
mov byte [0x5d6f70], 0
mov eax, dword [0x5d7014]
mov edx, dword [eax]
call dword [edx + 0x44]
cmp byte [0x5d6dad], 0
je 0x53ce9b
xor esi, esi
mov eax, dword [0x5d68b0]
cmp esi, dword [eax + 8]
jge 0x53ce9b
mov edx, esi
mov eax, dword [0x5d68b0]
call fcn.00419afc
mov ebx, eax
cmp byte [ebx + 0x58], 0
je 0x53ce81
inc esi
jmp 0x53ce60
mov edx, esi
mov eax, dword [0x5d68b0]
call fcn.004199ec
mov edx, 0x59
mov eax, ebx
call fcn.00402734
jmp 0x53ce60
mov byte [0x5d6b90], 0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x53ced4
lea eax, [ebp - 0x110]
mov edx, 0x1d
call fcn.00404438
lea eax, [ebp - 0x10]
mov edx, 4
call fcn.00404438
ret