Function at 0x5377d0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x676680
mov eax, dword fs:[0]
push eax
sub esp, 0x60
mov eax, dword [0x71d5e0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0xc]
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
mov esi, ecx
mov ecx, dword [ebp + 0x10]
push 0x11
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x60], ecx
call edi
test ax, ax
js 0x537828
cmp dword [esi + 0x188], 0
mov dword [ebp - 0x5c], 0
je 0x53782f
mov dword [ebp - 0x5c], 1
push 0x10
call edi
xor edx, edx
test ax, ax
sets dl
lea ecx, [ebp - 0x3c]
or edi, 0xffffffff
xor ebx, ebx
mov dword [ebp - 0x58], edx
call fcn.005b4b20
mov dword [ebp - 0x3c], vtable.XTP_REPORTRECORDITEM_CLICKARGS.0
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
xor edx, edx
push ecx
mov dword [ebp - 0x14], ecx
push eax
mov ecx, esi
mov dword [ebp - 4], edx
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x2c], edx
call fcn.0052e0c0
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x6c], vtable.CXTPSmartPtrInternalT_class_CCmdTarget_.0
mov dword [ebp - 0x68], eax
test eax, eax
je 0x537896
add eax, 4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [ebp - 0x34]
mov byte [ebp - 4], 1
test eax, eax
je 0x5378d5
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x68]
call eax
mov ecx, dword [ebp - 0x34]
mov edx, dword [ecx]
mov edi, eax
mov eax, dword [edx + 0x70]
call eax
mov ecx, dword [ebp - 0x34]
mov edx, dword [ecx]
mov edx, dword [edx + 0x98]
mov ebx, eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x28]
push eax
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp + 0xc]
push eax
call edx
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0x14]
cmp dword [eax + 0x50], 0
jne 0x53790e
mov ecx, dword [ebp - 0x64]
mov edx, dword [ebp - 0x60]
mov dword [esi + 0xa0], ecx
mov ecx, dword [ebp - 0x5c]
mov dword [esi + 0xa4], edx
mov edx, dword [ebp - 0x58]
mov dword [esi + 0xa8], ecx
mov dword [esi + 0xac], edx
mov dword [esi + 0xb0], edi
mov dword [esi + 0xb4], ebx
cmp dword [esi + 0xac], 0
je 0x53791f
mov eax, dword [eax + 0x28]
mov dword [ebp - 0x40], eax
jmp 0x537936
cmp dword [esi + 0xa8], 0
je 0x537930
mov ecx, dword [eax + 0x24]
mov dword [ebp - 0x40], ecx
jmp 0x537936
mov edx, dword [eax + 0x20]
mov dword [ebp - 0x40], edx
mov ecx, esi
call fcn.0052df50
mov ebx, dword [ebp + 0x14]
cmp dword [ebx + 0x50], 0
mov dword [ebp - 0x44], eax
jne 0x537959
mov ecx, esi
call fcn.00412b2c
push 0
mov ecx, esi
call fcn.00536980
mov edi, dword [esi + 0x114]
test edi, edi
je 0x53799b
cmp dword [ebx + 0x4c], 1
jne 0x53799b
cmp dword [ebx + 0x50], 0
jne 0x537980
mov ecx, dword [ebp + 0x10]
mov eax, dword [edi]
mov edx, dword [ebp + 0xc]
mov eax, dword [eax + 0x5c]
push ecx
push edx
mov ecx, edi
call eax
cmp dword [ebx + 0x50], 1
jne 0x53799b
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
mov edx, dword [edi]
mov edx, dword [edx + 0x64]
push eax
mov eax, dword [ebp + 8]
push ecx
push eax
mov ecx, edi
call edx
mov edx, dword [ebp - 0x34]
test edx, edx
je 0x537bb2
xor eax, eax
cmp dword [ebx + 0x4c], 1
jne 0x5379e7
cmp dword [ebx + 0x50], eax
jne 0x5379c6
mov eax, dword [edx]
lea ecx, [ebp - 0x3c]
push ecx
mov ecx, edx
mov edx, dword [eax + 0xa0]
call edx
mov edx, dword [ebp - 0x34]
cmp dword [ebx + 0x50], 1
jne 0x5379df
mov eax, dword [edx]
lea ecx, [ebp - 0x3c]
push ecx
mov ecx, edx
mov edx, dword [eax + 0xa4]
call edx
mov edx, dword [ebp - 0x34]
test eax, eax
jne 0x537bd2
mov eax, dword [edx + 0x50]
cmp dword [eax + 0x78], 0
je 0x537bd2
mov ecx, esi
call fcn.0052dde0
xor edi, edi
cmp dword [ebx + 0x40], edi
je 0x537a1e
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
mov dword [esi + 0x1f4], eax
mov dword [esi + 0x1f8], ecx
mov dword [esi + 0x1fc], 1
cmp dword [ebx + 0x44], edi
je 0x537a38
mov edx, dword [esi]
mov eax, dword [edx + 0x240]
mov ecx, esi
mov dword [esi + 0x1fc], edi
call eax
mov edx, dword [ebp - 0x34]
mov eax, dword [edx]
mov ecx, edx
mov edx, dword [eax + 0x70]
mov dword [ebp - 0x4c], edi
mov dword [ebp - 0x48], edi
call edx
test eax, eax
je 0x537a64
mov eax, dword [ebp - 0x40]
cmp dword [eax + 0x34], edi
je 0x537a5a
mov dword [ebp - 0x4c], 1
cmp dword [eax + 0x38], edi
je 0x537a64
mov edi, 1
cmp dword [ebx + 0x2c], 0
je 0x537a97
cmp dword [esi + 0x1a4], 0
je 0x537a97
mov ecx, dword [ebp - 0x2c]
test ecx, ecx
je 0x537a8e
mov eax, dword [ecx]
mov edx, dword [eax + 0x120]
call edx
test eax, eax
je 0x537a8e
mov eax, dword [ebp - 0x30]
push eax
jmp 0x537a90
push 0
mov ecx, esi
call fcn.00535dd0
mov eax, dword [ebp - 0x40]
cmp dword [eax + 0x20], 0
jne 0x537aa6
cmp dword [eax + 0x24], 0
je 0x537ab5
test edi, edi
jne 0x537ab5
mov ecx, dword [ebp - 0x34]
push ecx
mov ecx, esi
call fcn.0052f6e0
cmp dword [esi + 0xa8], 0
je 0x537ae6
cmp dword [esi + 0xb4], 0
je 0x537ae6
mov ecx, dword [ebp - 0x34]
mov edx, dword [ecx]
mov eax, dword [edx + 0x68]
call eax
cmp dword [esi + 0xb0], eax
jne 0x537ae6
mov eax, 1
cmp dword [ebx + 0x50], eax
jne 0x537ae6
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x40]
cmp dword [eax + 0x28], 0
je 0x537af5
cmp dword [ebp - 0x4c], 0
je 0x537afb
cmp dword [ebp - 0x48], 0
je 0x537b4a
cmp dword [eax + 0x30], 0
mov ecx, dword [ebp - 0x44]
mov edx, dword [ebp - 0x34]
je 0x537ba3
mov ebx, dword [ebp - 0x5c]
mov edi, dword [ebp - 0x58]
push ebx
push edi
push ecx
push edx
mov ecx, esi
call fcn.0052dfd0
mov ecx, esi
call fcn.0056be20
test eax, eax
je 0x537b47
cmp dword [esi + 0x184], 0
je 0x537b47
test edi, edi
jne 0x537b47
test ebx, ebx
je 0x537b47
mov eax, dword [ebp - 0x34]
mov ecx, dword [esi + 0x160]
push eax
call fcn.005b9b10
mov ebx, dword [ebp + 0x14]
cmp dword [ebx + 0x30], 0
je 0x537b5b
mov eax, dword [ebp - 0x34]
push eax
mov ecx, esi
call fcn.0052f830
cmp dword [ebx + 0x34], 0
je 0x537b9a
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp - 0x34]
mov edx, dword [ecx]
mov edx, dword [edx + 0x9c]
push eax
mov eax, dword [ebp + 0xc]
push eax
call edx
cmp dword [ebx + 0x3c], 0
je 0x537b9a
mov edi, dword [ebp - 0x2c]
test edi, edi
je 0x537b9a
mov ecx, edi
call fcn.0052dc40
push eax
mov ecx, edi
call fcn.005b48a0
push eax
mov ecx, esi
call fcn.00531a90
mov ecx, esi
call fcn.00532740
jmp 0x537bd2
push 0
push 0
push ecx
push edx
mov ecx, esi
call fcn.0052dfd0
jmp 0x537b4a
cmp dword [esi + 0x33c], 0
je 0x537bd2
cmp dword [ebp - 0x5c], 0
jne 0x537bd2
cmp dword [ebp - 0x58], 0
jne 0x537bd2
mov ecx, dword [esi + 0x160]
call fcn.005b9de0
cmp dword [ebx + 0x38], 0
je 0x537c2f
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
push eax
push ecx
mov ecx, dword [esi + 0x118]
call fcn.005bc8b0
test eax, eax
je 0x537c2f
mov ecx, dword [ebp - 0x34]
test ecx, ecx
je 0x537c0a
mov eax, dword [ebp + 0x10]
mov edx, dword [ecx]
mov edx, dword [edx + 0xb0]
push eax
mov eax, dword [ebp + 0xc]
push eax
call edx
jmp 0x537c2f
mov ecx, dword [esi + 0x20]
lea eax, [ebp + 0xc]
push eax
push ecx
call dword [sym.imp.USER32.dll_ClientToScreen]
mov eax, dword [ebp - 0x34]
push 0xffffffffffffffff
lea edx, [ebp + 0xc]
push edx
push 0xfffffffffffffffb
push 0
push 0
push eax
mov ecx, esi
call fcn.00532af0
mov ecx, dword [ebp - 0x40]
cmp dword [ecx + 0x24], 0
je 0x537c60
mov ecx, esi
call fcn.0056bf60
mov ecx, dword [ebp - 0x44]
mov edx, dword [eax]
mov edx, dword [edx + 0x58]
push ecx
mov ecx, eax
call edx
mov ecx, esi
call fcn.0052dde0
push eax
call fcn.0052f6e0
mov ecx, esi
call fcn.00532740
mov eax, dword [esi + 0x160]
cmp dword [eax + 0x44], 0
je 0x537c78
mov edx, dword [esi]
mov eax, dword [edx + 0x204]
mov ecx, esi
call eax
mov ecx, dword [ebp - 0x68]
mov byte [ebp - 4], 0
test ecx, ecx
je 0x537c88
call fcn.00418c15
lea ecx, [ebp - 0x3c]
mov dword [ebp - 4], 0xffffffff
call fcn.005b4710
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005000ee
mov esp, ebp
pop ebp
ret 0x10