Function at 0x100553e1
Capabilities:
Log keystrokes via polling
Resolve function by parsing pe exports

Disassembly:
mov eax, dword [0x1015a628]
sub esp, 0xbc
push ebx
push ebp
xor ebx, ebx
push esi
push edi
cmp dword [eax + 0x105], ebx
je 0x100559d8
cmp dword [eax + 0x3e], ebx
je 0x100559d8
cmp dword [eax + 0x4a], 0xffffffff
je 0x100559d8
cmp dword [eax + 0x2649b], ebx
jne 0x100559d8
call fcn.10029fc5
test eax, eax
jne 0x100559d8
cmp dword [0x101b7550], ebx
je 0x100559d8
cmp dword [0x101a3300], ebx
je 0x100559d8
cmp dword [0x101a3304], ebx
je 0x100559d8
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 9
call esi
test ax, ax
jns 0x10055469
cmp dword [0x10186b6f], ebx
jne 0x100559d8
mov eax, dword [0x101a3318]
cmp dword [eax], ebx
jne 0x100559d8
push 0x79
call esi
test ax, ax
js 0x100559d8
cmp dword [0x101b7564], ebx
je 0x100559d8
push dword [0x101b756c]
call fcn.1002a269
pop ecx
test eax, eax
jne 0x100559d8
mov eax, dword [0x1015a628]
push dword [eax + 0x4a]
call fcn.1003ee74
push ebx
push 0xffffffffffffffff
mov esi, eax
call fcn.10029c26
add esp, 0xc
test esi, esi
je 0x100559d8
cmp eax, esi
je 0x100559d8
mov ecx, dword [0x101b7564]
mov eax, dword [ecx]
call dword [eax]
push esi
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x64]
mov ebp, eax
test ebp, ebp
je 0x100559d8
mov ecx, dword [0x10120670]
mov edx, dword [ecx]
call dword [edx + 0x3c]
mov esi, eax
mov ecx, esi
mov edi, dword [esi]
call dword [edi + 0x28]
movzx ecx, al
push ecx
mov ecx, esi
call dword [edi + 0x2c]
xor ebx, ebx
inc ebx
cmp ebx, 1
jl 0x10055513
cmp ebx, 8
jle 0x1005553d
cmp ebx, 0x15
jl 0x1005551d
cmp ebx, 0x1a
jle 0x1005553d
cmp ebx, 0x1f
jl 0x10055527
cmp ebx, 0x24
jle 0x1005553d
cmp ebx, 0x29
jl 0x10055531
cmp ebx, 0x2c
jle 0x1005553d
lea eax, [ebx - 0x33]
cmp eax, 3
ja 0x100559ce
mov eax, dword [ebp]
lea ecx, [esp + 0x10]
and dword [esp + 0x10], 0
and dword [esp + 0x14], 0
and dword [esp + 0x18], 0
and dword [esp + 0x1c], 0
and dword [esp + 0x20], 0
and dword [esp + 0x24], 0
push ecx
push 8
mov ecx, ebp
call dword [eax + 0x74]
mov eax, dword [ebp]
lea ecx, [esp + 0x1c]
push ecx
push 0x2c
mov ecx, ebp
call dword [eax + 0x74]
movss xmm0, dword [esp + 0x10]
lea eax, [esp + 0x30]
movss dword [esp + 0x54], xmm0
movss xmm0, dword [esp + 0x14]
movss dword [esp + 0x58], xmm0
movss xmm0, dword [esp + 0x18]
movss dword [esp + 0x5c], xmm0
movss xmm0, dword [esp + 0x1c]
movss dword [esp + 0x60], xmm0
movss xmm0, dword [esp + 0x20]
push eax
movss dword [esp + 0x68], xmm0
lea eax, [esp + 0x58]
movss xmm0, dword [esp + 0x28]
push eax
movss dword [esp + 0x70], xmm0
call fcn.10041b51
lea eax, [esp + 0x74]
push eax
lea eax, [esp + 0x6c]
push eax
call fcn.10041b51
movss xmm0, dword [0x10080f60]
add esp, 0x10
comiss xmm0, dword [esp + 0x38]
ja 0x100559d8
xorps xmm0, xmm0
comiss xmm0, dword [esp + 0x74]
ja 0x100559d8
movss xmm0, dword [esp + 0x34]
lea edx, [esp + 0x48]
subss xmm0, dword [esp + 0x70]
mov ecx, dword [0x101b756c]
and dword [esp + 0x48], 0
and dword [esp + 0x4c], 0
and dword [esp + 0x50], 0
cvtps2pd xmm2, xmm0
and dword [esp + 0x3c], 0
and dword [esp + 0x40], 0
and dword [esp + 0x44], 0
mov eax, dword [ecx]
push edx
movss xmm0, dword [esp + 0x34]
subss xmm0, dword [esp + 0x70]
mulsd xmm2, xmm2
push 1
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm0
cvtpd2ps xmm1, xmm0
cvtpd2ps xmm0, xmm2
addss xmm1, xmm0
xorps xmm0, xmm0
sqrtss xmm0, xmm1
mulss xmm0, dword [0x100922f4]
movss dword [esp + 0x30], xmm0
mulss xmm0, dword [0x10080f8c]
movss dword [esp + 0x34], xmm0
call dword [eax + 0x74]
mov eax, dword [ebp]
lea ecx, [esp + 0x3c]
push ecx
push 1
mov ecx, ebp
call dword [eax + 0x74]
movss xmm0, dword [esp + 0x28]
movss xmm1, dword [esp + 0x34]
mov ecx, dword [0x101ab0d4]
push 0
push 0xff009bff
sub esp, 0x10
movss dword [esp + 0xc], xmm0
movss xmm0, dword [esp + 0x44]
movss dword [esp + 8], xmm0
mulss xmm0, dword [0x10080f8c]
movss dword [esp + 4], xmm1
movss xmm1, dword [esp + 0x48]
subss xmm1, xmm0
movss dword [esp], xmm1
call fcn.1004002f
mov ecx, dword [0x1015a628]
cmp dword [ecx + 0x101], 0
je 0x10055746
push 0xff009bff
sub esp, 0xc
lea esi, [esp + 0x4c]
mov edi, esp
lea eax, [esp + 0xc4]
push eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.10029543
add esp, 0x10
lea esi, [esp + 0x4c]
push eax
sub esp, 0xc
lea eax, [esp + 0xd4]
mov edi, esp
push eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.10029543
mov ecx, dword [0x101ab0d4]
add esp, 0x10
push eax
call fcn.1004059f
mov ecx, dword [0x1015a628]
cmp byte [ecx + 0x253f2], 0
je 0x100558c7
mov eax, dword [0x101a3304]
mov eax, dword [eax + 0x1e]
cmp byte [eax + 0x18d], 0x22
mov eax, dword [0x101ab088]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
je 0x100557b8
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x10080fe0]
cvtpd2ps xmm0, xmm0
mulss xmm0, dword [0x10080f90]
movss dword [ecx + 0x111], xmm0
mov eax, dword [0x101ab08c]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x10080fe0]
cvtpd2ps xmm0, xmm0
mulss xmm0, dword [0x10080f80]
jmp 0x100557fd
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x10080fe0]
cvtpd2ps xmm0, xmm0
mulss xmm0, dword [0x10080f8c]
movss dword [ecx + 0x111], xmm0
mov eax, dword [0x101ab08c]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x10080fe0]
cvtpd2ps xmm0, xmm0
mulss xmm0, dword [0x10080f8c]
mov eax, dword [0x1015a628]
movss dword [eax + 0x115], xmm0
mov edx, dword [0x1015a628]
mov eax, dword [edx + 0x253e5]
mov dword [edx + 0x25402], eax
mov esi, dword [0x1015a628]
mov eax, dword [esi + 0x253e9]
mov dword [esi + 0x25406], eax
mov ecx, dword [0x1015a628]
cmp byte [ecx + 0x253f1], 1
jne 0x100558c7
movss xmm0, dword [edx + 0x253e5]
lea eax, [esp + 0xa8]
movss dword [esp + 0x78], xmm0
movss xmm0, dword [esi + 0x253e9]
push eax
movss dword [esp + 0x80], xmm0
lea eax, [esp + 0x7c]
movss xmm0, dword [ecx + 0x253ed]
push eax
movss dword [esp + 0x88], xmm0
call fcn.10041b51
cvttss2si eax, dword [esp + 0xb4]
pop ecx
pop ecx
mov ecx, dword [0x1015a628]
push 0xffff0000
push eax
cvttss2si eax, dword [esp + 0xb0]
push eax
cvttss2si eax, dword [ecx + 0x115]
push eax
cvttss2si eax, dword [ecx + 0x111]
mov ecx, dword [0x101ab0d4]
push eax
call fcn.1004024c
mov ecx, dword [0x1015a628]
cmp byte [ecx + 0x253fd], 0
je 0x100559ce
mov eax, dword [0x101ab08c]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
xor esi, esi
addsd xmm0, qword [eax*8 + 0x10080fe0]
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
mov dword [ecx + 0x253fe], eax
mov eax, dword [0x1015a628]
cmp dword [eax + esi*4 + 0x1605], 1
jne 0x100559c1
push esi
call fcn.10007655
pop ecx
test al, al
je 0x100559c1
lea eax, [esp + 0x84]
push eax
push esi
call fcn.1003efbc
movss xmm0, dword [esp + 0x8c]
lea eax, [esp + 0xa4]
movss dword [esp + 0x98], xmm0
movss xmm0, dword [esp + 0x90]
push eax
movss dword [esp + 0xa0], xmm0
lea eax, [esp + 0x9c]
movss xmm0, dword [esp + 0x98]
push eax
movss dword [esp + 0xa8], xmm0
call fcn.10041b51
movss xmm0, dword [0x10080f60]
add esp, 0x10
comiss xmm0, dword [esp + 0xa4]
ja 0x100559c1
cvttss2si eax, dword [esp + 0xa0]
push 0xffff0000
mov ecx, dword [0x101ab0d4]
push eax
cvttss2si eax, dword [esp + 0xa4]
push eax
mov eax, dword [0x1015a628]
push 0
cvttss2si eax, dword [eax + 0x111]
push eax
call fcn.1004024c
inc esi
cmp esi, 0x3ec
jl 0x100558fd
inc ebx
cmp ebx, 0x36
jle 0x10055509
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xbc
ret