Function at 0x180004440
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x50
mov rax, qword [0x180046400]
xor rax, rsp
mov qword [rsp + 0x40], rax
mov rbp, rcx
mov qword [rsp + 0x28], rcx
cmp byte [0x180046da1], 0
jne 0x180004546
xor edx, edx
lea rcx, str.LWJGL
call qword [sym.imp.USER32.dll_FindWindowA]
mov qword [0x180046da8], rax
test rax, rax
jne 0x1800044c7
xor edx, edx
lea rcx, str.GLFW30
call qword [sym.imp.USER32.dll_FindWindowA]
mov qword [0x180046da8], rax
test rax, rax
jne 0x1800044c7
lea rcx, str.____Failed_to_get_window_handle_n
call fcn.180004020
jmp 0x18000488c
lea r8, [0x180004080]
mov edx, 0xfffffffc
mov rcx, rax
call qword [sym.imp.USER32.dll_SetWindowLongPtrW]
mov qword [0x180046db0], rax
call fcn.180030dc0
lea rcx, str.opengl32.dll
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov rcx, rax
lea rdx, str.wglSwapBuffers
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x180046d78], rax
test rax, rax
jne 0x180004522
lea rcx, str.____Failed_to_get_wglSwapBuffers_address_n
call fcn.180004020
jmp 0x18000488c
lea r8, [0x180046d80]
lea rdx, [0x180004120]
mov rcx, rax
call fcn.180030ef0
xor ecx, ecx
call fcn.1800313d0
mov byte [0x180046da1], 1
mov ecx, 0x23
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x18000488c
mov ecx, dword [0x180046b54]
mov rax, qword gs:[0x58]
lea rsi, [rax + rcx*8]
movabs rbp, 0x7ffffffffe8287bf
movabs r13, 0x7fffffffffffffff
movabs r12, 0xb2f4fc0794908cf3
movabs r14, 0x4e94914f0000
movabs r15, 0x431bde82d7b634db
nop
lea rcx, [rsp + 0x20]
call fcn.180004360
mov rax, qword [rsp + 0x20]
cmp rax, rbp
lea rdi, [rax + 0x17d7840]
jl 0x1800045c0
mov rdi, r13
nop
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rbx, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
mov rcx, rax
cmp rbx, 0x989680
jne 0x1800045e1
imul rax, rcx, 0x64
jmp 0x180004650
cmp rbx, 0x16e3600
jne 0x180004635
mov rax, r12
imul rcx
add rdx, rcx
sar rdx, 0x18
mov rax, rdx
shr rax, 0x3f
add rdx, rax
imul r8, rdx, 0x3b9aca00
imul rax, rdx, 0x16e3600
sub rcx, rax
imul rcx, rcx, 0x3b9aca00
mov rax, r12
imul rcx
add rdx, rcx
sar rdx, 0x18
mov rax, rdx
shr rax, 0x3f
add rax, rdx
add rax, r8
jmp 0x180004650
cqo
idiv rbx
imul rcx, rax, 0x3b9aca00
imul rax, rdx, 0x3b9aca00
cqo
idiv rbx
add rax, rcx
cmp rax, rdi
jge 0x18000469e
mov rcx, rdi
sub rcx, rax
cmp rcx, r14
jl 0x18000466f
mov ecx, 0x5265c00
call sub.KERNEL32.dll_Sleep
jmp 0x1800045c0
mov rax, r15
imul rcx
sar rdx, 0x12
mov rax, rdx
shr rax, 0x3f
add rdx, rax
imul rax, rdx, 0xf4240
cmp rax, rcx
jge 0x180004692
inc rdx
mov ecx, edx
call sub.KERNEL32.dll_Sleep
jmp 0x1800045c0
mov ecx, 5
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x180004873
mov rax, qword [0x180046478]
mov rbx, qword [rax]
mov dword [rsp + 0x38], 0x10
mov edi, 4
add rdi, qword [rsi]
mov eax, dword [rdi]
cmp dword [0x180046de0], eax
jle 0x180004720
lea rcx, [0x180046de0]
call fcn.180034ff8
cmp dword [0x180046de0], 0xffffffff
jne 0x180004720
mov rcx, qword [rbx + 0x10]
mov rax, qword [rcx]
mov r10, qword [rax + 0x108]
lea r9, str._I_V
lea r8, str.mousePress
mov rdx, qword [rbx]
call r10
mov qword [0x180046e08], rax
lea rcx, [0x180046de0]
call fcn.180034f8c
mov rcx, qword [rbx + 0x10]
mov rax, qword [rcx]
mov r10, qword [rax + 0x1f8]
lea r9, [rsp + 0x38]
mov r8, qword [0x180046e08]
mov rdx, qword [rbx + 8]
call r10
mov rax, qword [0x180046478]
mov rbx, qword [rax]
mov dword [rsp + 0x30], 0x10
mov eax, dword [rdi]
cmp dword [0x180046de8], eax
jle 0x1800047a7
lea rcx, [0x180046de8]
call fcn.180034ff8
cmp dword [0x180046de8], 0xffffffff
jne 0x1800047a7
mov rcx, qword [rbx + 0x10]
mov rax, qword [rcx]
mov r10, qword [rax + 0x108]
lea r9, str._I_V
lea r8, str.mouseRelease
mov rdx, qword [rbx]
call r10
mov qword [0x180046e10], rax
lea rcx, [0x180046de8]
call fcn.180034f8c
mov rcx, qword [rbx + 0x10]
mov rax, qword [rcx]
mov r10, qword [rax + 0x1f8]
lea r9, [rsp + 0x30]
mov r8, qword [0x180046e10]
mov rdx, qword [rbx + 8]
call r10
mov rax, qword [0x180046478]
mov rbx, qword [rax]
call qword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_rand]
mov r8d, eax
mov eax, 0x66666667
imul r8d
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
lea ecx, [rdx + rdx*4]
shl ecx, 2
sub r8d, ecx
add r8d, 0xc8
mov dword [rsp + 0x30], r8d
mov eax, dword [rdi]
cmp dword [0x180046ddc], eax
jle 0x180004856
lea rcx, [0x180046ddc]
call fcn.180034ff8
cmp dword [0x180046ddc], 0xffffffff
jne 0x180004856
mov rcx, qword [rbx + 0x10]
mov rax, qword [rcx]
mov r10, qword [rax + 0x108]
lea r9, str._I_V
lea r8, str.delay
mov rdx, qword [rbx]
call r10
mov qword [0x180046e00], rax
lea rcx, [0x180046ddc]
call fcn.180034f8c
mov rcx, qword [rbx + 0x10]
mov rax, qword [rcx]
lea r9, [rsp + 0x30]
mov r8, qword [0x180046e00]
mov rdx, qword [rbx + 8]
call qword [rax + 0x1f8]
mov ecx, 0x23
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1800045a0
mov rbp, qword [rsp + 0x28]
cmp byte [0x180046da1], 0
je 0x1800048c3
mov r8, qword [0x180046db0]
mov edx, 0xfffffffc
mov rcx, qword [0x180046da8]
call qword [sym.imp.USER32.dll_SetWindowLongPtrW]
xor ecx, ecx
call fcn.180031410
xor ecx, ecx
call fcn.1800312d0
mov byte [0x180046da1], 0
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
mov rcx, qword [rsp + 0x40]
xor rcx, rsp
call fcn.180034bc0
lea r11, [rsp + 0x50]
mov rbx, qword [r11 + 0x38]
mov rbp, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret