Function at 0x46ab17
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x10
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x24]
xor ebp, ebp
push edi
mov esi, ecx
mov dword [esp + 0x18], ebp
mov byte [esp + 0x15], 0
mov byte [esp + 0x14], 0
mov byte [esp + 0x16], 0
mov byte [esp + 0x17], 0
call fcn.004156d0
inc eax
push eax
call fcn.00412dbe
push edi
mov dword [esp + 0x30], eax
call fcn.004156d0
lea eax, [eax + eax + 1]
push eax
call fcn.00412dbe
mov edx, dword [esp + 0x34]
add esp, 0x10
lea ecx, [esp + 0x14]
push ecx
push edx
push edi
mov ebx, 1
push 0x20
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], ebx
call fcn.0043a6a6
test eax, eax
jne 0x46ac7c
mov ecx, dword [esp + 0x14]
mov al, byte [ecx + edi]
cmp al, 0x20
je 0x46ab98
cmp al, 9
jne 0x46ab9b
inc ecx
jmp 0x46ab8d
lea eax, [esp + 0x14]
push eax
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x20]
push ecx
push edi
push 0
call fcn.0043a6a6
mov edi, dword [esp + 0x1c]
push 0x4845d4
push edi
call fcn.0042770a
add esp, 8
test eax, eax
jne 0x46abd0
mov byte [esp + 0x11], bl
jmp 0x46ac87
push str.down
push edi
call fcn.0042770a
add esp, 8
test eax, eax
jne 0x46abeb
mov byte [esp + 0x10], bl
jmp 0x46ac87
push 0x4845e0
push edi
call fcn.0042770a
add esp, 8
test eax, eax
jne 0x46ac06
mov byte [esp + 0x12], bl
jmp 0x46ac87
push 0x4845e4
push edi
call fcn.0042770a
add esp, 8
test eax, eax
jne 0x46ac1e
mov byte [esp + 0x13], bl
jmp 0x46ac87
cmp byte [edi], 0x30
jne 0x46ac66
mov al, byte [edi + 1]
cmp al, 0x78
je 0x46ac2e
cmp al, 0x58
jne 0x46ac66
lea edx, [esp + 0x18]
push edx
lea ebx, [edi + 2]
push ebx
call fcn.0043a563
cmp byte [ebx], 0x30
mov ebx, dword [esp + 0x18]
push ebx
jne 0x46ac56
push 0x4845e8
push edi
call fcn.00415ec8
add esp, 0xc
jmp 0x46ac87
push 0x4845ec
push edi
call fcn.00415ec8
add esp, 0xc
jmp 0x46ac87
push edi
call fcn.00415f5b
mov ebx, eax
add esp, 4
test ebx, ebx
jg 0x46ac87
mov ebx, 1
jmp 0x46ac87
mov edi, dword [esp + 0x1c]
lea esp, [esp]
mov eax, dword [esp + 0x24]
mov ecx, dword [ebp*4 + 0x491a08]
push eax
push ecx
call fcn.0042770a
add esp, 8
test eax, eax
je 0x46aca6
inc ebp
cmp ebp, 0x62
jl 0x46ac87
cmp ebp, 0x62
jne 0x46ad0a
cmp byte [esp + 0x10], 0
je 0x46acd3
mov edx, dword [esp + 0x24]
movzx eax, byte [edx]
push 0
push eax
call dword [0x4815c0]
and eax, 0xff
push eax
push esi
call fcn.0044741d
jmp case.default.0x46ada5
cmp byte [esp + 0x11], 0
je 0x46acf5
mov ecx, dword [esp + 0x24]
movzx edx, byte [ecx]
push 0
push edx
call dword [0x4815c0]
and eax, 0xff
push eax
jmp 0x46af7c
mov eax, dword [esp + 0x24]
movzx ecx, byte [eax]
push ebx
push ecx
mov ecx, esi
call fcn.0044f536
jmp case.default.0x46ada5
cmp byte [ebp + 0x491b90], 0
jne 0x46ad95
cmp byte [esp + 0x10], 0
je 0x46ad33
mov edx, dword [ebp*4 + str._f_b_b..__reepqrstuvwxyz________t___]
push 0
push edx
push esi
call fcn.0044741d
jmp case.default.0x46ada5
cmp byte [esp + 0x11], 0
je 0x46ad49
mov eax, dword [ebp*4 + str._f_b_b..__reepqrstuvwxyz________t___]
push 0
push eax
jmp 0x46af7c
cmp byte [esp + 0x12], 0
je 0x46ad65
mov ecx, dword [ebp*4 + str._f_b_b..__reepqrstuvwxyz________t___]
push 1
push ecx
push esi
call fcn.00447b9a
jmp case.default.0x46ada5
cmp byte [esp + 0x13], 0
je 0x46ad81
mov edx, dword [ebp*4 + str._f_b_b..__reepqrstuvwxyz________t___]
push 0
push edx
push esi
call fcn.00447b9a
jmp case.default.0x46ada5
mov eax, dword [ebp*4 + str._f_b_b..__reepqrstuvwxyz________t___]
push ebx
push eax
push esi
call fcn.00447b59
jmp case.default.0x46ada5
mov ebp, dword [ebp*4 + str._f_b_b..__reepqrstuvwxyz________t___]
cmp ebp, 0xc
ja case.default.0x46ada5
jmp dword [ebp*4 + 0x46af9f]
cmp byte [esp + 0x10], 0
jne case.0x46ada5.2
cmp byte [esp + 0x11], 0
je 0x46add5
mov eax, dword [esi + 0x10]
test eax, 0x100
je case.default.0x46ada5
xor eax, 0x100
mov dword [esi + 0x10], eax
jmp 0x46af78
push 0
push 0x12
push esi
call fcn.00447548
jmp case.default.0x46ada5
cmp byte [esp + 0x10], 0
je 0x46adfa
push 0
push 0xd
push esi
call fcn.0044741d
jmp case.default.0x46ada5
cmp byte [esp + 0x11], 0
je 0x46ae0a
push 0
push 0xd
jmp 0x46af7c
push 1
push 0xd
push esi
call fcn.00447548
jmp case.default.0x46ada5
mov eax, dword [esi + 0x10]
test eax, 0x100
jne case.default.0x46ada5
push 0
push 0x12
or eax, 0x100
push esi
mov dword [esi + 0x10], eax
call fcn.0044741d
jmp case.default.0x46ada5
mov eax, dword [esi + 0x10]
test eax, 0x200
jne case.default.0x46ada5
push 0
push 0x10
or eax, 0x200
push esi
mov dword [esi + 0x10], eax
call fcn.0044741d
jmp case.default.0x46ada5
mov eax, dword [esi + 0x10]
test eax, 0x200
je case.default.0x46ada5
xor eax, 0x200
push 0
mov dword [esi + 0x10], eax
push 0x10
jmp 0x46af7c
mov eax, dword [esi + 0x10]
test eax, 0x800
jne case.default.0x46ada5
push 0
push 0x11
or eax, 0x800
push esi
mov dword [esi + 0x10], eax
call fcn.0044741d
jmp case.default.0x46ada5
mov eax, dword [esi + 0x10]
test eax, 0x800
je case.default.0x46ada5
xor eax, 0x800
push 0
mov dword [esi + 0x10], eax
push 0x11
jmp 0x46af7c
mov eax, dword [esi + 0x10]
test eax, 0x1000
jne case.default.0x46ada5
push 0
push 0x5b
or eax, 0x1000
push esi
mov dword [esi + 0x10], eax
call fcn.0044741d
jmp case.default.0x46ada5
mov eax, dword [esi + 0x10]
test eax, 0x1000
je case.default.0x46ada5
xor eax, 0x1000
push 0
mov dword [esi + 0x10], eax
push 0x5b
jmp 0x46af7c
mov eax, dword [esi + 0x10]
test eax, 0x2000
jne case.default.0x46ada5
push 0
push 0x5c
or eax, 0x2000
push esi
mov dword [esi + 0x10], eax
call fcn.0044741d
jmp case.default.0x46ada5
mov eax, dword [esi + 0x10]
test eax, 0x2000
je case.default.0x46ada5
xor eax, 0x2000
push 0
mov dword [esi + 0x10], eax
push 0x5c
jmp 0x46af7c
test dword [esi + 0x10], 0x100
jne 0x46af50
push 0
push 0x12
push esi
call fcn.0044741d
mov al, byte [edi]
test al, al
je 0x46af6f
mov ebx, edi
movsx ecx, al
push 0
add ecx, 0x30
push ecx
push esi
call fcn.00447548
mov al, byte [ebx + 1]
inc ebx
test al, al
jne 0x46af58
test dword [esi + 0x10], 0x100
jne case.default.0x46ada5
push 0
push 0x12
push esi
call fcn.00447302
mov edx, dword [esp + 0x24]
push edx
call fcn.00412f61
push edi
call fcn.00412f61
add esp, 8
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret 4