Function at 0x140020450
Capabilities:
Log keystrokes via polling

Disassembly:
push rbp
push rdi
push r13
mov rbp, rsp
sub rsp, 0x50
mov eax, dword [rcx + 0x518]
mov rdi, rcx
mov ecx, dword [rcx + 0x514]
mov r13d, edx
test ecx, ecx
js 0x140020cbd
cmp ecx, dword [rdi + 0x190]
jge 0x140020cbd
test eax, eax
js 0x140020cbd
cmp eax, dword [rdi + 0x198]
jge 0x140020cbd
mov rax, qword [rdi + 0x514]
mov qword [rsp + 0x78], rbx
mov qword [rsp + 0x88], r12
mov qword [rsp + 0x40], r15
xor r15d, r15d
mov qword [rbp - 0x20], rax
lea ecx, [r15 + 0x11]
mov r12d, r15d
mov dword [rbp - 0x2c], r15d
call qword [sym.imp.USER32.dll_GetKeyState]
mov ebx, 0x8000
test bx, ax
je case.0x1400204f3.46
lea eax, [r13 - 0x2d]
cmp eax, 0x3e
ja case.0x1400204f3.46
lea rdx, [0x140000000]
movzx eax, byte [rdx + rax + 0x20ce8]
mov ecx, dword [rdx + rax*4 + 0x20cd0]
add rcx, rdx
jmp rcx
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.mfc110u.dll_Ordinal_824]
jmp case.0x1400204f3.46
mov rcx, rdi
call fcn.140029ae0
mov rcx, qword [rdi + 0x40]
xor edx, edx
lea r8d, [rdx + 1]
call qword [sym.imp.USER32.dll_InvalidateRect]
jmp case.0x1400204f3.46
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + Ordinal_805]
jmp case.0x1400204f3.46
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x328]
jmp case.0x1400204f3.46
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x330]
mov ecx, 0x10
mov qword [rsp + 0x80], rsi
mov qword [rsp + 0x48], r14
call qword [sym.imp.USER32.dll_GetKeyState]
test bx, ax
je 0x140020582
cmp r13d, 0x2d
jne 0x140020582
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x330]
mov rcx, rdi
call qword [sym.imp.mfc110u.dll_Ordinal_3655]
jmp 0x1400206fd
cmp r13d, 0x2e
je 0x140020939
cmp r13d, 0x28
jne 0x1400205ed
mov esi, dword [rbp - 0x20]
mov edx, dword [rdi + 0x190]
mov r8d, esi
inc esi
mov dword [rbp - 0x20], esi
cmp esi, edx
jge 0x1400205da
test esi, esi
js 0x1400205d1
cmp esi, edx
jge 0x1400205d1
mov rax, qword [rdi + 0x1d8]
movsxd rcx, esi
test esi, esi
js 0x1400205e6
cmp rcx, qword [rax + 0x10]
jge 0x1400205e6
mov rax, qword [rax + 8]
cmp dword [rax + rcx*4], r12d
jg 0x14002093c
inc esi
mov dword [rbp - 0x20], esi
cmp esi, edx
jl 0x1400205a7
mov esi, r8d
mov dword [rbp - 0x20], r8d
jmp 0x14002093c
call qword [sym.imp.mfc110u.dll_Ordinal_2290]
int3
cmp r13d, 0x26
jne 0x140020656
mov esi, dword [rbp - 0x20]
mov edx, dword [rdi + 0x1a8]
mov r8d, esi
dec esi
mov dword [rbp - 0x20], esi
test edx, edx
je 0x140020616
mov eax, dword [rdi + 0x1a0]
add eax, dword [rdi + 0x194]
jmp 0x14002061c
mov eax, dword [rdi + 0x194]
cmp esi, eax
jl 0x1400205da
test esi, esi
js 0x1400205ff
cmp esi, dword [rdi + 0x190]
jge 0x1400205ff
mov rax, qword [rdi + 0x1d8]
movsxd rcx, esi
test esi, esi
js 0x14002064f
cmp rcx, qword [rax + 0x10]
jge 0x14002064f
mov rax, qword [rax + 8]
cmp dword [rax + rcx*4], r12d
jle 0x1400205ff
jmp 0x14002093c
call qword [sym.imp.mfc110u.dll_Ordinal_2290]
int3
cmp r13d, 0x27
je 0x14002082d
cmp r13d, 9
jne 0x140020725
lea ecx, [r13 + 7]
call qword [sym.imp.USER32.dll_GetKeyState]
test bx, ax
je 0x1400206c4
lea ecx, [r13 + 7]
call qword [sym.imp.USER32.dll_GetKeyState]
test bx, ax
je 0x140020746
mov r14d, dword [rbp - 0x1c]
mov ebx, r15d
mov r15d, r14d
dec r14d
mov dword [rbp - 0x1c], r14d
cmp r13d, 9
jne 0x1400207da
cmp dword [rdi + 0x1ac], ebx
je 0x140020751
mov eax, dword [rdi + reloc.OLEAUT32.dll_OleTranslateColor]
add eax, dword [rdi + 0x19c]
jmp 0x140020757
cmp byte [rdi + 0x7f2], r12b
je 0x14002082d
mov rcx, qword [rdi + 0x40]
call qword [sym.imp.USER32.dll_GetParent]
mov rcx, rax
call qword [sym.imp.mfc110u.dll_Ordinal_4665]
test rax, rax
je 0x1400206fd
mov rcx, qword [rax + 0x40]
xor r9d, r9d
xor r8d, r8d
lea edx, [r9 + 0x28]
call qword [sym.imp.USER32.dll_SendMessageW]
mov r14, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x80]
mov r12, qword [rsp + 0x88]
mov rbx, qword [rsp + 0x78]
mov r15, qword [rsp + 0x40]
add rsp, 0x50
pop r13
pop rdi
pop rbp
ret
cmp r13d, 0x25
je 0x14002068c
lea eax, [r13 - 0x21]
cmp eax, 3
jbe 0x140020939
cmp r13d, 0x71
je 0x140020939
mov rcx, rdi
call qword [sym.imp.mfc110u.dll_Ordinal_3655]
jmp 0x1400206fd
mov eax, dword [rdi + 0x19c]
mov esi, dword [rbp - 0x20]
dec eax
cmp r14d, eax
jne 0x1400207cf
cmp dword [rdi + 0x1a8], ebx
je 0x140020777
mov eax, dword [rdi + 0x1a0]
add eax, dword [rdi + 0x194]
jmp 0x14002077d
mov eax, dword [rdi + 0x194]
cmp esi, eax
jle 0x1400207cf
dec esi
mov dword [rbp - 0x20], esi
cmp dword [rdi + 0x1a8], ebx
je 0x14002079c
mov eax, dword [rdi + 0x1a0]
add eax, dword [rdi + 0x194]
jmp 0x1400207a2
mov eax, dword [rdi + 0x194]
cmp esi, eax
jle 0x1400207b9
mov edx, esi
mov rcx, rdi
call fcn.140029320
test eax, eax
jle 0x140020781
mov ebx, 1
mov r14d, dword [rdi + 0x198]
mov r12d, 1
dec r14d
mov dword [rbp - 0x1c], r14d
jmp 0x1400207e0
mov rcx, rdi
call qword [sym.imp.mfc110u.dll_Ordinal_3655]
jmp 0x1400207e0
mov esi, dword [rbp - 0x20]
nop dword [rax]
cmp dword [rdi + 0x1ac], 0
je 0x1400207f7
mov eax, dword [rdi + reloc.OLEAUT32.dll_OleTranslateColor]
add eax, dword [rdi + 0x19c]
jmp 0x1400207fd
mov eax, dword [rdi + 0x19c]
cmp r14d, eax
jl 0x14002081a
mov edx, r14d
mov rcx, rdi
call fcn.140029360
test eax, eax
jg 0x140020825
dec r14d
mov dword [rbp - 0x1c], r14d
jmp 0x1400207e0
test ebx, ebx
jne 0x140020825
mov r14d, r15d
mov dword [rbp - 0x1c], r15d
xor r15d, r15d
jmp 0x140020940
mov r14d, dword [rbp - 0x1c]
mov esi, dword [rbp - 0x20]
mov ebx, r15d
mov r15d, r14d
inc r14d
mov dword [rbp - 0x1c], r14d
cmp r13d, 9
jne 0x1400208d1
cmp r14d, dword [rdi + 0x198]
jne 0x1400208c8
mov ecx, dword [rdi + 0x190]
lea eax, [rcx - 1]
cmp esi, eax
jge 0x1400208c8
inc esi
mov dword [rbp - 0x20], esi
cmp esi, ecx
jge 0x140020892
nop word [rax + rax]
mov edx, esi
mov rcx, rdi
call fcn.140029320
test eax, eax
jg 0x14002088d
inc esi
mov dword [rbp - 0x20], esi
cmp esi, dword [rdi + 0x190]
jl 0x140020870
jmp 0x140020892
mov ebx, 1
cmp dword [rdi + 0x1ac], r12d
je 0x1400208b5
mov r14d, dword [rdi + reloc.OLEAUT32.dll_OleTranslateColor]
mov r12d, 1
add r14d, dword [rdi + 0x19c]
mov dword [rbp - 0x1c], r14d
jmp 0x1400208d1
mov r14d, dword [rdi + 0x19c]
mov r12d, 1
mov dword [rbp - 0x1c], r14d
jmp 0x1400208d1
mov rcx, rdi
call qword [sym.imp.mfc110u.dll_Ordinal_3655]
mov r8d, dword [rdi + 0x198]
cmp r14d, r8d
jge 0x140020923
nop dword [rax]
test r14d, r14d
js 0x140020917
cmp r14d, r8d
jge 0x140020917
mov rax, qword [rdi + 0x7c8]
movsxd rcx, r14d
movsxd rdx, dword [rax + rcx*4]
test rdx, rdx
js 0x140020932
cmp rdx, qword [rdi + 0x1f0]
jge 0x140020932
mov rax, qword [rdi + reloc.mfc110u.dll_Ordinal_488]
cmp dword [rax + rdx*4], 0
jg 0x140020825
inc r14d
mov dword [rbp - 0x1c], r14d
cmp r14d, r8d
jl 0x1400208e0
test ebx, ebx
cmove r14d, r15d
xor r15d, r15d
mov dword [rbp - 0x1c], r14d
jmp 0x140020940
call qword [sym.imp.mfc110u.dll_Ordinal_2290]
int3
mov esi, dword [rbp - 0x20]
mov r14d, dword [rbp - 0x1c]
cmp esi, dword [rdi + 0x514]
jne 0x140020955
cmp r14d, dword [rdi + 0x518]
je 0x1400206fd
mov eax, dword [rdi + 0x514]
lea r9, [0x14032d6b0]
lea r8, [rbp - 0x28]
mov dword [rbp - 0x24], eax
mov eax, dword [rdi + 0x518]
lea rdx, [rbp - 0x24]
mov rcx, rdi
mov dword [rbp + 0x20], esi
mov dword [rbp - 0x30], r14d
mov dword [rbp - 0x28], eax
call fcn.14002e9a0
mov ecx, r13d
mov ebx, eax
sub ecx, 0x25
je 0x140020a21
dec ecx
je 0x1400209f5
dec ecx
je 0x1400209d0
dec ecx
jne 0x140020a4f
lea r8, [rbp - 0x30]
lea rdx, [rbp + 0x20]
mov rcx, rdi
call fcn.14002ebb0
test eax, eax
je 0x140020a4f
mov esi, dword [rbp + 0x20]
mov dword [rbp - 0x20], esi
test ebx, ebx
je 0x140020a4f
inc esi
mov dword [rbp - 0x20], esi
jmp 0x140020a4f
lea r8, [rbp - 0x30]
lea rdx, [rbp + 0x20]
mov rcx, rdi
call fcn.14002ebb0
test eax, eax
je 0x140020a4f
mov r14d, dword [rbp - 0x30]
mov dword [rbp - 0x1c], r14d
test ebx, ebx
je 0x140020a4f
inc r14d
jmp 0x140020a4b
lea r9, [0x14032d6b0]
lea r8, [rbp - 0x30]
lea rdx, [rbp + 0x20]
mov rcx, rdi
call fcn.14002e9a0
test eax, eax
je 0x140020a4f
mov esi, dword [rbp + 0x20]
mov dword [rbp - 0x20], esi
test ebx, ebx
je 0x140020a4f
dec esi
mov dword [rbp - 0x20], esi
jmp 0x140020a4f
lea r9, [0x14032d6b0]
lea r8, [rbp - 0x30]
lea rdx, [rbp + 0x20]
mov rcx, rdi
call fcn.14002e9a0
test eax, eax
je 0x140020a4f
mov r14d, dword [rbp - 0x30]
mov dword [rbp - 0x1c], r14d
test ebx, ebx
je 0x140020a4f
dec r14d
mov dword [rbp - 0x1c], r14d
cmp dword [rdi + 0x4e8], 0
jne 0x140020b2f
lea rcx, [rdi + 0x580]
call fcn.140031680
mov eax, dword [rdi + 0x138]
neg eax
sbb ecx, ecx
add ecx, 4
mov dword [rdi + 0x4e8], ecx
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x140020a96
cmp r13d, 9
jne 0x140020aa1
mov rax, qword [rbp - 0x20]
mov qword [rdi + 0x50c], rax
mov r9d, 0xffffff9c
mov r8d, r14d
mov edx, esi
mov rcx, rdi
call fcn.14001f6d0
cmp dword [rdi + 0x148], 0
je 0x140020b15
mov ecx, dword [rdi + 0x4e8]
dec ecx
je 0x140020b0d
dec ecx
je 0x140020aff
dec ecx
je 0x140020ae8
dec ecx
jne 0x140020b15
mov rdx, qword [rbp - 0x20]
lea r9d, [rcx + 1]
xor r8d, r8d
mov rcx, rdi
call fcn.140023b30
jmp 0x140020b15
mov rdx, qword [rbp - 0x20]
mov r9d, 1
xor r8d, r8d
mov rcx, rdi
call fcn.140023a40
jmp 0x140020b15
mov rdx, qword [rbp - 0x20]
mov rcx, rdi
call fcn.140023970
jmp 0x140020b15
mov rcx, rdi
call fcn.140023920
mov r9d, 0xffffff9b
mov r8d, r14d
mov edx, esi
mov rcx, rdi
call fcn.14001f6d0
mov dword [rdi + 0x4e8], r15d
mov rbx, qword [rbp - 0x20]
lea rdx, [rbp + 0x20]
mov rcx, rdi
mov r8, rbx
call fcn.140022d90
shr rbx, 0x20
mov edx, esi
mov r8d, ebx
mov rcx, rdi
call fcn.14002a3a0
test eax, eax
jne 0x140020c75
sub r13d, 9
je 0x140020be0
sub r13d, 0x1c
je 0x140020bc4
dec r13d
je 0x140020bbc
dec r13d
je 0x140020b9c
dec r13d
jne 0x140020c54
xor r9d, r9d
lea r8d, [rax + 1]
mov rcx, qword [rdi + 0x40]
mov edx, reloc.mfc110u.dll_Ordinal_277
call qword [sym.imp.USER32.dll_SendMessageW]
mov dword [rbp - 0x2c], 1
jmp 0x140020c54
mov rcx, qword [rdi + 0x40]
xor r9d, r9d
mov edx, Ordinal_277
lea r8d, [r9 + 1]
call qword [sym.imp.USER32.dll_SendMessageW]
mov ebx, 1
jmp 0x140020c56
xor r9d, r9d
xor r8d, r8d
jmp 0x140020b81
mov rcx, qword [rdi + 0x40]
xor r9d, r9d
xor r8d, r8d
mov edx, Ordinal_277
call qword [sym.imp.USER32.dll_SendMessageW]
mov ebx, 1
jmp 0x140020c56
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
xor r9d, r9d
test cx, ax
mov rcx, qword [rdi + 0x40]
je 0x140020c2a
xor r8d, r8d
test r12d, r12d
je 0x140020c18
mov edx, reloc.mfc110u.dll_Ordinal_277
call qword [sym.imp.USER32.dll_SendMessageW]
mov r8d, dword [rdi + 0x234]
jmp 0x140020c43
mov edx, Ordinal_277
call qword [sym.imp.USER32.dll_SendMessageW]
mov ebx, 1
jmp 0x140020c56
mov r8d, 1
test r12d, r12d
je 0x140020c18
mov edx, reloc.mfc110u.dll_Ordinal_277
call qword [sym.imp.USER32.dll_SendMessageW]
xor r8d, r8d
xor edx, edx
mov rcx, rdi
mov dword [rbp - 0x2c], 1
call fcn.1400263d0
xor ebx, ebx
mov r8d, r14d
mov edx, esi
mov rcx, rdi
call fcn.140029f00
mov rcx, qword [rdi + 0x40]
xor edx, edx
lea r8d, [rdx + 1]
call qword [sym.imp.USER32.dll_InvalidateRect]
jmp 0x140020c77
xor ebx, ebx
mov r8d, r14d
mov edx, esi
mov rcx, rdi
call fcn.140029f00
test ebx, ebx
je 0x140020c9e
mov rcx, qword [rdi + 0x40]
xor r9d, r9d
mov edx, Ordinal_277
lea r8d, [r9 + 8]
call qword [sym.imp.USER32.dll_SendMessageW]
cmp dword [rbp - 0x2c], 0
je 0x1400206fd
mov rcx, qword [rdi + 0x40]
xor r9d, r9d
mov edx, reloc.mfc110u.dll_Ordinal_277
lea r8d, [r9 + 8]
jmp 0x1400206f7
mov rcx, rdi
add rsp, 0x50
pop r13
pop rdi
pop rbp
jmp qword [sym.imp.mfc110u.dll_Ordinal_3655]