Function at 0x474860
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
push esi
push edi
mov esi, ecx
mov dword [ebp - 4], edx
mov edi, 0x52d6d8
mov edx, dword [0x49b214]
movzx edx, byte [edx]
mov word [0x51ec68], dx
dec eax
mov dword [edi], eax
mov byte [ebp - 5], 1
mov bl, byte [ebp + 8]
jmp 0x474af7
mov eax, dword [edi]
cmp eax, dword [0x52d6dc]
jge 0x4748a5
mov eax, dword [edi]
mov dword [0x52d6dc], eax
jmp 0x4748c2
mov eax, dword [0x52d6dc]
add eax, dword [0x52d6e0]
cmp eax, dword [edi]
jg 0x4748c2
mov eax, dword [edi]
sub eax, dword [0x52d6e0]
inc eax
mov dword [0x52d6dc], eax
cmp dword [edi], 0
jge 0x4748cd
mov dword [edi], 0xffffffff
cmp dword [0x52d6dc], 0
jge 0x4748dd
xor eax, eax
mov dword [0x52d6dc], eax
mov eax, ebx
call fcn.00474564
mov bl, 1
cmp dword [edi], 0
jl 0x4748f9
mov eax, dword [0x51ec6c]
mov edx, dword [eax]
call dword [edx + 0x14]
cmp eax, dword [edi]
jg 0x4748fd
xor eax, eax
jmp 0x4748ff
mov al, 1
mov byte [ebp - 6], al
mov eax, dword [ebp + 0xc]
mov byte [eax], 0
call fcn.0046c898
mov byte [esi], al
cmp byte [esi], 0
je 0x474a01
xor eax, eax
mov al, byte [esi]
add eax, 0xffffffe0
cmp eax, 0xf
ja case.0x47492e.32
mov al, byte [eax + 0x474935]
jmp dword [eax*4 + 0x474945]
cmp byte [ebp - 6], 0
je 0x474af7
mov eax, dword [edi]
mov al, byte [eax + 0x51ec74]
xor al, 1
mov edx, dword [edi]
mov byte [edx + 0x51ec74], al
jmp 0x474af7
cmp byte [ebp - 6], 0
je 0x474af7
mov eax, dword [edi]
mov byte [eax + 0x51ec74], 1
jmp 0x474af7
cmp byte [ebp - 6], 0
je 0x474af7
mov eax, dword [edi]
mov byte [eax + 0x51ec74], 0
jmp 0x474af7
mov eax, dword [0x51ec6c]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
test eax, eax
jl 0x474af7
inc eax
mov edx, 0x51ec74
mov byte [edx], 1
inc edx
dec eax
jne 0x4749c7
jmp 0x474af7
mov eax, dword [0x51ec6c]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
test eax, eax
jl 0x474af7
inc eax
mov edx, 0x51ec74
mov byte [edx], 0
inc edx
dec eax
jne 0x4749ec
jmp 0x474af7
mov byte [ebp - 5], 0
jmp 0x474af7
call fcn.0046c898
mov edx, dword [ebp + 0xc]
mov byte [edx], al
call fcn.0046f964
mov eax, dword [ebp + 0xc]
movzx eax, byte [eax]
cmp eax, 0x4f
jg 0x474a4d
je 0x474aac
cmp eax, 0x48
jg 0x474a3c
je 0x474a99
sub eax, 9
je 0x474a9d
add eax, 0xffffffce
sub eax, 0xc
jb 0x474a7a
je 0x474aa1
jmp 0x474ac8
sub eax, 0x49
je 0x474ac0
sub eax, 2
je 0x474a7a
sub eax, 2
je 0x474a7a
jmp 0x474ac8
cmp eax, 0x66
jg 0x474a66
je 0x474a80
sub eax, 0x50
je 0x474a9d
dec eax
je 0x474ac5
add eax, 0xfffffff3
sub eax, 8
jb 0x474a7a
jmp 0x474ac8
add eax, 0xffffff99
sub eax, 3
jb 0x474a7a
sub eax, 0xc
je 0x474aac
sub eax, 0xe
je 0x474aa1
jmp 0x474ac8
mov byte [ebp - 5], 0
jmp 0x474ac8
push 0x12
call sub.user32.dll_GetKeyState
test ax, ax
jge 0x474a93
call fcn.00468e44
jmp 0x474ac8
mov byte [ebp - 5], 0
jmp 0x474ac8
dec dword [edi]
jmp 0x474ac8
inc dword [edi]
jmp 0x474ac8
call fcn.0046fad4
xor eax, eax
mov dword [edi], eax
jmp 0x474ac8
call fcn.0046fad4
mov eax, dword [0x51ec6c]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
mov dword [edi], eax
jmp 0x474ac8
sub dword [edi], 0xa
jmp 0x474ac8
add dword [edi], 0xa
cmp dword [edi], 0
jge 0x474ad8
mov dword [edi], 0xffffffff
call fcn.0046fad4
mov eax, dword [0x51ec6c]
mov edx, dword [eax]
call dword [edx + 0x14]
cmp eax, dword [edi]
jg 0x474af7
mov eax, dword [0x51ec6c]
mov edx, dword [eax]
call dword [edx + 0x14]
mov dword [edi], eax
call fcn.0046fad4
cmp byte [ebp - 5], 0
jne 0x474892
mov eax, dword [0x49b214]
mov dl, byte [0x51ec68]
mov byte [eax], dl
mov eax, dword [edi]
inc eax
mov edx, dword [ebp - 4]
mov dword [edx], eax
mov eax, dword [ebp - 4]
cmp dword [eax], 1
jl 0x474b2f
mov eax, dword [0x51ec6c]
mov edx, dword [eax]
call dword [edx + 0x14]
mov edx, dword [ebp - 4]
cmp eax, dword [edx]
jge 0x474b33
xor ebx, ebx
jmp 0x474b35
mov bl, 1
call fcn.004556c4
mov eax, ebx
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
ret 8