Function at 0x10042240
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
movq xmm0, qword [0x101c936c]
sub esp, 0x14
cmp byte [0x101cf589], 0
mov eax, dword [0x101c9374]
mov byte [0x102b7481], 0
push esi
mov esi, dword [ebp + 8]
movq qword [0x101c9400], xmm0
mov dword [0x101c9408], eax
movq qword [0x101c9354], xmm0
mov dword [0x101c935c], eax
mov word [0x102b7484], 0
je 0x100422fa
cmp dword [0x101cf6b4], 1
jne 0x100422fa
cmp byte [0x102b7454], 0
je 0x100422fa
movss xmm2, dword [esi + 0xc]
lea eax, [ebp - 0x14]
movss xmm0, dword [esi + 0x10]
movss dword [ebp - 0x14], xmm2
xorps xmm2, xmmword [0x10197f90]
subss xmm2, dword [0x10197948]
movss dword [ebp - 0x10], xmm0
movss xmm0, dword [esi + 0x14]
movss dword [ebp - 0xc], xmm0
movss xmm0, dword [esi + 0x10]
addss xmm2, dword [0x101978e0]
addss xmm0, dword [0x101978e0]
push ecx
push eax
push esi
mov byte [0x102b743c], 0
movss dword [esi + 0xc], xmm2
movss dword [esi + 0x10], xmm0
call fcn.10040ed0
cmp byte [0x101cd3c0], 0
jne 0x10042922
cmp byte [0x101cd3bf], 0
jne 0x10042922
mov eax, dword fs:[0x2c]
mov ecx, dword [0x101cf110]
push edi
mov edi, dword [eax + ecx*4]
mov eax, dword [0x102b97f0]
cmp eax, dword [edi + 4]
jle 0x10042368
push 0x102b97f0
call fcn.10121ee8
add esp, 4
cmp dword [0x102b97f0], 0xffffffff
jne 0x10042368
push 0x102b97f0
mov dword [0x102b97e0], 0
mov dword [0x102b97dc], 0x102b7448
call fcn.10121e9e
add esp, 4
mov eax, dword [0x102b97dc]
cmp dword [0x102b97e0], 0
sete byte [ebp + 0xb]
mov eax, dword [eax]
test eax, eax
jne 0x10042385
mov dword [0x102b97e0], eax
jmp 0x100423af
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
movzx eax, al
mov dword [0x102b97e0], eax
je 0x100423af
cmp byte [ebp + 0xb], 0
je 0x100423af
cmp byte [0x102b744c], 0
sete byte [0x102b744c]
mov eax, dword [0x102b97d8]
cmp eax, dword [edi + 4]
jle 0x100423f3
push 0x102b97d8
call fcn.10121ee8
add esp, 4
cmp dword [0x102b97d8], 0xffffffff
jne 0x100423f3
push 0x102b97d8
mov dword [0x102b97ec], 0
mov dword [0x102b97e8], 0x102b745c
call fcn.10121e9e
add esp, 4
mov eax, dword [0x102b97e8]
cmp dword [0x102b97ec], 0
sete byte [ebp + 0xb]
mov eax, dword [eax]
test eax, eax
jne 0x100425e2
mov dword [0x102b97ec], eax
mov al, byte [0x101cd464]
mov byte [0x101cd464], al
mov eax, dword [0x102b97f8]
cmp eax, dword [edi + 4]
jle 0x10042460
push 0x102b97f8
call fcn.10121ee8
add esp, 4
cmp dword [0x102b97f8], 0xffffffff
jne 0x10042460
push 0x102b97f8
mov dword [0x102b97d4], 0
mov dword [0x102b97d0], 0x102b7468
call fcn.10121e9e
add esp, 4
mov eax, dword [0x102b97d0]
mov eax, dword [eax]
test eax, eax
jne 0x10042615
mov dword [0x102b97d4], eax
xor al, al
cmp byte [0x102b744c], 0
mov byte [0x101cd465], al
je 0x10042921
cmp byte [0x102b7480], 0
jne 0x10042921
cmp byte [0x102b7486], 0
jne 0x10042921
cmp byte [0x101cf550], 0
jne 0x10042921
mov edi, dword [0x101c93a8]
test edi, edi
je 0x1004291a
mov ecx, edi
call fcn.10010b00
test al, al
jne 0x10042921
mov ecx, edi
call fcn.10016710
shr eax, 7
test al, 1
jne 0x10042921
mov ecx, edi
call fcn.100167b0
shr eax, 0x12
test al, 1
jne 0x10042921
mov ecx, edi
call fcn.100167b0
shr eax, 0xd
test al, 1
jne 0x10042921
mov eax, dword [edi + 0x1a4]
cmp eax, 8
je 0x10042921
cmp eax, 9
je 0x10042921
cmp eax, 0xa
je 0x10042921
mov ecx, edi
call fcn.10016710
shr eax, 0x11
test al, 1
jne 0x10042921
cmp byte [0x101cf589], 0
jne 0x10042921
cmp byte [0x101cd465], 0
je 0x100426a3
cmp byte [0x101cd466], 0
jne 0x100425ac
mov ecx, dword [0x101cf52c]
lea edx, [ebp - 0x14]
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x14], 0
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x4c]
call eax
movss xmm0, dword [ebp - 0x14]
movss dword [0x101cd468], xmm0
movss xmm0, dword [ebp - 0x10]
movss dword [0x101cd46c], xmm0
movss xmm0, dword [ebp - 0xc]
movss dword [0x101cd470], xmm0
mov byte [0x101cd466], 1
movzx eax, word [esi + 0x38]
cwde
cdq
mov ecx, eax
movzx eax, word [esi + 0x3a]
xor ecx, edx
cwde
sub ecx, edx
cdq
xor eax, edx
sub eax, edx
cmp ecx, eax
jle 0x1004265d
movzx eax, word [esi + 0x38]
cmp ax, 0x19
jle 0x1004264c
mov word [0x101cd476], 0
jmp 0x10042688
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
movzx eax, al
mov dword [0x102b97ec], eax
je 0x10042412
cmp byte [ebp + 0xb], 0
je 0x10042412
cmp byte [0x101cd464], 0
sete al
jmp 0x10042417
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
movzx eax, al
mov dword [0x102b97d4], eax
je 0x10042474
cmp dword [0x102b7460], 0xe
je 0x10042645
cmp dword [0x102b7464], 0xe
jne 0x10042474
mov al, 1
jmp 0x10042476
cmp ax, 0xffe7
jge 0x1004268f
mov word [0x101cd476], 0x100
jmp 0x10042688
movzx eax, word [esi + 0x3a]
cmp ax, 0x19
jle 0x10042679
mov word [0x101cd476], 1
mov byte [0x101cd478], 1
jmp 0x1004268f
cmp ax, 0xffe7
jge 0x1004268f
mov word [0x101cd476], 1
mov byte [0x101cd478], 0
mov ecx, dword [0x101cf52c]
push 0x101cd468
mov eax, dword [ecx]
mov eax, dword [eax + 0x50]
call eax
jmp 0x100426e3
cmp byte [0x101cd466], 0
je 0x100426e3
mov ecx, dword [0x101cf52c]
push 0x101cd468
mov eax, dword [ecx]
mov eax, dword [eax + 0x50]
call eax
mov byte [0x101cd466], 0
mov dword [0x101cd468], 0
mov dword [0x101cd46c], 0
mov dword [0x101cd470], 0
cmp dword [0x102b7444], 0
setne byte [ebp - 1]
cmp dword [0x102b7464], 0
jne 0x10042707
cmp dword [0x102b7460], 0
jne 0x10042707
xor al, al
mov byte [ebp + 0xb], al
jmp 0x1004270b
mov byte [ebp + 0xb], 1
movss xmm0, dword [esi + 0xc]
movss dword [ebp - 0x14], xmm0
movss xmm0, dword [esi + 0x10]
push esi
push edi
push dword [0x102b7450]
movss dword [ebp - 0x10], xmm0
movss xmm0, dword [esi + 0x14]
movss dword [ebp - 0xc], xmm0
call fcn.10042040
push esi
push dword [0x102b7444]
movss dword [0x101cd450], xmm0
call fcn.10041df0
mov eax, dword [0x102b7464]
cmp eax, 7
je 0x1004275d
cmp dword [0x102b7460], 7
jne 0x1004279b
movss xmm0, dword [0x101c9400]
ucomiss xmm0, dword [0x101978a4]
push dword [0x101c93a8]
movss xmm1, dword [0x101cd450]
lahf
test ah, 0x44
jp 0x1004278c
call fcn.10041880
test al, al
sete al
jmp 0x10042791
call fcn.10041880
mov byte [0x101cd462], al
mov eax, dword [0x102b7464]
cmp byte [0x101cd460], 0
je 0x10042875
test eax, eax
je 0x10042875
cmp byte [0x101cd474], 0
push eax
sete byte [0x101cd474]
call fcn.10041940
addss xmm0, dword [0x101cd450]
movss dword [esi + 0x10], xmm0
cmp dword [0x102b7460], 0
je 0x1004285f
cmp byte [0x102b7478], 0
je 0x1004285f
push dword [0x102b7464]
call fcn.10041940
push dword [0x102b7460]
movss dword [ebp - 8], xmm0
call fcn.10041940
movss xmm1, dword [ebp - 8]
subss xmm1, xmm0
movaps xmm0, xmm1
call fcn.1000f900
movss xmm1, dword [0x10197870]
movss xmm2, dword [esi + 0x10]
comiss xmm1, xmm0
seta al
test al, al
je 0x1004285f
movss xmm0, dword [0x101a71a0]
xorps xmm3, xmm3
ucomiss xmm0, xmm3
lahf
test ah, 0x44
jp 0x10042846
movss xmm1, dword [0x10197a28]
addss xmm2, xmm1
movss dword [esi + 0x10], xmm2
addss xmm1, dword [0x101cd458]
movss dword [0x101cd458], xmm1
movss xmm0, dword [esi + 0x10]
movss dword [0x101c9404], xmm0
mov byte [0x102b7484], 1
jmp 0x100428cd
mov eax, dword [0x102b7460]
test eax, eax
je 0x100428cd
cmp byte [0x101cd475], 0
push eax
sete byte [0x101cd475]
call fcn.10041940
addss xmm0, dword [0x101cd450]
movss dword [esi + 0x10], xmm0
movss xmm0, dword [esi + 0xc]
movss dword [0x101c9354], xmm0
movss xmm0, dword [esi + 0x10]
movss dword [0x101c9358], xmm0
movss xmm0, dword [esi + 0x14]
movss dword [0x101c935c], xmm0
mov byte [0x102b7485], 1
mov al, byte [ebp + 0xb]
mov ecx, dword [ebp + 0xc]
test al, al
je 0x100428eb
cmp byte [0x101cd460], 0
sete al
mov byte [0x101cd460], al
mov byte [ecx], al
mov al, byte [ebp + 0xb]
cmp dword [0x102b7460], 0
jne 0x100428fe
mov byte [0x101cd460], 1
mov byte [ecx], 1
cmp byte [ebp - 1], 0
jne 0x10042908
test al, al
je 0x1004290a
mov al, 1
mov byte [0x102b7481], al
lea eax, [ebp - 0x14]
push ecx
push eax
push esi
call fcn.10040ed0
mov byte [0x101cd461], 0
pop edi
pop esi
mov esp, ebp
pop ebp
ret 8