Function at 0x524470
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rsi
push rdi
sub rsp, 0x1b8
mov qword [rsp + 0x180], 0xfffffffffffffffe
mov rax, qword [rsp + 0x1d8]
mov eax, dword [rax + 8]
mov dword [rsp + 0x40], eax
cmp dword [rsp + 0x40], 0x200
je 0x5244d4
cmp dword [rsp + 0x40], 0xa0
je 0x5244d4
cmp dword [rsp + 0x40], 0x202
je 0x5244d4
cmp dword [rsp + 0x40], 0x205
je 0x5244d4
cmp dword [rsp + 0x40], 0x208
jne 0x524c05
mov ecx, 1
call qword [sym.imp.USER32.dll_GetKeyState]
cwde
test eax, eax
jl 0x524c05
mov ecx, 2
call qword [sym.imp.USER32.dll_GetKeyState]
cwde
test eax, eax
jl 0x524c05
mov ecx, 4
call qword [sym.imp.USER32.dll_GetKeyState]
cwde
test eax, eax
jl 0x524c05
call fcn.00476940
mov qword [rsp + 0xd0], rax
mov rax, qword [rsp + 0x1d8]
mov rcx, qword [rax]
call fcn.004385e0
mov qword [rsp + 0xc8], rax
cmp qword [rsp + 0xc8], 0
je 0x52456b
mov rax, qword [rsp + 0xc8]
mov eax, dword [rax + 0x78]
and eax, 0x401
test eax, eax
jne 0x52456b
mov rcx, qword [rsp + 0xc8]
call fcn.00418b60
mov qword [rsp + 0xc8], rax
jmp 0x524535
mov rax, qword [rsp + 0x1d0]
cmp qword [rsp + 0xc8], rax
je 0x5245b3
cmp qword [rsp + 0xc8], 0
jne 0x5245ae
mov rax, qword [rsp + 0xd0]
mov qword [rax + 0x80], 0
mov rax, qword [rsp + 0xd0]
mov qword [rax + 0x88], 0xffffffffffffffff
jmp 0x524d88
mov rax, qword [rsp + 0xd0]
mov rax, qword [rax + 0x78]
mov qword [rsp + 0xc0], rax
mov rcx, qword [rsp + 0x1d0]
call fcn.0043db50
mov qword [rsp + 0x60], rax
cmp qword [rsp + 0xc0], 0
je 0x524691
mov rcx, qword [rsp + 0xc0]
call fcn.00416cf0
cmp rax, qword [rsp + 0x60]
je 0x524691
mov rax, qword [rsp + 0xc0]
mov rax, qword [rax]
mov rcx, qword [rsp + 0xc0]
call qword [rax + 0xd0]
mov rax, qword [rsp + 0xc0]
mov qword [rsp + 0x150], rax
mov rax, qword [rsp + 0x150]
mov qword [rsp + 0x148], rax
cmp qword [rsp + 0x148], 0
je 0x524669
mov rax, qword [rsp + 0x148]
mov rax, qword [rax]
mov edx, 1
mov rcx, qword [rsp + 0x148]
call qword [rax + reloc.oledlg.dll_OleUIBusyA]
mov qword [rsp + 0x188], rax
jmp 0x524675
mov qword [rsp + 0x188], 0
mov rax, qword [rsp + 0xd0]
mov qword [rax + 0x78], 0
mov qword [rsp + 0xc0], 0
cmp qword [rsp + 0xc0], 0
jne 0x5247c2
mov r8d, 0x19c
lea rdx, [0x00626798]
mov ecx, 0xe0
call fcn.00406540
mov qword [rsp + 0x160], rax
cmp qword [rsp + 0x160], 0
je 0x5246e1
mov rcx, qword [rsp + 0x160]
call fcn.00523010
mov qword [rsp + 0x190], rax
jmp 0x5246ed
mov qword [rsp + 0x190], 0
mov rax, qword [rsp + 0x190]
mov qword [rsp + 0x158], rax
mov rax, qword [rsp + 0x158]
mov qword [rsp + 0xc0], rax
mov rax, qword [rsp + 0xc0]
mov rax, qword [rax]
mov r8d, 1
mov rdx, qword [rsp + 0x60]
mov rcx, qword [rsp + 0xc0]
call qword [rax + 0x278]
test eax, eax
jne 0x524796
mov rax, qword [rsp + 0xc0]
mov qword [rsp + 0x170], rax
mov rax, qword [rsp + 0x170]
mov qword [rsp + 0x168], rax
cmp qword [rsp + 0x168], 0
je 0x524785
mov rax, qword [rsp + 0x168]
mov rax, qword [rax]
mov edx, 1
mov rcx, qword [rsp + 0x168]
call qword [rax + reloc.oledlg.dll_OleUIBusyA]
mov qword [rsp + 0x198], rax
jmp 0x524791
mov qword [rsp + 0x198], 0
jmp 0x524d88
xor r9d, r9d
xor r8d, r8d
mov edx, 0x401
mov rcx, qword [rsp + 0xc0]
call fcn.00416d90
mov rax, qword [rsp + 0xd0]
mov rcx, qword [rsp + 0xc0]
mov qword [rax + 0x78], rcx
mov r8d, 0x1a6
lea rdx, [0x00626808]
mov rcx, qword [rsp + 0xc0]
call fcn.00422960
mov rax, qword [rsp + 0xc0]
mov rcx, qword [rax + 0x40]
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x52480a
mov edx, 0x1a7
lea rcx, [0x00626840]
call fcn.00422700
test eax, eax
je 0x52480a
int3
mov r8d, 0x48
xor edx, edx
lea rcx, [rsp + 0xe0]
call fcn.00554fe0
mov rax, qword [rsp + 0x1d8]
mov rdx, qword [rax + 0x24]
lea rcx, [rsp + 0x48]
call fcn.00589c00
lea rdx, [rsp + 0x48]
mov rax, qword [rsp + 0x1d0]
mov rcx, qword [rax + 0x40]
call qword [sym.imp.USER32.dll_ScreenToClient]
mov r8d, 0x48
xor edx, edx
lea rcx, [rsp + 0x70]
call fcn.00554fe0
mov dword [rsp + 0x70], 0x38
mov rax, qword [rsp + 0x1d0]
mov rax, qword [rax]
lea r8, [rsp + 0x70]
mov rdx, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x1d0]
call qword [rax + reloc.OLEAUT32.dll_VarBoolFromI1]
mov qword [rsp + 0x58], rax
cmp qword [rsp + 0x58], 0xffffffffffffffff
jne 0x5248a4
mov qword [rsp + 0x1a0], 0
jmp 0x5248b4
mov rax, qword [rsp + 0x1d0]
mov qword [rsp + 0x1a0], rax
mov rax, qword [rsp + 0x1a0]
mov qword [rsp + 0x50], rax
mov rax, qword [rsp + 0xd0]
mov rcx, qword [rsp + 0x58]
cmp qword [rax + 0x88], rcx
jne 0x5248f1
mov rax, qword [rsp + 0xd0]
mov rcx, qword [rsp + 0x50]
cmp qword [rax + 0x80], rcx
je 0x524b5a
cmp qword [rsp + 0x58], 0xffffffffffffffff
je 0x524a2e
lea rax, [rsp + 0xe0]
lea rcx, [rsp + 0x70]
mov rdi, rax
mov rsi, rcx
mov ecx, 0x48
rep movsb byte [rdi], byte [rsi]
mov eax, dword [rsp + 0xe4]
and eax, 0x3fffffff
mov dword [rsp + 0xe4], eax
mov rax, qword [rsp + 0x1d0]
mov eax, dword [rax + 0x78]
and eax, 0x400
test eax, eax
je 0x52494f
mov eax, dword [rsp + 0xe4]
or eax, 0x20
mov dword [rsp + 0xe4], eax
lea r9, [rsp + 0xe0]
xor r8d, r8d
mov edx, 0x404
mov rcx, qword [rsp + 0xc0]
call fcn.00416d90
test rax, rax
jne 0x524989
mov edx, 0x1bd
lea rcx, [0x00626878]
call fcn.00422700
test eax, eax
je 0x524989
int3
mov eax, dword [rsp + 0x74]
and eax, 0x40000000
test eax, eax
jne 0x5249ab
mov rcx, qword [rsp + 0x1d0]
call fcn.0043dbf0
test eax, eax
je 0x524a2c
xor r9d, r9d
mov r8d, 1
mov edx, 0x401
mov rcx, qword [rsp + 0xc0]
call fcn.00416d90
mov rax, qword [rsp + 0x1d0]
mov eax, dword [rax + 0x78]
and eax, 0x400
test eax, eax
je 0x5249fa
lea r9, [rsp + 0xe0]
mov r8d, 1
mov edx, 0x411
mov rcx, qword [rsp + 0xc0]
call fcn.00416d90
mov dword [rsp + 0x30], 0x213
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rax, qword [rsp + 0xc0]
mov rcx, qword [rax + 0x40]
call qword [sym.imp.USER32.dll_SetWindowPos]
jmp 0x524a46
xor r9d, r9d
xor r8d, r8d
mov edx, 0x401
mov rcx, qword [rsp + 0xc0]
call fcn.00416d90
mov rdx, qword [rsp + 0x1d8]
mov rcx, qword [rsp + 0xc0]
call fcn.00524350
mov rax, qword [rsp + 0xd0]
cmp qword [rax + 0x90], 0
je 0x524aa8
mov rax, qword [rsp + 0xd0]
mov rax, qword [rax + 0x90]
mov eax, dword [rax]
cmp rax, 0x38
jb 0x524aa8
mov rax, qword [rsp + 0xd0]
mov r9, qword [rax + 0x90]
xor r8d, r8d
mov edx, 0x405
mov rcx, qword [rsp + 0xc0]
call fcn.00416d90
mov rax, qword [rsp + 0xd0]
mov rcx, qword [rsp + 0x50]
mov qword [rax + 0x80], rcx
mov rax, qword [rsp + 0xd0]
mov rcx, qword [rsp + 0x58]
mov qword [rax + 0x88], rcx
mov rax, qword [rsp + 0xd0]
cmp qword [rax + 0x90], 0
jne 0x524b34
mov r8d, 0x1db
lea rdx, str.f:_rtm_vctools_vc7libs_ship_atlmfc_srcmfc_tooltip.cpp
mov ecx, 0x48
call fcn.00406460
mov qword [rsp + 0x178], rax
mov rax, qword [rsp + 0xd0]
mov rcx, qword [rsp + 0x178]
mov qword [rax + 0x90], rcx
mov r8d, 0x48
xor edx, edx
mov rax, qword [rsp + 0xd0]
mov rcx, qword [rax + 0x90]
call fcn.00554fe0
mov rax, qword [rsp + 0xd0]
mov rax, qword [rax + 0x90]
lea rcx, [rsp + 0x70]
mov rdi, rax
mov rsi, rcx
mov ecx, 0x48
rep movsb byte [rdi], byte [rsi]
jmp 0x524bdd
mov rax, qword [rsp + 0x1d0]
mov eax, dword [rax + 0x78]
and eax, 0x400
test eax, eax
je 0x524bc0
lea rcx, [rsp + 0x130]
call qword [sym.imp.USER32.dll_GetCursorPos]
movsxd rax, dword [rsp + 0x130]
and rax, 0xffff
movzx eax, ax
movsxd rcx, dword [rsp + 0x134]
and rcx, 0xffff
movzx ecx, cx
shl ecx, 0x10
or eax, ecx
mov eax, eax
mov r9, rax
xor r8d, r8d
mov edx, 0x412
mov rcx, qword [rsp + 0xc0]
call fcn.00416d90
jmp 0x524bdd
cmp qword [rsp + 0x58], 0xffffffffffffffff
je 0x524bdd
mov rdx, qword [rsp + 0x1d8]
mov rcx, qword [rsp + 0xc0]
call fcn.00524350
cmp qword [rsp + 0xa0], 0xffffffffffffffff
je 0x524c00
cmp qword [rsp + 0x98], 0
jne 0x524c00
mov rcx, qword [rsp + 0xa0]
call fcn.00550650
jmp 0x524d88
mov rax, qword [rsp + 0x1d0]
mov eax, dword [rax + 0x78]
and eax, 0x401
test eax, eax
je 0x524d88
mov rax, qword [rsp + 0x1d8]
mov rcx, qword [rax]
call fcn.004385e0
mov qword [rsp + 0x138], rax
cmp qword [rsp + 0x138], 0
je 0x524c7d
mov rax, qword [rsp + 0x1d0]
cmp qword [rsp + 0x138], rax
je 0x524c7d
mov rax, qword [rsp + 0x138]
mov eax, dword [rax + 0x78]
and eax, 0x401
test eax, eax
jne 0x524c7d
mov rcx, qword [rsp + 0x138]
call fcn.00418b60
mov qword [rsp + 0x138], rax
jmp 0x524c35
mov rax, qword [rsp + 0x1d0]
cmp qword [rsp + 0x138], rax
je 0x524c94
jmp 0x524d88
cmp dword [rsp + 0x40], 0x100
jb 0x524ca8
cmp dword [rsp + 0x40], 0x109
jbe 0x524cc9
cmp dword [rsp + 0x40], 0x104
jb 0x524cbc
cmp dword [rsp + 0x40], 0x107
jbe 0x524cc9
mov dword [rsp + 0x1a8], 0
jmp 0x524cd4
mov dword [rsp + 0x1a8], 1
mov eax, dword [rsp + 0x1a8]
mov dword [rsp + 0x140], eax
mov rax, qword [rsp + 0x1d0]
mov eax, dword [rax + 0x78]
and eax, 0x400
test eax, eax
jne 0x524d88
cmp dword [rsp + 0x140], 0
jne 0x524d7c
cmp dword [rsp + 0x40], 0x201
je 0x524d7c
cmp dword [rsp + 0x40], 0x203
je 0x524d7c
cmp dword [rsp + 0x40], 0x204
je 0x524d7c
cmp dword [rsp + 0x40], 0x206
je 0x524d7c
cmp dword [rsp + 0x40], 0x207
je 0x524d7c
cmp dword [rsp + 0x40], 0x209
je 0x524d7c
cmp dword [rsp + 0x40], 0xa1
je 0x524d7c
cmp dword [rsp + 0x40], 0xa3
je 0x524d7c
cmp dword [rsp + 0x40], 0xa4
je 0x524d7c
cmp dword [rsp + 0x40], 0xa6
je 0x524d7c
cmp dword [rsp + 0x40], 0xa7
je 0x524d7c
cmp dword [rsp + 0x40], 0xa9
jne 0x524d88
mov ecx, dword [rsp + 0x140]
call fcn.0043a7b0
add rsp, 0x1b8
pop rdi
pop rsi
ret