Function at 0x41d666
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
push edi
mov edi, ecx
mov ecx, dword [0x4e8088]
mov dword [ebp - 0xc], edi
test ecx, ecx
je case.default.0x41d9ee
add ecx, 8
mov dword [ebp - 4], ecx
call fcn.0041ccf0
xor ebx, ebx
mov esi, eax
mov eax, 0x204
inc ebx
cmp edx, eax
ja 0x41d9c5
je 0x41d7c0
mov eax, 0x100
cmp edx, 0x104
ja 0x41d787
je 0x41d74a
mov eax, edx
sub eax, 7
je 0x41d773
sub eax, ebx
je 0x41d773
sub eax, 0x18
je 0x41d752
sub eax, 0xe0
je 0x41d73d
sub eax, ebx
je 0x41d73d
sub eax, ebx
jne case.default.0x41d9ee
push edi
call dword [sym.imp.USER32.dll_IsWindowUnicode]
test eax, eax
je 0x41d711
mov edx, dword [ebp + 8]
lea eax, [edx - 1]
cmp eax, 0xfffe
ja case.default.0x41d9ee
mov ecx, dword [ebp - 4]
push edx
call fcn.00402387
jmp case.default.0x41d9ee
and dword [ebp - 8], 0
lea eax, [ebp - 8]
xor ebx, ebx
inc ebx
push ebx
push eax
push ebx
lea eax, [ebp + 8]
push eax
push ebx
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
movzx eax, word [ebp - 8]
mov ecx, dword [ebp - 4]
push eax
call fcn.00402333
jmp case.default.0x41d9ee
mov eax, 0x100
cmp edx, eax
jne 0x41d87f
mov byte [ebp - 4], bl
jmp 0x41d883
xor ebx, ebx
inc ebx
cmp word [ebp + 0xc], bx
jne case.default.0x41d9ee
call fcn.0041cdb8
test al, al
je case.default.0x41d9ee
mov eax, ebx
jmp 0x41dab1
cmp edx, 7
sete al
movzx eax, al
push eax
call fcn.004027d8
jmp case.default.0x41d9ee
mov eax, edx
sub eax, 0x105
je 0x41d87a
sub eax, 0xfb
je 0x41d82c
sub eax, 1
je case.0x41d9ee.518
sub eax, 1
je case.0x41d9ee.517
sub eax, 1
jne case.default.0x41d9ee
xor edi, edi
cmp edx, 0x206
jne 0x41d7c2
mov edi, ebx
cmp edx, 0x207
je 0x41d7d2
cmp edx, 0x209
jne 0x41d7d5
push 2
pop edi
cmp edx, 0x20b
je 0x41d7e5
cmp edx, 0x20d
jne 0x41d7fb
mov eax, dword [ebp + 8]
xor ecx, ecx
shr eax, 0x10
cmp ax, bx
setne cl
add ecx, 3
mov dword [ebp - 8], ecx
mov edi, ecx
cmp dword [esi + 0xc], 0
jne 0x41d814
call dword [sym.imp.USER32.dll_GetCapture]
test eax, eax
jne 0x41d814
push dword [ebp - 0xc]
call dword [sym.imp.USER32.dll_SetCapture]
mov eax, dword [esi + 0xc]
mov ecx, dword [ebp - 4]
bts eax, edi
push ebx
mov dword [esi + 0xc], eax
push edi
call fcn.004026e9
jmp case.default.0x41d9ee
cmp byte [esi + 8], 0
mov dword [esi + 4], edi
jne 0x41d858
and dword [ebp - 0x10], 0
lea eax, [ebp - 0x1c]
push eax
mov dword [ebp - 0x1c], 0x10
mov dword [ebp - 0x18], 2
mov dword [ebp - 0x14], edi
call dword [sym.imp.USER32.dll_TrackMouseEvent]
mov byte [esi + 8], 1
mov ecx, dword [ebp + 0xc]
mov eax, ecx
shr eax, 0x10
cwde
movd xmm2, eax
movsx eax, cx
mov ecx, dword [ebp - 4]
cvtdq2ps xmm2, xmm2
movd xmm1, eax
cvtdq2ps xmm1, xmm1
jmp 0x41daaa
mov eax, 0x100
mov byte [ebp - 4], 0
cmp dword [ebp + 8], eax
jae case.default.0x41d9ee
call fcn.0041cf22
mov esi, dword [ebp + 8]
cmp esi, 0xd
jne 0x41d8ac
mov eax, dword [ebp + 0xc]
shr eax, 0x10
bt ax, 8
mov eax, 0x10d
cmovb esi, eax
mov ecx, esi
call fcn.0041d121
mov edi, dword [ebp - 4]
test eax, eax
je 0x41d8c9
push edi
push eax
mov eax, dword [0x4e8088]
lea ecx, [eax + 8]
call fcn.004025a6
cmp esi, 0x10
jne 0x41d918
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0xa0
call esi
shr eax, 0xf
and al, bl
cmp al, byte [ebp - 4]
jne 0x41d8f8
mov eax, dword [0x4e8088]
push edi
push 0x210
lea ecx, [eax + 8]
call fcn.004025a6
push 0xa1
call esi
shr eax, 0xf
and al, bl
cmp al, byte [ebp - 4]
jne case.default.0x41d9ee
push edi
push 0x214
jmp 0x41d9b2
cmp esi, 0x11
jne 0x41d964
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0xa2
call esi
shr eax, 0xf
and al, bl
cmp al, byte [ebp - 4]
jne 0x41d947
mov eax, dword [0x4e8088]
push edi
push 0x20f
lea ecx, [eax + 8]
call fcn.004025a6
push 0xa3
call esi
shr eax, 0xf
and al, bl
cmp al, byte [ebp - 4]
jne case.default.0x41d9ee
push edi
push 0x213
jmp 0x41d9b2
cmp esi, 0x12
jne case.default.0x41d9ee
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0xa4
call esi
shr eax, 0xf
and al, bl
cmp al, byte [ebp - 4]
jne 0x41d997
mov eax, dword [0x4e8088]
push edi
push 0x211
lea ecx, [eax + 8]
call fcn.004025a6
push 0xa5
call esi
shr eax, 0xf
and al, bl
cmp al, byte [ebp - 4]
jne case.default.0x41d9ee
push edi
push 0x215
mov ecx, dword [0x4e8088]
lea ecx, [ecx + 8]
call fcn.004025a6
jmp case.default.0x41d9ee
mov eax, 0x219
cmp edx, eax
ja 0x41da8a
je case.default.0x41d9ee
lea eax, [edx - 0x205]
cmp eax, 9
ja case.default.0x41d9ee
movzx eax, byte [eax + 0x41dac6]
jmp dword [eax*4 + 0x41dab6]
xor ebx, ebx
cmp edx, 0x205
sete bl
cmp edx, 0x208
jne 0x41da0d
push 2
pop ebx
jmp 0x41da27
cmp edx, 0x20c
jne 0x41da27
mov eax, dword [ebp + 8]
xor ebx, ebx
shr eax, 0x10
cmp ax, 1
setne bl
add ebx, 3
mov eax, dword [esi + 0xc]
btr eax, ebx
mov dword [esi + 0xc], eax
test eax, eax
jne 0x41da47
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, edi
jne 0x41da44
call dword [sym.imp.USER32.dll_ReleaseCapture]
mov ecx, dword [ebp - 4]
push 0
push ebx
jmp 0x41d822
mov eax, dword [ebp + 8]
xorps xmm1, xmm1
shr eax, 0x10
cwde
movd xmm2, eax
cvtdq2ps xmm2, xmm2
mulss xmm2, dword [0x49041c]
call fcn.0040275f
jmp case.default.0x41d9ee
mov eax, dword [ebp + 8]
xorps xmm2, xmm2
shr eax, 0x10
cwde
movd xmm1, eax
cvtdq2ps xmm1, xmm1
mulss xmm1, dword [0x49041c]
jmp 0x41da68
cmp edx, 0x2a3
jne case.default.0x41d9ee
cmp dword [esi + 4], edi
jne 0x41da9b
and dword [esi + 4], 0
movss xmm1, dword [0x49075c]
mov byte [esi + 8], 0
movaps xmm2, xmm1
call fcn.004025cf
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret