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

Disassembly:
sub esp, 0x104
push ebx
mov ebx, ecx
push ebp
mov ebp, dword [esp + 0x110]
mov ecx, dword [ebx + 0x2dc]
push esi
mov eax, dword [ebp]
push edi
lea edx, [ecx + 1]
cmp eax, edx
jne 0x4875e2
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call edi
mov ecx, dword [ebx + 0x2ec]
add ecx, 0x3e8
cmp eax, ecx
jb 0x4875e4
call edi
mov edx, dword [ebx + 0x2f0]
add edx, 0x3e8
cmp eax, edx
jb 0x4875e4
mov ecx, dword [ebx + 0x274]
test ecx, ecx
je 0x4874c0
mov eax, dword [ecx]
call dword [eax + 0x14]
mov esi, eax
mov dword [esp + 0x10], esi
jmp 0x4874cc
mov dword [esp + 0x10], 0
mov esi, dword [esp + 0x10]
test esi, esi
je 0x487881
mov ecx, dword [ebx + 0x274]
push esi
push ebp
mov edx, dword [ecx]
call dword [edx + 0x28]
mov ecx, dword [ebx + 0x274]
push ebp
push esi
mov eax, dword [ecx]
call dword [eax + 0x2c]
test eax, eax
je 0x48750c
mov ecx, dword [ebp]
push ebp
mov dword [ebx + 0x2dc], ecx
mov ecx, dword [ebx + 0x274]
mov edx, dword [ecx]
call dword [edx + 0x30]
jmp 0x4875c1
mov ecx, dword [ebx + 0xc]
mov eax, dword [ebp]
shl ecx, 6
mov dword [ebx + 0x2dc], eax
lea eax, [esp + 0x14]
lea edx, [ecx + ebx + 0x14]
push edx
push str._s:
push eax
call fcn.005308a0
mov edi, str.Due_to_a_network_error__your_game_has_gotten_out_of_step_with_that_of_your_opponent_s_.__It_will_be_updated_now_to_resynchronize.
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x14]
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push 0x2000
lea eax, [esp + 0x18]
and ecx, 3
push str.Resynchronizing
push eax
rep movsb byte es:[edi], byte [esi]
push 0
call fcn.004f0710
mov ecx, dword [ebx + 0x274]
add esp, 0x10
test ecx, ecx
je 0x487589
mov edx, dword [ecx]
push ebp
call dword [edx + 0x24]
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
mov dword [ebx + 0x2ec], eax
call esi
mov dword [ebx + 0x2f0], eax
call esi
mov dword [ebx + 0x2f4], eax
call esi
mov dword [ebx + 0x2f8], eax
call esi
mov esi, dword [esp + 0x10]
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebx + 0x2fc], eax
mov ecx, dword [ebx + 0x274]
push esi
mov eax, dword [ecx]
call dword [eax + 0x18]
call edi
mov dword [ebx + 0x2ec], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x104
ret 4
jle 0x4875f9
push ebp
mov ecx, ebx
call fcn.004872c0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x104
ret 4
cmp eax, ecx
jne 0x487881
mov eax, dword [ebx + 0xc]
push ecx
push eax
lea edx, [esp + 0x1c]
shl eax, 6
lea ecx, [eax + ebx + 0x14]
push ecx
push str._s__player__d___state___ld__says:_n
push edx
call fcn.005308a0
mov edi, str.SIGS:_received_state_with_my_current_state_number_n
or ecx, 0xffffffff
xor eax, eax
add esp, 0x14
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x14]
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x14]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.004f07d0
mov eax, dword [ebx + 0x2d4]
add esp, 4
cmp eax, 0xffffffff
je 0x4876ac
mov eax, dword [ebx + 0x29c]
xor edi, edi
cmp eax, edi
je 0x48767b
push eax
call fcn.004d86d0
add esp, 4
lea ecx, [esp + 0x14]
mov dword [ebx + 0x29c], edi
push ecx
push str.STRING
mov ecx, ebx
mov dword [ebx + 0x2a0], edi
mov dword [ebx + 0x2a4], edi
call fcn.00489ff0
push 0x85
mov ecx, ebx
call fcn.0048a1b0
jmp 0x4876ae
xor edi, edi
mov ecx, dword [ebx + 0x274]
cmp ecx, edi
je 0x4876c5
mov edx, dword [ecx]
call dword [edx + 0x14]
mov esi, eax
mov dword [esp + 0x10], esi
jmp 0x4876cb
mov dword [esp + 0x10], edi
mov esi, edi
cmp esi, edi
je 0x487881
mov eax, dword [ebx + 0x2dc]
mov dword [esi], eax
mov cl, byte [ebx + 0xc]
mov byte [esi + 4], cl
mov dword [esi + 8], edi
mov ecx, dword [ebx + 0x274]
cmp ecx, edi
je 0x4876f4
mov edx, dword [ecx]
push esi
call dword [edx + 0x20]
mov ecx, dword [ebx + 0x274]
push ebp
push esi
mov eax, dword [ecx]
call dword [eax + 0x2c]
test eax, eax
jne 0x487873
mov ecx, dword [ebx + 0x2dc]
mov eax, dword [ebx + 0xc]
push ecx
push eax
shl eax, 6
lea edx, [eax + ebx + 0x14]
lea eax, [esp + 0x1c]
push edx
push str._s__player__d___state___ld__says:_n
push eax
call fcn.005308a0
mov edi, str.SIGS:_state_with_my_current_state_number_NOT_EQUAL_n
or ecx, 0xffffffff
xor eax, eax
add esp, 0x14
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x14]
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x14]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.004f07d0
mov eax, dword [ebx + 0x2d4]
add esp, 4
cmp eax, 0xffffffff
je 0x4877b8
mov eax, dword [ebx + 0x29c]
xor esi, esi
cmp eax, esi
je 0x487789
push eax
call fcn.004d86d0
add esp, 4
lea ecx, [esp + 0x14]
mov dword [ebx + 0x29c], esi
push ecx
push str.STRING
mov ecx, ebx
mov dword [ebx + 0x2a0], esi
mov dword [ebx + 0x2a4], esi
call fcn.00489ff0
push 0x85
mov ecx, ebx
call fcn.0048a1b0
movsx edx, byte [ebp + 4]
mov eax, dword [ebx + 0xc]
cmp edx, eax
jge 0x48786f
mov ecx, dword [ebp]
shl eax, 6
mov dword [ebx + 0x2dc], ecx
lea edx, [eax + ebx + 0x14]
lea eax, [esp + 0x14]
push edx
push str._s:
push eax
call fcn.005308a0
mov edi, str.Due_to_a_network_error__your_game_has_gotten_out_of_step_with_that_of_your_opponent_s_.__It_will_be_updated_now_to_resynchronize.
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x14]
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push 0x2000
lea eax, [esp + 0x18]
and ecx, 3
push str.Resynchronizing
push eax
rep movsb byte es:[edi], byte [esi]
push 0
call fcn.004f0710
mov ecx, dword [ebx + 0x274]
add esp, 0x10
test ecx, ecx
je 0x487841
mov edx, dword [ecx]
push ebp
call dword [edx + 0x24]
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
mov dword [ebx + 0x2ec], eax
call esi
mov dword [ebx + 0x2f0], eax
call esi
mov dword [ebx + 0x2f4], eax
call esi
mov dword [ebx + 0x2f8], eax
call esi
mov dword [ebx + 0x2fc], eax
mov esi, dword [esp + 0x10]
mov ebx, dword [ebx + 0x274]
push esi
mov ecx, ebx
mov eax, dword [ebx]
call dword [eax + 0x18]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x104
ret 4