Function at 0x41d190
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x48
mov eax, dword [0x4951c0]
xor eax, esp
mov dword [esp + 0x44], eax
push esi
mov esi, dword [esp + 0x50]
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x41d1a8
sub eax, edx
cmp eax, 1
jne 0x41d1c9
movsx eax, byte [esi]
push eax
call fcn.0040a2f9
add esp, 4
mov esi, eax
jmp 0x41d819
push ebp
push edi
lea ebp, [esp + 0x10]
xor edi, edi
mov byte [esp + 0x4f], 0
sub ebp, esi
mov al, byte [esi]
test al, al
je 0x41d1f6
movsx ecx, al
push ecx
call fcn.0040a2f9
mov byte [esi + ebp], al
inc edi
add esp, 4
inc esi
cmp edi, 0x3f
jl 0x41d1d8
jmp 0x41d1fb
mov byte [esp + edi + 0x10], 0
pop edi
mov ecx, 0x47d40c
lea eax, [esp + 0xc]
pop ebp
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d226
test dl, dl
je 0x41d222
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d226
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d206
xor eax, eax
jmp 0x41d22b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x41d80e
mov ecx, 0x47d410
lea eax, [esp + 8]
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d260
test dl, dl
je 0x41d25c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d260
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d240
xor eax, eax
jmp 0x41d265
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x41d80e
mov ecx, 0x47d418
lea eax, [esp + 8]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d296
test dl, dl
je 0x41d292
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d296
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d276
xor eax, eax
jmp 0x41d29b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d2a7
lea esi, [eax + 0x1b]
jmp 0x41d819
mov ecx, 0x47d41c
lea eax, [esp + 8]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d2d0
test dl, dl
je 0x41d2cc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d2d0
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d2b0
xor eax, eax
jmp 0x41d2d5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d2e1
lea esi, [eax + 0x11]
jmp 0x41d819
mov ecx, 0x47d424
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d310
test dl, dl
je 0x41d30c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d310
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d2f0
xor eax, eax
jmp 0x41d315
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d321
lea esi, [eax + 0x26]
jmp 0x41d819
mov ecx, 0x47d428
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d350
test dl, dl
je 0x41d34c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d350
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d330
xor eax, eax
jmp 0x41d355
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d361
lea esi, [eax + 0x28]
jmp 0x41d819
mov ecx, 0x47d430
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d390
test dl, dl
je 0x41d38c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d390
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d370
xor eax, eax
jmp 0x41d395
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d3a1
lea esi, [eax + 0x25]
jmp 0x41d819
mov ecx, 0x47d438
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d3d0
test dl, dl
je 0x41d3cc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d3d0
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d3b0
xor eax, eax
jmp 0x41d3d5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d3e1
lea esi, [eax + 0x27]
jmp 0x41d819
mov ecx, 0x47d440
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d410
test dl, dl
je 0x41d40c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d410
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d3f0
xor eax, eax
jmp 0x41d415
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d421
lea esi, [eax + 0x70]
jmp 0x41d819
mov ecx, 0x47d444
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d450
test dl, dl
je 0x41d44c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d450
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d430
xor eax, eax
jmp 0x41d455
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d461
lea esi, [eax + 0x71]
jmp 0x41d819
mov ecx, 0x47d448
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d490
test dl, dl
je 0x41d48c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d490
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d470
xor eax, eax
jmp 0x41d495
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d4a1
lea esi, [eax + 0x72]
jmp 0x41d819
mov ecx, 0x47d44c
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d4d0
test dl, dl
je 0x41d4cc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d4d0
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d4b0
xor eax, eax
jmp 0x41d4d5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d4e1
lea esi, [eax + 0x73]
jmp 0x41d819
mov ecx, 0x47d450
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d510
test dl, dl
je 0x41d50c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d510
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d4f0
xor eax, eax
jmp 0x41d515
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d521
lea esi, [eax + 0x74]
jmp 0x41d819
mov ecx, 0x47d454
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d550
test dl, dl
je 0x41d54c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d550
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d530
xor eax, eax
jmp 0x41d555
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d561
lea esi, [eax + 0x75]
jmp 0x41d819
mov ecx, 0x47d458
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d590
test dl, dl
je 0x41d58c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d590
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d570
xor eax, eax
jmp 0x41d595
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d5a1
lea esi, [eax + 0x76]
jmp 0x41d819
mov ecx, 0x47d45c
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d5d0
test dl, dl
je 0x41d5cc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d5d0
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d5b0
xor eax, eax
jmp 0x41d5d5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d5e1
lea esi, [eax + 0x77]
jmp 0x41d819
mov ecx, 0x47d460
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d610
test dl, dl
je 0x41d60c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d610
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d5f0
xor eax, eax
jmp 0x41d615
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d621
lea esi, [eax + 0x78]
jmp 0x41d819
mov ecx, 0x47d464
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d650
test dl, dl
je 0x41d64c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d650
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d630
xor eax, eax
jmp 0x41d655
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d661
lea esi, [eax + 0x79]
jmp 0x41d819
mov ecx, 0x47d468
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d690
test dl, dl
je 0x41d68c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d690
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d670
xor eax, eax
jmp 0x41d695
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d6a1
lea esi, [eax + 0x7a]
jmp 0x41d819
mov ecx, 0x47d46c
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d6d0
test dl, dl
je 0x41d6cc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d6d0
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d6b0
xor eax, eax
jmp 0x41d6d5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d6e1
lea esi, [eax + 0x7b]
jmp 0x41d819
mov ecx, 0x47d470
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d710
test dl, dl
je 0x41d70c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d710
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d6f0
xor eax, eax
jmp 0x41d715
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d721
lea esi, [eax + 0xd]
jmp 0x41d819
mov ecx, 0x47d478
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d750
test dl, dl
je 0x41d74c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d750
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d730
xor eax, eax
jmp 0x41d755
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d761
lea esi, [eax + 0xd]
jmp 0x41d819
mov ecx, 0x47d480
lea eax, [esp + 8]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d790
test dl, dl
je 0x41d78c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d790
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d770
xor eax, eax
jmp 0x41d795
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d79e
lea esi, [eax + 0x21]
jmp 0x41d819
mov ecx, 0x47d488
lea eax, [esp + 8]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d7c7
test dl, dl
je 0x41d7c3
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d7c7
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d7a7
xor eax, eax
jmp 0x41d7cc
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d7d5
lea esi, [eax + 0x22]
jmp 0x41d819
mov ecx, 0x47d494
lea eax, [esp + 8]
mov edi, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41d800
test dl, dl
je 0x41d7fc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41d800
add eax, 2
add ecx, 2
test dl, dl
jne 0x41d7e0
xor eax, eax
jmp 0x41d805
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41d815
lea esi, [eax + 0x10]
jmp 0x41d819
mov esi, 0x20
jmp 0x41d819
mov esi, dword [esp + 4]
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov edx, dword [0x49ab6c]
cmp eax, dword [edx + 0x10]
je 0x41d83c
xor eax, eax
pop esi
mov ecx, dword [esp + 0x44]
xor ecx, esp
call fcn.00407f40
add esp, 0x48
ret
push esi
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x8000
and ax, cx
mov ecx, dword [esp + 0x48]
xor dx, dx
cmp dx, ax
pop esi
sbb eax, eax
xor ecx, esp
neg eax
call fcn.00407f40
add esp, 0x48
ret