Function at 0x4220ea
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4e4
mov eax, dword [0x4f8004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x3c
lea eax, [ebp - 0x4e4]
mov ebx, ecx
push 0
push eax
mov edi, edx
mov dword [ebp - 0x4a8], ebx
call fcn.00489f20
push 0x5c
lea eax, [ebp - 0x4a0]
push 0
push eax
call fcn.00489f20
push 0x20
lea edx, [ebp - 0x44]
mov ecx, edi
call fcn.00421ccf
add esp, 0x1c
test eax, eax
je 0x422150
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.00421e4c
test eax, eax
je 0x422192
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 ebx, dword [sym.imp.SHLWAPI.dll_StrStrIW]
push str.bold
push edi
call ebx
neg eax
push str.italic
sbb eax, eax
and eax, 0x12c
add eax, 0x190
push edi
mov dword [ebp - 0x490], eax
call ebx
test eax, eax
mov dword [ebp - 0x4e4], 0x3c
mov eax, dword [ebp - 0x4a8]
mov dword [ebp - 0x4e0], eax
setne byte [ebp - 0x48c]
lea eax, [ebp - 0x4a0]
mov dword [ebp - 0x4d0], 0x41
push 0x10
mov dword [ebp - 0x4d8], eax
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 8
test al, al
je 0x42220a
or dword [ebp - 0x4d0], 0x4000
lea eax, [ebp - 0x4e4]
push eax
call dword [sym.imp.COMDLG32.dll_ChooseFontW]
test eax, eax
je 0x422416
lea eax, [ebp - 0x484]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
test eax, eax
je 0x422416
push str.font:
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.00421d7a
pop ecx
test eax, eax
je 0x422287
push str.__smoothing:
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
je 0x4222db
mov al, byte [ebp - 0x489]
cmp al, 1
je 0x4222db
test al, al
je 0x4222db
movzx eax, al
cmp eax, dword [0x52a100]
je 0x4222db
push str.__charset:
lea eax, [ebp - 0x444]
push eax
call esi
movzx eax, byte [ebp - 0x489]
push eax
lea eax, [ebp - 0x44]
push 0x4bc474
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 str.__size:
lea eax, [ebp - 0x444]
push eax
call esi
mov eax, dword [ebp - 0x4d4]
push 0xa
pop ecx
cdq
idiv ecx
push eax
lea eax, [ebp - 0x44]
push 0x4bc474
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
mov eax, dword [ebp - 0x4b4]
test eax, 0x100
je 0x422336
push str.__bold
lea eax, [ebp - 0x444]
push eax
call esi
mov eax, dword [ebp - 0x4b4]
test eax, 0x200
je 0x42234b
push str.__italic
lea eax, [ebp - 0x444]
push eax
call esi
push str.underline
push edi
call ebx
test eax, eax
je 0x422365
push str.__underline
lea eax, [ebp - 0x444]
push eax
call esi
push str.eolfilled
push edi
call ebx
test eax, eax
je 0x42237f
push str.__eolfilled
lea eax, [ebp - 0x444]
push eax
call esi
lea edx, [ebp - 0x4a4]
mov ecx, edi
call fcn.00421fac
test eax, eax
je 0x4223bc
push str.__case:
lea eax, [ebp - 0x444]
push eax
call esi
cmp dword [ebp - 0x4a4], 1
mov ecx, 0x4bc498
mov eax, 0x4ec11c
cmovne eax, ecx
push eax
lea eax, [ebp - 0x444]
push eax
call esi
lea edx, [ebp - 0x4a4]
mov ecx, edi
call fcn.00422046
test eax, eax
je 0x422400
push 0x4ec120
lea eax, [ebp - 0x444]
push eax
call esi
push dword [ebp - 0x4a4]
lea eax, [ebp - 0x44]
push 0x4bc474
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 0x44]
lea ecx, [ebp - 0x444]
push eax
push ecx
call esi
push dword [ebp + 8]
lea ecx, [ebp - 0x444]
push ecx
push edi
call dword [sym.imp.KERNEL32.dll_lstrcpynW]
xor eax, eax
inc eax
jmp 0x422418
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00486c63
leave
ret