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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5c
push ebx
mov ebx, ecx
push esi
push edi
mov dword [ebp - 0x14], ebx
cmp byte [ebx], 0
je 0x415ac0
mov ax, word [0x4f8a84]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea esi, [ebx + 0xc]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [0x4f8a68]
mov edi, dword [0x4f8a84]
mov dword [ebp - 4], eax
mov eax, dword [0x4f8a6c]
mov byte [ebx], 1
mov dword [ebp - 8], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x4f8a54]
and eax, 0x7fffffff
cmp eax, 0xc8
ja 0x415b14
cmp byte [ebx], 0
je 0x415b07
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov byte [ebx], 0
mov ax, di
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
mov ecx, dword [ebp - 4]
mov eax, ecx
mov edx, dword [ebp - 8]
or eax, edx
jne 0x415bec
lea eax, [ebp - 0x30]
mov ecx, ebx
push eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x20]
push eax
call fcn.00415970
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcessTimes]
mov eax, dword [ebp - 0x38]
mov dword [0x4f8a68], eax
mov eax, dword [ebp - 0x34]
mov dword [0x4f8a6c], eax
mov eax, dword [ebp - 0x20]
mov dword [0x4f8a58], eax
mov eax, dword [ebp - 0x1c]
mov dword [0x4f8a5c], eax
mov eax, dword [ebp - 0x28]
mov dword [0x4f8a60], eax
mov eax, dword [ebp - 0x24]
mov dword [0x4f8a64], eax
mov eax, dword [ebp - 0x30]
mov dword [0x4f8a88], eax
mov eax, dword [ebp - 0x2c]
mov dword [0x4f8a8c], eax
mov eax, dword [ebp - 0x40]
mov dword [0x4f8ab8], eax
mov eax, dword [ebp - 0x3c]
mov dword [0x4f8abc], eax
mov eax, dword [ebp - 0x48]
mov dword [0x4f8a98], eax
mov eax, dword [ebp - 0x44]
mov dword [0x4f8a9c], eax
mov eax, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x4f8a84], 0
call eax
cmp byte [ebx], 0
mov dword [0x4f8a54], eax
je 0x415be0
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov byte [ebx], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x38]
sub eax, ecx
mov ecx, dword [ebp - 0x34]
mov dword [ebp - 0xc], eax
sbb ecx, edx
or eax, ecx
mov dword [ebp - 8], ecx
je 0x415afb
lea eax, [ebp - 0x30]
mov ecx, ebx
push eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x20]
push eax
call fcn.00415970
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x58]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcessTimes]
mov esi, dword [ebp - 0x28]
sub esi, dword [0x4f8a88]
mov edi, dword [ebp - 0x24]
sbb edi, dword [0x4f8a8c]
sub esi, dword [0x4f8a60]
sbb edi, dword [0x4f8a64]
add esi, dword [ebp - 0x30]
mov eax, esi
adc edi, dword [ebp - 0x2c]
or eax, edi
je 0x415c8c
mov ecx, dword [0x4f8a58]
sub ecx, dword [ebp - 0x20]
mov eax, dword [0x4f8a5c]
sbb eax, dword [ebp - 0x1c]
add ecx, esi
push 0
push 0x64
adc eax, edi
push eax
push ecx
call fcn.004c0c10
push edi
push esi
push edx
push eax
call fcn.004c0b60
mov dword [ebp - 4], eax
jmp 0x415c93
mov dword [ebp - 4], 0
mov ecx, dword [ebp - 0x40]
sub ecx, dword [0x4f8a98]
mov ebx, dword [ebp - 0x3c]
mov eax, ebx
sbb eax, dword [0x4f8a9c]
sub ecx, dword [0x4f8ab8]
mov esi, dword [ebp - 0x48]
sbb eax, dword [0x4f8abc]
add ecx, esi
mov edi, dword [ebp - 0x44]
push 0
push 0x64
adc eax, edi
push eax
push ecx
call fcn.004c0c10
push dword [ebp - 8]
push dword [ebp - 0xc]
push edx
push eax
call fcn.004c0b60
mov ecx, dword [ebp - 0x38]
mov dword [0x4f8a68], ecx
mov ecx, dword [ebp - 0x34]
mov dword [0x4f8a6c], ecx
mov ecx, dword [ebp - 0x20]
mov dword [0x4f8a58], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [0x4f8a5c], ecx
mov ecx, dword [ebp - 0x28]
mov dword [0x4f8a60], ecx
mov ecx, dword [ebp - 0x24]
mov dword [0x4f8a64], ecx
mov ecx, dword [ebp - 0x30]
mov dword [0x4f8a88], ecx
mov ecx, dword [ebp - 0x2c]
mov dword [0x4f8a8c], ecx
mov ecx, dword [ebp - 0x40]
mov dword [0x4f8a98], esi
mov esi, dword [0x4f8a94]
mov dword [0x4f8ab8], ecx
mov ecx, dword [ebp - 4]
mov dword [0x4f8a9c], edi
mov edi, dword [0x4f8a90]
mov dword [esi*4 + 0x4f8aa0], eax
inc edi
mov dword [esi*4 + 0x4f8a70], ecx
mov eax, 0x99999999
inc esi
mov dword [0x4f8abc], ebx
imul esi
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
lea eax, [ecx + esi]
lea eax, [eax + ecx*4]
mov dword [0x4f8a94], eax
mov eax, 5
cmp edi, eax
cmovg edi, eax
xor ebx, ebx
xor eax, eax
mov dword [0x4f8a90], edi
test edi, edi
jle 0x415dee
cmp edi, 8
jb 0x415dee
mov ecx, edi
and ecx, reloc.WS2_32.dll_getsockopt
jns 0x415d9e
dec ecx
or ecx, 0xfffffff8
inc ecx
mov edx, edi
xorps xmm2, xmm2
sub edx, ecx
movdqa xmm1, xmm2
mov ecx, 0x4f8ab0
mov edi, edi
movdqu xmm0, xmmword [ecx - 0x10]
add eax, 8
lea ecx, [ecx + 0x20]
paddd xmm2, xmm0
movdqu xmm0, xmmword [ecx - 0x20]
paddd xmm1, xmm0
cmp eax, edx
jl 0x415db0
paddd xmm1, xmm2
movdqa xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movdqa xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd ebx, xmm1
xor edx, edx
xor esi, esi
cmp eax, edi
jge 0x415e27
mov ecx, edi
sub ecx, eax
cmp ecx, 2
jl 0x415e17
lea ecx, [edi - 1]
add edx, dword [eax*4 + 0x4f8aa0]
add esi, dword [eax*4 + 0x4f8aa4]
add eax, 2
cmp eax, ecx
jl 0x415e02
cmp eax, edi
jge 0x415e22
add ebx, dword [eax*4 + 0x4f8aa0]
lea ecx, [esi + edx]
add ebx, ecx
mov eax, ebx
cdq
idiv edi
mov edi, eax
mov eax, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x4f8a84], edi
call eax
mov esi, dword [ebp - 0x14]
mov dword [0x4f8a54], eax
cmp byte [esi], 0
je 0x415e52
lea ecx, [esi + 0xc]
push ecx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ax, di
mov byte [esi], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret