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

Disassembly:
push 0x10
mov eax, 0x57320e
call fcn.005611e0
mov edi, ecx
mov dword [ebp - 0x1c], edi
mov eax, dword [ebp + 0x1c]
xor ecx, ecx
mov dword [ebp - 0x14], eax
inc ecx
mov eax, dword [edi + 0x32c]
cmp eax, ecx
je 0x499a96
cmp eax, 2
je 0x499a96
cmp eax, 3
jne 0x499d4f
mov esi, dword [edi + 0x2d0]
mov ecx, esi
push dword [ebp + 0x14]
call fcn.004a5655
mov ebx, eax
mov dword [ebp - 0x10], ebx
test ebx, ebx
js 0x499d4f
push ebx
mov ecx, esi
call fcn.004a5688
mov esi, eax
mov dword [ebp - 0x18], esi
test esi, esi
je 0x499d4f
mov ecx, dword [ebp + 0xc]
mov dword [esi + 0x10], ecx
mov ecx, dword [ebp + 0x10]
mov dword [esi + 0x14], ecx
mov cx, word [ebp + 0x18]
mov word [esi + 0x264], cx
push dword [esi]
mov ecx, dword [edi + 0x680]
call fcn.004a6158
mov dl, byte [ebp + 0x28]
test eax, eax
je 0x499af9
movzx ecx, dl
mov dword [eax + 0x14], ecx
movzx eax, dl
xor edx, edx
sub eax, edx
je 0x499bda
dec eax
je 0x499b9d
dec eax
jne 0x499d4f
push dword [esi]
push str.Peer__d____
push edi
call fcn.0049ae24
add esp, 0xc
cmp byte [esi + 0xe], 0xff
je 0x499b30
inc dword [edi + 0x528]
xor eax, eax
mov ecx, edi
inc eax
push eax
push esi
call fcn.0049ccc5
cmp dword [esi + 0x25c], 0
mov ecx, dword [edi + 0x2d0]
setle bl
test bl, bl
sete al
movzx eax, al
push eax
push dword [ebp - 0x10]
call fcn.004a56b1
test bl, bl
je 0x499d4f
mov dword [esi + 0x258], 0x7530
call dword [sym.imp.KERNEL32.dll_GetTickCount]
test eax, eax
push 1
pop ecx
cmove eax, ecx
lea ecx, [edi + 0x2d4]
mov dword [esi + 0x254], eax
lea eax, [ebp - 0x18]
inc dword [esi + 0x25c]
push eax
call fcn.004a118e
jmp 0x499d4f
push dword [esi]
push 0x593298
push edi
call fcn.0049ae24
add esp, 0xc
cmp byte [esi + 0xe], 0xff
je 0x499bb9
inc dword [edi + 0x52c]
xor eax, eax
mov ecx, edi
inc eax
push eax
push esi
call fcn.0049ccc5
mov ecx, dword [edi + 0x2d0]
xor eax, eax
inc eax
push eax
push ebx
call fcn.004a56b1
jmp 0x499d4f
mov eax, dword [ebp + 0x2c]
sub eax, dword [esi + 0x220]
cmp byte [esi + 0xe], 1
mov ebx, dword [ebp + 0x20]
mov dword [esi + 0x224], eax
mov eax, dword [ebp + 0x24]
mov dword [esi + 0x220], edx
mov dword [esi + 0x30], ebx
mov dword [esi + 0x34], eax
jbe 0x499c17
mov ecx, dword [ebp + 0x30]
mov eax, dword [ecx]
mov dword [esi + 4], eax
mov eax, dword [ecx + 4]
mov dword [esi + 8], eax
mov ax, word [ebp + 8]
mov word [esi + 0xc], ax
mov ecx, dword [edi + 0x2d0]
mov byte [ebp - 0x10], dl
push dword [ebp - 0x10]
mov edx, dword [ecx + 4]
mov eax, edx
sub eax, dword [ecx]
mov ecx, dword [ecx]
sar eax, 2
push eax
call fcn.004a69d8
pop ecx
pop ecx
mov ecx, dword [edi + 0x694]
test ecx, ecx
je 0x499c4a
push dword [ebp + 0x24]
push ebx
call fcn.004a712b
mov eax, dword [edi + 0x240]
or eax, dword [edi + 0x244]
mov ecx, dword [ebp + 0x24]
jne 0x499ca6
mov eax, ebx
or eax, ecx
je 0x499ca6
push ecx
push ebx
mov ecx, edi
call fcn.0049edbc
xor eax, eax
inc eax
mov byte [edi + 0x69d], al
mov eax, dword [edi + 0x240]
or eax, dword [edi + 0x244]
je 0x499ca3
mov ecx, edi
call fcn.004994d2
test eax, eax
je 0x499ca3
push 0
push 0
mov ecx, edi
call fcn.0049edbc
mov ecx, edi
call fcn.0049e550
jmp 0x499d4f
mov ecx, dword [ebp + 0x24]
cmp dword [edi + 0x240], ebx
jne 0x499d48
cmp dword [edi + 0x244], ecx
jne 0x499d48
or ebx, ecx
je 0x499d48
mov ebx, dword [ebp - 0x14]
mov ecx, esi
push ebx
call fcn.004a7ad6
inc dword [edi + 0x530]
push ebx
push dword [esi + 0x224]
push dword [esi]
push 0x593230
push edi
call fcn.0049ae24
add esp, 0x14
cmp dword [edi + 0x610], 0
je 0x499d4f
lea esi, [edi + 0x628]
mov ecx, esi
mov dword [ebp - 0x14], esi
call fcn.005383c0
and dword [ebp - 4], 0
mov edi, dword [edi + 0x610]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [ebp - 0x18]
sub eax, dword [edi + 4]
push dword [ecx]
push eax
mov eax, dword [ebp - 0x1c]
push str._d__d
push str.source_check
push dword [eax + 0x610]
call fcn.00532424
or dword [ebp - 4], 0xffffffff
add esp, 0x14
mov ecx, esi
call fcn.005383d0
jmp 0x499d4f
mov dword [esi + 0x40], 4
call fcn.005611ae
ret 0x2c