Function at 0x1004df40
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x60
mov eax, dword [0x100ec500]
xor eax, ebp
mov dword [esp + 0x58], eax
call fcn.10027920
mov dword [esp + 0x14], eax
call fcn.10025bf0
mov ebx, 0
test eax, eax
je 0x1004df76
call fcn.10027920
mov ebx, dword [eax + 0x64]
xorps xmm0, xmm0
movaps xmmword [esp + 0x30], xmm0
mov eax, dword [ebx]
lea ecx, [esp + 0x30]
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [sym.imp.USER32.dll_GetClientRect]
sub esp, 8
movq xmm0, qword [esp + 0x30]
movq xmm1, qword [esp + 0x38]
psubd xmm1, xmm0
cvtdq2ps xmm0, xmm1
mov esi, dword [esp + 0x14]
movlps qword [esi + 8], xmm0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
lea eax, [esp + 0x28]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
sub esp, 4
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov edx, eax
sub edx, dword [ebx + 0x10]
mov edi, ecx
sbb edi, dword [ebx + 0x14]
movd xmm0, edx
movd xmm1, edi
punpckldq xmm0, xmm1
movq qword [esp + 0x20], xmm0
fild qword [esp + 0x20]
fstp dword [esp + 0x18]
movss xmm0, dword [esp + 0x18]
fild qword [ebx + 0x18]
fstp dword [esp + 0x1c]
divss xmm0, dword [esp + 0x1c]
movss dword [esi + 0x10], xmm0
mov dword [ebx + 0x14], ecx
mov dword [ebx + 0x10], eax
call fcn.10025bf0
test eax, eax
mov esi, 0
je 0x1004e02f
call fcn.10027920
mov esi, dword [eax + 0x64]
call fcn.10027920
mov edi, eax
call dword [sym.imp.USER32.dll_GetForegroundWindow]
cmp eax, dword [esi]
je 0x1004e1cd
mov dword [esp], 0x210
call fcn.10036bf0
test al, al
je 0x1004e09e
mov dword [esp], 0xa0
call dword [sym.imp.USER32.dll_GetKeyState]
sub esp, 4
test ax, ax
js 0x1004e09e
call fcn.10027920
mov edi, eax
mov dword [esp + 4], 0
mov dword [esp], 0x210
mov ecx, eax
call fcn.10021640
sub esp, 8
movaps xmm0, xmmword [0x1007b830]
movups xmmword [esp], xmm0
mov ecx, edi
call fcn.10021680
sub esp, 0x10
mov dword [esp], 0x214
call fcn.10036bf0
test al, al
je 0x1004e0f8
mov dword [esp], 0xa1
call dword [sym.imp.USER32.dll_GetKeyState]
sub esp, 4
test ax, ax
js 0x1004e0f8
call fcn.10027920
mov edi, eax
mov dword [esp + 4], 0
mov dword [esp], 0x214
mov ecx, eax
call fcn.10021640
sub esp, 8
movaps xmm0, xmmword [0x1007b840]
movups xmmword [esp], xmm0
mov ecx, edi
call fcn.10021680
sub esp, 0x10
mov dword [esp], 0x212
call fcn.10036bf0
test al, al
je 0x1004e152
mov dword [esp], 0x5b
call dword [sym.imp.USER32.dll_GetKeyState]
sub esp, 4
test ax, ax
js 0x1004e152
call fcn.10027920
mov edi, eax
mov dword [esp + 4], 0
mov dword [esp], 0x212
mov ecx, eax
call fcn.10021640
sub esp, 8
movaps xmm0, xmmword [0x1007b850]
movups xmmword [esp], xmm0
mov ecx, edi
call fcn.10021680
sub esp, 0x10
mov dword [esp], 0x216
call fcn.10036bf0
test al, al
je 0x1004e1ac
mov dword [esp], 0x5c
call dword [sym.imp.USER32.dll_GetKeyState]
sub esp, 4
test ax, ax
js 0x1004e1ac
call fcn.10027920
mov edi, eax
mov dword [esp + 4], 0
mov dword [esp], 0x216
mov ecx, eax
call fcn.10021640
sub esp, 8
movaps xmm0, xmmword [0x1007b860]
movups xmmword [esp], xmm0
mov ecx, edi
call fcn.10021680
sub esp, 0x10
mov eax, 0xffffffff
mov ecx, dword [esp + 0x14]
cmp byte [ecx + 0x50], 0
je 0x1004e292
cmp dword [ebx + 0x20], eax
jne 0x1004e2a0
jmp 0x1004e331
cmp byte [edi + 0x87], 0
je 0x1004e226
movsd xmm0, qword [edi + 0xda8]
cvttps2dq xmm0, xmm0
movlps qword [esp + 0x40], xmm0
mov eax, dword [esi]
lea ecx, [esp + 0x40]
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [sym.imp.USER32.dll_ClientToScreen]
sub esp, 8
test eax, eax
je 0x1004e219
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [sym.imp.USER32.dll_SetCursorPos]
sub esp, 8
cmp byte [edi + 0x87], 0
jne 0x1004e044
cmp byte [esi + 8], 0
jne 0x1004e044
lea eax, [esp + 0x40]
mov dword [esp], eax
call dword [sym.imp.USER32.dll_GetCursorPos]
sub esp, 4
test eax, eax
je 0x1004e044
mov eax, dword [esi]
lea ecx, [esp + 0x40]
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [sym.imp.USER32.dll_ScreenToClient]
sub esp, 8
test eax, eax
je 0x1004e044
xorps xmm0, xmm0
cvtsi2ss xmm0, dword [esp + 0x44]
xorps xmm1, xmm1
cvtsi2ss xmm1, dword [esp + 0x40]
movss dword [esp + 4], xmm0
movss dword [esp], xmm1
mov ecx, edi
call fcn.100216b0
sub esp, 8
jmp 0x1004e044
call fcn.10036dd0
cmp dword [ebx + 0x20], eax
je 0x1004e331
mov dword [ebx + 0x20], eax
call fcn.10027920
test byte [eax], 0x20
jne 0x1004e331
mov esi, eax
call fcn.10036dd0
mov ecx, eax
xor eax, eax
cmp ecx, 0xffffffff
je 0x1004e325
cmp byte [esi + 0x50], 0
jne 0x1004e325
dec ecx
cmp ecx, 7
ja case.default.0x1004e2cd
jmp dword [ecx*4 + 0x1007b87c]
mov eax, 0x7f01
jmp 0x1004e311
mov eax, 0x7f00
jmp 0x1004e311
mov eax, 0x7f86
jmp 0x1004e311
mov eax, 0x7f85
jmp 0x1004e311
mov eax, 0x7f84
jmp 0x1004e311
mov eax, 0x7f83
jmp 0x1004e311
mov eax, 0x7f82
jmp 0x1004e311
mov eax, 0x7f89
jmp 0x1004e311
mov eax, 0x7f88
mov dword [esp + 4], eax
mov dword [esp], 0
call dword [sym.imp.USER32.dll_LoadCursorW]
sub esp, 8
mov dword [esp], eax
call dword [sym.imp.USER32.dll_SetCursor]
sub esp, 4
call fcn.10027920
mov esi, eax
call fcn.10025bf0
test eax, eax
je 0x1004e351
call fcn.10027920
mov edi, dword [eax + 0x64]
cmp byte [edi + 0x25], 0
jne 0x1004e359
jmp 0x1004e39c
xor edi, edi
cmp byte [edi + 0x25], 0
je 0x1004e39c
xorps xmm0, xmm0
movaps xmmword [esp + 0x40], xmm0
mov dword [esp + 0x50], 0
mov eax, dword [edi + 0x2c]
test eax, eax
je 0x1004e393
lea ecx, [esp + 0x40]
mov dword [esp + 8], ecx
mov dword [esp + 4], 1
mov dword [esp], 0
call eax
sub esp, 0xc
test eax, eax
sete al
jmp 0x1004e395
xor eax, eax
mov byte [edi + 0x24], al
mov byte [edi + 0x25], 0
and byte [esi + 4], 0xfe
cmp byte [edi + 0x24], 0
je 0x1004e8f3
mov eax, dword [edi + 0x30]
test eax, eax
je 0x1004e8f3
lea ecx, [esp + 0x40]
mov dword [esp + 4], ecx
mov dword [esp], 0
call eax
sub esp, 8
test eax, eax
jne 0x1004e8f3
or byte [esi + 4], 1
movzx eax, word [esp + 0x44]
and eax, 0x10
shr eax, 4
mov dword [esp + 4], eax
mov dword [esp], 0x269
mov ecx, esi
call fcn.10021640
sub esp, 8
movzx eax, word [esp + 0x44]
and eax, 0x20
shr eax, 5
mov dword [esp + 4], eax
mov dword [esp], 0x26a
mov ecx, esi
call fcn.10021640
sub esp, 8
movzx eax, word [esp + 0x44]
shr eax, 0xe
and eax, 1
mov dword [esp + 4], eax
mov dword [esp], 0x26b
mov ecx, esi
call fcn.10021640
sub esp, 8
movzx eax, word [esp + 0x44]
shr eax, 0xd
and eax, 1
mov dword [esp + 4], eax
mov dword [esp], 0x26c
mov ecx, esi
call fcn.10021640
sub esp, 8
movzx eax, word [esp + 0x44]
shr eax, 0xf
mov dword [esp + 4], eax
mov dword [esp], 0x26d
mov ecx, esi
call fcn.10021640
sub esp, 8
movzx eax, word [esp + 0x44]
shr eax, 0xc
and eax, 1
mov dword [esp + 4], eax
mov dword [esp], 0x26e
mov ecx, esi
call fcn.10021640
sub esp, 8
movzx eax, word [esp + 0x44]
and eax, 4
shr eax, 2
mov dword [esp + 4], eax
mov dword [esp], 0x26f
mov ecx, esi
call fcn.10021640
sub esp, 8
movzx eax, word [esp + 0x44]
and eax, 8
shr eax, 3
mov dword [esp + 4], eax
mov dword [esp], 0x270
mov ecx, esi
call fcn.10021640
sub esp, 8
movzx eax, word [esp + 0x44]
and eax, 1
mov dword [esp + 4], eax
mov dword [esp], 0x271
mov ecx, esi
call fcn.10021640
sub esp, 8
movzx eax, word [esp + 0x44]
and eax, 2
shr eax, 1
mov dword [esp + 4], eax
mov dword [esp], 0x272
mov ecx, esi
call fcn.10021640
sub esp, 8
movzx eax, byte [esp + 0x45]
and eax, 1
mov dword [esp + 4], eax
mov dword [esp], 0x273
mov ecx, esi
call fcn.10021640
sub esp, 8
movzx eax, word [esp + 0x44]
shr eax, 9
and eax, 1
mov dword [esp + 4], eax
mov dword [esp], 0x274
mov ecx, esi
call fcn.10021640
sub esp, 8
movzx eax, byte [esp + 0x46]
add eax, 0xffffffe2
cvtsi2ss xmm0, eax
divss xmm0, dword [0x1007b870]
movss xmm1, dword [0x1006d630]
minss xmm1, xmm0
xorps xmm2, xmm2
xor eax, eax
ucomiss xmm0, dword [0x100742f0]
cmpltss xmm0, xmm2
andnps xmm0, xmm1
seta al
mov dword [esp + 4], eax
movss dword [esp + 8], xmm0
mov dword [esp], 0x275
mov ecx, esi
call fcn.10021420
sub esp, 0xc
movzx eax, byte [esp + 0x47]
add eax, 0xffffffe2
xorps xmm0, xmm0
cvtsi2ss xmm0, eax
divss xmm0, dword [0x1007b870]
movss xmm1, dword [0x1006d630]
minss xmm1, xmm0
xor eax, eax
ucomiss xmm0, dword [0x100742f0]
cmpltss xmm0, dword [0x10074150]
andnps xmm0, xmm1
seta al
mov dword [esp + 4], eax
movss dword [esp + 8], xmm0
mov dword [esp], 0x276
mov ecx, esi
call fcn.10021420
sub esp, 0xc
movzx eax, word [esp + 0x44]
and eax, 0x40
shr eax, 6
mov dword [esp + 4], eax
mov dword [esp], 0x277
mov ecx, esi
call fcn.10021640
sub esp, 8
movzx eax, byte [esp + 0x44]
shr al, 7
movzx eax, al
mov dword [esp + 4], eax
mov dword [esp], 0x278
mov ecx, esi
call fcn.10021640
sub esp, 8
movsx eax, word [esp + 0x48]
add eax, 0x1ea9
xorps xmm0, xmm0
cvtsi2ss xmm0, eax
divss xmm0, dword [0x1007b874]
movss xmm1, dword [0x1006d630]
minss xmm1, xmm0
xor eax, eax
ucomiss xmm0, dword [0x100742f0]
cmpltss xmm0, dword [0x10074150]
andnps xmm0, xmm1
seta al
mov dword [esp + 4], eax
movss dword [esp + 8], xmm0
mov dword [esp], 0x279
mov ecx, esi
call fcn.10021420
sub esp, 0xc
movsx eax, word [esp + 0x48]
add eax, 0xffffe157
xorps xmm0, xmm0
cvtsi2ss xmm0, eax
divss xmm0, dword [0x1007b878]
movss xmm1, dword [0x1006d630]
minss xmm1, xmm0
xor eax, eax
ucomiss xmm0, dword [0x100742f0]
cmpltss xmm0, dword [0x10074150]
andnps xmm0, xmm1
seta al
mov dword [esp + 4], eax
movss dword [esp + 8], xmm0
mov dword [esp], 0x27a
mov ecx, esi
call fcn.10021420
sub esp, 0xc
movsx eax, word [esp + 0x4a]
add eax, 0xffffe157
xorps xmm0, xmm0
cvtsi2ss xmm0, eax
divss xmm0, dword [0x1007b878]
movss xmm1, dword [0x1006d630]
minss xmm1, xmm0
xor eax, eax
ucomiss xmm0, dword [0x100742f0]
cmpltss xmm0, dword [0x10074150]
andnps xmm0, xmm1
seta al
mov dword [esp + 4], eax
movss dword [esp + 8], xmm0
mov dword [esp], 0x27b
mov ecx, esi
call fcn.10021420
sub esp, 0xc
movsx eax, word [esp + 0x4a]
add eax, 0x1ea9
xorps xmm0, xmm0
cvtsi2ss xmm0, eax
divss xmm0, dword [0x1007b874]
movss xmm1, dword [0x1006d630]
minss xmm1, xmm0
xor eax, eax
ucomiss xmm0, dword [0x100742f0]
cmpltss xmm0, dword [0x10074150]
andnps xmm0, xmm1
seta al
mov dword [esp + 4], eax
movss dword [esp + 8], xmm0
mov dword [esp], 0x27c
mov ecx, esi
call fcn.10021420
sub esp, 0xc
movsx eax, word [esp + 0x4c]
add eax, 0x1ea9
xorps xmm0, xmm0
cvtsi2ss xmm0, eax
divss xmm0, dword [0x1007b874]
movss xmm1, dword [0x1006d630]
minss xmm1, xmm0
xor eax, eax
ucomiss xmm0, dword [0x100742f0]
cmpltss xmm0, dword [0x10074150]
andnps xmm0, xmm1
seta al
mov dword [esp + 4], eax
movss dword [esp + 8], xmm0
mov dword [esp], 0x27d
mov ecx, esi
call fcn.10021420
sub esp, 0xc
movsx eax, word [esp + 0x4c]
add eax, 0xffffe157
xorps xmm0, xmm0
cvtsi2ss xmm0, eax
divss xmm0, dword [0x1007b878]
movss xmm1, dword [0x1006d630]
minss xmm1, xmm0
xor eax, eax
ucomiss xmm0, dword [0x100742f0]
cmpltss xmm0, dword [0x10074150]
andnps xmm0, xmm1
seta al
mov dword [esp + 4], eax
movss dword [esp + 8], xmm0
mov dword [esp], 0x27e
mov ecx, esi
call fcn.10021420
sub esp, 0xc
movsx eax, word [esp + 0x4e]
add eax, 0xffffe157
xorps xmm0, xmm0
cvtsi2ss xmm0, eax
divss xmm0, dword [0x1007b878]
movss xmm1, dword [0x1006d630]
minss xmm1, xmm0
xor eax, eax
ucomiss xmm0, dword [0x100742f0]
cmpltss xmm0, dword [0x10074150]
andnps xmm0, xmm1
seta al
mov dword [esp + 4], eax
movss dword [esp + 8], xmm0
mov dword [esp], 0x27f
mov ecx, esi
call fcn.10021420
sub esp, 0xc
movsx eax, word [esp + 0x4e]
add eax, 0x1ea9
xorps xmm0, xmm0
cvtsi2ss xmm0, eax
divss xmm0, dword [0x1007b874]
movss xmm1, dword [0x1006d630]
minss xmm1, xmm0
xor eax, eax
ucomiss xmm0, dword [0x100742f0]
cmpltss xmm0, dword [0x10074150]
andnps xmm0, xmm1
seta al
mov dword [esp + 4], eax
movss dword [esp + 8], xmm0
mov dword [esp], 0x280
mov ecx, esi
call fcn.10021420
sub esp, 0xc
mov ecx, dword [esp + 0x58]
xor ecx, ebp
call fcn.1006a0d8
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret