Function at 0x41b380
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 4
mov eax, dword [0x448dd0]
mov dword [0x44c254], 1
push esi
mov eax, dword [eax + 0x694]
push edi
test eax, eax
jne 0x41b3de
cmp dword [0x4488a4], 0
je 0x41b3b1
xor eax, eax
pop edi
pop esi
add esp, 4
ret 8
test eax, eax
jne 0x41b3de
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
cmp esi, 0x12
jne 0x41b3e6
test edi, 0x1000000
je 0x41b3e6
xor eax, eax
pop edi
mov dword [0x4488a4], 1
pop esi
add esp, 4
ret 8
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
cmp esi, 0x10
je 0x41b6cb
cmp esi, 0x11
je 0x41b6cb
cmp esi, 0x12
je 0x41b6cb
lea eax, [esp + 8]
push esi
push eax
call fcn.0041be30
test byte [esp + 0xa], 0x80
je 0x41b457
test byte [esp + 0xa], 0x60
jne 0x41b457
lea eax, [esi - 0xc]
cmp eax, 0x21
ja case.0x41b42a.15
xor ecx, ecx
mov cl, byte [eax + 0x41b6e8]
jmp dword [ecx*4 + 0x41b6d8]
cmp esi, 0x60
jl 0x41b457
cmp esi, 0x69
jg 0x41b457
xor eax, eax
pop edi
pop esi
add esp, 4
ret 8
test edi, 0x1000000
jne 0x41b457
xor eax, eax
pop edi
pop esi
add esp, 4
ret 8
mov eax, dword [0x448dd0]
cmp dword [eax + 0x8338], 0
je 0x41b48d
cmp esi, 0x1b
jne 0x41b48d
mov dword [0x44c254], 3
call dword [sym.imp.USER32.dll_GetFocus]
push eax
call fcn.00415eb0
mov eax, 1
pop edi
pop esi
add esp, 4
ret 8
call dword [sym.imp.USER32.dll_GetFocus]
sub eax, dword [0x448dcc]
cmp eax, 1
sbb edi, edi
inc edi
test byte [esp + 0xa], 0x40
je 0x41b4c6
cmp esi, 0x41
jl 0x41b4b0
cmp esi, 0x5a
jle 0x41b4bf
cmp esi, 0x30
jl 0x41b4ba
cmp esi, 0x39
jle 0x41b4bf
cmp esi, 0x20
jne 0x41b4c6
mov edx, 1
jmp 0x41b4c8
xor edx, edx
lea eax, [esi - 8]
cmp eax, 0x88
ja case.0x41b4da.16
xor ecx, ecx
mov cl, byte [eax + 0x41b730]
jmp dword [ecx*4 + 0x41b70c]
test byte [esp + 0xa], 0x80
jne case.0x41b4da.8
test edx, edx
jne case.0x41b4da.8
cmp esi, 0x1b
je case.0x41b4da.8
xor eax, eax
pop edi
pop esi
add esp, 4
ret 8
or dword [esp + 8], 0x100
test edi, edi
je 0x41b5e0
mov eax, dword [0x448d58]
cmp dword [eax + 0xb8], 0
je 0x41b5e0
test byte [esp + 0xa], 0x20
jne 0x41b5e0
cmp esi, 0x1b
jne 0x41b5e0
call fcn.00432720
mov eax, 1
pop edi
mov dword [0x44c254], 3
pop esi
add esp, 4
ret 8
push 0x14
call dword [sym.imp.USER32.dll_GetKeyState]
xor ecx, ecx
mov cx, ax
mov eax, dword [0x448dd0]
and ecx, 1
mov dword [eax + 0xb58], ecx
mov eax, dword [0x448dd0]
cmp byte [eax + 0x708], 0
jne 0x41b58b
push 0
add eax, 0x8e4
push eax
mov ecx, dword [0x448dc8]
push ecx
call dword [sym.imp.USER32.dll_InvalidateRect]
xor eax, eax
pop edi
pop esi
add esp, 4
ret 8
push 0x90
call dword [sym.imp.USER32.dll_GetKeyState]
xor ecx, ecx
mov cx, ax
mov eax, dword [0x448dd0]
and ecx, 1
mov dword [eax + 0xb5c], ecx
mov eax, dword [0x448dd0]
cmp byte [eax + 0x708], 0
jne 0x41b5d6
push 0
add eax, 0x8c0
push eax
mov ecx, dword [0x448dc8]
push ecx
call dword [sym.imp.USER32.dll_InvalidateRect]
xor eax, eax
pop edi
pop esi
add esp, 4
ret 8
cmp dword [0x4488a0], 0
je 0x41b642
push edi
call fcn.0041bc00
test byte [esp + 0xa], 0xe0
jne 0x41b61c
cmp esi, 0x1b
jne 0x41b61c
mov eax, 1
pop edi
mov dword [0x4488a0], 0
mov dword [0x44c254], 3
pop esi
add esp, 4
ret 8
mov eax, dword [0x4488a0]
push edi
mov dword [0x4488a0], 0
or dword [esp + 0xc], eax
mov ecx, dword [esp + 0xc]
push ecx
call fcn.0041b970
pop edi
pop esi
add esp, 4
ret 8
test byte [esp + 0xa], 0xa0
jne 0x41b6b8
test edx, edx
je 0x41b657
cmp esi, 0x41
jl 0x41b657
cmp esi, 0x5a
jle 0x41b65c
cmp esi, 0x1b
jne 0x41b6b8
mov ecx, 0x1b
cmp esi, 0x1b
je 0x41b669
lea ecx, [esi - 0x40]
mov eax, 1
shl eax, cl
test dword [0x449388], eax
je 0x41b6b8
cmp esi, 0x1b
jne 0x41b689
mov dword [0x4488a0], 0x1b000000
jmp 0x41b695
sub esi, 0x40
shl esi, 0x18
mov dword [0x4488a0], esi
push edi
mov eax, dword [0x4488a0]
push eax
call fcn.0041bb20
mov eax, 1
pop edi
mov dword [0x44c254], 3
pop esi
add esp, 4
ret 8
mov eax, dword [esp + 8]
push edi
push eax
call fcn.0041b970
pop edi
pop esi
add esp, 4
ret 8
xor eax, eax
pop edi
pop esi
add esp, 4
ret 8