Function at 0x461225
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov esi, ecx
mov ebx, 0x8000
cmp edi, 0x11
je 0x4612c0
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test bx, ax
je 0x4612c0
push edi
mov ecx, esi
call fcn.00460f07
cmp edi, 0x56
jne 0x461266
push 1
mov ecx, esi
call fcn.00461bd7
jmp 0x4615b8
cmp edi, 0x42
jne 0x46126f
push 0
jmp 0x46125a
cmp edi, 0x43
jne 0x461280
mov ecx, esi
call fcn.00460148
jmp 0x4615b8
cmp edi, 0x58
jne 0x4612b4
mov ecx, esi
call fcn.00460148
cmp byte [esi + 0x44], 0
je 0x4615b8
xor ebx, ebx
mov ecx, esi
push ebx
push dword [esi + 0x40]
push dword [esi + 0x3c]
call fcn.00460f4f
mov eax, dword [esi + 0x3c]
mov dword [esi + 0x48], eax
mov byte [esi + 0x4c], bl
jmp 0x4615b1
cmp edi, 0x41
jne 0x4612c0
mov ecx, esi
call fcn.00461d42
cmp edi, 0x28
jne 0x4612f7
push dword [esi + 0xb4]
push dword [esi + 0x48]
call fcn.00461d00
pop ecx
pop ecx
push 0x10
mov dword [esi + 0x48], eax
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
xor ebx, ebx
test cx, ax
je 0x461339
mov eax, dword [esi + 0xb4]
add dword [esi + 0x34], eax
jmp 0x461322
cmp edi, 0x26
jne 0x461346
mov eax, dword [esi + 0xb4]
sub dword [esi + 0x48], eax
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
xor ebx, ebx
test cx, ax
je 0x461339
mov eax, dword [esi + 0xb4]
sub dword [esi + 0x34], eax
cmp byte [esi + 0x4c], bl
je 0x461330
mov dword [esi + 0x30], ebx
mov dword [esi + 0x38], ebx
mov byte [esi + 0x4c], bl
mov ecx, esi
call fcn.0046221e
jmp 0x461340
mov ecx, esi
call fcn.00460106
push ebx
jmp 0x4614b7
cmp edi, 0x27
jne 0x4613df
xor edi, edi
xor ebx, ebx
inc edi
cmp dword [esi + 0x54], edi
jne 0x4613d0
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x461394
mov eax, dword [esi + 0x34]
cmp dword [esi + 0x2c], eax
jne 0x461385
cmp dword [esi + 0x30], edi
jne 0x461385
cmp dword [esi + 0x38], edi
jne 0x461385
mov dword [esi + 0x30], ebx
mov dword [esi + 0x38], edi
jmp 0x461389
inc eax
mov dword [esi + 0x34], eax
inc dword [esi + 0x48]
mov byte [esi + 0x4c], bl
jmp 0x46146c
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
mov ecx, esi
je 0x4613b9
call fcn.00460135
mov ecx, esi
call fcn.00460106
jmp 0x46153e
inc dword [esi + 0x48]
mov eax, dword [esi + 0x48]
mov byte [esi + 0x4c], bl
mov dword [esi + 0x2c], eax
mov dword [esi + 0x34], eax
mov dword [esi + 0x30], ebx
mov dword [esi + 0x38], ebx
jmp 0x4613af
cmp dword [esi + 0x54], 2
jne 0x46153e
inc dword [esi + 0x48]
jmp 0x461452
cmp edi, 0x25
jne 0x461478
xor edi, edi
xor ebx, ebx
inc edi
cmp dword [esi + 0x54], edi
jne 0x461445
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x46141a
dec dword [esi + 0x34]
mov dword [esi + 0x38], ebx
cmp byte [esi + 0x4c], bl
je 0x461412
mov dword [esi + 0x30], ebx
dec dword [esi + 0x48]
mov byte [esi + 0x4c], bl
jmp 0x46146c
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x461438
mov ecx, esi
call fcn.00460122
jmp 0x4613ad
cmp byte [esi + 0x4c], bl
jne 0x46142c
dec dword [esi + 0x48]
jmp 0x4613ad
cmp dword [esi + 0x54], 2
jne 0x46153e
dec dword [esi + 0x48]
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
je 0x4613ad
mov eax, dword [esi + 0x48]
mov dword [esi + 0x38], ebx
mov dword [esi + 0x34], eax
mov ecx, esi
call fcn.0046221e
jmp 0x46153e
cmp edi, 0x22
je 0x461585
cmp edi, 0x21
je 0x46157b
cmp edi, 0x2d
jne 0x46149d
cmp byte [esi + 0x45], 0
push 6
sete al
mov byte [esi + 0x45], al
jmp 0x4614a4
cmp edi, 0xd
jne 0x4614b0
push 0xc
mov ecx, esi
call fcn.00460ec6
jmp 0x4615b8
cmp edi, 0x24
jne 0x4614be
push 0
push 1
jmp 0x461540
cmp edi, 8
jne 0x461549
cmp byte [esi + 0x44], 0
je 0x4614ef
xor ebx, ebx
mov ecx, esi
push ebx
push dword [esi + 0x40]
push dword [esi + 0x3c]
call fcn.00460f4f
mov ecx, esi
call fcn.00460106
mov eax, dword [esi + 0x3c]
mov dword [esi + 0x48], eax
jmp 0x461340
xor edi, edi
inc edi
cmp dword [esi + 0x54], edi
jne 0x461522
mov cl, byte [esi + 0x4c]
xor ebx, ebx
test cl, cl
push ebx
sete al
movzx eax, al
push eax
xor eax, eax
test cl, cl
mov ecx, esi
setne al
dec eax
add eax, dword [esi + 0x48]
push eax
call fcn.004610f1
mov ecx, esi
call fcn.00460122
jmp 0x46153e
cmp dword [esi + 0x54], 2
jne 0x4615b8
mov eax, dword [esi + 0x48]
xor ebx, ebx
push ebx
dec eax
mov ecx, esi
push eax
call fcn.0046109d
dec dword [esi + 0x48]
push ebx
push edi
mov ecx, esi
call fcn.00462019
jmp 0x4615b8
cmp edi, 0x2e
jne 0x4615b8
cmp dword [esi + 0x54], 1
je 0x46155a
cmp dword [esi + 0x54], 2
jne 0x4615b8
cmp byte [esi + 0x44], 0
mov ecx, esi
push 0
jne 0x46156e
push dword [esi + 0x48]
call fcn.0046109d
jmp 0x4615b8
push dword [esi + 0x40]
push dword [esi + 0x3c]
call fcn.00460f4f
jmp 0x4615b8
mov edi, dword [esi + 0xbc]
neg edi
jmp 0x46158b
mov edi, dword [esi + 0xbc]
mov ecx, esi
call fcn.00460e5a
add dword [esi + 0x48], edi
mov ecx, esi
test al, al
je 0x4615a7
add dword [esi + 0x24], edi
push 8
call fcn.00460ec6
jmp 0x4615b1
xor edi, edi
inc edi
push edi
push edi
call fcn.00462019
mov ecx, esi
call fcn.00460106
pop edi
pop esi
pop ebx
pop ebp
ret 0xc