Function at 0x10033beb
Capabilities:
Log keystrokes via polling

Disassembly:
mov eax, dword fs:[0x2c]
mov edx, dword [0x101bf740]
push ebx
push ebp
push esi
mov esi, dword [eax + edx*4]
mov ebx, ecx
mov eax, dword [0x101fb02c]
push edi
cmp eax, dword [esi + 4]
jle 0x10033b50
push 0x101fb02c
call fcn.1010e5e4
add esp, 4
cmp dword [0x101fb02c], 0xffffffff
jne 0x10033b50
push 0x10112450
mov dword [0x101faf7c], 0
mov dword [0x101faf78], 0
mov dword [0x101faf74], 0
call fcn.1010e548
add esp, 4
push 0x101fb02c
call fcn.1010e593
add esp, 4
mov eax, dword [0x101fafcc]
cmp eax, dword [esi + 4]
jle 0x10033bab
push 0x101fafcc
call fcn.1010e5e4
add esp, 4
cmp dword [0x101fafcc], 0xffffffff
jne 0x10033bab
push 0x10112440
mov dword [0x101fb04c], 0
mov dword [0x101fb048], 0
mov dword [0x101fb044], 0
call fcn.1010e548
add esp, 4
push 0x101fafcc
call fcn.1010e593
add esp, 4
cmp byte [0x101f5bf8], 0
lea edi, [ebx + 0x30]
mov eax, dword [edi]
mov dword [0x101f0f78], eax
je 0x10033c11
mov ecx, dword [0x101bc338]
mov eax, dword [0x101f5944]
cmp ecx, 3
ja case.0x10033bd2.0
jmp dword [ecx*4 + 0x10033e18]
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
setne al
jmp 0x10033c0a
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
jmp 0x10033c0a
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
sete al
test al, al
jne case.0x10033bd2.0
lea edi, [ebx + 0x30]
cmp byte [0x101f5bac], 0
je 0x10033df4
mov ecx, dword [0x101bf77c]
push 0x101fb044
mov eax, dword [ecx]
mov eax, dword [eax + 0x4c]
call eax
cmp byte [0x101f5c00], 0
movss xmm0, dword [0x101faf74]
movss dword [ebx + 0xc], xmm0
movss xmm0, dword [0x101faf78]
movss dword [ebx + 0x10], xmm0
movss xmm0, dword [0x101faf7c]
movss dword [ebx + 0x14], xmm0
je 0x10033dbc
or dword [edi], 4
add ebx, 0x30
jmp 0x10033dbe
mov ebp, dword [0x101f565c]
test ebp, ebp
je 0x10033e12
mov eax, dword [0x101f5658]
test eax, eax
jne 0x10033cb4
mov edx, 0xe80c2f78
mov ecx, 0x1014a9e5
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a90d
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov dword [0x101f5658], eax
cmp dword [eax + ebp], 0
jle 0x10033e12
movss xmm0, dword [0x101faf74]
xorps xmm1, xmm1
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x10033d42
movss xmm0, dword [0x101faf78]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x10033d42
movss xmm0, dword [0x101faf7c]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x10033d42
movss xmm0, dword [ebx + 0xc]
mov eax, dword [esp + 0x1c]
movss dword [0x101faf74], xmm0
movss xmm0, dword [ebx + 0x10]
movss dword [0x101faf78], xmm0
movss xmm0, dword [ebx + 0x14]
movss dword [0x101faf7c], xmm0
movq xmm0, qword [esp + 0x14]
movq qword [0x101fb044], xmm0
mov dword [0x101fb04c], eax
mov ecx, dword [edi]
shr ecx, 2
and cl, 1
mov byte [0x101f5c00], cl
jmp 0x10033d48
mov cl, byte [0x101f5c00]
xor eax, eax
mov dword [ebx + 0x24], 0
mov dword [ebx + 0x28], 0
mov dword [edi], 0
test cl, cl
je 0x10033d6d
mov dword [edi], 4
mov eax, 4
cmp byte [0x101f5bad], 0
je 0x10033d7b
or eax, 1
mov dword [edi], eax
cmp byte [0x101f5b9c], 0
je 0x10033d89
or eax, 0x20
mov dword [edi], eax
movss xmm0, dword [0x101faf74]
movss dword [ebx + 0xc], xmm0
movss xmm0, dword [0x101faf78]
movss dword [ebx + 0x10], xmm0
movss xmm0, dword [0x101faf7c]
movss dword [ebx + 0x14], xmm0
mov byte [0x101f5bac], 1
pop edi
pop esi
pop ebp
pop ebx
ret
mov ebx, edi
cmp byte [0x101f5bad], 0
je 0x10033dcc
or dword [edi], 1
mov edi, ebx
cmp byte [0x101f5b9c], 0
je 0x10033dd8
or dword [edi], 0x20
mov byte [0x101f5c00], 0
mov byte [0x101f5bad], 0
mov byte [0x101f5b9c], 0
mov byte [0x101f5bac], 0
mov dword [0x101faf74], 0
mov dword [0x101faf78], 0
mov dword [0x101faf7c], 0
pop edi
pop esi
pop ebp
pop ebx
ret