Function at 0x46b9e5
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 + 0x1c], ebp
mov byte [esp + 0x15], 0
mov byte [esp + 0x14], 0
mov byte [esp + 0x16], 0
mov byte [esp + 0x17], 0
call fcn.00414ce0
inc eax
push eax
call fcn.00412c2a
push edi
mov dword [esp + 0x30], eax
call fcn.00414ce0
lea eax, [eax + eax + 1]
push eax
call fcn.00412c2a
mov edx, dword [esp + 0x34]
add esp, 0x10
lea ecx, [esp + 0x18]
push ecx
push edx
push edi
mov ebx, 1
push 0x20
mov dword [esp + 0x24], eax
mov dword [esp + 0x2c], ebx
call fcn.00439333
test eax, eax
jne 0x46bb4e
mov ecx, dword [esp + 0x18]
mov al, byte [ecx + edi]
cmp al, 0x20
je 0x46ba66
cmp al, 9
jne 0x46ba69
inc ecx
jmp 0x46ba5b
lea eax, [esp + 0x18]
push eax
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x18]
push ecx
push edi
push 0
call fcn.00439333
mov edx, dword [esp + 0x14]
push 0x4865fc
push edx
call fcn.004278a3
mov edi, dword [esp + 0x1c]
add esp, 8
test eax, eax
jne 0x46baa2
mov byte [esp + 0x11], bl
jmp 0x46bb55
push str.down
push edi
call fcn.004278a3
add esp, 8
test eax, eax
jne 0x46babd
mov byte [esp + 0x10], bl
jmp 0x46bb55
push 0x486608
push edi
call fcn.004278a3
add esp, 8
test eax, eax
jne 0x46bad8
mov byte [esp + 0x12], bl
jmp 0x46bb55
push 0x48660c
push edi
call fcn.004278a3
add esp, 8
test eax, eax
jne 0x46baf0
mov byte [esp + 0x13], bl
jmp 0x46bb55
cmp byte [edi], 0x30
jne 0x46bb38
mov al, byte [edi + 1]
cmp al, 0x78
je 0x46bb00
cmp al, 0x58
jne 0x46bb38
lea eax, [esp + 0x1c]
push eax
lea ebx, [edi + 2]
push ebx
call fcn.00439202
cmp byte [ebx], 0x30
mov ebx, dword [esp + 0x1c]
push ebx
jne 0x46bb28
push 0x486610
push edi
call fcn.004155f8
add esp, 0xc
jmp 0x46bb55
push 0x486614
push edi
call fcn.004155f8
add esp, 0xc
jmp 0x46bb55
push edi
call fcn.0041568b
mov ebx, eax
add esp, 4
test ebx, ebx
jg 0x46bb55
mov ebx, 1
jmp 0x46bb55
mov edi, dword [esp + 0x14]
lea ecx, [ecx]
mov ecx, dword [esp + 0x24]
mov edx, dword [ebp*4 + 0x493b10]
push ecx
push edx
call fcn.004278a3
add esp, 8
test eax, eax
je 0x46bb74
inc ebp
cmp ebp, 0x62
jl 0x46bb55
cmp ebp, 0x62
jne 0x46bbd8
cmp byte [esp + 0x10], 0
je 0x46bba1
mov eax, dword [esp + 0x24]
movzx ecx, byte [eax]
push 0
push ecx
call dword [sym.imp.USER32.dll_VkKeyScanA]
and eax, 0xff
push eax
push esi
call fcn.004469e4
jmp case.default.0x46bc73
cmp byte [esp + 0x11], 0
je 0x46bbc3
mov edx, dword [esp + 0x24]
movzx eax, byte [edx]
push 0
push eax
call dword [sym.imp.USER32.dll_VkKeyScanA]
and eax, 0xff
push eax
jmp 0x46bf1e
mov ecx, dword [esp + 0x24]
movzx edx, byte [ecx]
push ebx
push edx
mov ecx, esi
call fcn.0044e556
jmp case.default.0x46bc73
cmp byte [ebp + 0x493c98], 0
jne 0x46bc63
cmp byte [esp + 0x10], 0
je 0x46bc01
mov eax, dword [ebp*4 + str._f_b_b..__reepqrstuvwxyz________t___]
push 0
push eax
push esi
call fcn.004469e4
jmp case.default.0x46bc73
cmp byte [esp + 0x11], 0
je 0x46bc17
mov ecx, dword [ebp*4 + str._f_b_b..__reepqrstuvwxyz________t___]
push 0
push ecx
jmp 0x46bf1e
cmp byte [esp + 0x12], 0
je 0x46bc33
mov edx, dword [ebp*4 + str._f_b_b..__reepqrstuvwxyz________t___]
push 1
push edx
push esi
call fcn.00447161
jmp case.default.0x46bc73
cmp byte [esp + 0x13], 0
je 0x46bc4f
mov eax, dword [ebp*4 + str._f_b_b..__reepqrstuvwxyz________t___]
push 0
push eax
push esi
call fcn.00447161
jmp case.default.0x46bc73
mov ecx, dword [ebp*4 + str._f_b_b..__reepqrstuvwxyz________t___]
push ebx
push ecx
push esi
call fcn.00447120
jmp case.default.0x46bc73
mov ebp, dword [ebp*4 + str._f_b_b..__reepqrstuvwxyz________t___]
cmp ebp, 0xe
ja case.default.0x46bc73
jmp dword [ebp*4 + 0x46bf41]
cmp byte [esp + 0x10], 0
jne case.0x46bc73.2
cmp byte [esp + 0x11], 0
je 0x46bca3
mov eax, dword [esi + 0x10]
test eax, 0x100
je case.default.0x46bc73
xor eax, 0x100
mov dword [esi + 0x10], eax
jmp 0x46bf1a
push 0
push 0x12
push esi
call fcn.00446b0f
jmp case.default.0x46bc73
cmp byte [esp + 0x10], 0
je 0x46bcc8
push 0
push 0xd
push esi
call fcn.004469e4
jmp case.default.0x46bc73
cmp byte [esp + 0x11], 0
je 0x46bcd8
push 0
push 0xd
jmp 0x46bf1e
push 1
push 0xd
push esi
call fcn.00446b0f
jmp case.default.0x46bc73
mov eax, dword [esi + 0x10]
test eax, 0x100
jne case.default.0x46bc73
push 0
push 0x12
or eax, 0x100
push esi
mov dword [esi + 0x10], eax
call fcn.004469e4
jmp case.default.0x46bc73
cmp byte [esp + 0x10], 0
je 0x46bd3b
mov eax, dword [esi + 0x10]
test eax, 0x200
jne case.default.0x46bc73
push 0
push 0xa0
or eax, 0x200
push esi
mov dword [esi + 0x10], eax
call fcn.004469e4
jmp case.default.0x46bc73
cmp byte [esp + 0x11], 0
je 0x46bd64
mov eax, dword [esi + 0x10]
test eax, 0x200
je case.default.0x46bc73
xor eax, 0x200
push 0
mov dword [esi + 0x10], eax
push 0xa0
jmp 0x46bf1e
push 0
push 0xa0
push esi
call fcn.00446b0f
jmp case.default.0x46bc73
cmp byte [esp + 0x10], 0
je 0x46bda5
mov eax, dword [esi + 0x10]
test eax, 0x400
jne case.default.0x46bc73
push 0
push 0xa1
or eax, 0x400
push esi
mov dword [esi + 0x10], eax
call fcn.004469e4
jmp case.default.0x46bc73
cmp byte [esp + 0x11], 0
je 0x46bdce
mov eax, dword [esi + 0x10]
test eax, 0x400
je case.default.0x46bc73
xor eax, 0x400
push 0
mov dword [esi + 0x10], eax
push 0xa1
jmp 0x46bf1e
push 0
push 0xa1
push esi
call fcn.00446b0f
jmp case.default.0x46bc73
mov eax, dword [esi + 0x10]
test eax, 0x200
jne case.default.0x46bc73
push 0
push 0x10
or eax, 0x200
push esi
mov dword [esi + 0x10], eax
call fcn.004469e4
jmp case.default.0x46bc73
mov eax, dword [esi + 0x10]
test eax, 0x200
je case.default.0x46bc73
xor eax, 0x200
push 0
mov dword [esi + 0x10], eax
push 0x10
jmp 0x46bf1e
mov eax, dword [esi + 0x10]
test eax, 0x800
jne case.default.0x46bc73
push 0
push 0x11
or eax, 0x800
push esi
mov dword [esi + 0x10], eax
call fcn.004469e4
jmp case.default.0x46bc73
mov eax, dword [esi + 0x10]
test eax, 0x800
je case.default.0x46bc73
xor eax, 0x800
push 0
mov dword [esi + 0x10], eax
push 0x11
jmp 0x46bf1e
mov eax, dword [esi + 0x10]
test eax, 0x1000
jne case.default.0x46bc73
push 0
push 0x5b
or eax, 0x1000
push esi
mov dword [esi + 0x10], eax
call fcn.004469e4
jmp case.default.0x46bc73
mov eax, dword [esi + 0x10]
test eax, 0x1000
je case.default.0x46bc73
xor eax, 0x1000
push 0
mov dword [esi + 0x10], eax
push 0x5b
jmp 0x46bf1e
mov eax, dword [esi + 0x10]
test eax, 0x2000
jne case.default.0x46bc73
push 0
push 0x5c
or eax, 0x2000
push esi
mov dword [esi + 0x10], eax
call fcn.004469e4
jmp case.default.0x46bc73
mov eax, dword [esi + 0x10]
test eax, 0x2000
je case.default.0x46bc73
xor eax, 0x2000
push 0
mov dword [esi + 0x10], eax
push 0x5c
jmp 0x46bf1e
test dword [esi + 0x10], 0x100
jne 0x46bef2
push 0
push 0x12
push esi
call fcn.004469e4
mov al, byte [edi]
test al, al
je 0x46bf11
mov ebx, edi
movsx edx, al
push 0
add edx, 0x30
push edx
push esi
call fcn.00446b0f
mov al, byte [ebx + 1]
inc ebx
test al, al
jne 0x46befa
test dword [esi + 0x10], 0x100
jne case.default.0x46bc73
push 0
push 0x12
push esi
call fcn.004468c9
mov eax, dword [esp + 0x24]
push eax
call fcn.0041293d
push edi
call fcn.0041293d
add esp, 8
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret 4