Function at 0x46ca40
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4e0
mov eax, dword [0x53a090]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x3c
lea eax, [ebp - 0x4e0]
push 0
push eax
mov edi, edx
mov ebx, ecx
call fcn.00518020
push 0x5c
lea eax, [ebp - 0x4a0]
push 0
push eax
call fcn.00518020
push 0x20
lea edx, [ebp - 0x44]
mov ecx, edi
call fcn.0046c360
add esp, 0x1c
test eax, eax
je 0x46caa0
push 0x20
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x484]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynW]
lea edx, [ebp - 0x4a4]
mov ecx, edi
call fcn.0046c550
test eax, eax
je 0x46cabd
mov al, byte [ebp - 0x4a4]
mov byte [ebp - 0x489], al
lea edx, [ebp - 0x4a4]
mov ecx, edi
call fcn.0046c600
test eax, eax
je 0x46caff
push ebx
call dword [sym.imp.USER32.dll_GetDC]
push 0x48
mov esi, eax
push 0x5a
push esi
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
push eax
push dword [ebp - 0x4a4]
call dword [sym.imp.KERNEL32.dll_MulDiv]
push esi
neg eax
push ebx
mov dword [ebp - 0x4a0], eax
call dword [sym.imp.USER32.dll_ReleaseDC]
mov esi, dword [sym.imp.SHLWAPI.dll_StrStrIW]
push 0x412ee4
push edi
call esi
neg eax
sbb eax, eax
and eax, 0x12c
push 0x431bc4
add eax, 0x190
push edi
mov dword [ebp - 0x490], eax
call esi
test eax, eax
lea eax, [ebp - 0x4a0]
push 0x10
setne byte [ebp - 0x48c]
mov dword [ebp - 0x4e0], 0x3c
mov dword [ebp - 0x4dc], ebx
mov dword [ebp - 0x4d4], eax
mov dword [ebp - 0x4cc], 0x41
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 8
test al, al
je 0x46cb71
or dword [ebp - 0x4cc], 0x4000
lea eax, [ebp - 0x4e0]
push eax
call dword [sym.imp.COMDLG32.dll_ChooseFontW]
test eax, eax
je 0x46ce43
lea eax, [ebp - 0x484]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
test eax, eax
je 0x46ce43
push 0x4323e0
lea eax, [ebp - 0x444]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatW]
lea eax, [ebp - 0x484]
push eax
lea eax, [ebp - 0x444]
push eax
call esi
push ecx
lea edx, [ebp - 0x44]
mov ecx, edi
call fcn.0046c460
add esp, 4
test eax, eax
je 0x46cbf0
push 0x4324bc
lea eax, [ebp - 0x444]
push eax
call esi
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x444]
push eax
call esi
cmp dword [ebp + 0xc], 0
mov ebx, dword [sym.imp.USER32.dll_wsprintfW]
je 0x46cc46
mov al, byte [ebp - 0x489]
cmp al, 1
je 0x46cc46
test al, al
je 0x46cc46
movzx eax, al
cmp eax, dword [0x56d1f4]
je 0x46cc46
push 0x4324d8
lea eax, [ebp - 0x444]
push eax
call esi
movzx eax, byte [ebp - 0x489]
push eax
lea eax, [ebp - 0x44]
push 0x407d14
push eax
call ebx
add esp, 0xc
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x444]
push eax
call esi
push 0x4324f0
lea eax, [ebp - 0x444]
push eax
call esi
mov eax, 0x66666667
imul dword [ebp - 0x4d0]
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
lea eax, [ebp - 0x44]
push 0x407d14
push eax
call ebx
add esp, 0xc
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x444]
push eax
call esi
mov eax, dword [ebp - 0x4b0]
test eax, 0x100
je 0x46cca6
push 0x432500
lea eax, [ebp - 0x444]
push eax
call esi
mov eax, dword [ebp - 0x4b0]
test eax, 0x200
je 0x46ccbb
push 0x432510
lea eax, [ebp - 0x444]
push eax
call esi
mov ebx, dword [sym.imp.SHLWAPI.dll_StrStrIW]
push 0x432524
push edi
call ebx
test eax, eax
je 0x46ccdb
push 0x432538
lea eax, [ebp - 0x444]
push eax
call esi
lea eax, [ebp - 0x4a4]
push eax
mov edx, edi
mov ecx, 1
call fcn.0046c7a0
add esp, 4
test eax, eax
je 0x46cd30
mov ecx, dword [ebp - 0x4a4]
mov eax, ecx
sar eax, 0x10
movzx eax, al
push eax
mov eax, ecx
shr eax, 8
movzx eax, al
push eax
movzx eax, cl
push eax
lea eax, [ebp - 0x44]
push 0x432260
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x14
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x444]
push eax
call esi
lea eax, [ebp - 0x4a4]
push eax
mov edx, edi
xor ecx, ecx
call fcn.0046c7a0
add esp, 4
test eax, eax
je 0x46cd82
mov ecx, dword [ebp - 0x4a4]
mov eax, ecx
sar eax, 0x10
movzx eax, al
push eax
mov eax, ecx
shr eax, 8
movzx eax, al
push eax
movzx eax, cl
push eax
lea eax, [ebp - 0x44]
push 0x43228c
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x14
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x444]
push eax
call esi
push 0x40bd64
push edi
call ebx
test eax, eax
je 0x46cd9c
push 0x432550
lea eax, [ebp - 0x444]
push eax
call esi
lea edx, [ebp - 0x4a4]
mov ecx, edi
call fcn.0046c8a0
test eax, eax
je 0x46cdd8
push 0x432568
lea eax, [ebp - 0x444]
push eax
call esi
cmp dword [ebp - 0x4a4], 1
mov eax, 0x432578
je 0x46cdce
mov eax, 0x407d38
push eax
lea eax, [ebp - 0x444]
push eax
call esi
lea edx, [ebp - 0x4a4]
mov ecx, edi
call fcn.0046c970
test eax, eax
je 0x46ce1c
push 0x43257c
lea eax, [ebp - 0x444]
push eax
call esi
push dword [ebp - 0x4a4]
lea eax, [ebp - 0x44]
push 0x407d14
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x444]
push eax
call esi
push dword [ebp + 8]
lea ecx, [ebp - 0x444]
push ecx
push edi
call dword [sym.imp.KERNEL32.dll_lstrcpynW]
pop edi
pop esi
mov eax, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0050ecf7
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
xor eax, eax
pop ebx
call fcn.0050ecf7
mov esp, ebp
pop ebp
ret