Function at 0x53c4f4
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x70
mov eax, dword [0x654b34]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push edi
push 0x12
mov edi, ecx
call esi
mov ecx, 0x8000
test cx, ax
jne 0x53c807
mov ecx, edi
call fcn.0055192e
push 0x10
call esi
and eax, 0x8000
push 0x11
mov dword [ebp - 0x20], eax
call esi
mov esi, eax
mov ecx, edi
and esi, 0x8000
call fcn.0052f1ff
push dword [ebp + 8]
lea ecx, [ebp - 0x24]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x24], eax
call fcn.00527864
cmp eax, 0x28
jg 0x53c7ce
je 0x53c7b5
cmp eax, 0x23
jg 0x53c6de
je 0x53c694
sub eax, 9
je 0x53c643
sub eax, 4
je 0x53c5f7
sub eax, 0x13
je 0x53c5eb
sub eax, 1
je 0x53c5b5
sub eax, 1
jne 0x53c807
mov ecx, dword [edi + 0x104]
mov eax, dword [ecx]
call dword [eax + 0x20]
test al, 0x20
jne 0x53c807
movss xmm0, dword [edi + 0x78]
subss xmm0, dword [edi + 0x70]
jmp 0x53c5d9
mov ecx, dword [edi + 0x104]
mov eax, dword [ecx]
call dword [eax + 0x20]
test al, 0x20
jne 0x53c807
movss xmm0, dword [edi + 0x78]
subss xmm0, dword [edi + 0x70]
xorps xmm0, xmmword [0x6247d0]
push dword [ebp - 0x20]
push ecx
mov ecx, edi
movss dword [esp], xmm0
call fcn.00537af6
jmp 0x53c602
mov ecx, edi
call fcn.00529ba6
jmp 0x53c809
mov ecx, edi
call fcn.00529ba6
test eax, eax
je 0x53c60a
xor eax, eax
inc eax
jmp 0x53c809
mov ecx, dword [edi + 0x104]
mov eax, dword [ecx]
call dword [eax + 0x20]
test al, 0x20
jne 0x53c807
test dword [edi + 0xa0], 0x800
jne 0x53c807
or dword [edi + 0x58], 0x40
mov ecx, edi
push 0
push 1
push 0x5eb8cc
call fcn.00545317
jmp 0x53c602
mov eax, dword [edi + 0x58]
shr eax, 1
test al, 1
je 0x53c679
test dword [edi + 0xa0], 0x800
je 0x53c679
mov ecx, dword [edi + 0x104]
xor edx, edx
push edx
push edx
mov eax, dword [ecx]
call dword [eax + 0x60]
push eax
push edi
lea ecx, [edi + 0x11c]
call fcn.0053befc
jmp 0x53c809
test byte [edi + 0xa0], 0x40
je 0x53c807
push 9
mov ecx, edi
call fcn.0053bf90
jmp 0x53c602
test esi, esi
je 0x53c6b8
mov ecx, dword [edi + 0x104]
lea edx, [ebp - 0x1c]
push 0xffffffffffffffff
push 0
push edx
mov eax, dword [ecx]
call dword [eax + 0x10]
lea ecx, [ebp - 0x1c]
mov esi, dword [eax + 0x10]
call fcn.00417a51
jmp 0x53c6d1
mov eax, dword [edi + 0x58]
mov ecx, edi
shr eax, 6
and eax, 1
push eax
push dword [edi + 0x12c]
call fcn.0052dfa0
mov esi, eax
push dword [ebp - 0x20]
and dword [edi + 0x58], 0xffffffbf
push esi
jmp 0x53c765
sub eax, 0x24
je 0x53c771
sub eax, 1
je 0x53c746
sub eax, 1
je 0x53c722
sub eax, 1
jne 0x53c807
or dword [edi + 0x58], 0x40
mov ecx, edi
push dword [ebp - 0x20]
test esi, esi
je 0x53c713
push 5
call fcn.00537e01
jmp 0x53c602
mov eax, dword [edi + 0x12c]
inc eax
push eax
call fcn.0053835c
jmp 0x53c764
mov ecx, dword [edi + 0x104]
mov eax, dword [ecx]
call dword [eax + 0x20]
test al, 0x20
jne 0x53c807
push dword [ebp - 0x20]
push 0xffffffffffffffff
mov ecx, edi
call fcn.00537d26
jmp 0x53c602
or dword [edi + 0x58], 0x40
mov ecx, edi
push dword [ebp - 0x20]
test esi, esi
je 0x53c757
push 4
jmp 0x53c709
mov eax, dword [edi + 0x12c]
dec eax
push eax
call fcn.0053f13d
push eax
mov ecx, edi
call fcn.00537a45
jmp 0x53c602
xor edx, edx
test esi, esi
jne 0x53c7ab
push 0x48
push edx
lea eax, [ebp - 0x6c]
inc esi
push eax
mov dword [ebp - 0x70], esi
call fcn.0056dc10
mov eax, dword [edi + 0x58]
add esp, 0xc
mov ecx, dword [edi + 0x104]
shr eax, 6
and eax, esi
push eax
mov edx, dword [ecx]
lea eax, [ebp - 0x70]
push eax
push dword [edi + 0x12c]
call dword [edx + 0x50]
mov edx, dword [ebp - 0x68]
push dword [ebp - 0x20]
or dword [edi + 0x58], 0x40
push edx
jmp 0x53c765
mov ecx, dword [edi + 0x104]
mov eax, dword [ecx]
call dword [eax + 0x20]
test al, 0x20
jne 0x53c807
push dword [ebp - 0x20]
push 1
jmp 0x53c73a
cmp eax, 0x5a
jg 0x53c8ec
je 0x53c906
sub eax, 0x2d
je 0x53c8c8
sub eax, 1
je 0x53c819
sub eax, 0x15
je 0x53c939
sub eax, 0x13
je 0x53c928
dec eax
sub eax, 1
je 0x53c917
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.0056ac5f
leave
ret 4
test dword [edi + 0xa0], 0x800
jne 0x53c602
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x53c838
test esi, esi
jne 0x53c602
mov edx, dword [edi + 0x128]
mov ecx, dword [edi + 0x12c]
cmp edx, ecx
je 0x53c858
mov ecx, edi
test eax, eax
je 0x53c8be
call fcn.00528d22
jmp 0x53c602
test eax, eax
je 0x53c871
test edx, edx
jle 0x53c602
lea eax, [ecx - 1]
mov ecx, edi
push eax
call fcn.0053f13d
jmp 0x53c8b6
test esi, esi
je 0x53c881
push 1
push ecx
mov ecx, edi
call fcn.0052dfa0
jmp 0x53c8b6
mov ecx, dword [edi + 0x104]
lea edx, [ebp - 0x1c]
push 0xffffffffffffffff
push 0
push edx
mov eax, dword [ecx]
call dword [eax + 0x10]
lea ecx, [ebp - 0x1c]
mov esi, dword [eax + 0x10]
call fcn.00417a51
mov eax, dword [edi + 0x12c]
cmp eax, esi
jge 0x53c602
inc eax
mov ecx, edi
push eax
call fcn.0053835c
mov dword [edi + 0x12c], eax
mov ecx, edi
call fcn.00527458
jmp 0x53c602
cmp dword [ebp - 0x20], 0
je 0x53c8d7
mov ecx, edi
call fcn.0053e3f0
jmp 0x53c8e2
test esi, esi
je 0x53c8e2
mov ecx, edi
call fcn.00527950
or esi, dword [ebp - 0x20]
mov eax, esi
jmp 0x53c809
sub eax, 0x63
je 0x53c939
sub eax, 0x13
je 0x53c928
dec eax
sub eax, 1
je 0x53c917
dec eax
sub eax, 1
jne 0x53c807
test esi, esi
je 0x53c8e5
push 3
xor edx, edx
push edx
push edx
push 0x304
jmp 0x53c948
test esi, esi
je 0x53c8e5
push 3
xor edx, edx
push edx
push edx
push 0x300
jmp 0x53c948
test esi, esi
je 0x53c8e5
push 3
xor edx, edx
push edx
push edx
push 0x302
jmp 0x53c948
test esi, esi
je 0x53c8e5
push 3
xor edx, edx
push edx
push edx
push 0x301
mov ecx, edi
call fcn.0054687f
jmp 0x53c8e5