Function at 0x101dd340
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x338
mov esi, dword [ebp + 8]
mov eax, dword [0x102b0014]
xor eax, ebp
mov dword [ebp - 0x10], eax
cmp dword [ecx], esi
je 0x101dd655
mov edi, ecx
lea ebx, [ebp - 0x110]
push 0x100
push 0xff
push ebx
call fcn.10208980
add esp, 0xc
push ebx
call dword [sym.imp.USER32.dll_GetKeyboardState]
test eax, eax
je 0x101dd655
mov dword [edi], esi
lea ebx, [edi + 8]
cmp dword [edi + 0x14], 0
je 0x101dd3d3
mov eax, dword [edi + 0x10]
test eax, eax
je 0x101dd3ae
mov esi, dword [eax]
push eax
call fcn.10205096
add esp, 4
mov eax, esi
test esi, esi
jne 0x101dd39d
mov dword [edi + 0x10], 0
mov eax, dword [edi + 0xc]
test eax, eax
je 0x101dd3cc
xor ecx, ecx
mov edx, dword [ebx]
mov dword [edx + ecx*4], 0
inc ecx
cmp eax, ecx
jne 0x101dd3be
mov dword [edi + 0x14], 0
mov byte [edi + 4], 0
movss xmm0, dword [0x102a5cd0]
divss xmm0, dword [edi + 0x18]
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
call fcn.102300f0
add esp, 8
fstp dword [ebp - 0x344]
movss xmm0, dword [ebp - 0x344]
movss xmm1, dword [0x10245cf0]
movaps xmm2, xmm0
subss xmm2, xmm1
cvttss2si eax, xmm2
xor eax, 0x80000000
cvttss2si edx, xmm0
ucomiss xmm0, xmm1
cmovae edx, eax
mov ecx, ebx
call fcn.101dda6a
xor esi, esi
mov dword [ebp - 0x334], ebx
push 0x100
push 0
lea eax, [ebp - 0x210]
push eax
call fcn.10208980
add esp, 0xc
movd xmm0, esi
pshufd xmm0, xmm0, 0
movdqa xmm1, xmmword [0x102a5ce0]
pand xmm0, xmm1
pcmpeqd xmm0, xmm1
movdqa xmm1, xmm0
pand xmm1, xmmword [0x102a5d00]
pcmpeqb xmm1, xmmword [0x1025a1d0]
pmovmskb eax, xmm1
cmp eax, 0xffff
je 0x101dd48c
mov byte [ebp - 0x200], 0x80
pand xmm0, xmmword [0x102a5cf0]
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd eax, xmm0
test al, 4
je 0x101dd4b5
mov byte [ebp - 0x1ff], 0x80
test al, 8
je 0x101dd4c0
mov byte [ebp - 0x1fe], 0x80
mov dword [ebp - 0x33c], esi
bt eax, 8
jae 0x101dd4d3
mov byte [ebp - 0x1fc], 1
mov dword [ebp - 0x338], eax
and eax, 0xc
mov dword [ebp - 0x340], eax
xor esi, esi
xor eax, eax
dec eax
mov dword [ebp - 0x218], eax
mov dword [ebp - 0x21c], eax
mov word [ebp - 0x214], 0xffff
mov ebx, edi
push dword [edi]
xor eax, eax
push eax
push 5
lea ecx, [ebp - 0x21c]
push ecx
lea ecx, [ebp - 0x210]
push ecx
push eax
push esi
call dword [sym.imp.USER32.dll_ToUnicodeEx]
cmp eax, 1
je 0x101dd5c1
cmp eax, 0xffffffff
jne 0x101dd629
push 0x100
xor edi, edi
push edi
lea eax, [ebp - 0x31c]
push eax
call fcn.10208980
add esp, 0xc
push dword [ebx]
push edi
push 5
lea eax, [ebp - 0x21c]
push eax
lea eax, [ebp - 0x31c]
push eax
push edi
push 0x20
call dword [sym.imp.USER32.dll_ToUnicodeEx]
cmp eax, 1
jne 0x101dd629
movzx edi, word [ebp - 0x21c]
or edi, 0x600000
mov dword [ebp - 0x330], esi
mov eax, dword [ebp - 0x338]
mov dword [ebp - 0x32c], eax
lea eax, [ebp - 0x330]
mov dword [ebp - 0x328], eax
mov ecx, dword [ebp - 0x334]
lea edx, [ebp - 0x324]
lea eax, [ebp - 0x328]
push eax
lea eax, [ebp - 0x330]
push eax
call fcn.101ddcfa
add esp, 8
mov eax, dword [ebp - 0x324]
mov dword [eax + 0x10], edi
jmp 0x101dd629
movzx edi, word [ebp - 0x21c]
cmp edi, 0x20
jb 0x101dd629
or edi, 0x400000
mov dword [ebp - 0x324], esi
mov eax, dword [ebp - 0x338]
mov dword [ebp - 0x320], eax
lea eax, [ebp - 0x324]
mov dword [ebp - 0x330], eax
mov ecx, dword [ebp - 0x334]
lea edx, [ebp - 0x31c]
lea eax, [ebp - 0x330]
push eax
lea eax, [ebp - 0x324]
push eax
call fcn.101ddcfa
add esp, 8
mov eax, dword [ebp - 0x31c]
mov dword [eax + 0x10], edi
cmp dword [ebp - 0x340], 0xc
jne 0x101dd629
mov byte [ebx + 4], 1
inc esi
cmp esi, 0x100
mov edi, ebx
jne 0x101dd4e4
mov esi, dword [ebp - 0x33c]
inc esi
cmp esi, 0x10
jne 0x101dd437
lea eax, [ebp - 0x110]
push eax
call dword [sym.imp.USER32.dll_SetKeyboardState]
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.10205d16
add esp, 0x338
pop esi
pop edi
pop ebx
pop ebp
ret 4