Function at 0x4103b7
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
push ebx
mov ebx, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
push esi
mov esi, dword [ebp + 0x14]
push edi
cmp dword [ebx + 0x24d4], 0x19
jne 0x4105e2
xor edi, edi
test esi, esi
mov word [ebp - 8], di
mov word [ebp - 4], di
jne 0x4103f5
mov dword [ebp + 0xc], edx
call fcn.00404960
mov esi, eax
mov edi, 0xffffffff
jmp 0x410410
mov dword [ebp + 0xc], edx
push 0x10
call dword [sym.imp.USER32.DLL_GetKeyState]
mov word [ebp - 8], ax
push 0x11
call dword [sym.imp.USER32.DLL_GetKeyState]
mov word [ebp - 4], ax
mov edx, dword [ebp + 0xc]
cmp edx, 0x52
jne 0x410440
fld qword [ebx + 0x3164]
fld qword [ebx + 0x316c]
fld qword [ebx + 0x3174]
fxch st(2)
fstp qword [ebx + 0x317c]
fstp qword [ebx + 0x3184]
fstp qword [ebx + 0x318c]
jmp 0x410481
cmp edx, 0x55
jne 0x410481
mov dword [ebx + 0x317c], 0
mov dword [ebx + 0x3180], 0
mov dword [ebx + 0x3184], 0
mov dword [ebx + 0x3188], 0
mov dword [ebx + 0x318c], 0
mov dword [ebx + 0x3190], 0
cmp edx, 0x52
je 0x41048b
cmp edx, 0x55
jne 0x4104c2
push 1
mov esi, dword [ebp + 8]
push ebx
push esi
call dword [sym.imp.USER32.DLL_GetDC]
mov edi, eax
push eax
push esi
call fcn.00424654
push 1
push ebx
push edi
push esi
call fcn.00424c6c
push edi
push esi
call dword [sym.imp.USER32.DLL_ReleaseDC]
add esp, 0x20
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [esi + 0x688], 0
jg 0x4105e2
mov word [ebp - 6], di
mov eax, dword [esi + 0x68c]
lea edi, [esi + 0x828]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 1
ja 0x4105e2
mov dword [ebp - 0xc], eax
mov eax, 1
mov ecx, dword [ebp - 0x10]
shl eax, cl
cmp eax, dword [edi + 0xac]
jne 0x41050f
mov eax, dword [ebp - 0xc]
mov eax, dword [edi + 0xa8]
sar eax, 1
mov dword [ebp - 0xc], eax
mov ecx, dword [ebx + 0x24d8]
cmp ecx, 0x835
jne 0x41052b
mov eax, dword [ebp - 0xc]
lea ecx, [edi + eax*8]
fld qword [ecx + 0x40]
fstp qword [ebp - 0x30]
jmp 0x410543
mov eax, dword [ebp - 0xc]
cmp ecx, 0x838
jne 0x4105e2
lea ecx, [edi + eax*8]
fld qword [ecx + 0x50]
fstp qword [ebp - 0x30]
cmp word [ebp - 6], 0
jns 0x410555
fld qword [0x46c40c]
fstp qword [ebp - 0x28]
jmp 0x410582
cmp word [ebp - 4], 0
jns 0x410567
fld qword [0x46c3cc]
fstp qword [ebp - 0x28]
jmp 0x410582
cmp word [ebp - 8], 0
jns 0x410579
fld qword [0x46c384]
fstp qword [ebp - 0x28]
jmp 0x410582
fld qword [0x46c414]
fstp qword [ebp - 0x28]
lea ecx, [ebx + eax*8]
cmp edx, 0x26
fld qword [ecx + 0x311c]
fstp qword [ebp - 0x20]
jne 0x41059e
fld qword [ebp - 0x28]
fadd qword [ebp - 0x20]
fstp qword [ebp - 0x20]
jmp 0x4105eb
cmp edx, 0x28
jne 0x4105ae
fld qword [ebp - 0x28]
fsubr qword [ebp - 0x20]
fstp qword [ebp - 0x20]
jmp 0x4105eb
cmp edx, 0x24
je 0x4105b8
cmp edx, 0x1b
jne 0x4105c0
fld qword [ebp - 0x30]
fstp qword [ebp - 0x20]
jmp 0x4105eb
cmp edx, 0xd
jne 0x4105e2
push 0xffffffffffffffff
push esi
push ebx
call fcn.0041505b
add esp, 0xc
push esi
push ebx
call fcn.00410693
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
xor eax, eax
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea edx, [ebx + eax*8]
fld qword [ebp - 0x20]
mov ecx, dword [ebp - 0x10]
fstp qword [edx + 0x311c]
mov edx, 1
shl edx, cl
cmp edx, dword [edi + 0xac]
jne 0x410618
mov edx, dword [ebp - 0x10]
lea ecx, [ebx + edx*8]
fld qword [ebp - 0x20]
fstp qword [ecx + 0x311c]
fld qword [ebp - 0x20]
fsub qword [ebp - 0x30]
fabs
fcomp qword [0x46c41c]
fnstsw ax
sahf
seta dl
movzx edx, dl
mov dword [ebx + 0x3118], edx
mov ecx, dword [esi + 0x670]
mov dword [ebp - 0x14], ecx
push 0x7f02
call fcn.0044e4dc
mov edx, dword [edi + 0x88]
xor ecx, ecx
mov dword [ebp - 0x18], edx
mov dword [edi + 0x88], ecx
push 0x19
call fcn.00436f1c
push esi
push ebx
push dword [ebp + 8]
call fcn.0040c370
push 0
push esi
push ebx
call fcn.0041505b
push dword [ebp - 0x14]
call fcn.0044e4dc
mov edx, dword [ebp - 0x18]
mov eax, 1
mov dword [edi + 0x88], edx
add esp, 0x24
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret