Function at 0x6208b0
Capabilities:
Check for time delay via gettickcount
Log keystrokes via polling

Disassembly:
sub esp, 0xc
push ebx
push ebp
push esi
mov esi, dword [esp + 0x20]
mov al, byte [esi + 0x2a]
test al, al
push edi
js 0x6208d8
mov al, byte [esi + 0x36]
test al, al
js 0x6208d8
mov dword [esp + 0x14], 0
mov edi, 1
jmp 0x6208e1
mov edi, 1
mov dword [esp + 0x14], edi
push 0x14
call dword [sym.imp.USER32.dll_GetKeyState]
xor ebx, ebx
mov bx, ax
mov al, byte [esi + 0x38]
and ebx, edi
and al, 0x80
jne 0x620b10
mov cl, byte [esi + 0xb8]
test cl, cl
js 0x620b10
mov eax, dword [esp + 0x20]
mov cl, byte [eax + 0x38]
test cl, cl
js 0x620922
mov cl, byte [eax + 0xb8]
test cl, cl
jns 0x6209a2
mov eax, dword [0x76b6a4]
test eax, eax
je 0x620998
mov eax, dword [0x76b6ac]
test eax, eax
je 0x620998
cmp byte [eax], 0
je 0x620998
mov eax, dword [0x76b6d8]
test eax, eax
je 0x620998
mov byte [esp + 0x13], al
push edi
lea eax, [esp + 0x17]
push eax
lea ecx, [esp + 0x20]
push 4
push ecx
call fcn.0063aaa0
mov esi, eax
add esp, 0x10
test esi, esi
jle 0x620998
mov edx, dword [0x76b6a8]
mov eax, dword [edx]
mov edx, dword [0x76a678]
lea ecx, [eax + esi]
cmp ecx, edx
jg 0x620998
mov ecx, dword [0x76b6a4]
push esi
lea edx, [esp + 0x1c]
push edx
add eax, ecx
push eax
call fcn.00671e90
mov eax, dword [0x76b6a8]
mov ecx, dword [eax]
add esp, 0xc
add ecx, esi
mov dword [eax], ecx
mov dword [0x76b6d8], 0
mov eax, dword [0x76b6a4]
test eax, eax
je 0x620cc7
mov eax, dword [0x76b6ac]
test eax, eax
je 0x620cc7
cmp byte [eax], 0
je 0x620cc7
mov ebp, dword [sym.imp.KERNEL32.dll_GetTickCount]
jmp 0x6209d0
mov edx, dword [esp + 0x24]
cmp byte [edi + edx], 0
jns 0x620afb
mov eax, dword [esp + 0x20]
cmp byte [edi + eax], 0
js 0x6209f2
call ebp
mov ecx, dword [0x76b67c]
jmp 0x620a09
call ebp
cmp eax, dword [edi*4 + 0x76a9e0]
jbe 0x620afb
call ebp
mov ecx, dword [0x76a674]
add eax, ecx
cmp edi, 0x40
mov ecx, dword [esp + 0x14]
mov dword [edi*4 + 0x76a9e0], eax
mov eax, ecx
jge 0x620a2b
mov edx, dword [0x6d1358]
movzx eax, byte [edx + edi]
and eax, ebx
xor eax, ecx
cmp edi, 0x1c
jne 0x620a3a
call fcn.0061ff30
jmp 0x620afb
cmp edi, 0xe
jne 0x620a85
mov eax, dword [0x76b6a8]
mov eax, dword [eax]
test eax, eax
jle 0x620afb
mov ecx, dword [0x76b6a4]
mov byte [ecx + eax], 0
jmp 0x620a60
mov edx, dword [0x76b6a4]
mov cl, byte [edx + eax - 1]
dec eax
test eax, eax
mov byte [edx + eax], 0
jle 0x620a7b
and cl, 0xc0
cmp cl, 0x80
je 0x620a60
mov edx, dword [0x76b6a8]
mov dword [edx], eax
jmp 0x620afb
cmp edi, 1
jne 0x620aa5
mov eax, dword [0x76b6a8]
mov dword [eax], 0xffffffff
mov ecx, dword [0x76b6a4]
mov byte [ecx], 0
call fcn.0061ff30
jmp 0x620afb
shl eax, 8
add eax, edi
mov eax, dword [eax*4 + 0x76ae00]
test eax, eax
je 0x620afb
mov ecx, eax
lea esi, [ecx + 1]
lea ebx, [ebx]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x620ac0
mov edx, dword [0x76b6a8]
sub ecx, esi
mov esi, ecx
mov ecx, dword [edx]
lea edx, [ecx + esi]
cmp edx, dword [0x76a678]
jg 0x620afb
push esi
push eax
mov eax, dword [0x76b6a4]
add ecx, eax
push ecx
call fcn.00671e90
mov eax, dword [0x76b6a8]
mov ecx, dword [eax]
add esp, 0xc
add ecx, esi
mov dword [eax], ecx
inc edi
cmp edi, 0xed
jl 0x6209d0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret
test al, al
mov ebx, dword [esp + 0x20]
je 0x620b1f
mov al, byte [ebx + 0x38]
test al, al
jns 0x620b33
mov al, byte [esi + 0xb8]
test al, al
jns 0x620b6f
mov al, byte [ebx + 0xb8]
test al, al
js 0x620b6f
mov al, byte [esi + 0x2a]
test al, al
jns 0x620bb0
mov eax, dword [0x76b6cc]
xor ecx, ecx
cmp eax, edi
setne cl
mov dword [0x76b6cc], ecx
call fcn.006206c0
mov ebp, dword [0x76b6cc]
xor edx, edx
cmp ebp, edi
sete dl
shl edx, 6
add edx, 0x6d12d8
mov dword [0x6d1358], edx
jmp 0x620bb0
mov al, byte [esi + 0x2a]
test al, al
jns 0x620bb0
mov al, byte [ebx + 0x2a]
test al, al
js 0x620bb0
mov ecx, dword [0x76b6cc]
xor eax, eax
cmp ecx, edi
setne al
mov dword [0x76b6cc], eax
call fcn.006206c0
mov ebp, dword [0x76b6cc]
xor ecx, ecx
cmp ebp, edi
sete cl
shl ecx, 6
add ecx, 0x6d12d8
mov dword [0x6d1358], ecx
mov eax, dword [0x76b6a4]
test eax, eax
je 0x620cc7
mov eax, dword [0x76b6ac]
test eax, eax
je 0x620cc7
cmp byte [eax], 0
je 0x620cc7
mov eax, dword [0x76b6d8]
xor ecx, ecx
lea ebx, [ebx]
mov edx, dword [ecx*4 + str.ROPQKLMGHI]
test byte [edx + esi], 0x80
je 0x620c0a
test byte [edx + ebx], 0x80
jne 0x620c0a
lea edx, [eax + eax*4]
lea eax, [ecx + edx*2]
cmp eax, 0xff
jle 0x620c0a
cdq
mov edi, 0x64
idiv edi
mov eax, edx
mov edx, dword [ecx*4 + 0x6d1360]
test byte [edx + esi], 0x80
je 0x620c35
test byte [edx + ebx], 0x80
jne 0x620c35
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2 + 1]
cmp eax, 0xff
jle 0x620c35
cdq
mov edi, 0x64
idiv edi
mov eax, edx
mov edx, dword [ecx*4 + 0x6d1364]
test byte [edx + esi], 0x80
je 0x620c60
test byte [edx + ebx], 0x80
jne 0x620c60
lea edx, [eax + eax*4]
lea eax, [ecx + edx*2 + 2]
cmp eax, 0xff
jle 0x620c60
cdq
mov edi, 0x64
idiv edi
mov eax, edx
mov edx, dword [ecx*4 + 0x6d1368]
test byte [edx + esi], 0x80
je 0x620c8b
test byte [edx + ebx], 0x80
jne 0x620c8b
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2 + 3]
cmp eax, 0xff
jle 0x620c8b
cdq
mov edi, 0x64
idiv edi
mov eax, edx
mov edx, dword [ecx*4 + 0x6d136c]
test byte [edx + esi], 0x80
je 0x620cb6
test byte [edx + ebx], 0x80
jne 0x620cb6
lea edx, [eax + eax*4]
lea eax, [ecx + edx*2 + 4]
cmp eax, 0xff
jle 0x620cb6
cdq
mov edi, 0x64
idiv edi
mov eax, edx
add ecx, 5
cmp ecx, 0xa
jb 0x620be0
mov dword [0x76b6d8], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret