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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe4
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 4], ecx
mov edi, edx
mov esi, eax
xor eax, eax
push ebp
push 0x639c50
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 5], 0
mov byte [ebp - 0x15], 0
mov eax, dword [ebp + 8]
xor edx, edx
mov dword [eax], edx
xor edx, edx
push ebp
push 0x639c05
push dword fs:[edx]
mov dword fs:[edx], esp
cmp byte [esi + 0xbde], 1
je 0x6396ad
cmp byte [esi + 0x2ec], 0
jne 0x6396ad
cmp byte [esi + 0xb8], 0
je 0x63967c
cmp byte [esi + 0xc0], 0
je 0x6396ad
cmp byte [esi + 0xb8], 0
je 0x63968b
cmp di, 0xb
jne 0x6396ad
cmp byte [esi + 0x369c], 0
jne 0x6396ad
mov eax, esi
call fcn.00661c1c
test al, al
jne 0x6396ba
mov eax, dword [select]
cmp byte [eax + 0x6636], 0
jne 0x6396ba
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x639c3a
mov dl, 2
mov eax, esi
mov ecx, dword [eax]
call dword [ecx + 0x24]
mov eax, dword [esi + 0x39bc]
sub eax, 4
jae 0x63974b
mov eax, dword [esi + 0x39c0]
movzx edx, di
cmp eax, edx
jne 0x63974b
mov eax, edi
sub ax, 0x11
je 0x6396f0
sub ax, 2
je 0x63970f
dec ax
je 0x63972e
jmp 0x63974b
cmp byte [esi + 0x3984], 0
je 0x63974b
mov eax, dword [esi + 0x39bc]
cmp byte [esi + eax + 0x39b5], 0x6e
jne 0x63974b
mov byte [ebp - 0x15], 1
jmp 0x63974b
cmp byte [esi + 0x398c], 0
je 0x63974b
mov eax, dword [esi + 0x39bc]
cmp byte [esi + eax + 0x39b5], 0x70
jne 0x63974b
mov byte [ebp - 0x15], 1
jmp 0x63974b
cmp byte [esi + 0x3994], 0
je 0x63974b
mov eax, dword [esi + 0x39bc]
cmp byte [esi + eax + 0x39b5], 0x71
jne 0x63974b
mov byte [ebp - 0x15], 1
cmp byte [ebp - 0x15], 0
jne 0x63975b
mov dword [esi + 0x39bc], 0xffffffff
movzx eax, byte [ebp + 0xc]
xor al, 1
test al, al
je 0x63980e
cmp byte [ebp - 0x15], 0
jne 0x63980e
call sub.kernel32.dll_GetTickCount_1
mov ebx, eax
movsx edx, byte [esi + 0x262]
movzx eax, word [esi + 0x34]
call fcn.0048b6b8
mov edx, dword [select]
mov edx, dword [edx + 0x6590]
sub edx, eax
mov dword [ebp - 0x14], edx
cmp dword [ebp - 0x14], 0
jge 0x6397a6
xor eax, eax
mov dword [ebp - 0x14], eax
mov eax, dword [esi + 0xcdc]
cmp ebx, eax
jae 0x6397de
sub eax, ebx
mov edx, dword [ebp + 8]
mov dword [edx], eax
mov eax, dword [select]
mov eax, dword [eax + 0x655c]
add dword [esi + 0xcfc], eax
mov eax, dword [ebp - 0x14]
add dword [esi + 0xcdc], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x639c3a
cmp dword [esi + 0xcfc], 0
jle 0x6397ed
dec dword [esi + 0xcfc]
mov edx, dword [select]
mov edx, dword [edx + 0x6588]
mov eax, esi
call fcn.00633618
call sub.kernel32.dll_GetTickCount_1
add eax, dword [ebp - 0x14]
mov dword [esi + 0xcdc], eax
movzx eax, byte [ebp + 0xc]
xor al, 1
and al, byte [ebp - 0x15]
je 0x639884
call sub.kernel32.dll_GetTickCount_1
mov ebx, eax
mov eax, dword [esi + 0x39c4]
cmp ebx, eax
jae 0x639859
sub eax, ebx
mov edx, dword [ebp + 8]
mov dword [edx], eax
mov eax, dword [select]
mov eax, dword [eax + 0x655c]
add dword [esi + 0xcfc], eax
add dword [esi + 0x39c4], 0x190
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x639c3a
cmp dword [esi + 0xcfc], 0
jle 0x639868
dec dword [esi + 0xcfc]
mov edx, 0x190
mov eax, esi
call fcn.00633618
call sub.kernel32.dll_GetTickCount_1
add eax, 0x190
mov dword [esi + 0x39c4], eax
mov byte [esi + 0xcf4], 0
mov eax, dword [esi + 0x24]
cmp eax, dword [ebp - 4]
jne 0x639bfb
mov eax, dword [esi + 0x28]
cmp eax, dword [ebp + 0x14]
jne 0x639bfb
mov byte [ebp - 5], 1
cmp di, 8
jne 0x639970
cmp word [esi + 0x4a2], 0
jbe 0x639970
mov dword [esi + 0x39bc], 0xffffffff
lea ecx, [ebp - 0x10]
lea edx, [ebp - 0xc]
mov eax, esi
call fcn.006706fc
test al, al
je 0x639970
push 1
mov eax, dword [esi + 0x2e0]
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
call fcn.006739dc
test al, al
jne 0x639970
movzx edx, word [esi + 0x49a]
mov eax, dword [0x6c0ec4]
mov eax, dword [eax]
call fcn.005eed6c
test eax, eax
je 0x639970
cmp byte [eax + 0x14], 0x13
jne 0x639970
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
mov eax, esi
call fcn.006534d0
test al, al
je 0x639934
mov ecx, 0x639c6c
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx + 0x98]
sub dword [esi + 0x378], 0x1e
sub dword [esi + 0x37c], 0x32
mov edx, dword [esi + 0x37c]
xor eax, eax
call fcn.0048b210
mov dword [esi + 0x37c], eax
sub dword [esi + 0x248], 2
sub dword [esi + 0x250], 2
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x639c3a
movzx eax, di
cmp eax, 0xf
jg 0x6399b1
je 0x639abe
add eax, 0xfffffff9
cmp eax, 7
ja case.default.0x63998a
jmp dword [eax*4 + 0x639991]
cmp eax, 0x15
jg 0x6399da
je 0x639b3c
sub eax, 0x11
je 0x639b06
sub eax, 2
je 0x639b18
dec eax
je 0x639b2a
jmp case.default.0x63998a
sub eax, 0x16
je 0x639af4
sub eax, 0x36
je 0x639ad0
sub eax, 0x3b
je 0x639ae2
jmp case.default.0x63998a
mov eax, dword [ebp + 0x10]
push eax
xor ecx, ecx
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx]
jmp case.default.0x63998a
mov eax, dword [ebp + 0x10]
push eax
mov cx, 1
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx]
jmp case.default.0x63998a
mov eax, dword [ebp + 0x10]
push eax
mov cx, 2
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx]
jmp case.default.0x63998a
mov eax, dword [ebp + 0x10]
push eax
mov cx, 3
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx]
jmp case.default.0x63998a
cmp byte [esi + 0xb8], 0
je 0x639a6a
mov eax, dword [ebp + 0x10]
push eax
mov cx, 0xb
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx]
jmp case.default.0x63998a
mov eax, dword [ebp + 0x10]
push eax
mov cx, 4
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx]
jmp case.default.0x63998a
mov eax, dword [ebp + 0x10]
push eax
mov cx, 5
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx]
jmp case.default.0x63998a
mov eax, dword [ebp + 0x10]
push eax
mov cx, 7
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx]
jmp case.default.0x63998a
mov eax, dword [ebp + 0x10]
push eax
mov cx, 8
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx]
jmp case.default.0x63998a
mov eax, dword [ebp + 0x10]
push eax
mov cx, 9
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx]
jmp case.default.0x63998a
mov eax, dword [ebp + 0x10]
push eax
mov cx, 0xa
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx]
jmp case.default.0x63998a
mov eax, dword [ebp + 0x10]
push eax
mov cx, 0x2b
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx]
jmp case.default.0x63998a
mov eax, dword [ebp + 0x10]
push eax
mov cx, 0x38
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx]
jmp case.default.0x63998a
mov eax, dword [ebp + 0x10]
push eax
mov cx, 0x6e
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx]
jmp case.default.0x63998a
mov eax, dword [ebp + 0x10]
push eax
mov cx, 0x70
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx]
jmp case.default.0x63998a
mov eax, dword [ebp + 0x10]
push eax
mov cx, 0x71
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx]
jmp case.default.0x63998a
mov eax, dword [ebp + 0x10]
push eax
mov cx, 0x7a
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx]
cmp byte [ebp - 0x15], 0
je 0x639b5b
xor edx, edx
mov eax, esi
call fcn.0063a3e8
cmp dword [esi + 0x36c4], 0
je 0x639bcc
cmp word [esi + 0x4a2], 0
jbe 0x639bcc
cmp byte [esi + 0xb64], 0
jne 0x639bcc
dec byte [esi + 0x30c]
movzx eax, byte [esi + 0x30d]
cmp al, byte [esi + 0x30c]
jne 0x639ba4
mov byte [esi + 0xb64], 1
mov ecx, 0x639c7c
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx + 0x98]
cmp byte [esi + 0x30c], 0
ja 0x639bcc
mov eax, dword [esi + 0x36c4]
mov bl, 7
sub bl, byte [eax + 6]
mov byte [esi + 0x30c], bl
movzx eax, bl
call fcn.00403484
mov byte [esi + 0x30d], al
sub dword [esi + 0x378], 0x1e
sub dword [esi + 0x37c], 0x64
mov edx, dword [esi + 0x37c]
xor eax, eax
call fcn.0048b210
mov dword [esi + 0x37c], eax
sub dword [esi + 0x248], 2
sub dword [esi + 0x250], 2
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x639c3a
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x639c57
lea eax, [ebp - 0x1c]
call fcn.00405394
ret