Function at 0x402800
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x26c
push esi
movzx eax, byte [ebp - 0xc1]
mov ecx, dword [0x42401c]
sub ecx, eax
movzx edx, byte [ebp - 0xe5]
sub ecx, edx
sub ecx, 0x39
mov word [ebp - 0xd4], cx
mov eax, dword [0x424004]
cmp eax, dword [ebp - 0xb4]
jle 0x40286b
movzx ecx, byte [ebp - 0x1c1]
mov edx, dword [0x424030]
and edx, dword [ebp - 0x100]
xor ecx, edx
or ecx, dword [0x42401c]
or ecx, 0x32
mov byte [ebp - 0x121], cl
mov eax, dword [0x424020]
add eax, 9
mov dword [ebp - 0x100], eax
mov ecx, 0x3c
sub ecx, dword [0x424024]
movzx edx, byte [ebp - 0x10a]
add ecx, edx
mov word [ebp - 0x1c8], cx
push 0x2e
mov eax, dword [ebp - 0x114]
push eax
call dword [sym.imp.USER32.dll_VkKeyScanExW]
mov ecx, dword [ebp - 4]
lea edx, [ecx + eax + 0x1d]
mov dword [ebp - 0x100], edx
mov eax, dword [ebp - 0x128]
mov dword [ebp - 0x68], eax
movzx ecx, byte [ebp - 0x1c1]
add ecx, dword [ebp - 0x260]
mov edx, dword [ebp - 0x110]
lea eax, [ecx + edx + 0x4c]
mov word [ebp - 0x1c], ax
mov ecx, dword [ebp - 0xf0]
mov dword [ebp - 0x26c], ecx
cmp dword [ebp - 0x26c], 0
je 0x4028e6
cmp dword [ebp - 0x26c], 1
je 0x4028f2
jmp 0x40290e
mov dword [ebp - 0x128], 0x3c
jmp 0x40292e
movzx edx, word [ebp - 0x1b4]
and edx, dword [ebp - 0xb4]
or edx, 0xb
or edx, 0x35
mov word [ebp - 0x250], dx
jmp 0x40292e
mov eax, dword [ebp - 0x110]
mov ecx, dword [ebp - 0xac]
lea edx, [ecx + eax + 0x4c]
mov eax, dword [ebp - 0x258]
lea ecx, [edx + eax - 0x15]
mov byte [ebp - 0xdd], cl
mov edx, dword [ebp - 0x258]
mov dword [ebp - 0x1f8], edx
movzx eax, byte [ebp - 6]
mov ecx, dword [ebp - 0xec]
sub ecx, eax
mov dword [ebp - 0x110], ecx
mov edx, dword [0x42402c]
sub edx, 9
movzx eax, word [ebp - 0x1c]
sub eax, edx
mov word [ebp - 0x1c], ax
movzx ecx, byte [0x424024]
mov dword [0x42401c], ecx
mov dword [ebp - 0x210], 4
mov dword [ebp - 0x130], 0x19b
mov dword [0x424028], 0x29
movzx edx, word [ebp - 0xc0]
movzx eax, word [ebp - 0xb8]
add edx, eax
movzx ecx, byte [ebp - 5]
and edx, ecx
mov word [ebp - 0x104], dx
movzx edx, byte [ebp - 0x10a]
sub edx, dword [0x424020]
and edx, 0x10
mov dword [ebp - 0x24c], edx
mov byte [ebp - 0x261], 0x49
mov eax, dword [ebp - 0x110]
push eax
call fcn.00403490
mov esi, eax
mov ecx, dword [ebp - 0xf0]
push ecx
call fcn.00403490
add esi, eax
movzx edx, byte [ebp - 7]
add edx, dword [ebp - 0x268]
and esi, edx
mov word [ebp - 0x1a8], si
mov dword [ebp - 0x1cc], 0x1385d
mov dword [0x424020], 0x39
mov eax, dword [0x424060]
or eax, 0x3e
mov dword [0x424060], eax
movzx ecx, word [ebp - 0x254]
movzx edx, word [ebp - 0x104]
lea eax, [ecx + edx + 6]
and eax, dword [0x42401c]
xor eax, dword [0x424028]
mov byte [ebp - 0x122], al
mov ecx, dword [0x424030]
add ecx, dword [ebp - 0xd0]
mov dword [0x424034], ecx
mov dx, word [0x42401c]
mov word [0x42401c], dx
call dword [sym.imp.KERNEL32.dll_ConvertFiberToThread]
mov ecx, 0x52
sub ecx, eax
sub ecx, dword [0x42401c]
sub ecx, dword [0x42401c]
and ecx, 0x11
mov byte [ebp - 0x261], cl
mov edx, dword [ebp - 0xec]
mov dword [ebp - 0x1b0], edx
mov eax, 0xffdf
mov word [ebp - 0xd4], ax
mov dword [ebp - 0x98], 0
mov ecx, dword [0x42403c]
add ecx, 0x55
mov dword [0x42403c], ecx
movzx edx, word [ebp - 0xc0]
mov eax, dword [ebp - 0x24c]
lea ecx, [eax + edx + 0x44]
mov word [ebp - 0x90], cx
mov edx, dword [ebp - 0xc]
add edx, 0xd
mov dword [0x424048], edx
mov eax, dword [ebp - 0x1c0]
add eax, 0x40
mov dword [ebp - 0xb4], eax
cmp dword [ebp - 0xec], 0xb
jge 0x402afb
mov dword [ebp - 0x110], 0x38
movzx ecx, word [ebp - 0xdc]
mov dword [ebp - 0xc], ecx
mov edx, dword [ebp - 0x114]
mov dword [ebp - 0x258], edx
mov eax, 0x24f8
mov word [ebp - 0x12c], ax
mov ecx, dword [ebp - 0xec]
mov edx, dword [ebp - 0xc]
lea eax, [edx + ecx - 0x41]
mov word [ebp - 0x250], ax
mov ecx, dword [ebp - 0x1cc]
mov dword [ebp - 0x98], ecx
mov edx, dword [0x424030]
or edx, 0x45
mov dword [0x424028], edx
mov esi, dword [0x424030]
add esi, 0x20
mov eax, dword [0x42402c]
push eax
push 0x56
mov ecx, dword [0x424034]
push ecx
call dword [sym.imp.GDI32.dll_GetKerningPairsA]
add eax, 0x42
and esi, eax
mov word [ebp - 0xb0], si
movzx edx, word [ebp - 0xd4]
sub edx, 0x61
mov word [ebp - 0xa4], dx
movzx eax, word [ebp - 0x217]
mov dword [ebp - 0x258], eax
mov dword [ebp - 0x148], 0x3a
movzx esi, byte [ebp - 0xdd]
add esi, 0x5a
mov ecx, dword [ebp - 0x258]
push ecx
push 0x1b
push 0x36
mov edx, dword [ebp - 0x128]
push edx
mov eax, dword [ebp - 0x110]
push eax
call dword [sym.imp.GDI32.dll_GetFontData]
sub esi, eax
mov dword [ebp - 0x248], esi
movzx ecx, byte [ebp - 0xc1]
movzx edx, word [ebp - 0xcc]
lea eax, [edx + ecx - 0x60]
mov word [ebp - 0xcc], ax
mov ecx, dword [ebp - 0x268]
add ecx, dword [ebp - 0xb4]
sub ecx, dword [ebp - 0x258]
mov edx, dword [ebp - 0x114]
lea eax, [ecx + edx + 0x4c]
mov byte [ebp - 0x261], al
mov eax, dword [ebp - 0x98]
pop esi
mov esp, ebp
pop ebp
ret