Function at 0x14015a391
Capabilities:
Log keystrokes via polling

Disassembly:
push rbp
sub rsp, 0x210
lea rbp, [rsp + 0x80]
mov eax, edx
mov edx, ecx
mov byte [rbp + 0x1a0], dl
mov byte [rbp + 0x1a8], al
mov eax, r8d
mov byte [rbp + 0x1b0], al
mov dword [rbp - 0x34], 0xed62f6e
mov byte [rbp - 0x19], 0x5b
movzx eax, byte [rbp - 0x19]
cmp al, 0x5d
je 0x14015aabc
movzx eax, byte [rbp - 0x19]
movsx eax, al
cmp eax, 0x73
jne 0x14015a3f8
mov eax, dword [rbp + 0xec]
mov dword [rbp + 0x16c], eax
movzx eax, byte [rbp - 0x19]
add eax, 0x72
mov byte [rbp - 0x19], al
jmp 0x14015aa3c
movzx edx, byte [rbp + 0x1a8]
movzx eax, byte [rbp + 0x1a0]
sub edx, eax
movzx eax, byte [rbp + 0x1b0]
cmp edx, eax
jge 0x14015a4fa
mov rax, qword [rbp + 0x160]
mov r8d, 0xd1
mov edx, 0x97
mov rcx, rax
mov rax, qword [sym.imp.USER32.dll_CheckDlgButton]
call rax
mov dword [rbp + 0x15c], eax
cmp dword [rbp + 0x16c], 0x6992bed
je 0x14015a4db
cmp dword [rbp + 0x16c], 0x297ed14f
jne 0x14015a4fa
movzx eax, byte [rbp + 0x1a8]
mov byte [rbp + 0x1b0], al
mov rax, qword [rbp - 0x18]
mov rcx, rax
mov rax, qword [sym.imp.USER32.dll_SetCursor]
call rax
mov qword [rbp + 0x150], rax
mov eax, dword [rbp + 0xec]
mov dword [rbp + 0x16c], eax
mov rax, qword [rbp - 0x30]
mov rcx, qword [rbp + 0x148]
mov rdx, qword [rbp + 0x148]
mov dword [rsp + 0x38], 5
mov dword [rsp + 0x30], 0x3f
mov dword [rsp + 0x28], 0x9c
mov dword [rsp + 0x20], 0xfc
mov r9d, 0xb2
mov r8, rcx
mov rcx, rax
mov rax, qword [sym.imp.USER32.dll_DeferWindowPos]
call rax
mov qword [rbp + 0x140], rax
jmp 0x14015a4fa
mov edx, 0x54
mov ecx, 0xc9
call fcn.14015ab3a
mov rax, qword [sym.imp.USER32.dll_GetKBCodePage]
call rax
mov dword [rbp + 0x184], eax
nop
mov eax, dword [rbp + 0x184]
and eax, 0xd0b8d970
mov dword [rbp - 0x34], eax
mov eax, dword [rbp + 0xec]
mov dword [rbp - 0x24], eax
lea rax, [rbp - 0x19]
mov qword [rbp + 0xd8], rax
mov eax, dword [rbp - 0x34]
test eax, eax
je 0x14015a533
cmp eax, 0x1d8ff5de
je 0x14015a612
jmp 0x14015a685
cmp dword [rbp + 0x16c], 0
je 0x14015a551
cmp dword [rbp + 0x16c], 0x120f3509
je 0x14015a602
jmp 0x14015a685
mov edx, 0x99fb7e1f
mov eax, dword [rbp + 0x184]
mov ecx, edx
shr eax, cl
mov edx, dword [rbp - 0x34]
cmp edx, eax
jae 0x14015a5f5
mov eax, dword [rbp + 0x184]
shl eax, 0x1a
mov dword [rbp - 0x34], eax
mov rax, qword [rbp + 0xd8]
movzx ecx, byte [rax]
movzx edx, byte [rbp - 0x19]
mov rax, qword [rbp + 0xd8]
or edx, ecx
mov byte [rax], dl
mov rax, qword [rbp + 0xd8]
movzx eax, byte [rax]
movsx r8d, al
mov ecx, dword [rbp - 0x24]
mov edx, dword [rbp - 0x24]
movzx eax, byte [rbp + 0x1a0]
mov r9d, r8d
mov r8d, ecx
mov ecx, eax
call fcn.140159c12
mov rax, qword [rbp + 0xf0]
mov rdx, qword [rbp + 0x160]
mov rcx, rax
mov rax, qword [sym.imp.USER32.dll_ChangeClipboardChain]
call rax
mov dword [rbp + 0x138], eax
mov rax, qword [rbp + 0xd8]
movzx eax, byte [rax]
mov edx, eax
movzx eax, byte [rbp - 0x19]
sub edx, eax
mov rax, qword [rbp + 0xd8]
mov byte [rax], dl
jmp 0x14015a610
lea rax, [rbp - 0x34]
mov qword [rbp + 0x178], rax
jmp 0x14015a610
movzx eax, byte [rbp + 0x1b0]
mov byte [rbp + 0x1a8], al
nop
jmp 0x14015a685
lea rax, [rbp + 0xd8]
mov rcx, rax
mov rax, qword [sym.imp.USER32.dll_GetKeyboardState]
call rax
mov dword [rbp + 0x13c], eax
cmp dword [rbp + 0x16c], 0x6eff9d21
jne 0x14015a662
mov rax, qword [rbp + 0x178]
mov edx, dword [rax]
mov eax, dword [rbp - 0x34]
add edx, eax
mov rax, qword [rbp + 0x178]
mov dword [rax], edx
mov rax, qword [rbp + 0x178]
mov eax, dword [rax]
and eax, dword [rbp + 0x184]
mov dword [rbp - 0x34], eax
jmp 0x14015a684
mov eax, dword [rbp + 0x16c]
mov ecx, eax
call fcn.14015ac03
mov edx, dword [rbp - 0x34]
mov eax, dword [rbp + 0x184]
add edx, eax
mov rax, qword [rbp + 0x178]
mov dword [rax], edx
nop
nop
movzx edx, byte [rbp + 0x1b0]
movzx eax, byte [rbp + 0x1a0]
sub edx, eax
movzx eax, byte [rbp + 0x1a8]
cmp edx, eax
jg 0x14015aa01
mov rax, qword [rbp + 0x178]
mov edx, dword [rax]
mov eax, dword [rbp - 0x34]
mov ecx, eax
shr edx, cl
mov eax, edx
cmp eax, dword [rbp + 0x184]
jb 0x14015a975
mov eax, dword [rbp - 0x24]
and eax, dword [rbp + 0x16c]
mov edx, eax
mov eax, dword [rbp + 0xec]
cmp edx, eax
jle 0x14015a7b2
movzx eax, byte [rbp - 0x19]
movsx r8d, al
mov ecx, dword [rbp + 0xec]
movzx eax, byte [rbp + 0x1a0]
mov edx, dword [rbp + 0x16c]
mov r9d, r8d
mov r8d, ecx
mov ecx, eax
call fcn.140159c12
mov eax, dword [rbp - 0x34]
sub eax, dword [rbp + 0x184]
mov edx, eax
mov rax, qword [rbp + 0x178]
mov dword [rax], edx
mov ecx, 1
mov rax, qword [sym.imp.USER32.dll_IsGUIThread]
call rax
mov dword [rbp + 0x15c], eax
mov rax, qword [rbp + 0x178]
mov eax, dword [rax]
mov edx, dword [rbp + 0x184]
sub edx, eax
mov dword [rbp - 0x34], edx
movzx eax, byte [rbp - 0x19]
lea edx, [rax + 0x15]
mov rax, qword [rbp + 0xd8]
mov byte [rax], dl
movzx eax, byte [rbp - 0x19]
movsx r8d, al
mov edx, dword [rbp - 0x24]
movzx eax, byte [rbp + 0x1a8]
mov ecx, dword [rbp + 0x16c]
mov r9d, r8d
mov r8d, ecx
mov ecx, eax
call fcn.140159c12
lea rax, [rbp - 0x10]
mov r8, rax
mov edx, 0xea
lea rax, str.recordings_consistent
mov rcx, rax
mov rax, qword [sym.imp.USER32.dll_EnumDisplaySettingsW]
call rax
mov dword [rbp + 0x13c], eax
mov eax, dword [rbp - 0x34]
and eax, dword [rbp + 0x184]
mov edx, eax
mov rax, qword [rbp + 0x178]
mov dword [rax], edx
jmp 0x14015a961
movzx edx, byte [rbp + 0x1a0]
movzx eax, byte [rbp + 0x1b0]
add edx, eax
movzx eax, byte [rbp + 0x1a8]
cmp edx, eax
jl 0x14015a961
mov eax, dword [rbp + 0x184]
mov dword [rbp - 0x20], eax
mov rax, qword [rbp + 0xd8]
movzx eax, byte [rax]
movsx eax, al
cmp eax, 0x30
jne 0x14015a846
mov eax, dword [rbp + 0x16c]
mov ecx, eax
call fcn.14015ac03
mov eax, dword [rbp + 0xec]
sub eax, dword [rbp + 0x16c]
mov dword [rbp - 0x24], eax
lea rax, [rbp - 0x30]
mov r8d, 0xab
mov edx, 0xec
mov rcx, rax
mov rax, qword [sym.imp.USER32.dll_OffsetRect]
call rax
mov dword [rbp + 0x134], eax
mov rax, qword [rbp + 0xd8]
movzx eax, byte [rax]
mov edx, eax
movzx eax, byte [rbp - 0x19]
add edx, eax
mov rax, qword [rbp + 0xd8]
mov byte [rax], dl
jmp 0x14015a885
mov edx, dword [rbp - 0x34]
mov eax, dword [rbp + 0x184]
add eax, edx
mov dword [rbp - 0x20], eax
lea rax, [rbp - 0x24]
mov qword [rbp + 0x170], rax
lea rax, [rbp - 0x24]
mov qword [rbp + 0x188], rax
mov rax, qword [rbp + 0x178]
mov eax, dword [rax]
mov dword [rbp + 0x130], eax
lea rax, [rbp - 0x24]
mov qword [rbp + 0x128], rax
nop
mov eax, dword [rbp - 0x20]
test eax, eax
je 0x14015a8c1
cmp eax, 0xdd9cddc
jne 0x14015a8ee
mov edx, dword [rbp + 0xec]
mov rax, qword [rbp + 0x188]
mov eax, dword [rax]
mov ecx, eax
shl edx, cl
mov rax, qword [rbp + 0x170]
mov dword [rax], edx
mov rax, qword [rbp + 0xd8]
movzx eax, byte [rax]
or eax, 0x5f
mov byte [rbp - 0x19], al
jmp 0x14015a8ee
mov word [rbp + 0x126], 0xa28
lea rax, [rbp - 0x20]
mov qword [rbp + 0x118], rax
mov rax, qword [rbp + 0x188]
mov edx, dword [rax]
mov eax, dword [rbp + 0x16c]
mov ecx, eax
sar edx, cl
mov eax, edx
mov dword [rbp - 0x24], eax
nop
mov rax, qword [rbp + 0x188]
mov eax, dword [rax]
mov edx, dword [rbp + 0x16c]
sub edx, eax
mov dword [rbp - 0x24], edx
mov edx, 0x1d
mov ecx, 0xb2
call fcn.14015ab3a
mov rax, qword [rbp + 0x178]
mov edx, dword [rax]
mov eax, dword [rbp - 0x34]
xor edx, eax
mov rax, qword [rbp + 0x178]
mov dword [rax], edx
mov eax, dword [rbp + 0xec]
mov dword [rbp + 0x16c], eax
mov rax, qword [rbp + 0xe0]
lea rcx, [rbp - 0x18]
mov rdx, qword [rbp + 0x110]
mov r9, rcx
mov r8d, 0xe7
mov rcx, rax
mov rax, qword [sym.imp.USER32.dll_GetMenuItemRect]
call rax
mov dword [rbp + 0x10c], eax
mov ecx, 1
mov rax, qword [sym.imp.USER32.dll_BlockInput]
call rax
mov dword [rbp + 0x15c], eax
mov rax, qword [rbp + 0xd8]
movzx eax, byte [rax]
or eax, 0x6e
mov edx, eax
movzx eax, byte [rbp - 0x19]
cmp dl, al
jge 0x14015a9a0
mov eax, dword [rbp - 0x34]
xor eax, dword [rbp + 0x184]
mov edx, eax
mov rax, qword [rbp + 0x178]
mov dword [rax], edx
mov eax, dword [rbp - 0x24]
cmp eax, 0x633e14f3
jne 0x14015a9f4
mov eax, dword [rbp + 0xec]
mov dword [rbp + 0x16c], eax
mov edx, dword [rbp - 0x34]
mov eax, dword [rbp + 0x184]
mov ecx, eax
shl edx, cl
mov rax, qword [rbp + 0x178]
mov dword [rax], edx
mov eax, dword [rbp + 0xec]
mov ecx, eax
call fcn.14015ac03
lea rax, [rbp + 0xf0]
mov rcx, rax
mov rax, qword [sym.imp.USER32.dll_ClipCursor]
call rax
mov dword [rbp + 0x10c], eax
jmp 0x14015aa01
mov eax, dword [rbp + 0xec]
mov dword [rbp + 0x16c], eax
nop
mov rax, qword [rbp + 0xd8]
movzx eax, byte [rax]
add eax, 0x32
mov byte [rbp - 0x19], al
lea rax, str.Form_actuarial
mov rcx, rax
mov rax, qword [sym.imp.USER32.dll_CharNextW]
call rax
mov qword [rbp + 0x100], rax
movzx eax, byte [rbp - 0x19]
lea edx, [rax - 0x38]
mov rax, qword [rbp + 0xd8]
mov byte [rax], dl
nop
movzx eax, byte [rbp + 0x1a8]
mov byte [rbp + 0x1b0], al
movzx eax, byte [rbp - 0x19]
movsx r8d, al
mov ecx, dword [rbp + 0xec]
mov edx, dword [rbp + 0xec]
movzx eax, byte [rbp + 0x1a0]
mov r9d, r8d
mov r8d, ecx
mov ecx, eax
call fcn.140159c12
mov rax, qword [sym.imp.USER32.dll_GetDialogBaseUnits]
call rax
mov dword [rbp + 0x16c], eax
movzx ecx, byte [rbp + 0x1a8]
movzx edx, byte [rbp + 0x1b0]
movzx eax, byte [rbp + 0x1b0]
mov r8d, ecx
mov ecx, eax
call fcn.14015a391
movzx eax, byte [rbp + 0x1a0]
mov byte [rbp + 0x1b0], al
mov rax, qword [sym.imp.USER32.dll_GetOpenClipboardWindow]
call rax
mov qword [rbp + 0x160], rax
mov rax, qword [rbp + 0xe0]
lea rcx, [rbp - 0x19]
mov rdx, qword [rbp + 0xf8]
mov r8, rcx
mov rcx, rax
mov rax, qword [sym.imp.USER32.dll_TranslateAcceleratorW]
call rax
mov dword [rbp + 0xec], eax
mov edx, 0x52
mov ecx, 0x57
call fcn.14015ab3a
mov rax, qword [rbp + 0xf0]
lea rcx, [rbp + 0xec]
lea rdx, [rbp + 0xe0]
mov qword [rsp + 0x20], rdx
mov r9, rcx
mov r8d, 0x4e
mov edx, 0xe0
mov rcx, rax
mov rax, qword [sym.imp.USER32.dll_ScrollWindow]
call rax
mov dword [rbp + 0x10c], eax
mov eax, 0xf3
add rsp, 0x210
pop rbp
ret