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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff4
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov esi, 0x55620c
xor eax, eax
push ebp
push 0x51f70b
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
mov edx, dword [0x46e020]
call fcn.004030bc
test al, al
je 0x51f3c9
mov eax, dword [ebp - 8]
mov bl, byte [eax + 0xc]
jmp 0x51f3cf
mov eax, dword [ebp - 8]
mov bl, byte [eax + 0xc]
cmp byte [0x5564f4], 0
je 0x51f40c
mov eax, dword [ebp - 8]
mov edx, dword [0x46e020]
call fcn.004030bc
test al, al
je 0x51f40c
xor eax, eax
mov al, bl
imul eax, eax, 0xf7
cmp byte [esi + eax - 0x79], 1
jne 0x51f40c
mov byte [0x5565f9], 1
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.0053b348
xor eax, eax
mov al, bl
imul edi, eax, 0xf7
mov byte [esi + edi - 0x46], 1
cmp byte [0x5564f4], 0
jne 0x51f512
mov byte [0x5564f5], 0
mov byte [esi + edi - 0x79], 0
xor eax, eax
mov dword [esi + edi - 0x78], eax
mov byte [esi + edi - 0x45], 1
mov eax, dword [esi + edi - 0x8e]
mov edx, dword [eax]
call dword [edx + 0x40]
xor edx, edx
mov dl, bl
dec edx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x488]
mov eax, dword [eax + 0x1ec]
call fcn.0047251c
mov edx, dword [eax + 0xc]
mov eax, 0x51f724
call fcn.0040410c
test eax, eax
jle 0x51f4b7
mov eax, dword [esi + edi - 0x8e]
xor ecx, ecx
mov dl, 1
call fcn.0048e504
mov dl, 3
mov eax, dword [ebp - 4]
call fcn.0053ea48
push 0
mov ecx, ebx
dec ecx
mov edx, dword [0x5536c4]
mov edx, dword [edx]
mov eax, dword [ebp - 4]
call fcn.0053f2d0
mov eax, dword [esi + edi - 0x8a]
xor edx, edx
call fcn.0045d890
jmp 0x51f6f5
mov eax, dword [esi + edi - 0x8a]
cmp byte [eax + 0x34], 0
je 0x51f549
push 0
mov ecx, ebx
dec ecx
mov edx, dword [0x5536c4]
mov edx, dword [edx]
mov eax, dword [ebp - 4]
call fcn.0053f2d0
mov eax, dword [esi + edi - 0x8a]
xor edx, edx
call fcn.0045d890
mov edx, dword [0x5536c4]
mov edx, dword [edx]
mov eax, dword [esi + edi - 9]
call fcn.004c7294
push ebx
mov ecx, dword [0x556594]
mov edx, 0x51f73c
mov eax, dword [ebp - 4]
call fcn.0052285c
jmp 0x51f549
cmp byte [0x5564f4], 0
je 0x51f549
mov eax, dword [ebp - 8]
mov edx, dword [0x46e020]
call fcn.004030bc
test al, al
je 0x51f549
xor eax, eax
mov al, bl
imul eax, eax, 0xf7
cmp byte [esi + eax - 0x79], 1
jne 0x51f549
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00525630
xor eax, eax
mov al, bl
imul edi, eax, 0xf7
cmp byte [esi + edi - 0x52], 0
jne 0x51f56a
mov eax, dword [esi + edi - 0x8e]
cmp byte [eax + 0x370], 0
jne 0x51f5c8
mov byte [esi + edi - 0x52], 0
mov eax, dword [esi + edi - 0x8e]
xor ecx, ecx
mov dl, 1
call fcn.0048e504
mov byte [esi + edi - 0x46], 1
mov eax, dword [esi + edi - 0x8a]
xor edx, edx
call fcn.0045d890
mov eax, dword [esi + edi - 0x8e]
cmp byte [eax + 0x370], 0
jne 0x51f5b7
push 0
mov ecx, ebx
dec ecx
mov edx, dword [0x5536c4]
mov edx, dword [edx]
mov eax, dword [ebp - 4]
call fcn.0053f2d0
mov edx, dword [esi + edi - 0x8e]
mov eax, dword [ebp - 4]
call fcn.00514118
jmp 0x51f5de
xor eax, eax
mov al, bl
imul eax, eax, 0xf7
cmp byte [esi + eax - 0x52], 0
jne 0x51f5de
mov byte [esi + edi - 0x52], 1
call sub.kernel32.dll_GetTickCount
sub eax, dword [0x5564d0]
cmp eax, dword [0x556164]
jbe 0x51f65f
cmp byte [0x5530e0], 0
je 0x51f65f
mov eax, 0xa4cb80
call fcn.00402bf8
mov dword [0x556164], eax
lea edx, [ebp - 0xc]
mov eax, dword [0x556158]
call fcn.004c5f6c
mov edx, dword [ebp - 0xc]
mov eax, 0x556150
call fcn.00403bfc
push 0x556154
mov ecx, 0x7fffffff
mov edx, 0xa
mov eax, dword [0x556150]
call fcn.00404028
mov eax, dword [0x556154]
call fcn.00457fe4
mov dword [0x55644c], eax
mov eax, dword [0x556150]
call fcn.00403e24
cmp eax, 0x11
sete byte [0x5530e0]
xor eax, eax
mov al, bl
imul edi, eax, 0xf7
mov eax, dword [esi + edi - 0x8e]
cmp byte [eax + 0x370], 0
jne 0x51f68e
push 0
mov ecx, ebx
dec ecx
mov edx, dword [0x5536c4]
mov edx, dword [edx]
mov eax, dword [ebp - 4]
call fcn.0053f2d0
mov eax, dword [esi + edi - 0x8e]
cmp byte [eax + 0x370], 0
je 0x51f6e7
xor eax, eax
mov al, bl
imul eax, eax, 0xf7
mov eax, dword [esi + eax - 0x8e]
call fcn.00498440
mov eax, dword [esi + edi - 0x8e]
mov eax, dword [eax + 0x2dc]
mov edx, 3
call fcn.004560a0
cmp eax, 0x18f
jle 0x51f6e2
mov eax, dword [esi + edi - 0x8e]
xor ecx, ecx
xor edx, edx
call fcn.0048e504
mov byte [esi + edi - 0x52], 0
mov eax, dword [esi + edi - 0x8a]
xor edx, edx
call fcn.0045d890
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x51f712
lea eax, [ebp - 0xc]
call fcn.00403ba8
ret