Function at 0x46d681
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x64f888
mov eax, dword fs:[0]
push eax
sub esp, 0x14
push esi
mov eax, dword [0x6dc0b8]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, ecx
cmp eax, 0x3e8
jl 0x46d409
imul ecx, dword [0x6f3eec], 0x168
add ecx, 0x6f3f54
push dword [ecx + 0x154]
push dword [ecx + 0x150]
push eax
call fcn.004870a0
mov eax, dword [0x6f3eec]
imul esi, eax, 0x168
add esi, 0x6f40a4
mov ecx, dword [esi]
test ecx, ecx
je 0x46d3d9
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [esi], 0
mov eax, dword [0x6f3eec]
imul esi, eax, 0x168
add esi, 0x6f40a8
mov ecx, dword [esi]
test ecx, ecx
je 0x46d3f7
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [esi], 0
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
cmp eax, 0x21c
jg 0x46d578
je 0x46d54f
add eax, 0xffffff9b
cmp eax, 4
ja case.0x46d58d.553
jmp dword [eax*4 + 0x46d7f0]
push 0x6aa23c
lea ecx, [ebp - 0x1c]
call fcn.0049f410
lea eax, [ebp - 0x1c]
mov dword [ebp - 4], 0
push eax
call fcn.00475500
push dword [ebp - 0x1c]
call fcn.00545b61
add esp, 4
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
push 0x6ac9b0
lea ecx, [ebp - 0x1c]
call fcn.0049f410
lea eax, [ebp - 0x1c]
mov dword [ebp - 4], 1
push eax
call fcn.00475500
push dword [ebp - 0x1c]
call fcn.00545b61
add esp, 4
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
push str.CRC64
lea ecx, [ebp - 0x1c]
call fcn.0049f410
lea eax, [ebp - 0x1c]
mov dword [ebp - 4], 2
push eax
call fcn.00475500
push dword [ebp - 0x1c]
call fcn.00545b61
add esp, 4
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
push 0x6ac9e4
lea ecx, [ebp - 0x1c]
call fcn.0049f410
lea eax, [ebp - 0x1c]
mov dword [ebp - 4], 3
push eax
call fcn.00475500
push dword [ebp - 0x1c]
call fcn.00545b61
add esp, 4
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
push str.SHA256
lea ecx, [ebp - 0x1c]
call fcn.0049f410
lea eax, [ebp - 0x1c]
mov dword [ebp - 4], 4
push eax
call fcn.00475500
push dword [ebp - 0x1c]
call fcn.00545b61
add esp, 4
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
push 1
imul ecx, dword [0x6f3eec], 0x168
add ecx, 0x6f3f54
call fcn.00481b70
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
add eax, 0xfffffde3
cmp eax, 0x32
ja case.0x46d58d.553
movzx eax, byte [eax + 0x46d854]
jmp dword [eax*4 + 0x46d804]
push 0
call fcn.0046d270
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
push 0x6aa23c
call fcn.0046d270
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
push 0x6aa6a0
call fcn.0046d270
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
push 0
jmp 0x46d551
push 0
call fcn.0046d2e0
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
push 1
call fcn.0046d2e0
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
call fcn.0046d310
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
push dword [0x6f3eec]
mov ecx, 0x6f3ee0
push 0
push 0
call fcn.00458a60
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
push dword [0x6f3eec]
mov ecx, 0x6f3ee0
push 0
push 1
call fcn.00458a60
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
imul ecx, dword [0x6f3eec], 0x168
shr eax, 0xf
not al
and al, 1
mov byte [ebp - 0x10], al
push 0
push dword [ebp - 0x10]
add ecx, 0x6f3f54
call fcn.00488c00
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
call fcn.0047c640
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
call fcn.0048bfc0
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
call fcn.0048cdb0
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
imul ecx, dword [0x6f3eec], 0x168
add ecx, 0x6f3f54
call fcn.00485730
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
imul ecx, dword [0x6f3eec], 0x168
add ecx, 0x6f3f54
call fcn.0048a0e0
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
imul ecx, dword [0x6f3eec], 0x168
add ecx, 0x6f3f54
call fcn.004899d0
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
imul ecx, dword [0x6f3eec], 0x168
add ecx, 0x6f3f54
call fcn.00489d40
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
call fcn.0046c330
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
imul ecx, dword [0x6f3eec], 0x168
add ecx, 0x6f3f54
call fcn.0047abb0
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret