Function at 0x1004e9a0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov eax, dword [0x100ec500]
xor eax, esp
mov dword [esp + 0x18], eax
call fcn.10025bf0
test eax, eax
je 0x1004ebbc
mov edi, dword [esp + 0x34]
call fcn.10027920
mov dword [esp + 4], eax
call fcn.10025bf0
xor ebx, ebx
mov ebp, 0
test eax, eax
je 0x1004e9e4
call fcn.10027920
mov ebp, dword [eax + 0x64]
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp + 0x38]
mov edx, edi
cmp edi, 0x1ff
jle 0x1004ea8c
lea eax, [edx - 0x200]
cmp eax, 0xa3
ja case.0x1004ea0f.527
mov edi, dword [esp + 0x30]
jmp dword [eax*4 + 0x1007b8bc]
mov ecx, edx
and ecx, 0xfffffffd
xor eax, eax
cmp ecx, 0x204
sete al
lea ecx, [edx - 0x207]
test ecx, 0xfffffffd
mov ebx, 2
cmovne ebx, eax
cmp edx, 0x20d
je 0x1004ea4a
cmp edx, 0x20b
jne 0x1004ea5e
and esi, 0xffff0000
xor ebx, ebx
cmp esi, 0x10000
setne bl
add ebx, 3
cmp dword [ebp + 0xc], 0
jne 0x1004ea75
call dword [sym.imp.USER32.dll_GetCapture]
test eax, eax
jne 0x1004ea75
push edi
call dword [sym.imp.USER32.dll_SetCapture]
mov eax, 1
mov ecx, ebx
shl eax, cl
or dword [ebp + 0xc], eax
mov ecx, dword [esp + 4]
push 1
jmp 0x1004ebb6
lea eax, [edx - 0x100]
cmp eax, 5
ja 0x1004ebf5
mov ecx, 0x33
bt ecx, eax
jae 0x1004ebd3
cmp esi, 0xff
ja case.0x1004ea0f.527
and edx, 0xfffffffb
mov dword [esp + 4], edx
call fcn.10027920
mov edi, eax
mov ebp, dword [sym.imp.USER32.dll_GetKeyState]
push 0x11
call ebp
movzx eax, ax
shr eax, 0xf
mov ecx, edi
push eax
push 0x281
call fcn.10021640
push 0x10
call ebp
movzx eax, ax
shr eax, 0xf
mov ecx, edi
push eax
push 0x282
call fcn.10021640
push 0x12
call ebp
movzx eax, ax
shr eax, 0xf
mov ecx, edi
push eax
push 0x283
call fcn.10021640
push 0x5d
call ebp
movzx eax, ax
shr eax, 0xf
mov ecx, edi
push eax
push 0x284
call fcn.10021640
mov ebp, dword [esp + 0x3c]
and ebp, 0x1000000
shr ebp, 0x10
or ebp, 0xd
cmp esi, 0xd
cmovne ebp, esi
lea eax, [ebp - 8]
cmp eax, 0x105
ja case.0x1004eb49.10
jmp dword [eax*4 + 0x1007bb4c]
mov dword [esp], 0x20b
jmp 0x1004f1c4
xor eax, eax
cmp edx, 0x205
sete al
cmp edx, 0x208
mov ecx, 2
cmovne ecx, eax
and esi, 0xffff0000
xor ebx, ebx
cmp esi, 0x10000
setne bl
add ebx, 3
cmp edx, 0x20c
cmovne ebx, ecx
mov eax, 0xfffffffe
mov ecx, ebx
rol eax, cl
and dword [ebp + 0xc], eax
jne 0x1004ebb0
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, edi
jne 0x1004ebb0
call dword [sym.imp.USER32.dll_ReleaseCapture]
mov ecx, dword [esp + 4]
push 0
push ebx
call fcn.100217d0
xor ebx, ebx
mov ecx, dword [esp + 0x18]
xor ecx, esp
call fcn.1006a0d8
mov eax, ebx
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
cmp eax, 2
mov ecx, dword [esp + 0x3c]
jne 0x1004ebf5
lea eax, [esi - 1]
cmp eax, 0xfffe
ja case.0x1004ea0f.527
movzx eax, si
mov ecx, dword [esp + 4]
push eax
call fcn.10021210
jmp case.0x1004ea0f.527
lea eax, [edx - 7]
cmp eax, 2
jae 0x1004ec11
xor eax, eax
cmp edx, 7
sete al
mov ecx, dword [esp + 4]
push eax
call fcn.10021a30
jmp case.0x1004ea0f.527
cmp edx, 0x20
jne case.0x1004ea0f.527
cmp cx, 1
jne 0x1004ebbc
mov ebx, 1
call fcn.1004e910
test al, al
je 0x1004ebbc
jmp case.0x1004ea0f.527
mov dword [ebp + 4], edi
cmp byte [ebp + 8], 0
jne 0x1004ec64
mov dword [esp + 8], 0x10
mov dword [esp + 0xc], 2
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], 0
lea eax, [esp + 8]
push eax
mov esi, ecx
call dword [sym.imp.USER32.dll_TrackMouseEvent]
mov ecx, esi
mov byte [ebp + 8], 1
mov eax, ecx
sar eax, 0x10
cvtsi2ss xmm0, eax
movsx eax, cx
cvtsi2ss xmm1, eax
sub esp, 8
movss dword [esp + 4], xmm0
movss dword [esp], xmm1
mov ecx, dword [esp + 0xc]
jmp 0x1004ed06
sar esi, 0x10
cvtsi2ss xmm0, esi
divss xmm0, dword [0x10074980]
sub esp, 8
movss dword [esp + 4], xmm0
mov dword [esp], 0
jmp 0x1004ecc8
sar esi, 0x10
cvtsi2ss xmm0, esi
divss xmm0, dword [0x10074980]
sub esp, 8
movss dword [esp], xmm0
mov dword [esp + 4], 0
mov ecx, dword [esp + 0xc]
call fcn.100218f0
jmp case.0x1004ea0f.527
cmp esi, 7
jne case.0x1004ea0f.527
mov byte [ebp + 0x25], 1
jmp case.0x1004ea0f.527
cmp dword [ebp + 4], edi
jne 0x1004ecf4
mov dword [ebp + 4], 0
mov byte [ebp + 8], 0
mov ecx, dword [esp + 4]
push 0xff7fffff
push 0xff7fffff
call fcn.100216b0
jmp 0x1004ebbc
mov dword [esp], 0x200
jmp 0x1004f1c4
mov eax, dword [esp + 0x3c]
shr eax, 0x10
movzx esi, al
jmp 0x1004f1fb
mov dword [esp], 0x20d
jmp 0x1004f1c4
mov dword [esp], 0x257
jmp 0x1004f1c4
mov dword [esp], 0x253
jmp 0x1004f1c4
mov dword [esp], 0x20e
jmp 0x1004f1c4
mov dword [esp], 0x20c
jmp 0x1004f1c4
mov dword [esp], 0x205
jmp 0x1004f1c4
mov dword [esp], 0x206
jmp 0x1004f1c4
mov dword [esp], 0x208
jmp 0x1004f1c4
mov dword [esp], 0x207
jmp 0x1004f1c4
mov dword [esp], 0x201
jmp 0x1004f1c4
mov dword [esp], 0x203
jmp 0x1004f1c4
mov dword [esp], 0x202
jmp 0x1004f1c4
mov dword [esp], 0x204
jmp 0x1004f1c4
mov dword [esp], 0x256
jmp 0x1004f1c4
mov dword [esp], 0x209
jmp 0x1004f1c4
mov dword [esp], 0x20a
jmp 0x1004f1c4
mov dword [esp], 0x218
jmp 0x1004f1c4
mov dword [esp], 0x219
jmp 0x1004f1c4
mov dword [esp], 0x21a
jmp 0x1004f1c4
mov dword [esp], 0x21b
jmp 0x1004f1c4
mov dword [esp], 0x21c
jmp 0x1004f1c4
mov dword [esp], 0x21d
jmp 0x1004f1c4
mov dword [esp], 0x21e
jmp 0x1004f1c4
mov dword [esp], 0x21f
jmp 0x1004f1c4
mov dword [esp], 0x220
jmp 0x1004f1c4
mov dword [esp], 0x221
jmp 0x1004f1c4
mov dword [esp], 0x222
jmp 0x1004f1c4
mov dword [esp], 0x223
jmp 0x1004f1c4
mov dword [esp], 0x224
jmp 0x1004f1c4
mov dword [esp], 0x225
jmp 0x1004f1c4
mov dword [esp], 0x226
jmp 0x1004f1c4
mov dword [esp], 0x227
jmp 0x1004f1c4
mov dword [esp], 0x228
jmp 0x1004f1c4
mov dword [esp], 0x229
jmp 0x1004f1c4
mov dword [esp], 0x22a
jmp 0x1004f1c4
mov dword [esp], 0x22b
jmp 0x1004f1c4
mov dword [esp], 0x22c
jmp 0x1004f1c4
mov dword [esp], 0x22d
jmp 0x1004f1c4
mov dword [esp], 0x22e
jmp 0x1004f1c4
mov dword [esp], 0x22f
jmp 0x1004f1c4
mov dword [esp], 0x230
jmp 0x1004f1c4
mov dword [esp], 0x231
jmp 0x1004f1c4
mov dword [esp], 0x232
jmp 0x1004f1c4
mov dword [esp], 0x233
jmp 0x1004f1c4
mov dword [esp], 0x234
jmp 0x1004f1c4
mov dword [esp], 0x235
jmp 0x1004f1c4
mov dword [esp], 0x236
jmp 0x1004f1c4
mov dword [esp], 0x237
jmp 0x1004f1c4
mov dword [esp], 0x238
jmp 0x1004f1c4
mov dword [esp], 0x239
jmp 0x1004f1c4
mov dword [esp], 0x23a
jmp 0x1004f1c4
mov dword [esp], 0x23b
jmp 0x1004f1c4
mov dword [esp], 0x212
jmp 0x1004f1c4
mov dword [esp], 0x216
jmp 0x1004f1c4
mov dword [esp], 0x217
jmp 0x1004f1c4
mov dword [esp], 0x258
jmp 0x1004f1c4
mov dword [esp], 0x259
jmp 0x1004f1c4
mov dword [esp], 0x25a
jmp 0x1004f1c4
mov dword [esp], 0x25b
jmp 0x1004f1c4
mov dword [esp], 0x25c
jmp 0x1004f1c4
mov dword [esp], 0x25d
jmp 0x1004f1c4
mov dword [esp], 0x25e
jmp 0x1004f1c4
mov dword [esp], 0x25f
jmp 0x1004f1c4
mov dword [esp], 0x260
jmp 0x1004f1c4
mov dword [esp], 0x261
jmp 0x1004f1c4
mov dword [esp], 0x264
jmp 0x1004f1c4
mov dword [esp], 0x266
jmp 0x1004f1c4
mov dword [esp], 0x265
jmp 0x1004f1c4
mov dword [esp], 0x262
jmp 0x1004f1c4
mov dword [esp], 0x263
jmp 0x1004f1c4
mov dword [esp], 0x23c
jmp 0x1004f1c4
mov dword [esp], 0x23d
jmp 0x1004f1c4
mov dword [esp], 0x23e
jmp 0x1004f1c4
mov dword [esp], 0x23f
jmp 0x1004f1c4
mov dword [esp], 0x240
jmp 0x1004f1c4
mov dword [esp], 0x241
jmp 0x1004f1c4
mov dword [esp], 0x242
jmp 0x1004f1c4
mov dword [esp], 0x243
jmp 0x1004f1c4
mov dword [esp], 0x244
jmp 0x1004f1c4
mov dword [esp], 0x245
jmp 0x1004f1c4
mov dword [esp], 0x246
jmp 0x1004f1c4
mov dword [esp], 0x247
jmp 0x1004f1c4
mov dword [esp], 0x255
jmp 0x1004f1c4
mov dword [esp], 0x254
jmp 0x1004f1c4
mov dword [esp], 0x210
jmp 0x1004f1c4
mov dword [esp], 0x214
jmp 0x1004f1c4
mov dword [esp], 0x20f
jmp 0x1004f1c4
mov dword [esp], 0x213
jmp 0x1004f1c4
mov dword [esp], 0x211
jmp 0x1004f1c4
mov dword [esp], 0x215
jmp 0x1004f1c4
mov dword [esp], 0x24d
jmp 0x1004f1c4
mov dword [esp], 0x24e
jmp 0x1004f1c4
mov dword [esp], 0x249
jmp 0x1004f1c4
mov dword [esp], 0x24a
jmp 0x1004f1c4
mov dword [esp], 0x24b
jmp 0x1004f1c4
mov dword [esp], 0x252
jmp 0x1004f1c4
mov dword [esp], 0x24f
jmp 0x1004f1c4
mov dword [esp], 0x250
jmp 0x1004f1c4
mov dword [esp], 0x251
jmp 0x1004f1c4
mov dword [esp], 0x248
jmp 0x1004f1c4
mov dword [esp], 0x267
jmp 0x1004f1c4
mov dword [esp], 0x24c
xor ebx, ebx
cmp dword [esp + 4], 0x100
sete bl
mov eax, dword [esp + 0x3c]
shr eax, 0x10
movzx esi, al
call fcn.10027920
mov edi, eax
mov ecx, eax
push ebx
mov ebx, dword [esp + 4]
push ebx
call fcn.10021640
mov ecx, edi
push 0xffffffffffffffff
push esi
push ebp
push ebx
call fcn.10021680
cmp ebp, 0x12
je 0x1004f293
cmp ebp, 0x11
mov edi, dword [esp + 4]
je 0x1004f30d
cmp ebp, 0x10
jne 0x1004ebbc
cmp edi, 0x100
sete bl
push 0xa0
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
sets al
xor al, bl
jne 0x1004f256
xor edx, edx
cmp edi, 0x100
sete dl
mov ecx, 0x210
push esi
push 0xa0
call fcn.1004f390
add esp, 8
cmp edi, 0x100
sete bl
push 0xa1
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
sets al
xor al, bl
jne 0x1004ebbc
xor edx, edx
cmp edi, 0x100
sete dl
mov ecx, 0x214
push esi
push 0xa1
jmp 0x1004f381
mov edi, dword [esp + 4]
cmp edi, 0x100
sete bl
push 0xa4
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
sets al
xor al, bl
jne 0x1004f2d3
xor edx, edx
cmp edi, 0x100
sete dl
mov ecx, 0x211
push esi
push 0xa4
call fcn.1004f390
add esp, 8
cmp edi, 0x100
sete bl
push 0xa5
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
sets al
xor al, bl
jne 0x1004ebbc
xor edx, edx
cmp edi, 0x100
sete dl
mov ecx, 0x215
push esi
push 0xa5
jmp 0x1004f381
cmp edi, 0x100
sete bl
push 0xa2
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
sets al
xor al, bl
jne 0x1004f349
xor edx, edx
cmp edi, 0x100
sete dl
mov ecx, 0x20f
push esi
push 0xa2
call fcn.1004f390
add esp, 8
cmp edi, 0x100
sete bl
push 0xa3
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
sets al
xor al, bl
jne 0x1004ebbc
xor edx, edx
cmp edi, 0x100
sete dl
mov ecx, 0x213
push esi
push 0xa3
call fcn.1004f390
add esp, 8
jmp 0x1004ebbc