Function at 0x180039550
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x20], rbp
push rsi
push rdi
push r14
sub rsp, 0x40
mov rax, qword [0x1800b8050]
xor rax, rsp
mov qword [rsp + 0x38], rax
mov rbx, r8
mov r10, r9
mov r8, qword [0x1800ba518]
mov r14, rcx
test r8, r8
je case.0x180039800.527
mov rsi, qword [r8 + 0x90]
lea rbp, [r8 + 8]
cmp edx, 0x200
ja 0x1800397d4
je 0x180039796
lea eax, [rdx - 7]
cmp eax, 0xfe
ja case.0x180039800.527
lea r9, [0x180000000]
movzx eax, byte [r9 + rax + 0x39998]
mov ecx, dword [r9 + rax*4 + 0x39984]
add rcx, r9
jmp rcx
lea eax, [rdx - 0x100]
test eax, 0xfffffffb
mov eax, 0x100
sete dil
cmp rbx, rax
jae case.0x180039800.527
cmp rbx, 0xd
jne 0x180039605
shr r10, 0x10
test ax, r10w
mov eax, 0x10d
cmovne ebx, eax
movsxd rcx, ebx
call fcn.180039000
test eax, eax
je 0x18003961f
mov r8d, ebx
movzx edx, dil
mov ecx, eax
call fcn.180038700
cmp ebx, 0x10
jne 0x18003967f
mov ecx, 0xa0
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, 1
cmp al, dil
jne 0x18003964d
mov r8d, 0xa0
movzx edx, dil
mov ecx, 0x230
call fcn.180038700
mov ecx, 0xa1
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, 1
cmp al, dil
jne case.0x180039800.527
mov r8d, 0xa1
movzx edx, dil
mov ecx, 0x234
call fcn.180038700
jmp case.0x180039800.527
cmp ebx, 0x11
jne 0x1800396df
mov ecx, 0xa2
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, 1
cmp al, dil
jne 0x1800396ad
mov r8d, 0xa2
movzx edx, dil
mov ecx, 0x231
call fcn.180038700
mov ecx, 0xa3
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, 1
cmp al, dil
jne case.0x180039800.527
mov r8d, 0xa3
movzx edx, dil
mov ecx, 0x235
call fcn.180038700
jmp case.0x180039800.527
cmp ebx, 0x12
jne case.0x180039800.527
mov ecx, 0xa4
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, 1
cmp al, dil
jne 0x180039711
mov r8d, 0xa4
movzx edx, dil
mov ecx, 0x232
call fcn.180038700
mov ecx, 0xa5
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, 1
cmp al, dil
jne case.0x180039800.527
mov r8d, 0xa5
movzx edx, dil
mov ecx, 0x236
call fcn.180038700
jmp case.0x180039800.527
cmp edx, 7
setne al
mov byte [rbp + 0x2b60], al
jmp case.0x180039800.527
lea rax, [rbx - 1]
cmp rax, 0xfffe
ja case.0x180039800.527
movzx edx, bx
mov rcx, rbp
call fcn.18000abb0
jmp case.0x180039800.527
cmp r10w, 1
jne case.0x180039800.527
call fcn.180038560
test al, al
je case.0x180039800.527
mov eax, 1
jmp 0x180039964
cmp byte [rsi + 0x10], 0
mov qword [rsi + 8], r14
jne case.0x180039800.527
xor eax, eax
mov dword [rsp + 0x20], 0x18
mov edi, 2
mov dword [rsp + 0x30], eax
lea rcx, [rsp + 0x20]
mov dword [rsp + 0x24], edi
mov qword [rsp + 0x28], r14
call qword [sym.imp.USER32.dll_TrackMouseEvent]
mov byte [rsi + 0x10], 1
jmp case.0x180039800.527
lea eax, [rdx - 0x201]
cmp eax, 0xa2
ja case.0x180039800.527
lea r9, [0x180000000]
movzx eax, byte [r9 + rax + 0x39ab4]
mov ecx, dword [r9 + rax*4 + 0x39a98]
add rcx, r9
jmp rcx
cmp qword [rsi + 8], r14
jne 0x18003980e
xor eax, eax
mov qword [rsi + 8], rax
mov byte [rsi + 0x10], 0
jmp case.0x180039800.527
xor eax, eax
cmp edx, 0x204
je 0x18003982b
mov edi, eax
cmp edx, 0x206
jne 0x180039830
mov edi, 1
cmp edx, 0x207
je 0x180039840
cmp edx, 0x209
jne 0x180039845
mov edi, 2
cmp edx, 0x20b
je 0x180039855
cmp edx, 0x20d
jne 0x180039870
shr rbx, 0x10
mov rdi, rax
cmp bx, 1
setne dil
add rdi, 3
nop dword [rax + rax]
cmp byte [r8 + rax + 0xd8], 0
jne 0x180039898
inc rax
cmp rax, 5
jl 0x180039870
call qword [sym.imp.USER32.dll_GetCapture]
test rax, rax
jne 0x180039898
mov rcx, r14
call qword [sym.imp.USER32.dll_SetCapture]
mov byte [rdi + rbp + 0xd0], 1
jmp case.0x180039800.527
xor eax, eax
cmp edx, 0x205
mov edi, eax
sete dil
cmp edx, 0x208
jne 0x1800398c0
lea edi, [rax + 2]
jmp 0x1800398db
cmp edx, 0x20c
jne 0x1800398db
shr rbx, 0x10
mov rdi, rax
cmp bx, 1
setne dil
add rdi, 3
mov byte [rdi + rbp + 0xd0], al
cmp byte [r8 + rax + 0xd8], 0
jne case.0x180039800.527
inc rax
cmp rax, 5
jl 0x1800398e2
call qword [sym.imp.USER32.dll_GetCapture]
cmp rax, r14
jne case.0x180039800.527
call qword [sym.imp.USER32.dll_ReleaseCapture]
jmp case.0x180039800.527
shr rbx, 0x10
movsx eax, bx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, dword [0x1800a75d8]
addss xmm0, dword [rbp + 0xd8]
movss dword [rbp + 0xd8], xmm0
jmp case.0x180039800.527
shr rbx, 0x10
movsx eax, bx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, dword [0x1800a75d8]
addss xmm0, dword [rbp + 0xdc]
movss dword [rbp + 0xdc], xmm0
jmp case.0x180039800.527
cmp ebx, 7
jne case.0x180039800.527
mov byte [rsi + 0x2d], 1
xor eax, eax
mov rcx, qword [rsp + 0x38]
xor rcx, rsp
call fcn.180063690
mov rbx, qword [rsp + 0x68]
mov rbp, qword [rsp + 0x78]
add rsp, 0x40
pop r14
pop rdi
pop rsi
ret