Function at 0x10093f29
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
mov eax, dword fs:[0x2c]
mov edx, dword [0x1026a304]
push ebx
push esi
push edi
mov esi, dword [eax + edx*4]
mov edi, ecx
mov eax, dword [0x102a7760]
cmp eax, dword [esi + 4]
jle 0x10093ea2
push 0x102a7760
call fcn.1019a606
add esp, 4
cmp dword [0x102a7760], 0xffffffff
jne 0x10093ea2
push 0x101a9210
mov dword [0x102a76c4], 0
mov dword [0x102a76c0], 0
mov dword [0x102a76bc], 0
call fcn.1019a488
add esp, 4
push 0x102a7760
call fcn.1019a5bc
add esp, 4
mov eax, dword [0x102a7714]
cmp eax, dword [esi + 4]
jle 0x10093efd
push 0x102a7714
call fcn.1019a606
add esp, 4
cmp dword [0x102a7714], 0xffffffff
jne 0x10093efd
push 0x101a9200
mov dword [0x102a7778], 0
mov dword [0x102a7774], 0
mov dword [0x102a7770], 0
call fcn.1019a488
add esp, 4
push 0x102a7714
call fcn.1019a5bc
add esp, 4
cmp byte [0x102a0dd6], 0
mov eax, dword [edi + 0x30]
mov dword [0x1029bc80], eax
je 0x100940b2
mov ecx, dword [0x102662d0]
mov eax, dword [0x102a065c]
cmp ecx, 3
ja case.0x10093f22.0
jmp dword [ecx*4 + 0x1009415c]
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
setne al
jmp 0x10093f5a
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
jmp 0x10093f5a
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
sete al
test al, al
je 0x100940b2
mov ebx, dword [0x102a036c]
test ebx, ebx
je 0x10094155
mov eax, dword [0x102a0368]
test eax, eax
jne 0x10093fa7
mov edx, 0xe80c2f78
mov ecx, 0x102113c1
call fcn.10005520
mov edx, 0xc10bf213
mov ecx, 0x102112e9
mov esi, eax
call fcn.10005520
mov edx, esi
mov ecx, eax
call fcn.10133370
mov dword [0x102a0368], eax
cmp dword [eax + ebx], 0
jle 0x10094155
movss xmm0, dword [0x102a76bc]
xorps xmm1, xmm1
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x10094034
movss xmm0, dword [0x102a76c0]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x10094034
movss xmm0, dword [0x102a76c4]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x10094034
movss xmm0, dword [edi + 0xc]
mov eax, dword [ebp + 0x10]
movss dword [0x102a76bc], xmm0
movss xmm0, dword [edi + 0x10]
movss dword [0x102a76c0], xmm0
movss xmm0, dword [edi + 0x14]
movss dword [0x102a76c4], xmm0
movq xmm0, qword [ebp + 8]
movq qword [0x102a7770], xmm0
mov dword [0x102a7778], eax
mov ecx, dword [edi + 0x30]
shr ecx, 2
and cl, 1
mov byte [0x102a0de0], cl
jmp 0x1009403a
mov cl, byte [0x102a0de0]
xor eax, eax
mov dword [edi + 0x24], 0
mov dword [edi + 0x28], 0
mov dword [edi + 0x30], 0
test cl, cl
je 0x10094061
mov dword [edi + 0x30], 4
mov eax, 4
cmp byte [0x102a0d91], 0
je 0x10094070
or eax, 1
mov dword [edi + 0x30], eax
cmp byte [0x102a0d80], 0
je 0x1009407f
or eax, 0x20
mov dword [edi + 0x30], eax
movss xmm0, dword [0x102a76bc]
movss dword [edi + 0xc], xmm0
movss xmm0, dword [0x102a76c0]
movss dword [edi + 0x10], xmm0
movss xmm0, dword [0x102a76c4]
movss dword [edi + 0x14], xmm0
mov byte [0x102a0d90], 1
pop edi
pop esi
pop ebx
pop ebp
ret
cmp byte [0x102a0d90], 0
je 0x10094137
mov ecx, dword [0x1026a33c]
push 0x102a7770
mov eax, dword [ecx]
mov eax, dword [eax + 0x4c]
call eax
cmp byte [0x102a0de0], 0
movss xmm0, dword [0x102a76bc]
movss dword [edi + 0xc], xmm0
movss xmm0, dword [0x102a76c0]
movss dword [edi + 0x10], xmm0
movss xmm0, dword [0x102a76c4]
movss dword [edi + 0x14], xmm0
je 0x10094101
or dword [edi + 0x30], 4
cmp byte [0x102a0d91], 0
je 0x1009410e
or dword [edi + 0x30], 1
cmp byte [0x102a0d80], 0
je 0x1009411b
or dword [edi + 0x30], 0x20
mov byte [0x102a0de0], 0
mov byte [0x102a0d91], 0
mov byte [0x102a0d80], 0
mov byte [0x102a0d90], 0
mov dword [0x102a76bc], 0
mov dword [0x102a76c0], 0
mov dword [0x102a76c4], 0
pop edi
pop esi
pop ebx
pop ebp
ret